Import Geant4 8.1.0 source tree
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# $Id: GNUmakefile,v 1.5 2005/11/25 01:53:30 capra Exp $
|
||||
# --------------------------------------------------------------------
|
||||
# GNUmakefile for exaple subpackage
|
||||
# R. Capra, 09 Sep 2005
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
name := Radmon
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/intercoms/include \
|
||||
-I$(G4BASE)/interfaces/basic/include \
|
||||
-I$(G4BASE)/interfaces/common/include \
|
||||
-I$(G4BASE)/run/include \
|
||||
-I$(G4BASE)/event/include \
|
||||
-I$(G4BASE)/tracking/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/geometry/navigation/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/solids/CSG/include \
|
||||
-I$(G4BASE)/geometry/solids/Boolean/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/materials/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/digits_hits/hits/include \
|
||||
-I$(G4BASE)/digits_hits/detector/include \
|
||||
-I$(G4BASE)/digits_hits/digits/include \
|
||||
-I$(G4BASE)/graphics_reps/include \
|
||||
-I../materials/include \
|
||||
-I../generalPurpose/include \
|
||||
-I../sensitivity/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeConstructor.hh,v 1.3 2006/06/29 16:08:49 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with carved borders
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMECONSTRUCTOR_HH
|
||||
#define RADMONDETECTORCARVEDFLATVOLUMECONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorCarvedVolumesDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorCarvedFlatVolumeConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonDetectorFlatVolumeComponent> >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorCarvedFlatVolumeConstructor();
|
||||
inline virtual ~RadmonDetectorCarvedFlatVolumeConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorCarvedFlatVolumeConstructor(const RadmonDetectorCarvedFlatVolumeConstructor & copy);
|
||||
RadmonDetectorCarvedFlatVolumeConstructor & operator=(const RadmonDetectorCarvedFlatVolumeConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorCarvedFlatVolumeConstructor.icc"
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMECONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeConstructor.icc,v 1.1.2.2 2006/06/29 16:08:51 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMECONSTRUCTOR_HH
|
||||
#error "RadmonDetectorCarvedFlatVolumeConstructor.icc cannot be included directly. Please use RadmonDetectorCarvedFlatVolumeConstructor.hh"
|
||||
#else /* RADMONDETECTORCARVEDFLATVOLUMECONSTRUCTOR_HH */
|
||||
inline RadmonDetectorCarvedFlatVolumeConstructor :: RadmonDetectorCarvedFlatVolumeConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonDetectorFlatVolumeComponent> >("CarvedFlatVolume")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorCarvedFlatVolumeConstructor :: ~RadmonDetectorCarvedFlatVolumeConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMECONSTRUCTOR_HH */
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh,v 1.3 2006/06/29 16:08:53 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a carved box with a ground pad and marks and hole
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH
|
||||
#define RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorCarvedVolumesDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithGroundDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithHoleDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithKeyMarksDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithHoleDecorator<RadmonTDetectorVolumesWithKeyMarksDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > > > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor();
|
||||
inline virtual ~RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor(const RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor & copy);
|
||||
RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor & operator=(const RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc"
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc,v 1.3 2006/06/29 16:08:55 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH
|
||||
#error "RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc cannot be included directly. Please use RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh"
|
||||
#else /* RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH */
|
||||
inline RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor :: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithHoleDecorator<RadmonTDetectorVolumesWithKeyMarksDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > > > >("CarvedFlatVolumeWithGroundAndKeyMarksAndHole")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor :: ~RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH */
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.hh,v 1.3 2006/06/29 16:08:57 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a carved box with a ground pad and marks
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH
|
||||
#define RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorCarvedVolumesDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithGroundDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithKeyMarksDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithKeyMarksDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor();
|
||||
inline virtual ~RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor(const RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor & copy);
|
||||
RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor & operator=(const RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.icc"
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.icc,v 1.3 2006/06/29 16:08:59 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH
|
||||
#error "RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.icc cannot be included directly. Please use RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.hh"
|
||||
#else /* RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH */
|
||||
inline RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor :: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithKeyMarksDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > > >("CarvedFlatVolumeWithGroundAndKeyMarks")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor :: ~RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH */
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithGroundConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundConstructor.hh,v 1.3 2006/06/29 16:09:01 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with carved borders
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH
|
||||
#define RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorCarvedVolumesDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithGroundDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorCarvedFlatVolumeWithGroundConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorCarvedFlatVolumeWithGroundConstructor();
|
||||
inline virtual ~RadmonDetectorCarvedFlatVolumeWithGroundConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorCarvedFlatVolumeWithGroundConstructor(const RadmonDetectorCarvedFlatVolumeWithGroundConstructor & copy);
|
||||
RadmonDetectorCarvedFlatVolumeWithGroundConstructor & operator=(const RadmonDetectorCarvedFlatVolumeWithGroundConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorCarvedFlatVolumeWithGroundConstructor.icc"
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithGroundConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundConstructor.icc,v 1.3 2006/06/29 16:09:03 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH
|
||||
#error "RadmonDetectorCarvedFlatVolumeWithGroundConstructor.icc cannot be included directly. Please use RadmonDetectorCarvedFlatVolumeWithGroundConstructor.hh"
|
||||
#else /* RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH */
|
||||
inline RadmonDetectorCarvedFlatVolumeWithGroundConstructor :: RadmonDetectorCarvedFlatVolumeWithGroundConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > >("CarvedFlatVolumeWithGround")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorCarvedFlatVolumeWithGroundConstructor :: ~RadmonDetectorCarvedFlatVolumeWithGroundConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH */
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithHoleConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithHoleConstructor.hh,v 1.3 2006/06/29 16:09:05 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with carved borders
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHHOLECONSTRUCTOR_HH
|
||||
#define RADMONDETECTORCARVEDFLATVOLUMEWITHHOLECONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorCarvedVolumesDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithHoleDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorCarvedFlatVolumeWithHoleConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithHoleDecorator<RadmonDetectorFlatVolumeComponent> > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorCarvedFlatVolumeWithHoleConstructor();
|
||||
inline virtual ~RadmonDetectorCarvedFlatVolumeWithHoleConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorCarvedFlatVolumeWithHoleConstructor(const RadmonDetectorCarvedFlatVolumeWithHoleConstructor & copy);
|
||||
RadmonDetectorCarvedFlatVolumeWithHoleConstructor & operator=(const RadmonDetectorCarvedFlatVolumeWithHoleConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorCarvedFlatVolumeWithHoleConstructor.icc"
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHHOLECONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithHoleConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithHoleConstructor.icc,v 1.3 2006/06/29 16:09:07 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHHOLECONSTRUCTOR_HH
|
||||
#error "RadmonDetectorCarvedFlatVolumeWithHoleConstructor.icc cannot be included directly. Please use RadmonDetectorCarvedFlatVolumeWithHoleConstructor.hh"
|
||||
#else /* RADMONDETECTORCARVEDFLATVOLUMEWITHHOLECONSTRUCTOR_HH */
|
||||
inline RadmonDetectorCarvedFlatVolumeWithHoleConstructor :: RadmonDetectorCarvedFlatVolumeWithHoleConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithHoleDecorator<RadmonDetectorFlatVolumeComponent> > >("CarvedFlatVolumeWithHole")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorCarvedFlatVolumeWithHoleConstructor :: ~RadmonDetectorCarvedFlatVolumeWithHoleConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHHOLECONSTRUCTOR_HH */
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithPinsConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithPinsConstructor.hh,v 1.3 2006/06/29 16:09:09 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with carved borders and pins
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHPINSCONSTRUCTOR_HH
|
||||
#define RADMONDETECTORCARVEDFLATVOLUMEWITHPINSCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorCarvedVolumesDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithPinsDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorCarvedFlatVolumeWithPinsConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithPinsDecorator<RadmonDetectorFlatVolumeComponent> > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorCarvedFlatVolumeWithPinsConstructor();
|
||||
inline virtual ~RadmonDetectorCarvedFlatVolumeWithPinsConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorCarvedFlatVolumeWithPinsConstructor(const RadmonDetectorCarvedFlatVolumeWithPinsConstructor & copy);
|
||||
RadmonDetectorCarvedFlatVolumeWithPinsConstructor & operator=(const RadmonDetectorCarvedFlatVolumeWithPinsConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorCarvedFlatVolumeWithPinsConstructor.icc"
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHPINSCONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithPinsConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithPinsConstructor.icc,v 1.3 2006/06/29 16:09:11 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHPINSCONSTRUCTOR_HH
|
||||
#error "RadmonDetectorCarvedFlatVolumeWithPinsConstructor.icc cannot be included directly. Please use RadmonDetectorCarvedFlatVolumeWithPinsConstructor.hh"
|
||||
#else /* RADMONDETECTORCARVEDFLATVOLUMEWITHPINSCONSTRUCTOR_HH */
|
||||
inline RadmonDetectorCarvedFlatVolumeWithPinsConstructor :: RadmonDetectorCarvedFlatVolumeWithPinsConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithPinsDecorator<RadmonDetectorFlatVolumeComponent> > >("CarvedFlatVolumeWithPins")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorCarvedFlatVolumeWithPinsConstructor :: ~RadmonDetectorCarvedFlatVolumeWithPinsConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHPINSCONSTRUCTOR_HH */
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.hh,v 1.3 2006/06/29 16:09:13 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with carved borders
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH
|
||||
#define RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorVolumesWithTracksDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithHoleDecorator.hh"
|
||||
#include "RadmonTDetectorCarvedVolumesDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithTracksDecorator<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithHoleDecorator<RadmonDetectorFlatVolumeComponent> > > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor();
|
||||
inline virtual ~RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor(const RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor & copy);
|
||||
RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor & operator=(const RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.icc"
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.icc,v 1.3 2006/06/29 16:09:15 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH
|
||||
#error "RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.icc cannot be included directly. Please use RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.hh"
|
||||
#else /* RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH */
|
||||
inline RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor :: RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithTracksDecorator<RadmonTDetectorCarvedVolumesDecorator<RadmonTDetectorVolumesWithHoleDecorator<RadmonDetectorFlatVolumeComponent> > > >("CarvedFlatVolumeWithTracksAndHole")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor :: ~RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH */
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithTracksConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithTracksConstructor.hh,v 1.3 2006/06/29 16:09:17 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with carved borders and tracks
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH
|
||||
#define RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorCarvedVolumesDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithTracksDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorCarvedFlatVolumeWithTracksConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithTracksDecorator<RadmonTDetectorCarvedVolumesDecorator<RadmonDetectorFlatVolumeComponent> > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorCarvedFlatVolumeWithTracksConstructor();
|
||||
inline virtual ~RadmonDetectorCarvedFlatVolumeWithTracksConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorCarvedFlatVolumeWithTracksConstructor(const RadmonDetectorCarvedFlatVolumeWithTracksConstructor & copy);
|
||||
RadmonDetectorCarvedFlatVolumeWithTracksConstructor & operator=(const RadmonDetectorCarvedFlatVolumeWithTracksConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorCarvedFlatVolumeWithTracksConstructor.icc"
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorCarvedFlatVolumeWithTracksConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorCarvedFlatVolumeWithTracksConstructor.icc,v 1.3 2006/06/29 16:09:19 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH
|
||||
#error "RadmonDetectorCarvedFlatVolumeWithTracksConstructor.icc cannot be included directly. Please use RadmonDetectorCarvedFlatVolumeWithTracksConstructor.hh"
|
||||
#else /* RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH */
|
||||
inline RadmonDetectorCarvedFlatVolumeWithTracksConstructor :: RadmonDetectorCarvedFlatVolumeWithTracksConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithTracksDecorator<RadmonTDetectorCarvedVolumesDecorator<RadmonDetectorFlatVolumeComponent> > >("CarvedFlatVolumeWithTracks")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorCarvedFlatVolumeWithTracksConstructor :: ~RadmonDetectorCarvedFlatVolumeWithTracksConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH */
|
||||
@@ -0,0 +1,94 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorConstruction.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorConstruction.hh,v 1.3.2.2 2006/06/29 16:09:21 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Implementation of the G4VUserDetectorConstruction
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORCONSTRUCTION_HH
|
||||
#define RADMONDETECTORCONSTRUCTION_HH
|
||||
|
||||
// Include files
|
||||
#include "globals.hh"
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "RadmonVLayoutObserver.hh"
|
||||
#include <stack>
|
||||
#include <utility>
|
||||
|
||||
// Forward declaration
|
||||
class G4VPhysicalVolume;
|
||||
class G4VSolid;
|
||||
class G4LogicalVolume;
|
||||
class RadmonVDetectorLayout;
|
||||
class RadmonVDetectorEntityConstructor;
|
||||
class RadmonVDetectorEntitiesConstructorsFactory;
|
||||
class G4String;
|
||||
|
||||
class RadmonDetectorConstruction : public G4VUserDetectorConstruction, public RadmonVLayoutObserver
|
||||
{
|
||||
public:
|
||||
RadmonDetectorConstruction(RadmonVDetectorLayout * layout, RadmonVDetectorEntitiesConstructorsFactory * factory);
|
||||
virtual ~RadmonDetectorConstruction();
|
||||
|
||||
virtual G4VPhysicalVolume * Construct(void);
|
||||
|
||||
virtual void OnLayoutChange(void);
|
||||
|
||||
private:
|
||||
// Private methods
|
||||
void Destruct(void);
|
||||
|
||||
void BuildEnvironmentFromType(const G4String & type);
|
||||
void BuildEnvironmentSphere(void);
|
||||
void BuildMultilayer(G4int index);
|
||||
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorConstruction();
|
||||
RadmonDetectorConstruction(const RadmonDetectorConstruction & copy);
|
||||
RadmonDetectorConstruction & operator=(const RadmonDetectorConstruction & copy);
|
||||
|
||||
// Private data types
|
||||
typedef std::pair<RadmonVDetectorEntityConstructor *, G4VPhysicalVolume *> LayerItem;
|
||||
typedef std::stack<LayerItem> LayersStack;
|
||||
|
||||
// Private attributes
|
||||
RadmonVDetectorLayout * detectorLayout;
|
||||
RadmonVDetectorEntitiesConstructorsFactory * constructorsFactory;
|
||||
|
||||
LayersStack layersStack;
|
||||
|
||||
RadmonVDetectorEntityConstructor * environmentConstructor;
|
||||
G4VPhysicalVolume * environmentPhysicalVolume;
|
||||
G4LogicalVolume * environmentLogicalVolume;
|
||||
G4VSolid * environmentSolid;
|
||||
};
|
||||
#endif /* RADMONDETECTORCONSTRUCTION_HH */
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorEnvironmentLayout.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorEnvironmentLayout.hh,v 1.5 2006/06/29 16:09:23 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Internal class to describe the environment layout
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORENVIRONMENTLAYOUT_HH
|
||||
#define RADMONDETECTORENVIRONMENTLAYOUT_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonLayoutEntityWithAttributes.hh"
|
||||
|
||||
class RadmonDetectorEnvironmentLayout : public RadmonLayoutEntityWithAttributes
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorEnvironmentLayout();
|
||||
inline ~RadmonDetectorEnvironmentLayout();
|
||||
|
||||
inline G4bool IsEnabled(void) const;
|
||||
inline void Enable(void);
|
||||
inline void Disable(void);
|
||||
|
||||
inline const G4String & GetType(void) const;
|
||||
inline void SetType(const G4String & type);
|
||||
|
||||
void DumpLayout(std::ostream & out, const G4String & indent=G4String("")) const;
|
||||
|
||||
private:
|
||||
RadmonDetectorEnvironmentLayout(const RadmonDetectorEnvironmentLayout & copy);
|
||||
RadmonDetectorEnvironmentLayout & operator=(const RadmonDetectorEnvironmentLayout & copy);
|
||||
|
||||
G4bool enabled;
|
||||
G4String environmentType;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorEnvironmentLayout.icc"
|
||||
#endif /* RADMONDETECTORENVIRONMENTLAYOUT_HH */
|
||||
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorEnvironmentLayout.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorEnvironmentLayout.icc,v 1.3 2006/06/29 16:09:25 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORENVIRONMENTLAYOUT_HH
|
||||
#error "RadmonDetectorEnvironmentLayout.icc cannot be included directly. Please use RadmonDetectorEnvironmentLayout.hh"
|
||||
#else /* RADMONDETECTORENVIRONMENTLAYOUT_HH */
|
||||
inline RadmonDetectorEnvironmentLayout :: RadmonDetectorEnvironmentLayout()
|
||||
:
|
||||
enabled(false),
|
||||
environmentType()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorEnvironmentLayout :: ~RadmonDetectorEnvironmentLayout()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline G4bool RadmonDetectorEnvironmentLayout :: IsEnabled(void) const
|
||||
{
|
||||
return enabled;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorEnvironmentLayout :: Enable(void)
|
||||
{
|
||||
enabled=true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorEnvironmentLayout :: Disable(void)
|
||||
{
|
||||
enabled=false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline const G4String & RadmonDetectorEnvironmentLayout :: GetType(void) const
|
||||
{
|
||||
return environmentType;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorEnvironmentLayout :: SetType(const G4String & type)
|
||||
{
|
||||
environmentType=type;
|
||||
}
|
||||
#endif /* RADMONDETECTORENVIRONMENTLAYOUT_HH */
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeComponent.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeComponent.hh,v 1.4 2006/06/29 16:09:27 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Component to create a box
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMECOMPONENT_HH
|
||||
#define RADMONDETECTORFLATVOLUMECOMPONENT_HH
|
||||
|
||||
// Include files
|
||||
#include "globals.hh"
|
||||
|
||||
// Forward declarations
|
||||
class RadmonVDetectorLabelledEntityConstructor;
|
||||
class RadmonDetectorLayerVolumesList;
|
||||
class G4Box;
|
||||
class G4VisAttributes;
|
||||
|
||||
class RadmonDetectorFlatVolumeComponent
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeComponent(const RadmonVDetectorLabelledEntityConstructor * constructor);
|
||||
~RadmonDetectorFlatVolumeComponent();
|
||||
RadmonDetectorLayerVolumesList * GenerateVolumesList(void);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeComponent();
|
||||
RadmonDetectorFlatVolumeComponent(const RadmonDetectorFlatVolumeComponent & copy);
|
||||
RadmonDetectorFlatVolumeComponent & operator=(const RadmonDetectorFlatVolumeComponent & copy);
|
||||
|
||||
// Private attributes
|
||||
const RadmonVDetectorLabelledEntityConstructor * owner;
|
||||
G4Box * box;
|
||||
G4VisAttributes * visAttributes;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeComponent.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMECOMPONENT_HH */
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeComponent.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeComponent.icc,v 1.1.2.2 2006/06/29 16:09:29 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMECOMPONENT_HH
|
||||
#error "RadmonDetectorFlatVolumeComponent.icc cannot be included directly. Please use RadmonDetectorFlatVolumeComponent.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMECOMPONENT_HH */
|
||||
inline RadmonDetectorFlatVolumeComponent :: RadmonDetectorFlatVolumeComponent(const RadmonVDetectorLabelledEntityConstructor * constructor)
|
||||
:
|
||||
owner(constructor),
|
||||
box(0),
|
||||
visAttributes(0)
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMECOMPONENT_HH */
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeConstructor.hh,v 1.3 2006/06/29 16:09:31 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMECONSTRUCTOR_HH
|
||||
#define RADMONDETECTORFLATVOLUMECONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorFlatVolumeConstructor : public RadmonTDetectorLayerConstructor<RadmonDetectorFlatVolumeComponent>
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeConstructor();
|
||||
inline virtual ~RadmonDetectorFlatVolumeConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeConstructor(const RadmonDetectorFlatVolumeConstructor & copy);
|
||||
RadmonDetectorFlatVolumeConstructor & operator=(const RadmonDetectorFlatVolumeConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeConstructor.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMECONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeConstructor.icc,v 1.3 2006/06/29 16:09:33 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMECONSTRUCTOR_HH
|
||||
#error "RadmonDetectorFlatVolumeConstructor.icc cannot be included directly. Please use RadmonDetectorFlatVolumeConstructor.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMECONSTRUCTOR_HH */
|
||||
inline RadmonDetectorFlatVolumeConstructor :: RadmonDetectorFlatVolumeConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonDetectorFlatVolumeComponent>("FlatVolume")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorFlatVolumeConstructor :: ~RadmonDetectorFlatVolumeConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMECONSTRUCTOR_HH */
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh,v 1.3 2006/06/29 16:09:35 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with a ground pad, marks and hole
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH
|
||||
#define RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorVolumesWithGroundDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithKeyMarksDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithHoleDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithHoleDecorator<RadmonTDetectorVolumesWithKeyMarksDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor();
|
||||
inline virtual ~RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor(const RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor & copy);
|
||||
RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor & operator=(const RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc,v 1.3 2006/06/29 16:09:37 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH
|
||||
#error "RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc cannot be included directly. Please use RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH */
|
||||
inline RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor :: RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithHoleDecorator<RadmonTDetectorVolumesWithKeyMarksDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > > >("FlatVolumeWithGroundAndKeyMarksAndHole")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor :: ~RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH */
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.hh,v 1.3 2006/06/29 16:09:39 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with a ground pad and marks
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH
|
||||
#define RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorVolumesWithGroundDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithKeyMarksDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithKeyMarksDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor();
|
||||
inline virtual ~RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor(const RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor & copy);
|
||||
RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor & operator=(const RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.icc,v 1.3 2006/06/29 16:09:41 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH
|
||||
#error "RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.icc cannot be included directly. Please use RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH */
|
||||
inline RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor :: RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithKeyMarksDecorator<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> > >("FlatVolumeWithGroundAndKeyMarks")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor :: ~RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH */
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithGroundConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithGroundConstructor.hh,v 1.3 2006/06/29 16:09:43 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with carved borders
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH
|
||||
#define RADMONDETECTORFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorVolumesWithGroundDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorFlatVolumeWithGroundConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeWithGroundConstructor();
|
||||
inline virtual ~RadmonDetectorFlatVolumeWithGroundConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeWithGroundConstructor(const RadmonDetectorFlatVolumeWithGroundConstructor & copy);
|
||||
RadmonDetectorFlatVolumeWithGroundConstructor & operator=(const RadmonDetectorFlatVolumeWithGroundConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeWithGroundConstructor.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithGroundConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithGroundConstructor.icc,v 1.3 2006/06/29 16:09:45 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH
|
||||
#error "RadmonDetectorFlatVolumeWithGroundConstructor.icc cannot be included directly. Please use RadmonDetectorFlatVolumeWithGroundConstructor.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH */
|
||||
inline RadmonDetectorFlatVolumeWithGroundConstructor :: RadmonDetectorFlatVolumeWithGroundConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithGroundDecorator<RadmonDetectorFlatVolumeComponent> >("FlatVolumeWithGround")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorFlatVolumeWithGroundConstructor :: ~RadmonDetectorFlatVolumeWithGroundConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH */
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithHoleConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithHoleConstructor.hh,v 1.3 2006/06/29 16:09:47 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with a hole
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHHOLECONSTRUCTOR_HH
|
||||
#define RADMONDETECTORFLATVOLUMEWITHHOLECONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorVolumesWithHoleDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorFlatVolumeWithHoleConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithHoleDecorator<RadmonDetectorFlatVolumeComponent> >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeWithHoleConstructor();
|
||||
inline virtual ~RadmonDetectorFlatVolumeWithHoleConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeWithHoleConstructor(const RadmonDetectorFlatVolumeWithHoleConstructor & copy);
|
||||
RadmonDetectorFlatVolumeWithHoleConstructor & operator=(const RadmonDetectorFlatVolumeWithHoleConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeWithHoleConstructor.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHHOLECONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithHoleConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithHoleConstructor.icc,v 1.3 2006/06/29 16:09:49 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHHOLECONSTRUCTOR_HH
|
||||
#error "RadmonDetectorFlatVolumeWithHoleConstructor.icc cannot be included directly. Please use RadmonDetectorFlatVolumeWithHoleConstructor.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMEWITHHOLECONSTRUCTOR_HH */
|
||||
inline RadmonDetectorFlatVolumeWithHoleConstructor :: RadmonDetectorFlatVolumeWithHoleConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithHoleDecorator<RadmonDetectorFlatVolumeComponent> >("FlatVolumeWithHole")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorFlatVolumeWithHoleConstructor :: ~RadmonDetectorFlatVolumeWithHoleConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHHOLECONSTRUCTOR_HH */
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithPadsConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithPadsConstructor.hh,v 1.3 2006/06/29 16:09:51 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with pins
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHPADSCONSTRUCTOR_HH
|
||||
#define RADMONDETECTORFLATVOLUMEWITHPADSCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorVolumesWithPadsDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorFlatVolumeWithPadsConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithPadsDecorator<RadmonDetectorFlatVolumeComponent> >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeWithPadsConstructor();
|
||||
inline virtual ~RadmonDetectorFlatVolumeWithPadsConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeWithPadsConstructor(const RadmonDetectorFlatVolumeWithPadsConstructor & copy);
|
||||
RadmonDetectorFlatVolumeWithPadsConstructor & operator=(const RadmonDetectorFlatVolumeWithPadsConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeWithPadsConstructor.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHPADSCONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithPadsConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithPadsConstructor.icc,v 1.3 2006/06/29 16:09:53 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHPADSCONSTRUCTOR_HH
|
||||
#error "RadmonDetectorFlatVolumeWithPadsConstructor.icc cannot be included directly. Please use RadmonDetectorFlatVolumeWithPadsConstructor.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMEWITHPADSCONSTRUCTOR_HH */
|
||||
inline RadmonDetectorFlatVolumeWithPadsConstructor :: RadmonDetectorFlatVolumeWithPadsConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithPadsDecorator<RadmonDetectorFlatVolumeComponent> >("FlatVolumeWithPads")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorFlatVolumeWithPadsConstructor :: ~RadmonDetectorFlatVolumeWithPadsConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHPADSCONSTRUCTOR_HH */
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithPinsConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithPinsConstructor.hh,v 1.3 2006/06/29 16:09:55 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with pins
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHPINSCONSTRUCTOR_HH
|
||||
#define RADMONDETECTORFLATVOLUMEWITHPINSCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorVolumesWithPinsDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorFlatVolumeWithPinsConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithPinsDecorator<RadmonDetectorFlatVolumeComponent> >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeWithPinsConstructor();
|
||||
inline virtual ~RadmonDetectorFlatVolumeWithPinsConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeWithPinsConstructor(const RadmonDetectorFlatVolumeWithPinsConstructor & copy);
|
||||
RadmonDetectorFlatVolumeWithPinsConstructor & operator=(const RadmonDetectorFlatVolumeWithPinsConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeWithPinsConstructor.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHPINSCONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithPinsConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithPinsConstructor.icc,v 1.3 2006/06/29 16:09:57 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHPINSCONSTRUCTOR_HH
|
||||
#error "RadmonDetectorFlatVolumeWithPinsConstructor.icc cannot be included directly. Please use RadmonDetectorFlatVolumeWithPinsConstructor.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMEWITHPINSCONSTRUCTOR_HH */
|
||||
inline RadmonDetectorFlatVolumeWithPinsConstructor :: RadmonDetectorFlatVolumeWithPinsConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithPinsDecorator<RadmonDetectorFlatVolumeComponent> >("FlatVolumeWithPins")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorFlatVolumeWithPinsConstructor :: ~RadmonDetectorFlatVolumeWithPinsConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHPINSCONSTRUCTOR_HH */
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.hh,v 1.3 2006/06/29 16:09:59 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with tracks and a hole
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH
|
||||
#define RADMONDETECTORFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorVolumesWithTracksDecorator.hh"
|
||||
#include "RadmonTDetectorVolumesWithHoleDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorFlatVolumeWithTracksAndHoleConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithTracksDecorator<RadmonTDetectorVolumesWithHoleDecorator<RadmonDetectorFlatVolumeComponent> > >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeWithTracksAndHoleConstructor();
|
||||
inline virtual ~RadmonDetectorFlatVolumeWithTracksAndHoleConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeWithTracksAndHoleConstructor(const RadmonDetectorFlatVolumeWithTracksAndHoleConstructor & copy);
|
||||
RadmonDetectorFlatVolumeWithTracksAndHoleConstructor & operator=(const RadmonDetectorFlatVolumeWithTracksAndHoleConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.icc,v 1.3 2006/06/29 16:10:01 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH
|
||||
#error "RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.icc cannot be included directly. Please use RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH */
|
||||
inline RadmonDetectorFlatVolumeWithTracksAndHoleConstructor :: RadmonDetectorFlatVolumeWithTracksAndHoleConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithTracksDecorator<RadmonTDetectorVolumesWithHoleDecorator<RadmonDetectorFlatVolumeComponent> > >("FlatVolumeWithTracksAndHole")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorFlatVolumeWithTracksAndHoleConstructor :: ~RadmonDetectorFlatVolumeWithTracksAndHoleConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH */
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithTracksConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithTracksConstructor.hh,v 1.3 2006/06/29 16:10:03 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Builds a box with tracks
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH
|
||||
#define RADMONDETECTORFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTDetectorLayerConstructor.hh"
|
||||
#include "RadmonTDetectorVolumesWithTracksDecorator.hh"
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
|
||||
class RadmonDetectorFlatVolumeWithTracksConstructor : public RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithTracksDecorator<RadmonDetectorFlatVolumeComponent> >
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorFlatVolumeWithTracksConstructor();
|
||||
inline virtual ~RadmonDetectorFlatVolumeWithTracksConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorFlatVolumeWithTracksConstructor(const RadmonDetectorFlatVolumeWithTracksConstructor & copy);
|
||||
RadmonDetectorFlatVolumeWithTracksConstructor & operator=(const RadmonDetectorFlatVolumeWithTracksConstructor & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorFlatVolumeWithTracksConstructor.icc"
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH */
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeWithTracksConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeWithTracksConstructor.icc,v 1.3 2006/06/29 16:10:05 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH
|
||||
#error "RadmonDetectorFlatVolumeWithTracksConstructor.icc cannot be included directly. Please use RadmonDetectorFlatVolumeWithTracksConstructor.hh"
|
||||
#else /* RADMONDETECTORFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH */
|
||||
inline RadmonDetectorFlatVolumeWithTracksConstructor :: RadmonDetectorFlatVolumeWithTracksConstructor()
|
||||
:
|
||||
RadmonTDetectorLayerConstructor<RadmonTDetectorVolumesWithTracksDecorator<RadmonDetectorFlatVolumeComponent> >("FlatVolumeWithTracks")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorFlatVolumeWithTracksConstructor :: ~RadmonDetectorFlatVolumeWithTracksConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH */
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLabelledEntitiesConstructorsFactory.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLabelledEntitiesConstructorsFactory.hh,v 1.4 2006/06/29 16:10:07 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Concrete factory that constructs
|
||||
// RadmonVDetectorLabelledEntityConstructor objects
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSFACTORY_HH
|
||||
#define RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSFACTORY_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonVDetectorEntitiesConstructorsFactory.hh"
|
||||
#include <list>
|
||||
|
||||
// Forward declarations
|
||||
class RadmonVDetectorLabelledEntityConstructor;
|
||||
class RadmonVDetectorEntityConstructor;
|
||||
|
||||
class RadmonDetectorLabelledEntitiesConstructorsFactory : public RadmonVDetectorEntitiesConstructorsFactory
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorLabelledEntitiesConstructorsFactory();
|
||||
virtual ~RadmonDetectorLabelledEntitiesConstructorsFactory();
|
||||
|
||||
virtual RadmonVDetectorEntityConstructor * CreateEntityConstructor(const G4String & entityName);
|
||||
|
||||
void AppendLabelledEntityConstructor(RadmonVDetectorLabelledEntityConstructor * constructor);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorLabelledEntitiesConstructorsFactory(const RadmonDetectorLabelledEntitiesConstructorsFactory & copy);
|
||||
RadmonDetectorLabelledEntitiesConstructorsFactory & operator=(const RadmonDetectorLabelledEntitiesConstructorsFactory & copy);
|
||||
|
||||
// Private attributes
|
||||
typedef std::list<RadmonVDetectorLabelledEntityConstructor *> EntityConstructorsList;
|
||||
EntityConstructorsList entityConstructorsList;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorLabelledEntitiesConstructorsFactory.icc"
|
||||
#endif /* RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSFACTORY_HH */
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLabelledEntitiesConstructorsFactory.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLabelledEntitiesConstructorsFactory.icc,v 1.3 2006/06/29 16:10:09 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSFACTORY_HH
|
||||
#error "RadmonDetectorLabelledEntitiesConstructorsFactory.icc cannot be included directly. Please use RadmonDetectorLabelledEntitiesConstructorsFactory.hh"
|
||||
#else /* RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSFACTORY_HH */
|
||||
inline RadmonDetectorLabelledEntitiesConstructorsFactory :: RadmonDetectorLabelledEntitiesConstructorsFactory()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSFACTORY_HH */
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLabelledEntitiesConstructorsMessenger.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLabelledEntitiesConstructorsMessenger.hh,v 1.3 2006/06/29 16:10:11 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: UI commands for dumping the available constructors
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSMESSENGER_HH
|
||||
#define RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSMESSENGER_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonMessenger.hh"
|
||||
#include "G4String.hh"
|
||||
#include <set>
|
||||
|
||||
class RadmonDetectorLabelledEntitiesConstructorsMessenger : public RadmonMessenger
|
||||
{
|
||||
public:
|
||||
static RadmonDetectorLabelledEntitiesConstructorsMessenger * Instance(void);
|
||||
|
||||
void AddAvailableConstructor(const G4String & name);
|
||||
void RemoveAvailableConstructor(const G4String & name);
|
||||
|
||||
virtual G4String GetCurrentValue(G4UIcommand * command);
|
||||
virtual void SetNewValue(G4UIcommand * command, G4String newValue);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorLabelledEntitiesConstructorsMessenger();
|
||||
RadmonDetectorLabelledEntitiesConstructorsMessenger(const RadmonDetectorLabelledEntitiesConstructorsMessenger & copy);
|
||||
~RadmonDetectorLabelledEntitiesConstructorsMessenger();
|
||||
RadmonDetectorLabelledEntitiesConstructorsMessenger & operator=(const RadmonDetectorLabelledEntitiesConstructorsMessenger & copy);
|
||||
|
||||
// Private Data Types
|
||||
typedef std::set<G4String> AvailableConstructors;
|
||||
|
||||
// Private variables
|
||||
AvailableConstructors availableConstructors;
|
||||
|
||||
static RadmonDetectorLabelledEntitiesConstructorsMessenger * instance;
|
||||
|
||||
// Commands
|
||||
RADMON_DECLARE_COMMAND(Dump);
|
||||
};
|
||||
#endif /* RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSMESSENGER_HH */
|
||||
@@ -0,0 +1,70 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerLayout.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerLayout.hh,v 1.5 2006/06/29 16:10:13 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Internal class that describes layer informations
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERLAYOUT_HH
|
||||
#define RADMONDETECTORLAYERLAYOUT_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonLayoutEntityWithAttributes.hh"
|
||||
|
||||
class RadmonDetectorLayerLayout : public RadmonLayoutEntityWithAttributes
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorLayerLayout();
|
||||
inline RadmonDetectorLayerLayout(const RadmonDetectorLayerLayout & copy);
|
||||
inline ~RadmonDetectorLayerLayout();
|
||||
|
||||
inline RadmonDetectorLayerLayout & operator=(const RadmonDetectorLayerLayout & copy);
|
||||
|
||||
inline const G4String & GetLabel(void) const;
|
||||
inline const G4String & GetType(void) const;
|
||||
inline G4double GetThickness(void) const;
|
||||
inline void SetLabel(const G4String & label);
|
||||
inline void SetType(const G4String & type);
|
||||
inline void SetThickness(G4double thickness);
|
||||
|
||||
void DumpLayout(std::ostream & out, const G4String &indent=G4String()) const;
|
||||
|
||||
private:
|
||||
// Private attributes
|
||||
G4String layerLabel;
|
||||
G4String layerType;
|
||||
G4double layerThickness;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorLayerLayout.icc"
|
||||
#endif /* RADMONDETECTORLAYERLAYOUT_HH */
|
||||
@@ -0,0 +1,118 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerLayout.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerLayout.icc,v 1.5 2006/06/29 16:10:15 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERLAYOUT_HH
|
||||
#error "RadmonDetectorLayerLayout.icc cannot be included directly. Please use RadmonDetectorLayerLayout.hh"
|
||||
#else /* RADMONDETECTORLAYERLAYOUT_HH */
|
||||
inline RadmonDetectorLayerLayout :: RadmonDetectorLayerLayout()
|
||||
:
|
||||
layerThickness(0.)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerLayout :: RadmonDetectorLayerLayout(const RadmonDetectorLayerLayout & copy)
|
||||
:
|
||||
RadmonLayoutEntityWithAttributes(copy),
|
||||
layerLabel(copy.layerLabel),
|
||||
layerType(copy.layerType),
|
||||
layerThickness(copy.layerThickness)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerLayout :: ~RadmonDetectorLayerLayout()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerLayout & RadmonDetectorLayerLayout :: operator=(const RadmonDetectorLayerLayout & copy)
|
||||
{
|
||||
RadmonLayoutEntityWithAttributes::operator=(copy);
|
||||
layerLabel=copy.layerLabel;
|
||||
layerType=copy.layerType;
|
||||
layerThickness=copy.layerThickness;
|
||||
|
||||
return (*this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline const G4String & RadmonDetectorLayerLayout :: GetLabel(void) const
|
||||
{
|
||||
return layerLabel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline const G4String & RadmonDetectorLayerLayout :: GetType(void) const
|
||||
{
|
||||
return layerType;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4double RadmonDetectorLayerLayout :: GetThickness(void) const
|
||||
{
|
||||
return layerThickness;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerLayout :: SetLabel(const G4String & label)
|
||||
{
|
||||
layerLabel=label;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerLayout :: SetType(const G4String & type)
|
||||
{
|
||||
layerType=type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerLayout :: SetThickness(G4double thickness)
|
||||
{
|
||||
layerThickness=thickness;
|
||||
}
|
||||
#endif /* RADMONDETECTORLAYERLAYOUT_HH */
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumesItem.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumeItem.hh,v 1.5 2006/06/29 16:10:17 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: solids, physical and logical volumes
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMEITEM_HH
|
||||
#define RADMONDETECTORLAYERVOLUMEITEM_HH
|
||||
|
||||
// Include files
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4String.hh"
|
||||
|
||||
// Forward declarations
|
||||
class G4VisAttributes;
|
||||
class G4VSolid;
|
||||
class G4Material;
|
||||
class G4LogicalVolume;
|
||||
class G4VPhysicalVolume;
|
||||
class G4VSensitiveDetector;
|
||||
|
||||
class RadmonDetectorLayerVolumeItem
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorLayerVolumeItem();
|
||||
~RadmonDetectorLayerVolumeItem();
|
||||
|
||||
inline void SetSolid(G4VSolid * solid);
|
||||
inline void SetAttributes(G4VisAttributes * attrs);
|
||||
inline void SetMaterial(G4Material * material);
|
||||
inline void SetName(const G4String & name);
|
||||
inline void SetPosition(const G4ThreeVector & position);
|
||||
inline void SetRotation(const G4RotationMatrix & rotation);
|
||||
inline void SetSensitiveDetector(G4VSensitiveDetector * detector);
|
||||
inline void SetMotherVolumeItem(RadmonDetectorLayerVolumeItem * item);
|
||||
|
||||
inline G4VSolid * GetSolid(void) const;
|
||||
inline G4VisAttributes * GetAttributes(void) const;
|
||||
inline G4Material * GetMaterial(void) const;
|
||||
inline const G4String & GetName(void) const;
|
||||
inline const G4ThreeVector & GetPosition(void) const;
|
||||
inline const G4RotationMatrix & GetRotation(void) const;
|
||||
inline G4VSensitiveDetector * GetSensitiveDetector(void) const;
|
||||
inline RadmonDetectorLayerVolumeItem * GetMotherVolumeItem(void) const;
|
||||
|
||||
G4LogicalVolume * GetLogicalVolume(void);
|
||||
|
||||
private:
|
||||
// Private methods
|
||||
void Assertion(void);
|
||||
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorLayerVolumeItem(const RadmonDetectorLayerVolumeItem & copy);
|
||||
RadmonDetectorLayerVolumeItem & operator=(const RadmonDetectorLayerVolumeItem & copy);
|
||||
|
||||
// Private attributes
|
||||
G4VSolid * volumeSolid;
|
||||
G4VisAttributes * volumeAttributes;
|
||||
G4Material * volumeMaterial;
|
||||
G4String volumeName;
|
||||
G4RotationMatrix volumeRotation;
|
||||
G4ThreeVector volumePosition;
|
||||
G4LogicalVolume * volumeLogical;
|
||||
G4VPhysicalVolume * volumePhysical;
|
||||
G4VSensitiveDetector * volumeSensitiveDetector;
|
||||
RadmonDetectorLayerVolumeItem * volumeMother;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorLayerVolumeItem.icc"
|
||||
#endif /* RADMONDETECTORLAYERVOLUMEITEM_HH */
|
||||
+173
@@ -0,0 +1,173 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumeItem.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumeItem.icc,v 1.4 2006/06/29 16:10:19 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMEITEM_HH
|
||||
#error "RadmonDetectorLayerVolumeItem.icc cannot be included directly. Please use RadmonDetectorLayerVolumeItem.hh"
|
||||
#else /* RADMONDETECTORLAYERVOLUMEITEM_HH */
|
||||
inline RadmonDetectorLayerVolumeItem :: RadmonDetectorLayerVolumeItem()
|
||||
:
|
||||
volumeSolid(0),
|
||||
volumeAttributes(0),
|
||||
volumeMaterial(0),
|
||||
volumeLogical(0),
|
||||
volumePhysical(0),
|
||||
volumeSensitiveDetector(0),
|
||||
volumeMother(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerVolumeItem :: SetSolid(G4VSolid * solid)
|
||||
{
|
||||
Assertion();
|
||||
volumeSolid=solid;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerVolumeItem :: SetAttributes(G4VisAttributes * attrs)
|
||||
{
|
||||
Assertion();
|
||||
volumeAttributes=attrs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerVolumeItem :: SetMaterial(G4Material * material)
|
||||
{
|
||||
Assertion();
|
||||
volumeMaterial=material;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerVolumeItem :: SetName(const G4String & name)
|
||||
{
|
||||
Assertion();
|
||||
volumeName=name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerVolumeItem :: SetPosition(const G4ThreeVector & position)
|
||||
{
|
||||
Assertion();
|
||||
volumePosition=position;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerVolumeItem :: SetRotation(const G4RotationMatrix & rotation)
|
||||
{
|
||||
Assertion();
|
||||
volumeRotation=rotation;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerVolumeItem :: SetSensitiveDetector(G4VSensitiveDetector * detector)
|
||||
{
|
||||
Assertion();
|
||||
volumeSensitiveDetector=detector;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorLayerVolumeItem :: SetMotherVolumeItem(RadmonDetectorLayerVolumeItem * item)
|
||||
{
|
||||
Assertion();
|
||||
volumeMother=item;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline G4VSolid * RadmonDetectorLayerVolumeItem :: GetSolid(void) const
|
||||
{
|
||||
return volumeSolid;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4VisAttributes * RadmonDetectorLayerVolumeItem :: GetAttributes(void) const
|
||||
{
|
||||
return volumeAttributes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4Material * RadmonDetectorLayerVolumeItem :: GetMaterial(void) const
|
||||
{
|
||||
return volumeMaterial;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline const G4String & RadmonDetectorLayerVolumeItem :: GetName(void) const
|
||||
{
|
||||
return volumeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline const G4ThreeVector & RadmonDetectorLayerVolumeItem :: GetPosition(void) const
|
||||
{
|
||||
return volumePosition;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline const G4RotationMatrix & RadmonDetectorLayerVolumeItem :: GetRotation(void) const
|
||||
{
|
||||
return volumeRotation;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4VSensitiveDetector * RadmonDetectorLayerVolumeItem :: GetSensitiveDetector(void) const
|
||||
{
|
||||
return volumeSensitiveDetector;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItem * RadmonDetectorLayerVolumeItem :: GetMotherVolumeItem(void) const
|
||||
{
|
||||
return volumeMother;
|
||||
}
|
||||
#endif /* RADMONDETECTORLAYERVOLUMEITEM_HH */
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumeItemIntersection.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumeItemIntersection.hh,v 1.3 2006/06/29 16:10:21 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Intersection of two solids
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMEITEMINTERSECTION_HH
|
||||
#define RADMONDETECTORLAYERVOLUMEITEMINTERSECTION_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonVDetectorLayerVolumeItemOperation.hh"
|
||||
|
||||
class RadmonDetectorLayerVolumeItemIntersection : public RadmonVDetectorLayerVolumeItemOperation
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorLayerVolumeItemIntersection();
|
||||
inline RadmonDetectorLayerVolumeItemIntersection(G4VSolid * solid, const G4RotationMatrix & rotation, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
inline RadmonDetectorLayerVolumeItemIntersection(G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
inline RadmonDetectorLayerVolumeItemIntersection(G4VSolid * solid, G4bool ownSolid=true);
|
||||
inline RadmonDetectorLayerVolumeItemIntersection(const RadmonDetectorLayerVolumeItem * item);
|
||||
inline ~RadmonDetectorLayerVolumeItemIntersection();
|
||||
|
||||
protected:
|
||||
virtual G4VSolid * Operate(G4VSolid * left, G4VSolid * right, G4RotationMatrix * relativeRotation, const G4ThreeVector & relativePosition);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorLayerVolumeItemIntersection.icc"
|
||||
#endif /* RADMONDETECTORLAYERVOLUMEITEMINTERSECTION_HH */
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumeItemIntersection.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumeItemIntersection.icc,v 1.3 2006/06/29 16:10:23 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMEITEMINTERSECTION_HH
|
||||
#error "RadmonDetectorLayerVolumeItemIntersection.icc cannot be included directly. Please use RadmonDetectorLayerVolumeItemIntersection.hh"
|
||||
#else /* RADMONDETECTORLAYERVOLUMEITEMINTERSECTION_HH */
|
||||
inline RadmonDetectorLayerVolumeItemIntersection :: RadmonDetectorLayerVolumeItemIntersection()
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemIntersection :: RadmonDetectorLayerVolumeItemIntersection(G4VSolid * solid, const G4RotationMatrix & rotation, const G4ThreeVector & position, G4bool ownSolid)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(solid, rotation, position, ownSolid)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemIntersection :: RadmonDetectorLayerVolumeItemIntersection(G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(solid, position, ownSolid)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemIntersection :: RadmonDetectorLayerVolumeItemIntersection(G4VSolid * solid, G4bool ownSolid)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(solid, ownSolid)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemIntersection :: RadmonDetectorLayerVolumeItemIntersection(const RadmonDetectorLayerVolumeItem * item)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(item)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemIntersection :: ~RadmonDetectorLayerVolumeItemIntersection()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORLAYERVOLUMEITEMINTERSECTION_HH */
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumeItemSubtraction.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumeItemSubtraction.hh,v 1.3 2006/06/29 16:10:25 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Subtraction of two solids
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMEITEMSUBTRACTION_HH
|
||||
#define RADMONDETECTORLAYERVOLUMEITEMSUBTRACTION_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonVDetectorLayerVolumeItemOperation.hh"
|
||||
|
||||
class RadmonDetectorLayerVolumeItemSubtraction : public RadmonVDetectorLayerVolumeItemOperation
|
||||
{
|
||||
public:
|
||||
enum Mode
|
||||
{
|
||||
leftMinusRight,
|
||||
rightMinusLeft
|
||||
};
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction(Mode mode);
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction(Mode mode, G4VSolid * solid, const G4RotationMatrix & rotation, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction(Mode mode, G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction(Mode mode, G4VSolid * solid, G4bool ownSolid=true);
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction(Mode mode, const RadmonDetectorLayerVolumeItem * item);
|
||||
inline ~RadmonDetectorLayerVolumeItemSubtraction();
|
||||
|
||||
protected:
|
||||
virtual G4VSolid * Operate(G4VSolid * left, G4VSolid * right, G4RotationMatrix * relativeRotation, const G4ThreeVector & relativePosition);
|
||||
|
||||
private:
|
||||
Mode opMode;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorLayerVolumeItemSubtraction.icc"
|
||||
#endif /* RADMONDETECTORLAYERVOLUMEITEMSUBTRACTION_HH */
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumeItemSubtraction.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumeItemSubtraction.icc,v 1.3 2006/06/29 16:10:27 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMEITEMSUBTRACTION_HH
|
||||
#error "RadmonDetectorLayerVolumeItemSubtraction.icc cannot be included directly. Please use RadmonDetectorLayerVolumeItemSubtraction.hh"
|
||||
#else /* RADMONDETECTORLAYERVOLUMEITEMSUBTRACTION_HH */
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction :: RadmonDetectorLayerVolumeItemSubtraction(Mode mode)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(),
|
||||
opMode(mode)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction :: RadmonDetectorLayerVolumeItemSubtraction(Mode mode, G4VSolid * solid, const G4RotationMatrix & rotation, const G4ThreeVector & position, G4bool ownSolid)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(solid, rotation, position, ownSolid),
|
||||
opMode(mode)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction :: RadmonDetectorLayerVolumeItemSubtraction(Mode mode, G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(solid, position, ownSolid),
|
||||
opMode(mode)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction :: RadmonDetectorLayerVolumeItemSubtraction(Mode mode, G4VSolid * solid, G4bool ownSolid)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(solid, ownSolid),
|
||||
opMode(mode)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction :: RadmonDetectorLayerVolumeItemSubtraction(Mode mode, const RadmonDetectorLayerVolumeItem * item)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(item),
|
||||
opMode(mode)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemSubtraction :: ~RadmonDetectorLayerVolumeItemSubtraction()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORLAYERVOLUMEITEMSUBTRACTION_HH */
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumeItemUnion.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumeItemUnion.hh,v 1.3 2006/06/29 16:10:29 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Union of two solids
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMEITEMUNION_HH
|
||||
#define RADMONDETECTORLAYERVOLUMEITEMUNION_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonVDetectorLayerVolumeItemOperation.hh"
|
||||
|
||||
class RadmonDetectorLayerVolumeItemUnion : public RadmonVDetectorLayerVolumeItemOperation
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorLayerVolumeItemUnion();
|
||||
inline RadmonDetectorLayerVolumeItemUnion(G4VSolid * solid, const G4RotationMatrix & rotation, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
inline RadmonDetectorLayerVolumeItemUnion(G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
inline RadmonDetectorLayerVolumeItemUnion(G4VSolid * solid, G4bool ownSolid=true);
|
||||
inline RadmonDetectorLayerVolumeItemUnion(const RadmonDetectorLayerVolumeItem * item);
|
||||
inline ~RadmonDetectorLayerVolumeItemUnion();
|
||||
|
||||
protected:
|
||||
virtual G4VSolid * Operate(G4VSolid * left, G4VSolid * right, G4RotationMatrix * relativeRotation, const G4ThreeVector & relativePosition);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorLayerVolumeItemUnion.icc"
|
||||
#endif /* RADMONDETECTORLAYERVOLUMEITEMUNION_HH */
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumeItemUnion.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumeItemUnion.icc,v 1.3 2006/06/29 16:10:31 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMEITEMUNION_HH
|
||||
#error "RadmonDetectorLayerVolumeItemUnion.icc cannot be included directly. Please use RadmonDetectorLayerVolumeItemUnion.hh"
|
||||
#else /* RADMONDETECTORLAYERVOLUMEITEMUNION_HH */
|
||||
inline RadmonDetectorLayerVolumeItemUnion :: RadmonDetectorLayerVolumeItemUnion()
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemUnion :: RadmonDetectorLayerVolumeItemUnion(G4VSolid * solid, const G4RotationMatrix & rotation, const G4ThreeVector & position, G4bool ownSolid)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(solid, rotation, position, ownSolid)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemUnion :: RadmonDetectorLayerVolumeItemUnion(G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(solid, position, ownSolid)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemUnion :: RadmonDetectorLayerVolumeItemUnion(G4VSolid * solid, G4bool ownSolid)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(solid, ownSolid)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemUnion :: RadmonDetectorLayerVolumeItemUnion(const RadmonDetectorLayerVolumeItem * item)
|
||||
:
|
||||
RadmonVDetectorLayerVolumeItemOperation(item)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItemUnion :: ~RadmonDetectorLayerVolumeItemUnion()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORLAYERVOLUMEITEMUNION_HH */
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumesList.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumesList.hh,v 1.4 2006/06/29 16:10:33 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Collection of solids, physical and logical volumes
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMESLIST_HH
|
||||
#define RADMONDETECTORLAYERVOLUMESLIST_HH
|
||||
|
||||
// Include files
|
||||
#include "globals.hh"
|
||||
#include <vector>
|
||||
|
||||
// Forward declaration
|
||||
class RadmonDetectorLayerVolumeItem;
|
||||
|
||||
class RadmonDetectorLayerVolumesList
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorLayerVolumesList();
|
||||
inline ~RadmonDetectorLayerVolumesList();
|
||||
|
||||
inline G4int GetNItems(void) const;
|
||||
inline G4bool Empty(void) const;
|
||||
|
||||
inline const RadmonDetectorLayerVolumeItem * GetItem(G4int index) const;
|
||||
inline RadmonDetectorLayerVolumeItem * GetItem(G4int index);
|
||||
|
||||
RadmonDetectorLayerVolumeItem * AppendItem(void);
|
||||
|
||||
void RemoveItem(G4int index);
|
||||
void RemoveItemsByRange(G4int first, G4int last);
|
||||
void RemoveAllItems(void);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorLayerVolumesList(const RadmonDetectorLayerVolumesList & copy);
|
||||
RadmonDetectorLayerVolumesList & operator=(const RadmonDetectorLayerVolumesList & copy);
|
||||
|
||||
// Private data types
|
||||
typedef std::vector<RadmonDetectorLayerVolumeItem *> VolumesVector;
|
||||
|
||||
// Private methods
|
||||
void RemoveRange(VolumesVector::iterator begin, VolumesVector::iterator end);
|
||||
|
||||
// Private attributes
|
||||
VolumesVector volumesVector;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorLayerVolumesList.icc"
|
||||
#endif /* RADMONDETECTORLAYERVOLUMESLIST_HH */
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumesList.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumesList.icc,v 1.3 2006/06/29 16:10:35 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYERVOLUMESLIST_HH
|
||||
#error "RadmonDetectorLayerVolumesList.icc cannot be included directly. Please use RadmonDetectorLayerVolumesList.hh"
|
||||
#else /* RADMONDETECTORLAYERVOLUMESLIST_HH */
|
||||
inline RadmonDetectorLayerVolumesList :: RadmonDetectorLayerVolumesList()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumesList :: ~RadmonDetectorLayerVolumesList()
|
||||
{
|
||||
RemoveAllItems();
|
||||
}
|
||||
|
||||
|
||||
inline G4int RadmonDetectorLayerVolumesList :: GetNItems(void) const
|
||||
{
|
||||
return volumesVector.size();
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4bool RadmonDetectorLayerVolumesList :: Empty(void) const
|
||||
{
|
||||
return volumesVector.empty();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline const RadmonDetectorLayerVolumeItem * RadmonDetectorLayerVolumesList :: GetItem(G4int index) const
|
||||
{
|
||||
return volumesVector[index];
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorLayerVolumeItem * RadmonDetectorLayerVolumesList :: GetItem(G4int index)
|
||||
{
|
||||
return volumesVector[index];
|
||||
}
|
||||
#endif /* RADMONDETECTORLAYERVOLUMESLIST_HH */
|
||||
@@ -0,0 +1,131 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayout.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayout.hh,v 1.4.2.2 2006/06/29 16:10:37 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Class to keep track of the configured detector layout
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORLAYOUT_HH
|
||||
#define RADMONDETECTORLAYOUT_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonVDetectorLayout.hh"
|
||||
|
||||
#include "RadmonDetectorEnvironmentLayout.hh"
|
||||
#include "RadmonDetectorMultilayersLayoutCollection.hh"
|
||||
#include "RadmonDetectorMultilayerPlacementsLayoutCollection.hh"
|
||||
|
||||
class RadmonDetectorLayout : public RadmonVDetectorLayout
|
||||
{
|
||||
public:
|
||||
RadmonDetectorLayout();
|
||||
~RadmonDetectorLayout();
|
||||
|
||||
virtual void EnableEnvironment(void);
|
||||
virtual void DisableEnvironment(void);
|
||||
virtual G4bool IsEnabledEnvironment(void) const;
|
||||
|
||||
virtual void SetEnvironmentType(const G4String & type);
|
||||
virtual const G4String & GetEnvironmentType() const;
|
||||
virtual G4int GetEnvironmentNAttributes(void) const;
|
||||
virtual const G4String & GetEnvironmentAttributeName(G4int index) const;
|
||||
virtual void SetEnvironmentAttribute(const G4String & attributeName, const G4String & attributeValue);
|
||||
virtual const G4String GetEnvironmentAttribute(const G4String & attributeName, const G4String & defaultAttributeValue) const;
|
||||
virtual void ClearEnvironmentAttribute(const G4String & attributeName);
|
||||
|
||||
virtual void CreateMultilayer(const G4String & multilayerLabel);
|
||||
virtual void RemoveMultilayer(const G4String & multilayerLabel);
|
||||
virtual void SetMultilayerWidth(const G4String & multilayerLabel, G4double width);
|
||||
virtual G4double GetMultilayerWidth(const G4String & multilayerLabel) const;
|
||||
virtual void SetMultilayerHeight(const G4String & multilayerLabel, G4double height);
|
||||
virtual G4double GetMultilayerHeight(const G4String & multilayerLabel) const;
|
||||
virtual G4double GetMultilayerTotalThickness(const G4String & multilayerLabel) const;
|
||||
|
||||
virtual void AppendLayerToMultilayer(const G4String & multilayerLabel, const G4String & layerLabel);
|
||||
virtual void RemoveLayerFromMultilayer(const G4String & multilayerLabel, const G4String & layerLabel);
|
||||
virtual void RemoveAllLayersFromMultilayer(const G4String & multilayerLabel);
|
||||
virtual G4int GetMultilayerNLayers(const G4String & multilayerLabel) const;
|
||||
virtual const G4String & GetMultilayerLayerLabel(const G4String & multilayerLabel, G4int index) const;
|
||||
|
||||
virtual void SetLayerThickness(const G4String & multilayerLabel, const G4String & layerLabel, G4double thickness);
|
||||
virtual G4double GetLayerThickness(const G4String & multilayerLabel, const G4String & layerLabel) const;
|
||||
virtual void SetLayerType(const G4String & multilayerLabel, const G4String & layerLabel, const G4String & type);
|
||||
virtual const G4String & GetLayerType(const G4String & multilayerLabel, const G4String & layerLabel) const;
|
||||
|
||||
virtual G4int GetLayerNAttributes(const G4String & multilayerLabel, const G4String & layerLabel) const;
|
||||
virtual const G4String & GetLayerAttributeName(const G4String & multilayerLabel, const G4String & layerLabel, G4int index) const;
|
||||
virtual void SetLayerAttribute(const G4String & multilayerLabel, const G4String & layerLabel, const G4String & attributeName, const G4String & attributeValue);
|
||||
virtual const G4String GetLayerAttribute(const G4String & multilayerLabel, const G4String & layerLabel, const G4String & attributeName, const G4String & defaultAttributeValue) const;
|
||||
virtual void ClearLayerAttribute(const G4String & multilayerLabel, const G4String & layerLabel, const G4String & attributeName);
|
||||
|
||||
virtual void CreatePlacement(const G4String & placementLabel, const G4String & multilayerName);
|
||||
virtual G4int GetNPlacements() const;
|
||||
virtual const G4String & GetPlacementLabel(G4int index) const;
|
||||
virtual void RemovePlacement(const G4String & placementLabel);
|
||||
|
||||
virtual const G4String & GetPlacementMultilayerType(const G4String & placementLabel) const;
|
||||
virtual void SetPlacementPosition(const G4String & placementLabel, const G4ThreeVector & position);
|
||||
virtual const G4ThreeVector & GetPlacementPosition(const G4String & placementLabel) const;
|
||||
virtual void SetPlacementPosition(const G4String & placementLabel, const G4String & originLabel, const G4ThreeVector & offset);
|
||||
virtual void SetPlacementRotation(const G4String & placementLabel, const G4RotationMatrix & rotation);
|
||||
virtual const G4RotationMatrix & GetPlacementRotation(const G4String & placementLabel) const;
|
||||
virtual void SetPlacementRotation(const G4String & placementLabel, const G4String & originLabel, const G4RotationMatrix & relativeRotation);
|
||||
|
||||
virtual void DumpLayout(std::ostream & out) const;
|
||||
|
||||
virtual G4bool Load(std::istream & in);
|
||||
virtual G4bool Save(std::ostream & out) const;
|
||||
|
||||
|
||||
private:
|
||||
inline bool IsPlaced(const G4String & multilayerLabel);
|
||||
inline RadmonDetectorMultilayerLayout * FindMultilayer(const G4String & multilayerLabel);
|
||||
inline const RadmonDetectorMultilayerLayout *FindMultilayer(const G4String & multilayerLabel) const;
|
||||
inline RadmonDetectorMultilayerPlacementLayout * FindPlacement(const G4String & placementLabel);
|
||||
inline const RadmonDetectorMultilayerPlacementLayout *FindPlacement(const G4String & placementLabel) const;
|
||||
inline RadmonDetectorLayerLayout * FindLayer(const G4String & multilayerLabel, const G4String & layerLabel);
|
||||
inline const RadmonDetectorLayerLayout * FindLayer(const G4String & multilayerLabel, const G4String & layerLabel) const;
|
||||
|
||||
inline G4String & GetNullStr() const;
|
||||
inline G4ThreeVector & GetNullPosition() const;
|
||||
inline G4RotationMatrix & GetNullRotationMatrix() const;
|
||||
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorLayout(const RadmonDetectorLayout & copy);
|
||||
RadmonDetectorLayout & operator=(const RadmonDetectorLayout & copy);
|
||||
|
||||
// Private attributes
|
||||
RadmonDetectorMultilayerPlacementsLayoutCollection multilayerPlacementsCollection;
|
||||
RadmonDetectorMultilayersLayoutCollection multilayersCollection;
|
||||
RadmonDetectorEnvironmentLayout environment;
|
||||
};
|
||||
#endif /* RADMONDETECTORLAYOUT_HH */
|
||||
@@ -0,0 +1,96 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorMessenger.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorMessenger.hh,v 1.5 2006/06/29 16:10:39 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: UI commands for managing a layout
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORMESSENGER_HH
|
||||
#define RADMONDETECTORMESSENGER_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonMessenger.hh"
|
||||
#include "G4String.hh"
|
||||
|
||||
// Forward declarations
|
||||
class RadmonVDetectorLayout;
|
||||
|
||||
class RadmonDetectorMessenger : public RadmonMessenger
|
||||
{
|
||||
public:
|
||||
RadmonDetectorMessenger(RadmonVDetectorLayout * layout);
|
||||
~RadmonDetectorMessenger();
|
||||
|
||||
virtual G4String GetCurrentValue(G4UIcommand * command);
|
||||
virtual void SetNewValue(G4UIcommand * command, G4String newValue);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorMessenger();
|
||||
RadmonDetectorMessenger(const RadmonDetectorMessenger & copy);
|
||||
RadmonDetectorMessenger & operator=(const RadmonDetectorMessenger & copy);
|
||||
|
||||
// Private Attributes
|
||||
RadmonVDetectorLayout * detectorLayout;
|
||||
|
||||
// Commands
|
||||
RADMON_DECLARE_COMMAND(EnableEnvironment);
|
||||
RADMON_DECLARE_COMMAND(DisableEnvironment);
|
||||
RADMON_DECLARE_COMMAND(SetEnvironmentType);
|
||||
RADMON_DECLARE_COMMAND(SetEnvironmentAttribute);
|
||||
RADMON_DECLARE_COMMAND(ClearEnvironmentAttribute);
|
||||
|
||||
RADMON_DECLARE_COMMAND(CreateMultilayer);
|
||||
RADMON_DECLARE_COMMAND(RemoveMultilayer);
|
||||
RADMON_DECLARE_COMMAND(SetMultilayerWidth);
|
||||
RADMON_DECLARE_COMMAND(SetMultilayerHeight);
|
||||
RADMON_DECLARE_COMMAND(AppendLayerToMultilayer);
|
||||
RADMON_DECLARE_COMMAND(RemoveLayerFromMultilayer);
|
||||
RADMON_DECLARE_COMMAND(RemoveAllLayersFromMultilayer);
|
||||
|
||||
RADMON_DECLARE_COMMAND(SetLayerThickness);
|
||||
RADMON_DECLARE_COMMAND(SetLayerType);
|
||||
RADMON_DECLARE_COMMAND(SetLayerAttribute);
|
||||
RADMON_DECLARE_COMMAND(ClearLayerAttribute);
|
||||
|
||||
RADMON_DECLARE_COMMAND(CreatePlacement);
|
||||
RADMON_DECLARE_COMMAND(RemovePlacement);
|
||||
RADMON_DECLARE_COMMAND(SetPlacementPosition);
|
||||
RADMON_DECLARE_COMMAND(SetPlacementRotation);
|
||||
RADMON_DECLARE_COMMAND(SetRelativePlacementPosition);
|
||||
RADMON_DECLARE_COMMAND(SetRelativePlacementRotation);
|
||||
|
||||
RADMON_DECLARE_COMMAND(DumpLayout);
|
||||
RADMON_DECLARE_COMMAND(Load);
|
||||
RADMON_DECLARE_COMMAND(Save);
|
||||
};
|
||||
#endif /* RADMONDETECTORMESSENGER_HH */
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorMultilayerLayout.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorMultilayerLayout.hh,v 1.4 2006/06/29 16:10:41 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Internal class to manage multilayers
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORMULTILAYERLAYOUT_HH
|
||||
#define RADMONDETECTORMULTILAYERLAYOUT_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLayerLayout.hh"
|
||||
#include "RadmonTLabelledCollection.hh"
|
||||
#include "G4String.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class RadmonDetectorMultilayerLayout
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorMultilayerLayout();
|
||||
RadmonDetectorMultilayerLayout(const RadmonDetectorMultilayerLayout & copy);
|
||||
inline ~RadmonDetectorMultilayerLayout();
|
||||
|
||||
RadmonDetectorMultilayerLayout & operator=(const RadmonDetectorMultilayerLayout & copy);
|
||||
|
||||
inline const G4String & GetLabel(void) const;
|
||||
inline void SetLabel(const G4String & label);
|
||||
|
||||
inline G4double GetWidth(void) const;
|
||||
inline G4double GetHeight(void) const;
|
||||
G4double GetTotalThickness(void) const;
|
||||
inline void SetWidth(G4double width);
|
||||
inline void SetHeight(G4double height);
|
||||
|
||||
G4int GetNLayers(void) const;
|
||||
G4bool Empty(void) const;
|
||||
|
||||
const RadmonDetectorLayerLayout & GetLayer(G4int index) const;
|
||||
RadmonDetectorLayerLayout & GetLayer(G4int index);
|
||||
|
||||
G4bool ExistsLayerByLabel(const G4String & layerLabel) const;
|
||||
G4int MultiplicityLayerByLabel(const G4String & layerLabel) const;
|
||||
|
||||
const RadmonDetectorLayerLayout & FindLayerByLabel(const G4String &layerLabel, G4int count = 0) const;
|
||||
RadmonDetectorLayerLayout & FindLayerByLabel(const G4String & layerLabel, G4int count = 0);
|
||||
|
||||
RadmonDetectorLayerLayout & AppendLayer(void);
|
||||
RadmonDetectorLayerLayout & PrependLayer(void);
|
||||
|
||||
void RemoveLayerByLabel(const G4String & layerLabel, G4int count = 0);
|
||||
void RemoveLayersByLabel(const G4String & layerLabel);
|
||||
void RemoveLayer(G4int index);
|
||||
void RemoveLayersByRange(G4int first, G4int last);
|
||||
void RemoveAllLayers(void);
|
||||
|
||||
void DumpLayout(std::ostream & out, const G4String & indent=G4String()) const;
|
||||
|
||||
private:
|
||||
// Private attributes
|
||||
G4String multilayerLabel;
|
||||
G4double multilayerWidth;
|
||||
G4double multilayerHeight;
|
||||
RadmonTLabelledCollection<RadmonDetectorLayerLayout> multilayerLayersCollection;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorMultilayerLayout.icc"
|
||||
#endif /* RADMONDETECTORMULTILAYERLAYOUT_HH */
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorMultilayerLayout.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorMultilayerLayout.icc,v 1.4 2006/06/29 16:10:43 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORMULTILAYERLAYOUT_HH
|
||||
#error "RadmonDetectorMultilayerLayout.icc cannot be included directly. Please use RadmonDetectorMultilayerLayout.hh"
|
||||
#else /* RADMONDETECTORMULTILAYERLAYOUT_HH */
|
||||
inline RadmonDetectorMultilayerLayout :: RadmonDetectorMultilayerLayout()
|
||||
:
|
||||
multilayerWidth(0.),
|
||||
multilayerHeight(0.)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorMultilayerLayout :: ~RadmonDetectorMultilayerLayout()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline const G4String & RadmonDetectorMultilayerLayout :: GetLabel(void) const
|
||||
{
|
||||
return multilayerLabel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorMultilayerLayout :: SetLabel(const G4String & label)
|
||||
{
|
||||
multilayerLabel=label;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline G4double RadmonDetectorMultilayerLayout :: GetWidth(void) const
|
||||
{
|
||||
return multilayerWidth;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4double RadmonDetectorMultilayerLayout :: GetHeight(void) const
|
||||
{
|
||||
return multilayerHeight;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorMultilayerLayout :: SetWidth(G4double width)
|
||||
{
|
||||
multilayerWidth=width;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorMultilayerLayout :: SetHeight(G4double height)
|
||||
{
|
||||
multilayerHeight=height;
|
||||
}
|
||||
#endif /* RADMONDETECTORMULTILAYERLAYOUT_HH */
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorMultilayerPlacementLayout.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorMultilayerPlacementLayout.hh,v 1.4 2006/06/29 16:10:45 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Internal class to manage placed multilayer
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORMULTILAYERPLACEMENTLAYOUT_HH
|
||||
#define RADMONDETECTORMULTILAYERPLACEMENTLAYOUT_HH
|
||||
|
||||
// Include files
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4String.hh"
|
||||
|
||||
class RadmonDetectorMultilayerPlacementLayout
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorMultilayerPlacementLayout();
|
||||
inline RadmonDetectorMultilayerPlacementLayout(const RadmonDetectorMultilayerPlacementLayout & copy);
|
||||
inline ~RadmonDetectorMultilayerPlacementLayout();
|
||||
|
||||
inline RadmonDetectorMultilayerPlacementLayout & operator=(const RadmonDetectorMultilayerPlacementLayout & copy);
|
||||
|
||||
inline const G4String & GetLabel(void) const;
|
||||
inline const G4String & GetMultilayerLabel(void) const;
|
||||
|
||||
inline void SetLabel(const G4String & label);
|
||||
inline void SetMultilayerLabel(const G4String & label);
|
||||
|
||||
inline const G4ThreeVector & GetAbsolutePosition(void) const;
|
||||
inline const G4RotationMatrix & GetAbsoluteRotation(void) const;
|
||||
G4ThreeVector GetRelativePosition(const RadmonDetectorMultilayerPlacementLayout & reference) const;
|
||||
G4RotationMatrix GetRelativeRotation(const RadmonDetectorMultilayerPlacementLayout & reference) const;
|
||||
|
||||
inline void SetAbsolutePosition(const G4ThreeVector & position);
|
||||
inline void SetAbsoluteRotation(const G4RotationMatrix & rotation);
|
||||
void SetRelativePosition(const RadmonDetectorMultilayerPlacementLayout & reference, const G4ThreeVector & position);
|
||||
void SetRelativeRotation(const RadmonDetectorMultilayerPlacementLayout & reference, const G4RotationMatrix & rotation);
|
||||
|
||||
void DumpLayout(std::ostream & out, const G4String & indent=G4String()) const;
|
||||
|
||||
private:
|
||||
// Private attributes
|
||||
G4String placementLabel;
|
||||
G4String multilayerLabel;
|
||||
G4RotationMatrix multilayerRotation;
|
||||
G4ThreeVector multilayerPosition;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorMultilayerPlacementLayout.icc"
|
||||
#endif /* RADMONDETECTORMULTILAYERPLACEMENTLAYOUT_HH */
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorMultilayerPlacementLayout.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorMultilayerPlacementLayout.icc,v 1.3 2006/06/29 16:10:47 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORMULTILAYERPLACEMENTLAYOUT_HH
|
||||
#error "RadmonDetectorMultilayerPlacementLayout.icc cannot be included directly. Please use RadmonDetectorMultilayerPlacementLayout.hh"
|
||||
#else /* RADMONDETECTORMULTILAYERPLACEMENTLAYOUT_HH */
|
||||
inline RadmonDetectorMultilayerPlacementLayout :: RadmonDetectorMultilayerPlacementLayout()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorMultilayerPlacementLayout :: RadmonDetectorMultilayerPlacementLayout(const RadmonDetectorMultilayerPlacementLayout & copy)
|
||||
:
|
||||
placementLabel(copy.placementLabel),
|
||||
multilayerLabel(copy.multilayerLabel),
|
||||
multilayerRotation(copy.multilayerRotation),
|
||||
multilayerPosition(copy.multilayerPosition)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorMultilayerPlacementLayout :: ~RadmonDetectorMultilayerPlacementLayout()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorMultilayerPlacementLayout & RadmonDetectorMultilayerPlacementLayout :: operator=(const RadmonDetectorMultilayerPlacementLayout & copy)
|
||||
{
|
||||
placementLabel=copy.placementLabel;
|
||||
multilayerLabel=copy.multilayerLabel;
|
||||
multilayerRotation=copy.multilayerRotation;
|
||||
multilayerPosition=copy.multilayerPosition;
|
||||
|
||||
return (*this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline const G4String & RadmonDetectorMultilayerPlacementLayout :: GetLabel(void) const
|
||||
{
|
||||
return placementLabel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline const G4String & RadmonDetectorMultilayerPlacementLayout :: GetMultilayerLabel(void) const
|
||||
{
|
||||
return multilayerLabel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorMultilayerPlacementLayout :: SetLabel(const G4String & label)
|
||||
{
|
||||
placementLabel=label;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorMultilayerPlacementLayout :: SetMultilayerLabel(const G4String & label)
|
||||
{
|
||||
multilayerLabel=label;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline const G4ThreeVector & RadmonDetectorMultilayerPlacementLayout :: GetAbsolutePosition(void) const
|
||||
{
|
||||
return multilayerPosition;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline const G4RotationMatrix & RadmonDetectorMultilayerPlacementLayout :: GetAbsoluteRotation(void) const
|
||||
{
|
||||
return multilayerRotation;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorMultilayerPlacementLayout :: SetAbsolutePosition(const G4ThreeVector & position)
|
||||
{
|
||||
multilayerPosition=position;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorMultilayerPlacementLayout :: SetAbsoluteRotation(const G4RotationMatrix & rotation)
|
||||
{
|
||||
multilayerRotation=rotation;
|
||||
}
|
||||
#endif /* RADMONDETECTORMULTILAYERPLACEMENTLAYOUT_HH */
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorMultilayerPlacementsLayoutCollection.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorMultilayerPlacementsLayoutCollection.hh,v 1.4 2006/06/29 16:10:49 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Internal class to collect placed multilayer
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORMULTILAYERPLACEMENTSLAYOUTCOLLECTION_HH
|
||||
#define RADMONDETECTORMULTILAYERPLACEMENTSLAYOUTCOLLECTION_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonTLabelledCollection.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
// Forward declarations
|
||||
class G4String;
|
||||
class RadmonDetectorMultilayerPlacementLayout;
|
||||
|
||||
class RadmonDetectorMultilayerPlacementsLayoutCollection
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorMultilayerPlacementsLayoutCollection();
|
||||
inline ~RadmonDetectorMultilayerPlacementsLayoutCollection();
|
||||
|
||||
G4int GetNPlacements(void) const;
|
||||
G4bool Empty(void) const;
|
||||
|
||||
const RadmonDetectorMultilayerPlacementLayout & GetPlacement(G4int index) const;
|
||||
RadmonDetectorMultilayerPlacementLayout & GetPlacement(G4int index);
|
||||
|
||||
G4bool ExistsPlacementByLabel(const G4String & label) const;
|
||||
G4int MultiplicityPlacementByLabel(const G4String & label) const;
|
||||
|
||||
const RadmonDetectorMultilayerPlacementLayout & FindPlacementByLabel(const G4String & label, G4int count=0) const;
|
||||
RadmonDetectorMultilayerPlacementLayout & FindPlacementByLabel(const G4String & label, G4int count=0);
|
||||
|
||||
RadmonDetectorMultilayerPlacementLayout & CreatePlacement(void);
|
||||
|
||||
void RemovePlacementByLabel(const G4String & label, G4int count=0);
|
||||
void RemovePlacementsByLabel(const G4String & label);
|
||||
void RemovePlacement(G4int index);
|
||||
void RemoveAllPlacements(void);
|
||||
|
||||
void DumpLayout(std::ostream & out, const G4String & indent) const;
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorMultilayerPlacementsLayoutCollection(const RadmonDetectorMultilayerPlacementsLayoutCollection & copy);
|
||||
RadmonDetectorMultilayerPlacementsLayoutCollection & operator=(const RadmonDetectorMultilayerPlacementsLayoutCollection & copy);
|
||||
|
||||
// Private attributes
|
||||
RadmonTLabelledCollection<RadmonDetectorMultilayerPlacementLayout> multilayerPlacementsCollection;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorMultilayerPlacementsLayoutCollection.icc"
|
||||
#endif /* RADMONDETECTORMULTILAYERPLACEMENTSLAYOUTCOLLECTION_HH */
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorMultilayerPlacementsLayoutCollection.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorMultilayerPlacementsLayoutCollection.icc,v 1.3 2006/06/29 16:11:14 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORMULTILAYERPLACEMENTSLAYOUTCOLLECTION_HH
|
||||
#error "RadmonDetectorMultilayerPlacementsLayoutCollection.icc cannot be included directly. Please use RadmonDetectorMultilayerPlacementsLayoutCollection.hh"
|
||||
#else /* RADMONDETECTORMULTILAYERPLACEMENTSLAYOUTCOLLECTION_HH */
|
||||
|
||||
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorMultilayerPlacementLayout.hh"
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorMultilayerPlacementsLayoutCollection :: RadmonDetectorMultilayerPlacementsLayoutCollection()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorMultilayerPlacementsLayoutCollection :: ~RadmonDetectorMultilayerPlacementsLayoutCollection()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORMULTILAYERPLACEMENTSLAYOUTCOLLECTION_HH */
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorMultilayersLayoutCollection.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorMultilayersLayoutCollection.hh,v 1.4 2006/06/29 16:11:42 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Internal class to collect multilayers
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORMULTILAYERSLAYOUTCOLLECTION_HH
|
||||
#define RADMONDETECTORMULTILAYERSLAYOUTCOLLECTION_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorMultilayerLayout.hh"
|
||||
#include "RadmonTLabelledCollection.hh"
|
||||
|
||||
class RadmonDetectorMultilayersLayoutCollection
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorMultilayersLayoutCollection();
|
||||
inline ~RadmonDetectorMultilayersLayoutCollection();
|
||||
|
||||
G4int GetNMultilayers(void) const;
|
||||
G4bool Empty(void) const;
|
||||
|
||||
const RadmonDetectorMultilayerLayout & GetMultilayer(G4int index) const;
|
||||
RadmonDetectorMultilayerLayout & GetMultilayer(G4int index);
|
||||
|
||||
G4bool ExistsMultilayerByLabel(const G4String & label) const;
|
||||
G4int MultiplicityMultilayerByLabel(const G4String & label) const;
|
||||
|
||||
const RadmonDetectorMultilayerLayout & FindMultilayerByLabel(const G4String & label, G4int count = 0) const;
|
||||
RadmonDetectorMultilayerLayout & FindMultilayerByLabel(const G4String & label, G4int count = 0);
|
||||
|
||||
RadmonDetectorMultilayerLayout & CreateMultilayer(void);
|
||||
|
||||
void RemoveMultilayerByLabel(const G4String & label, G4int count = 0);
|
||||
void RemoveMultilayersByLabel(const G4String & label);
|
||||
void RemoveMultilayer(G4int index);
|
||||
void RemoveAllMultilayers(void);
|
||||
|
||||
void DumpLayout(std::ostream & out, const G4String &indent=G4String()) const;
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonDetectorMultilayersLayoutCollection(const RadmonDetectorMultilayersLayoutCollection & copy);
|
||||
RadmonDetectorMultilayersLayoutCollection & operator=(const RadmonDetectorMultilayersLayoutCollection & copy);
|
||||
|
||||
// Private attributes
|
||||
RadmonTLabelledCollection<RadmonDetectorMultilayerLayout> multilayersCollection;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorMultilayersLayoutCollection.icc"
|
||||
#endif /* RADMONDETECTORMULTILAYERSLAYOUTCOLLECTION_HH */
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorMultilayersLayoutCollection.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorMultilayersLayoutCollection.icc,v 1.3 2006/06/29 16:12:06 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORMULTILAYERSLAYOUTCOLLECTION_HH
|
||||
#error "RadmonDetectorMultilayersLayoutCollection.icc cannot be included directly. Please use RadmonDetectorMultilayersLayoutCollection.hh"
|
||||
#else /* RADMONDETECTORMULTILAYERSLAYOUTCOLLECTION_HH */
|
||||
inline RadmonDetectorMultilayersLayoutCollection :: RadmonDetectorMultilayersLayoutCollection()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorMultilayersLayoutCollection :: ~RadmonDetectorMultilayersLayoutCollection()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONDETECTORMULTILAYERSLAYOUTCOLLECTION_HH */
|
||||
@@ -0,0 +1,90 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorPadsData.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorPadsData.hh,v 1.3 2006/06/29 16:12:09 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Internal class for pads data managemenet
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORPADSDATA_HH
|
||||
#define RADMONDETECTORPADSDATA_HH
|
||||
|
||||
// Include files
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include <vector>
|
||||
|
||||
// Forward declarations
|
||||
class G4Material;
|
||||
|
||||
class RadmonDetectorPadsData
|
||||
{
|
||||
public:
|
||||
inline RadmonDetectorPadsData();
|
||||
RadmonDetectorPadsData(const RadmonDetectorPadsData & copy);
|
||||
inline ~RadmonDetectorPadsData();
|
||||
|
||||
inline G4double GetWidth(void) const;
|
||||
inline G4double GetHeight(void) const;
|
||||
inline G4Material * GetMaterial(void) const;
|
||||
G4int GetNPads(void) const;
|
||||
const G4ThreeVector & GetPosition(G4int index) const;
|
||||
const G4RotationMatrix & GetRotation(G4int index) const;
|
||||
|
||||
inline void SetWidth(G4double width);
|
||||
inline void SetHeight(G4double height);
|
||||
inline void SetMaterial(G4Material * material);
|
||||
inline void AppendPosition(const G4ThreeVector & position);
|
||||
void AppendPositionAndRotation(const G4ThreeVector & position, const G4RotationMatrix & rotation);
|
||||
bool ReadPositionsAndRotationsFromString(const G4String & positionsStr);
|
||||
|
||||
RadmonDetectorPadsData & operator=(const RadmonDetectorPadsData & copy);
|
||||
|
||||
private:
|
||||
bool ProcessElement(G4double & x, G4double & y, G4double & delta, const G4String & content);
|
||||
bool ReadUmis(G4double & value, const G4String & text, const char * category);
|
||||
|
||||
|
||||
// Private data types
|
||||
typedef std::vector<G4ThreeVector> PadPositions;
|
||||
typedef std::vector<G4RotationMatrix> PadRotations;
|
||||
|
||||
// Private attributes
|
||||
G4double padWidth;
|
||||
G4double padHeight;
|
||||
G4Material * padMaterial;
|
||||
PadPositions padPositions;
|
||||
PadRotations padRotations;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonDetectorPadsData.icc"
|
||||
#endif /* RADMONDETECTORPADSDATA_HH */
|
||||
@@ -0,0 +1,104 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorPadsData.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorPadsData.icc,v 1.3 2006/06/29 16:12:11 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONDETECTORPADSDATA_HH
|
||||
#error "RadmonDetectorPadsData.icc cannot be included directly. Please use RadmonDetectorPadsData.hh"
|
||||
#else /* RADMONDETECTORPADSDATA_HH */
|
||||
inline RadmonDetectorPadsData :: RadmonDetectorPadsData()
|
||||
:
|
||||
padWidth(0.),
|
||||
padHeight(0.),
|
||||
padMaterial(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonDetectorPadsData :: ~RadmonDetectorPadsData()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline G4double RadmonDetectorPadsData :: GetWidth(void) const
|
||||
{
|
||||
return padWidth;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4double RadmonDetectorPadsData :: GetHeight(void) const
|
||||
{
|
||||
return padHeight;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4Material * RadmonDetectorPadsData :: GetMaterial(void) const
|
||||
{
|
||||
return padMaterial;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorPadsData :: SetWidth(G4double width)
|
||||
{
|
||||
padWidth=width;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorPadsData :: SetHeight(G4double height)
|
||||
{
|
||||
padHeight=height;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorPadsData :: SetMaterial(G4Material * material)
|
||||
{
|
||||
padMaterial=material;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonDetectorPadsData :: AppendPosition(const G4ThreeVector & position)
|
||||
{
|
||||
AppendPositionAndRotation(position, G4RotationMatrix::IDENTITY);
|
||||
}
|
||||
#endif /* RADMONDETECTORPADSDATA_HH */
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorCarvedVolumesDecorator.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorCarvedVolumesDecorator.hh,v 1.5 2006/06/29 16:12:13 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Carves the borders of a component with the following method
|
||||
// - Constructor
|
||||
// - Destructor
|
||||
// - RadmonDetectorLayerVolumesList * GenerateVolumesList(void)
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORCARVEDVOLUMESDECORATOR_HH
|
||||
#define RADMONTDETECTORCARVEDVOLUMESDECORATOR_HH
|
||||
|
||||
// Include files
|
||||
#include <stack>
|
||||
#include "RadmonDetectorLayerVolumeItemSubtraction.hh"
|
||||
#include "RadmonDetectorLayerVolumeItemIntersection.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
|
||||
// Forward declaration
|
||||
class RadmonVDetectorLabelledEntityConstructor;
|
||||
class RadmonDetectorLayerVolumesList;
|
||||
class G4VSolid;
|
||||
class G4VAttributes;
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
class RadmonTDetectorCarvedVolumesDecorator
|
||||
{
|
||||
public:
|
||||
RadmonTDetectorCarvedVolumesDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor);
|
||||
~RadmonTDetectorCarvedVolumesDecorator();
|
||||
|
||||
RadmonDetectorLayerVolumesList * GenerateVolumesList(void);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonTDetectorCarvedVolumesDecorator();
|
||||
RadmonTDetectorCarvedVolumesDecorator(const RadmonTDetectorCarvedVolumesDecorator & copy);
|
||||
RadmonTDetectorCarvedVolumesDecorator & operator=(const RadmonTDetectorCarvedVolumesDecorator & copy);
|
||||
|
||||
// Private data types
|
||||
typedef std::stack<G4VSolid *> OwnedSolids;
|
||||
|
||||
// Private attributes
|
||||
const RadmonVDetectorLabelledEntityConstructor * owner;
|
||||
LayerVolumesComponent component;
|
||||
OwnedSolids ownedSolids;
|
||||
G4VisAttributes * visAttributes;
|
||||
RadmonDetectorLayerVolumeItemSubtraction subtraction;
|
||||
RadmonDetectorLayerVolumeItemIntersection intersection;
|
||||
G4RotationMatrix identity;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonTDetectorCarvedVolumesDecorator.icc"
|
||||
#endif /* RADMONTDETECTORCARVEDVOLUMESDECORATOR_HH */
|
||||
+319
@@ -0,0 +1,319 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorCarvedVolumesDecorator.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorCarvedVolumesDecorator.icc,v 1.2.2.2 2006/06/29 16:12:15 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORCARVEDVOLUMESDECORATOR_HH
|
||||
#error "RadmonTDetectorCarvedVolumesDecorator.icc cannot be included directly. Please use RadmonTDetectorCarvedVolumesDecorator.hh"
|
||||
#else /* RADMONTDETECTORCARVEDVOLUMESDECORATOR_HH */
|
||||
// Include files
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
#include "RadmonDetectorLayerVolumesList.hh"
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4DisplacedSolid.hh"
|
||||
#include "G4UnionSolid.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4UIcommand.hh"
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorCarvedVolumesDecorator<LayerVolumesComponent> :: RadmonTDetectorCarvedVolumesDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor)
|
||||
:
|
||||
owner(constructor),
|
||||
component(constructor),
|
||||
visAttributes(0),
|
||||
subtraction(RadmonDetectorLayerVolumeItemSubtraction::rightMinusLeft)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorCarvedVolumesDecorator<LayerVolumesComponent> :: ~RadmonTDetectorCarvedVolumesDecorator()
|
||||
{
|
||||
while (! ownedSolids.empty())
|
||||
{
|
||||
delete ownedSolids.top();
|
||||
ownedSolids.pop();
|
||||
}
|
||||
|
||||
delete visAttributes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonDetectorLayerVolumesList * RadmonTDetectorCarvedVolumesDecorator<LayerVolumesComponent> :: GenerateVolumesList(void)
|
||||
{
|
||||
G4double width(owner->GetWidth());
|
||||
if (width<0)
|
||||
return 0;
|
||||
|
||||
G4double height(owner->GetHeight());
|
||||
if (height<0)
|
||||
return 0;
|
||||
|
||||
G4double thickness(owner->GetThickness());
|
||||
if (thickness<0)
|
||||
return 0;
|
||||
|
||||
G4int holesAlongWidth(owner->GetAttributeAsInteger("HolesAlongWidth", -1));
|
||||
if (holesAlongWidth<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorCarvedVolumesDecorator::GenerateVolumesList: \"HolesAlongWidth\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4int holesAlongHeight(owner->GetAttributeAsInteger("HolesAlongHeight", -1));
|
||||
if (holesAlongHeight<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorCarvedVolumesDecorator::GenerateVolumesList: \"HolesAlongHeight\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((holesAlongWidth+holesAlongHeight)<=0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorCarvedVolumesDecorator::GenerateVolumesList: Both \"HolesAlongHeight\" and \"HolesAlongHeight\" attributes are 0." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double holesRadius(owner->GetAttributeAsMeasure("HolesRadius", "Length", -1.));
|
||||
if (holesRadius<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorCarvedVolumesDecorator::GenerateVolumesList: \"HolesRadius\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double holesStep(owner->GetAttributeAsMeasure("HolesStep", "Length", -1.));
|
||||
if (holesStep<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorCarvedVolumesDecorator::GenerateVolumesList: \"HolesStep\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double fullHolesStep(holesRadius*2.+holesStep);
|
||||
|
||||
if (fullHolesStep*static_cast<G4double>(holesAlongWidth-1)>width || fullHolesStep>width)
|
||||
{
|
||||
G4cout << "RadmonTDetectorCarvedVolumesDecorator::GenerateVolumesList: Holes parameters does not fit along width." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (fullHolesStep*static_cast<G4double>(holesAlongHeight-1)>height || fullHolesStep>height)
|
||||
{
|
||||
G4cout << "RadmonTDetectorCarvedVolumesDecorator::GenerateVolumesList: Holes parameters does not fit along height." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4Material * material(0);
|
||||
G4double depositOnHolesThickness(owner->GetAttributeAsMeasure("DepositOnHolesThickness", "Length", -1.));
|
||||
if (depositOnHolesThickness>0)
|
||||
{
|
||||
if (depositOnHolesThickness>=holesRadius)
|
||||
{
|
||||
G4cout << "RadmonTDetectorCarvedVolumesDecorator::GenerateVolumesList: \"DepositOnHolesThickness\" >= \"HolesRadius\"." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (depositOnHolesThickness>0)
|
||||
{
|
||||
material=owner->GetMaterial("DepositOnHolesMaterial");
|
||||
if (!material)
|
||||
return 0;
|
||||
|
||||
visAttributes=owner->AllocateVisAttributes("DepositOnHolesVisAttributes", material);
|
||||
}
|
||||
}
|
||||
else
|
||||
depositOnHolesThickness=0*mm;
|
||||
|
||||
RadmonDetectorLayerVolumesList * list(component.GenerateVolumesList());
|
||||
|
||||
if (list==0)
|
||||
return 0;
|
||||
|
||||
G4int nItems(list->GetNItems());
|
||||
|
||||
if (nItems==0)
|
||||
{
|
||||
delete list;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4Tubs * holeCylinder(new G4Tubs("SingleHole", 0, holesRadius-depositOnHolesThickness, (thickness/2.)*1.01, 0, 360.*deg));
|
||||
ownedSolids.push(holeCylinder);
|
||||
|
||||
G4ThreeVector offset((fullHolesStep/2.)*static_cast<G4double>(holesAlongWidth-1), height/2., 0);
|
||||
G4VSolid * displacedHole(0);
|
||||
G4VSolid * holes(0);
|
||||
G4int i(holesAlongWidth);
|
||||
|
||||
identity=G4RotationMatrix::IDENTITY;
|
||||
|
||||
G4int index(0);
|
||||
G4String indexStr;
|
||||
|
||||
while (i>0)
|
||||
{
|
||||
index++;
|
||||
indexStr=G4UIcommand::ConvertToString(index);
|
||||
|
||||
displacedHole=new G4DisplacedSolid("DisplacedSingleHole"+indexStr, holeCylinder, &identity, offset);
|
||||
ownedSolids.push(displacedHole);
|
||||
|
||||
if (holes)
|
||||
{
|
||||
holes=new G4UnionSolid("DisplacedHoles"+indexStr, holes, displacedHole);
|
||||
ownedSolids.push(holes);
|
||||
}
|
||||
else
|
||||
holes=displacedHole;
|
||||
|
||||
offset.setY(-offset.getY());
|
||||
if (offset.getY()>=0)
|
||||
{
|
||||
offset.setX(offset.getX()-fullHolesStep);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
offset.setX(width/2.);
|
||||
offset.setY((fullHolesStep/2.)*static_cast<G4double>(holesAlongHeight-1));
|
||||
i=holesAlongHeight;
|
||||
|
||||
while (i>0)
|
||||
{
|
||||
index++;
|
||||
indexStr=G4UIcommand::ConvertToString(index);
|
||||
|
||||
displacedHole=new G4DisplacedSolid("DisplacedSingleHole"+indexStr, holeCylinder, &identity, offset);
|
||||
ownedSolids.push(displacedHole);
|
||||
|
||||
if (holes)
|
||||
{
|
||||
holes=new G4UnionSolid("DisplacedHoles"+indexStr, holes, displacedHole);
|
||||
ownedSolids.push(holes);
|
||||
}
|
||||
else
|
||||
holes=displacedHole;
|
||||
|
||||
offset.setX(-offset.getX());
|
||||
if (offset.getX()>=0)
|
||||
{
|
||||
offset.setY(offset.getY()-fullHolesStep);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
RadmonDetectorLayerVolumeItem * item;
|
||||
RadmonDetectorLayerVolumeItem * motherItem;
|
||||
subtraction.Initialize(holes, false);
|
||||
|
||||
while (nItems>0)
|
||||
{
|
||||
nItems--;
|
||||
|
||||
item=list->GetItem(nItems);
|
||||
|
||||
if (item->GetMotherVolumeItem()==0)
|
||||
motherItem=item;
|
||||
|
||||
subtraction.ApplyTo(item);
|
||||
}
|
||||
|
||||
if (!motherItem)
|
||||
G4Exception("RadmonTDetectorCarvedVolumesDecorator::GenerateVolumesList: No mother volume found.");
|
||||
|
||||
if (material)
|
||||
{
|
||||
intersection.Initialize(motherItem);
|
||||
|
||||
G4Tubs * depositTub(new G4Tubs("SingleDeposit", holesRadius-depositOnHolesThickness, holesRadius, thickness/2., 0, 360.*deg));
|
||||
ownedSolids.push(depositTub);
|
||||
|
||||
offset.setX((fullHolesStep/2.)*static_cast<G4double>(holesAlongWidth-1));
|
||||
offset.setY(height/2.);
|
||||
offset.setZ(0.);
|
||||
|
||||
i=holesAlongWidth;
|
||||
index=0;
|
||||
|
||||
while (i>0)
|
||||
{
|
||||
index++;
|
||||
indexStr=G4UIcommand::ConvertToString(index);
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(depositTub, offset, false, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("DepositOnHole"+indexStr);
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
|
||||
offset.setY(-offset.getY());
|
||||
if (offset.getY()>=0)
|
||||
{
|
||||
offset.setX(offset.getX()-fullHolesStep);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
offset.setX(width/2.);
|
||||
offset.setY((fullHolesStep/2.)*static_cast<G4double>(holesAlongHeight-1));
|
||||
i=holesAlongHeight;
|
||||
|
||||
while (i>0)
|
||||
{
|
||||
index++;
|
||||
indexStr=G4UIcommand::ConvertToString(index);
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(depositTub, offset, false, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("DepositOnHole"+indexStr);
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
|
||||
offset.setX(-offset.getX());
|
||||
if (offset.getX()>=0)
|
||||
{
|
||||
offset.setY(offset.getY()-fullHolesStep);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
#endif /* RADMONTDETECTORCARVEDVOLUMESDECORATOR_HH */
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorLayerConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorLayerConstructor.hh,v 1.4 2006/06/29 16:12:17 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Generates a layer using a component with the following methods
|
||||
// - Constructor with RadmonVDetectorLabelledEntityConstructor or its base classes as argument
|
||||
// - Destructor
|
||||
// - RadmonDetectorLayerVolumesList * GenerateVolumesList(void)
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORLAYERCONSTRUCTOR_HH
|
||||
#define RADMONTDETECTORLAYERCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
// Forward declaration
|
||||
class RadmonDetectorLayerVolumesList;
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
class RadmonTDetectorLayerConstructor : public RadmonVDetectorLabelledEntityConstructor
|
||||
{
|
||||
public:
|
||||
RadmonTDetectorLayerConstructor(const G4String & label);
|
||||
~RadmonTDetectorLayerConstructor();
|
||||
|
||||
virtual G4LogicalVolume * ConstructLogicalVolume(void);
|
||||
virtual RadmonVDetectorLabelledEntityConstructor * New(void) const;
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonTDetectorLayerConstructor();
|
||||
RadmonTDetectorLayerConstructor(const RadmonTDetectorLayerConstructor & copy);
|
||||
RadmonTDetectorLayerConstructor & operator=(const RadmonTDetectorLayerConstructor & copy);
|
||||
|
||||
// Private attributes
|
||||
RadmonDetectorLayerVolumesList * volumesList;
|
||||
LayerVolumesComponent component;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonTDetectorLayerConstructor.icc"
|
||||
#endif /* RADMONTDETECTORLAYERCONSTRUCTOR_HH */
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorLayerConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorLayerConstructor.icc,v 1.2.2.2 2006/06/29 16:12:20 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORLAYERCONSTRUCTOR_HH
|
||||
#error "RadmonTDetectorLayerConstructor.icc cannot be included directly. Please use RadmonTDetectorLayerConstructor.hh"
|
||||
#else /* RADMONTDETECTORLAYERCONSTRUCTOR_HH */
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLayerVolumesList.hh"
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4UserLimits.hh"
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
inline RadmonTDetectorLayerConstructor<LayerVolumesComponent> :: RadmonTDetectorLayerConstructor(const G4String & label)
|
||||
:
|
||||
RadmonVDetectorLabelledEntityConstructor(label),
|
||||
volumesList(0),
|
||||
component(this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
inline RadmonTDetectorLayerConstructor<LayerVolumesComponent> :: ~RadmonTDetectorLayerConstructor()
|
||||
{
|
||||
delete volumesList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
G4LogicalVolume * RadmonTDetectorLayerConstructor<LayerVolumesComponent> :: ConstructLogicalVolume(void)
|
||||
{
|
||||
if (volumesList)
|
||||
G4Exception("RadmonTDetectorLayerConstructor::ConstructLogicalVolume: Called twice.");
|
||||
|
||||
volumesList=component.GenerateVolumesList();
|
||||
|
||||
if (volumesList==0)
|
||||
return 0;
|
||||
|
||||
G4double width(GetWidth());
|
||||
G4double height(GetHeight());
|
||||
G4double thickness(GetThickness());
|
||||
|
||||
if (width<thickness)
|
||||
thickness=width;
|
||||
if (height<thickness)
|
||||
thickness=height;
|
||||
|
||||
RadmonDetectorLayerVolumeItem * item;
|
||||
G4LogicalVolume * motherVolume(0);
|
||||
G4LogicalVolume * volume;
|
||||
|
||||
G4int n(volumesList->GetNItems());
|
||||
|
||||
while (n>0)
|
||||
{
|
||||
n--;
|
||||
|
||||
item=volumesList->GetItem(n);
|
||||
volume=item->GetLogicalVolume();
|
||||
|
||||
if (volume)
|
||||
{
|
||||
volume->SetUserLimits(new G4UserLimits(thickness/10.));
|
||||
if (item->GetMotherVolumeItem()==0)
|
||||
{
|
||||
if (motherVolume)
|
||||
G4Exception("RadmonTDetectorLayerConstructor::ConstructLogicalVolume: Found two mother volumes.");
|
||||
|
||||
motherVolume=volume;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!motherVolume)
|
||||
G4Exception("RadmonTDetectorLayerConstructor::ConstructLogicalVolume: No mother volume found.");
|
||||
|
||||
return motherVolume;
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonVDetectorLabelledEntityConstructor * RadmonTDetectorLayerConstructor<LayerVolumesComponent> :: New(void) const
|
||||
{
|
||||
return new RadmonTDetectorLayerConstructor<LayerVolumesComponent>(GetLabel());
|
||||
}
|
||||
#endif /* RADMONTDETECTORLAYERCONSTRUCTOR_HH */
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithGroundDecorator.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithGroundDecorator.hh,v 1.4 2006/06/29 16:12:28 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Decorates with a ground plane
|
||||
// - Constructor
|
||||
// - Destructor
|
||||
// - RadmonDetectorLayerVolumesList * GenerateVolumesList(void)
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHGROUNDDECORATOR_HH
|
||||
#define RADMONTDETECTORVOLUMESWITHGROUNDDECORATOR_HH
|
||||
|
||||
// Forward declaration
|
||||
class RadmonVDetectorLabelledEntityConstructor;
|
||||
class RadmonDetectorLayerVolumesList;
|
||||
class G4Box;
|
||||
class G4VisAttributes;
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
class RadmonTDetectorVolumesWithGroundDecorator
|
||||
{
|
||||
public:
|
||||
RadmonTDetectorVolumesWithGroundDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor);
|
||||
~RadmonTDetectorVolumesWithGroundDecorator();
|
||||
|
||||
RadmonDetectorLayerVolumesList * GenerateVolumesList(void);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonTDetectorVolumesWithGroundDecorator();
|
||||
RadmonTDetectorVolumesWithGroundDecorator(const RadmonTDetectorVolumesWithGroundDecorator & copy);
|
||||
RadmonTDetectorVolumesWithGroundDecorator & operator=(const RadmonTDetectorVolumesWithGroundDecorator & copy);
|
||||
|
||||
// Private attributes
|
||||
const RadmonVDetectorLabelledEntityConstructor * owner;
|
||||
LayerVolumesComponent component;
|
||||
G4Box * box;
|
||||
G4VisAttributes * visAttributes;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonTDetectorVolumesWithGroundDecorator.icc"
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHGROUNDDECORATOR_HH */
|
||||
+171
@@ -0,0 +1,171 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithGroundDecorator.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithGroundDecorator.icc,v 1.1.2.2 2006/06/29 16:12:30 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHGROUNDDECORATOR_HH
|
||||
#error "RadmonTDetectorVolumesWithGroundDecorator.icc cannot be included directly. Please use RadmonTDetectorVolumesWithGroundDecorator.hh"
|
||||
#else /* RADMONTDETECTORVOLUMESWITHGROUNDDECORATOR_HH */
|
||||
// Include files
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
#include "RadmonDetectorLayerVolumesList.hh"
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
#include "G4Box.hh"
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithGroundDecorator<LayerVolumesComponent> :: RadmonTDetectorVolumesWithGroundDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor)
|
||||
:
|
||||
owner(constructor),
|
||||
component(constructor),
|
||||
box(0),
|
||||
visAttributes(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithGroundDecorator<LayerVolumesComponent> :: ~RadmonTDetectorVolumesWithGroundDecorator()
|
||||
{
|
||||
delete box;
|
||||
delete visAttributes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonDetectorLayerVolumesList * RadmonTDetectorVolumesWithGroundDecorator<LayerVolumesComponent> :: GenerateVolumesList(void)
|
||||
{
|
||||
G4double width(owner->GetWidth());
|
||||
if (width<0)
|
||||
return 0;
|
||||
|
||||
G4double height(owner->GetHeight());
|
||||
if (height<0)
|
||||
return 0;
|
||||
|
||||
G4double thickness(owner->GetThickness());
|
||||
if (thickness<0)
|
||||
return 0;
|
||||
|
||||
G4double groundWidth(owner->GetAttributeAsMeasure("GroundWidth", "Length", -1.));
|
||||
if (groundWidth<0)
|
||||
{
|
||||
groundWidth=owner->GetAttributeAsDouble("GroundScaleWidth", -1.);
|
||||
|
||||
if (groundWidth<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithGroundDecorator::GenerateVolumesList: Neither \"GroundWidth\" nor \"GroundScaleWidth\" attributes are defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
groundWidth*=width;
|
||||
}
|
||||
|
||||
if (width<groundWidth)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithGroundDecorator::GenerateVolumesList: Ground width exceeds layer width." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double groundHeight(owner->GetAttributeAsMeasure("GroundHeight", "Length", -1.));
|
||||
if (groundHeight<0)
|
||||
{
|
||||
groundHeight=owner->GetAttributeAsDouble("GroundScaleHeight", -1.);
|
||||
|
||||
if (groundHeight<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithGroundDecorator::GenerateVolumesList: Neither \"GroundHeight\" nor \"GroundScaleHeight attributes are defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
groundHeight*=height;
|
||||
}
|
||||
|
||||
if (height<groundHeight)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithGroundDecorator::GenerateVolumesList: Ground height exceeds layer height." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4Material * material(owner->GetMaterial("GroundMaterial"));
|
||||
if (!material)
|
||||
return 0;
|
||||
|
||||
visAttributes=owner->AllocateVisAttributes("GroundVisAttributes", material);
|
||||
|
||||
RadmonDetectorLayerVolumesList * list(component.GenerateVolumesList());
|
||||
|
||||
if (list==0)
|
||||
return 0;
|
||||
|
||||
G4int n(list->GetNItems());
|
||||
|
||||
if (n==0)
|
||||
{
|
||||
delete list;
|
||||
return 0;
|
||||
}
|
||||
|
||||
RadmonDetectorLayerVolumeItem * item;
|
||||
RadmonDetectorLayerVolumeItem * motherItem;
|
||||
|
||||
while (n>0)
|
||||
{
|
||||
n--;
|
||||
|
||||
item=list->GetItem(n);
|
||||
if (item->GetMotherVolumeItem()==0)
|
||||
{
|
||||
motherItem=item;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!motherItem)
|
||||
G4Exception("RadmonTDetectorVolumesWithGroundDecorator::GenerateVolumesList: No mother volume found.");
|
||||
|
||||
box=new G4Box("Ground", groundWidth/2., groundHeight/2., thickness/2.);
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(box);
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Ground");
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
|
||||
return list;
|
||||
}
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHGROUNDDECORATOR_HH */
|
||||
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithHoleDecorator.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithHoleDecorator.hh,v 1.5 2006/06/29 16:12:32 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Decorates with a hole a component with the following method
|
||||
// - Constructor
|
||||
// - Destructor
|
||||
// - RadmonDetectorLayerVolumesList * GenerateVolumesList(void)
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHHOLEDECORATOR_HH
|
||||
#define RADMONTDETECTORVOLUMESWITHHOLEDECORATOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLayerVolumeItemSubtraction.hh"
|
||||
|
||||
// Forward declaration
|
||||
class RadmonVDetectorLabelledEntityConstructor;
|
||||
class RadmonDetectorLayerVolumesList;
|
||||
class G4VSolid;
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
class RadmonTDetectorVolumesWithHoleDecorator
|
||||
{
|
||||
public:
|
||||
RadmonTDetectorVolumesWithHoleDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor);
|
||||
~RadmonTDetectorVolumesWithHoleDecorator();
|
||||
|
||||
RadmonDetectorLayerVolumesList * GenerateVolumesList(void);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonTDetectorVolumesWithHoleDecorator();
|
||||
RadmonTDetectorVolumesWithHoleDecorator(const RadmonTDetectorVolumesWithHoleDecorator & copy);
|
||||
RadmonTDetectorVolumesWithHoleDecorator & operator=(const RadmonTDetectorVolumesWithHoleDecorator & copy);
|
||||
|
||||
// Private attributes
|
||||
const RadmonVDetectorLabelledEntityConstructor * owner;
|
||||
LayerVolumesComponent component;
|
||||
RadmonDetectorLayerVolumeItemSubtraction operation;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonTDetectorVolumesWithHoleDecorator.icc"
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHHOLEDECORATOR_HH */
|
||||
+148
@@ -0,0 +1,148 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithHoleDecorator.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithHoleDecorator.icc,v 1.4 2006/06/29 16:12:34 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHHOLEDECORATOR_HH
|
||||
#error "RadmonTDetectorVolumesWithHoleDecorator.icc cannot be included directly. Please use RadmonTDetectorVolumesWithHoleDecorator.hh"
|
||||
#else /* RADMONTDETECTORVOLUMESWITHHOLEDECORATOR_HH */
|
||||
// Include files
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
#include "RadmonDetectorLayerVolumesList.hh"
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
#include "RadmonDetectorLayerVolumeItemSubtraction.hh"
|
||||
#include "G4Box.hh"
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithHoleDecorator<LayerVolumesComponent> :: RadmonTDetectorVolumesWithHoleDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor)
|
||||
:
|
||||
owner(constructor),
|
||||
component(constructor),
|
||||
operation(RadmonDetectorLayerVolumeItemSubtraction::rightMinusLeft)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithHoleDecorator<LayerVolumesComponent> :: ~RadmonTDetectorVolumesWithHoleDecorator()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonDetectorLayerVolumesList * RadmonTDetectorVolumesWithHoleDecorator<LayerVolumesComponent> :: GenerateVolumesList(void)
|
||||
{
|
||||
G4double width(owner->GetWidth());
|
||||
if (width<0)
|
||||
return 0;
|
||||
|
||||
G4double height(owner->GetHeight());
|
||||
if (height<0)
|
||||
return 0;
|
||||
|
||||
G4double thickness(owner->GetThickness());
|
||||
if (thickness<0)
|
||||
return 0;
|
||||
|
||||
G4double holeWidth(owner->GetAttributeAsMeasure("HoleWidth", "Length", -1.));
|
||||
if (holeWidth<0)
|
||||
{
|
||||
holeWidth=owner->GetAttributeAsDouble("HoleScaleWidth", -1.);
|
||||
|
||||
if (holeWidth<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithHoleDecorator::GenerateVolumesList: Neither \"HoleWidth\" nor \"HoleScaleWidth\" attributes are defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
holeWidth*=width;
|
||||
}
|
||||
|
||||
if (width<holeWidth)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithHoleDecorator::GenerateVolumesList: Hole width exceeds layer width." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double holeHeight(owner->GetAttributeAsMeasure("HoleHeight", "Length", -1.));
|
||||
if (holeHeight<0)
|
||||
{
|
||||
holeHeight=owner->GetAttributeAsDouble("HoleScaleHeight", -1.);
|
||||
|
||||
if (holeHeight<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithHoleDecorator::GenerateVolumesList: Neither \"HoleHeight\" nor \"HoleScaleHeight attributes are defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
holeHeight*=height;
|
||||
}
|
||||
|
||||
if (height<holeHeight)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithHoleDecorator::GenerateVolumesList: Hole height exceeds layer height." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
RadmonDetectorLayerVolumesList * list(component.GenerateVolumesList());
|
||||
|
||||
if (list==0)
|
||||
return 0;
|
||||
|
||||
G4int n(list->GetNItems());
|
||||
|
||||
if (n==0)
|
||||
{
|
||||
delete list;
|
||||
return 0;
|
||||
}
|
||||
|
||||
RadmonDetectorLayerVolumeItem * item;
|
||||
G4Box * hole(new G4Box("Hole", holeWidth/2., holeHeight/2., (thickness/2.)*1.01));
|
||||
operation.Initialize(hole);
|
||||
|
||||
while (n>0)
|
||||
{
|
||||
n--;
|
||||
|
||||
item=list->GetItem(n);
|
||||
operation.ApplyTo(item);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHHOLEDECORATOR_HH */
|
||||
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithKeyMarksDecorator.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithKeyMarksDecorator.hh,v 1.3 2006/06/29 16:12:36 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Decorates with key marks
|
||||
// - Constructor
|
||||
// - Destructor
|
||||
// - RadmonDetectorLayerVolumesList * GenerateVolumesList(void)
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHKEYMARKSDECORATOR_HH
|
||||
#define RADMONTDETECTORVOLUMESWITHKEYMARKSDECORATOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLayerVolumeItemIntersection.hh"
|
||||
|
||||
// Forward declaration
|
||||
class RadmonVDetectorLabelledEntityConstructor;
|
||||
class RadmonDetectorLayerVolumesList;
|
||||
class G4VSolid;
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
class RadmonTDetectorVolumesWithKeyMarksDecorator
|
||||
{
|
||||
public:
|
||||
RadmonTDetectorVolumesWithKeyMarksDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor);
|
||||
~RadmonTDetectorVolumesWithKeyMarksDecorator();
|
||||
|
||||
RadmonDetectorLayerVolumesList * GenerateVolumesList(void);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonTDetectorVolumesWithKeyMarksDecorator();
|
||||
RadmonTDetectorVolumesWithKeyMarksDecorator(const RadmonTDetectorVolumesWithKeyMarksDecorator & copy);
|
||||
RadmonTDetectorVolumesWithKeyMarksDecorator & operator=(const RadmonTDetectorVolumesWithKeyMarksDecorator & copy);
|
||||
|
||||
// Private attributes
|
||||
const RadmonVDetectorLabelledEntityConstructor * owner;
|
||||
LayerVolumesComponent component;
|
||||
G4VisAttributes * visAttributes;
|
||||
G4VSolid * box;
|
||||
G4VSolid * tub;
|
||||
G4RotationMatrix identity;
|
||||
RadmonDetectorLayerVolumeItemIntersection intersection;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonTDetectorVolumesWithKeyMarksDecorator.icc"
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHKEYMARKSDECORATOR_HH */
|
||||
+367
@@ -0,0 +1,367 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithKeyMarksDecorator.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithKeyMarksDecorator.icc,v 1.1.2.2 2006/06/29 16:12:38 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHKEYMARKSDECORATOR_HH
|
||||
#error "RadmonTDetectorVolumesWithKeyMarksDecorator.icc cannot be included directly. Please use RadmonTDetectorVolumesWithKeyMarksDecorator.hh"
|
||||
#else /* RADMONTDETECTORVOLUMESWITHKEYMARKSDECORATOR_HH */
|
||||
// Include files
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
#include "RadmonDetectorLayerVolumesList.hh"
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4SubtractionSolid.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4UIcommand.hh"
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithKeyMarksDecorator<LayerVolumesComponent> :: RadmonTDetectorVolumesWithKeyMarksDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor)
|
||||
:
|
||||
owner(constructor),
|
||||
component(constructor),
|
||||
visAttributes(0),
|
||||
box(0),
|
||||
tub(0),
|
||||
identity(G4RotationMatrix::IDENTITY)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithKeyMarksDecorator<LayerVolumesComponent> :: ~RadmonTDetectorVolumesWithKeyMarksDecorator()
|
||||
{
|
||||
delete box;
|
||||
delete tub;
|
||||
delete visAttributes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonDetectorLayerVolumesList * RadmonTDetectorVolumesWithKeyMarksDecorator<LayerVolumesComponent> :: GenerateVolumesList(void)
|
||||
{
|
||||
G4double width(owner->GetWidth());
|
||||
if (width<0)
|
||||
return 0;
|
||||
|
||||
G4double height(owner->GetHeight());
|
||||
if (height<0)
|
||||
return 0;
|
||||
|
||||
G4double thickness(owner->GetThickness());
|
||||
if (thickness<0)
|
||||
return 0;
|
||||
|
||||
G4int holesAlongWidth(owner->GetAttributeAsInteger("HolesAlongWidth", -1));
|
||||
if (holesAlongWidth<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: \"HolesAlongWidth\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4int holesAlongHeight(owner->GetAttributeAsInteger("HolesAlongHeight", -1));
|
||||
if (holesAlongHeight<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: \"HolesAlongHeight\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((holesAlongWidth+holesAlongHeight)<=0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: Both \"HolesAlongHeight\" and \"HolesAlongHeight\" attributes are 0." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double holesRadius(owner->GetAttributeAsMeasure("HolesRadius", "Length", -1.));
|
||||
if (holesRadius<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: \"HolesRadius\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double holesStep(owner->GetAttributeAsMeasure("HolesStep", "Length", -1.));
|
||||
if (holesStep<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: \"HolesStep\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double fullHolesStep(holesRadius*2.+holesStep);
|
||||
|
||||
if (fullHolesStep*static_cast<G4double>(holesAlongWidth-1)>width || fullHolesStep>width)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: Holes parameters does not fit along width." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (fullHolesStep*static_cast<G4double>(holesAlongHeight-1)>height || fullHolesStep>height)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: Holes parameters does not fit along height." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4int markedPin(owner->GetAttributeAsInteger("MarkedPin", 0));
|
||||
|
||||
if (markedPin<0 || markedPin>(holesAlongWidth+holesAlongHeight)*2)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: Marked pin outside the range." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double markedPinRadius;
|
||||
G4double markedPinStep;
|
||||
|
||||
if (markedPin>0)
|
||||
{
|
||||
markedPinRadius=owner->GetAttributeAsMeasure("MarkedPinRadius", "Length", -1.);
|
||||
if (markedPinRadius<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: \"MarkedPinRadius\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
markedPinStep=owner->GetAttributeAsMeasure("MarkedPinStep", "Length", -1.);
|
||||
if (markedPinStep<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: \"MarkedPinStep\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
G4double groundWidth(owner->GetAttributeAsMeasure("GroundWidth", "Length", -1.));
|
||||
if (groundWidth<0)
|
||||
{
|
||||
groundWidth=owner->GetAttributeAsDouble("GroundScaleWidth", -1.);
|
||||
|
||||
if (groundWidth<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: Neither \"GroundWidth\" nor \"GroundScaleWidth\" attributes are defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
groundWidth*=width;
|
||||
}
|
||||
|
||||
if (width<groundWidth)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: Ground width exceeds layer width." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double groundHeight(owner->GetAttributeAsMeasure("GroundHeight", "Length", -1.));
|
||||
if (groundHeight<0)
|
||||
{
|
||||
groundHeight=owner->GetAttributeAsDouble("GroundScaleHeight", -1.);
|
||||
|
||||
if (groundHeight<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: Neither \"GroundHeight\" nor \"GroundScaleHeight attributes are defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
groundHeight*=height;
|
||||
}
|
||||
|
||||
if (height<groundHeight)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: Ground height exceeds layer height." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4Material * material(owner->GetMaterial("GroundMaterial"));
|
||||
if (!material)
|
||||
return 0;
|
||||
|
||||
visAttributes=owner->AllocateVisAttributes("GroundVisAttributes", material);
|
||||
|
||||
RadmonDetectorLayerVolumesList * list(component.GenerateVolumesList());
|
||||
|
||||
if (list==0)
|
||||
return 0;
|
||||
|
||||
G4int n(list->GetNItems());
|
||||
|
||||
if (n==0)
|
||||
{
|
||||
delete list;
|
||||
return 0;
|
||||
}
|
||||
|
||||
RadmonDetectorLayerVolumeItem * item;
|
||||
RadmonDetectorLayerVolumeItem * motherItem;
|
||||
|
||||
while (n>0)
|
||||
{
|
||||
n--;
|
||||
|
||||
item=list->GetItem(n);
|
||||
if (item->GetMotherVolumeItem()==0)
|
||||
{
|
||||
motherItem=item;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!motherItem)
|
||||
G4Exception("RadmonTDetectorVolumesWithKeyMarksDecorator::GenerateVolumesList: No mother volume found.");
|
||||
|
||||
intersection.Initialize(motherItem);
|
||||
|
||||
G4bool markAlongWidth;
|
||||
G4ThreeVector offset;
|
||||
|
||||
if (markedPin==0)
|
||||
markAlongWidth=true;
|
||||
else if (markedPin <= holesAlongWidth*2)
|
||||
{
|
||||
markAlongWidth=true;
|
||||
|
||||
G4double size((height-groundHeight)/2.-markedPinStep);
|
||||
|
||||
box=new G4Box("Mark", holesRadius, size/2., thickness/2.);
|
||||
tub=new G4Tubs("Hole", 0, markedPinRadius, (thickness/2.)*1.01, 0, 360.*deg);
|
||||
|
||||
G4ThreeVector offset2;
|
||||
offset2.setX(0);
|
||||
offset2.setY(size/2);
|
||||
offset2.setZ(0.);
|
||||
|
||||
offset.setX((fullHolesStep/2.)*static_cast<G4double>(holesAlongWidth-1)-fullHolesStep*((markedPin-1)/2));
|
||||
offset.setY(height/2.-size/2-markedPinStep);
|
||||
offset.setZ(0.);
|
||||
|
||||
if (markedPin%2!=1)
|
||||
{
|
||||
offset.setY(-offset.getY());
|
||||
offset2.setY(-offset2.getY());
|
||||
}
|
||||
|
||||
G4VSolid * solid(new G4SubtractionSolid("Mark - Hole", box, tub, &identity, offset2));
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(solid, offset, true, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Mark");
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
markAlongWidth=false;
|
||||
|
||||
G4double size((width-groundWidth)/2.-markedPinStep);
|
||||
|
||||
box=new G4Box("Mark", size/2., holesRadius, thickness/2.);
|
||||
tub=new G4Tubs("Hole", 0, markedPinRadius, (thickness/2.)*1.01, 0, 360.*deg);
|
||||
|
||||
G4ThreeVector offset2;
|
||||
offset2.setX(size/2);
|
||||
offset2.setY(0);
|
||||
offset2.setZ(0.);
|
||||
|
||||
offset.setX(width/2.-size/2-markedPinStep);
|
||||
offset.setY((fullHolesStep/2.)*static_cast<G4double>(holesAlongHeight-1)-fullHolesStep*((markedPin-1)/2-holesAlongWidth));
|
||||
offset.setZ(0.);
|
||||
|
||||
if (markedPin%2!=1)
|
||||
{
|
||||
offset.setX(-offset.getX());
|
||||
offset2.setX(-offset2.getX());
|
||||
}
|
||||
|
||||
G4VSolid * solid(new G4SubtractionSolid("Mark - Hole", box, tub, &identity, offset2));
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(solid, offset, true, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Mark");
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
}
|
||||
|
||||
if (markAlongWidth)
|
||||
{
|
||||
G4Box * thick(new G4Box("Mark", (width-groundWidth)/4., holesStep/2., thickness/2.));
|
||||
|
||||
offset.setX((groundWidth+width)/4.);
|
||||
offset.setY(0.);
|
||||
offset.setZ(0.);
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(thick, offset, true, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Mark");
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
|
||||
offset.setX(-offset.getX());
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(thick, offset, false, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Mark");
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
G4Box * thick(new G4Box("Mark", holesStep/2., (height-groundHeight)/4., thickness/2.));
|
||||
|
||||
offset.setX(0.);
|
||||
offset.setY((groundHeight-height)/4.);
|
||||
offset.setZ(0.);
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(thick, offset, true, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Mark");
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
|
||||
offset.setY(-offset.getY());
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(thick, offset, false, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Mark");
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHKEYMARKSDECORATOR_HH */
|
||||
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithPadsDecorator.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithPadsDecorator.hh,v 1.3 2006/06/29 16:12:40 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Decorates with a ground plane
|
||||
// - Constructor
|
||||
// - Destructor
|
||||
// - RadmonDetectorLayerVolumesList * GenerateVolumesList(void)
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHPADSDECORATOR_HH
|
||||
#define RADMONTDETECTORVOLUMESWITHPADSDECORATOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLayerVolumeItemIntersection.hh"
|
||||
#include "RadmonDetectorPadsData.hh"
|
||||
#include <stack>
|
||||
|
||||
// Forward declaration
|
||||
class RadmonVDetectorLabelledEntityConstructor;
|
||||
class RadmonDetectorLayerVolumesList;
|
||||
class G4VSolid;
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
class RadmonTDetectorVolumesWithPadsDecorator
|
||||
{
|
||||
public:
|
||||
RadmonTDetectorVolumesWithPadsDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor);
|
||||
~RadmonTDetectorVolumesWithPadsDecorator();
|
||||
|
||||
RadmonDetectorLayerVolumesList * GenerateVolumesList(void);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonTDetectorVolumesWithPadsDecorator();
|
||||
RadmonTDetectorVolumesWithPadsDecorator(const RadmonTDetectorVolumesWithPadsDecorator & copy);
|
||||
RadmonTDetectorVolumesWithPadsDecorator & operator=(const RadmonTDetectorVolumesWithPadsDecorator & copy);
|
||||
|
||||
// Private datatypes
|
||||
typedef std::stack<G4VisAttributes *> AttributesStack;
|
||||
typedef std::list<RadmonDetectorPadsData> PadsDataList;
|
||||
|
||||
// Private attributes
|
||||
const RadmonVDetectorLabelledEntityConstructor * owner;
|
||||
LayerVolumesComponent component;
|
||||
RadmonDetectorLayerVolumeItemIntersection intersection;
|
||||
AttributesStack attributesStack;
|
||||
PadsDataList padsDataList;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonTDetectorVolumesWithPadsDecorator.icc"
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHPADSDECORATOR_HH */
|
||||
+204
@@ -0,0 +1,204 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithPadsDecorator.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithPadsDecorator.icc,v 1.1.2.2 2006/06/29 16:12:42 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHPADSDECORATOR_HH
|
||||
#error "RadmonTDetectorVolumesWithPadsDecorator.icc cannot be included directly. Please use RadmonTDetectorVolumesWithPadsDecorator.hh"
|
||||
#else /* RADMONTDETECTORVOLUMESWITHPADSDECORATOR_HH */
|
||||
// Include files
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
#include "RadmonDetectorLayerVolumesList.hh"
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4UIcommand.hh"
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithPadsDecorator<LayerVolumesComponent> :: RadmonTDetectorVolumesWithPadsDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor)
|
||||
:
|
||||
owner(constructor),
|
||||
component(constructor)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithPadsDecorator<LayerVolumesComponent> :: ~RadmonTDetectorVolumesWithPadsDecorator()
|
||||
{
|
||||
while(!attributesStack.empty())
|
||||
{
|
||||
delete attributesStack.top();
|
||||
attributesStack.pop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonDetectorLayerVolumesList * RadmonTDetectorVolumesWithPadsDecorator<LayerVolumesComponent> :: GenerateVolumesList(void)
|
||||
{
|
||||
G4double width(owner->GetWidth());
|
||||
if (width<0)
|
||||
return 0;
|
||||
|
||||
G4double height(owner->GetHeight());
|
||||
if (height<0)
|
||||
return 0;
|
||||
|
||||
G4double thickness(owner->GetThickness());
|
||||
if (thickness<0)
|
||||
return 0;
|
||||
|
||||
G4int padIndex(0);
|
||||
G4String padIndexStr;
|
||||
|
||||
for(;;)
|
||||
{
|
||||
padIndex++;
|
||||
padIndexStr=G4UIcommand::ConvertToString(padIndex);
|
||||
|
||||
if (!owner->ExistsAttribute("PadsPosition_"+padIndexStr))
|
||||
break;
|
||||
|
||||
padsDataList.push_back(RadmonDetectorPadsData());
|
||||
RadmonDetectorPadsData & last(padsDataList.back());
|
||||
|
||||
if (!last.ReadPositionsAndRotationsFromString(owner->GetAttribute("PadsPosition_"+padIndexStr, "#")))
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPadsDecorator::GenerateVolumesList: \"PadsPosition_" << padIndexStr << "\" has an invalid format" << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double var(owner->GetAttributeAsMeasure("PadsWidth_"+padIndexStr, "Length", -1.));
|
||||
if (var<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPadsDecorator::GenerateVolumesList: \"PadsWidth_" << padIndexStr << "\" not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
last.SetWidth(var);
|
||||
|
||||
var=owner->GetAttributeAsMeasure("PadsHeight_"+padIndexStr, "Length", -1.);
|
||||
if (var<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPadsDecorator::GenerateVolumesList: \"PadsHeight_" << padIndexStr << "\" not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
last.SetHeight(var);
|
||||
|
||||
G4Material * material(owner->GetMaterial("PadsMaterial_"+padIndexStr));
|
||||
if (!material)
|
||||
return 0;
|
||||
last.SetMaterial(material);
|
||||
}
|
||||
|
||||
if (padIndex<=1)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPadsDecorator::GenerateVolumesList: No pads defined" << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
RadmonDetectorLayerVolumesList * list(component.GenerateVolumesList());
|
||||
|
||||
if (list==0)
|
||||
return 0;
|
||||
|
||||
G4int n(list->GetNItems());
|
||||
|
||||
if (n==0)
|
||||
{
|
||||
delete list;
|
||||
return 0;
|
||||
}
|
||||
|
||||
RadmonDetectorLayerVolumeItem * item;
|
||||
RadmonDetectorLayerVolumeItem * motherItem;
|
||||
|
||||
while (n>0)
|
||||
{
|
||||
n--;
|
||||
|
||||
item=list->GetItem(n);
|
||||
if (item->GetMotherVolumeItem()==0)
|
||||
{
|
||||
motherItem=item;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!motherItem)
|
||||
G4Exception("RadmonTDetectorVolumesWithPadsDecorator::GenerateVolumesList: No mother volume found.");
|
||||
|
||||
intersection.Initialize(motherItem);
|
||||
|
||||
PadsDataList::const_iterator i(padsDataList.begin());
|
||||
PadsDataList::const_iterator end(padsDataList.end());
|
||||
G4VisAttributes * visAttributes;
|
||||
padIndex=0;
|
||||
|
||||
G4int j;
|
||||
G4String jStr;
|
||||
G4VSolid * box;
|
||||
|
||||
while (i!=end)
|
||||
{
|
||||
padIndex++;
|
||||
padIndexStr=G4UIcommand::ConvertToString(padIndex);
|
||||
|
||||
visAttributes=owner->AllocateVisAttributes("PadsVisAttributes_"+padIndexStr, i->GetMaterial());
|
||||
attributesStack.push(visAttributes);
|
||||
|
||||
box=new G4Box("Pad_"+padIndexStr, i->GetWidth()/2., i->GetHeight()/2., thickness/2.);
|
||||
|
||||
j=i->GetNPads();
|
||||
|
||||
while (j>0)
|
||||
{
|
||||
jStr=G4UIcommand::ConvertToString(j);
|
||||
j--;
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(box, i->GetRotation(j), i->GetPosition(j), j==0, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(i->GetMaterial());
|
||||
item->SetName("Pad_"+padIndexStr+"_"+jStr);
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHPADSDECORATOR_HH */
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithPinsDecorator.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithPinsDecorator.hh,v 1.3 2006/06/29 16:12:44 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Decorates with the pin out
|
||||
// - Constructor
|
||||
// - Destructor
|
||||
// - RadmonDetectorLayerVolumesList * GenerateVolumesList(void)
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHPINSDECORATOR_HH
|
||||
#define RADMONTDETECTORVOLUMESWITHPINSDECORATOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLayerVolumeItemIntersection.hh"
|
||||
|
||||
// Forward declaration
|
||||
class RadmonVDetectorLabelledEntityConstructor;
|
||||
class RadmonDetectorLayerVolumesList;
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
class RadmonTDetectorVolumesWithPinsDecorator
|
||||
{
|
||||
public:
|
||||
RadmonTDetectorVolumesWithPinsDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor);
|
||||
~RadmonTDetectorVolumesWithPinsDecorator();
|
||||
|
||||
RadmonDetectorLayerVolumesList * GenerateVolumesList(void);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonTDetectorVolumesWithPinsDecorator();
|
||||
RadmonTDetectorVolumesWithPinsDecorator(const RadmonTDetectorVolumesWithPinsDecorator & copy);
|
||||
RadmonTDetectorVolumesWithPinsDecorator & operator=(const RadmonTDetectorVolumesWithPinsDecorator & copy);
|
||||
|
||||
// Private attributes
|
||||
const RadmonVDetectorLabelledEntityConstructor * owner;
|
||||
LayerVolumesComponent component;
|
||||
G4VisAttributes * visAttributes;
|
||||
RadmonDetectorLayerVolumeItemIntersection intersection;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonTDetectorVolumesWithPinsDecorator.icc"
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHPINSDECORATOR_HH */
|
||||
+335
@@ -0,0 +1,335 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithPinsDecorator.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithPinsDecorator.icc,v 1.1.2.2 2006/06/29 16:12:46 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHPINSDECORATOR_HH
|
||||
#error "RadmonTDetectorVolumesWithPinsDecorator.icc cannot be included directly. Please use RadmonTDetectorVolumesWithPinsDecorator.hh"
|
||||
#else /* RADMONTDETECTORVOLUMESWITHPINSDECORATOR_HH */
|
||||
// Include files
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
#include "RadmonDetectorLayerVolumesList.hh"
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
#include "G4Trap.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4UIcommand.hh"
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithPinsDecorator<LayerVolumesComponent> :: RadmonTDetectorVolumesWithPinsDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor)
|
||||
:
|
||||
owner(constructor),
|
||||
component(constructor),
|
||||
visAttributes(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithPinsDecorator<LayerVolumesComponent> :: ~RadmonTDetectorVolumesWithPinsDecorator()
|
||||
{
|
||||
delete visAttributes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonDetectorLayerVolumesList * RadmonTDetectorVolumesWithPinsDecorator<LayerVolumesComponent> :: GenerateVolumesList(void)
|
||||
{
|
||||
G4double width(owner->GetWidth());
|
||||
if (width<0)
|
||||
return 0;
|
||||
|
||||
G4double height(owner->GetHeight());
|
||||
if (height<0)
|
||||
return 0;
|
||||
|
||||
G4double thickness(owner->GetThickness());
|
||||
if (thickness<0)
|
||||
return 0;
|
||||
|
||||
G4int holesAlongWidth(owner->GetAttributeAsInteger("HolesAlongWidth", -1));
|
||||
if (holesAlongWidth<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: \"HolesAlongWidth\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4int holesAlongHeight(owner->GetAttributeAsInteger("HolesAlongHeight", -1));
|
||||
if (holesAlongHeight<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: \"HolesAlongHeight\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((holesAlongWidth+holesAlongHeight)<=0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: Both \"HolesAlongHeight\" and \"HolesAlongHeight\" attributes are 0." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double holesRadius(owner->GetAttributeAsMeasure("HolesRadius", "Length", -1.));
|
||||
if (holesRadius<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: \"HolesRadius\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double pinLength(owner->GetAttributeAsMeasure("PinLength", "Length", -1.));
|
||||
if (pinLength<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: \"PinLength\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (pinLength>=width/2 || pinLength>=height/2)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: \"PinLength\" exceeds half width or height." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double holesStep(owner->GetAttributeAsMeasure("HolesStep", "Length", -1.));
|
||||
if (holesStep<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: \"HolesStep\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double fullHolesStep(holesRadius*2.+holesStep);
|
||||
|
||||
if (fullHolesStep*static_cast<G4double>(holesAlongWidth-1)>width || fullHolesStep>width)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: Holes parameters does not fit along width." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (fullHolesStep*static_cast<G4double>(holesAlongHeight-1)>height || fullHolesStep>height)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: Holes parameters does not fit along height." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4int markedPin(owner->GetAttributeAsInteger("MarkedPin", 0));
|
||||
|
||||
if (markedPin<0 || markedPin>(holesAlongWidth+holesAlongHeight)*2)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: Marked pin outside the range." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double markedPinLength(0.);
|
||||
if (markedPin>0)
|
||||
{
|
||||
markedPinLength=owner->GetAttributeAsMeasure("MarkedPinLength", "Length", -1.);
|
||||
|
||||
if (markedPinLength<0.)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: \"MarkedPinLength\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (markedPinLength<=pinLength)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: \"MarkedPinLength\" <= \"PinLength\"." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
G4Material * material(owner->GetMaterial("PinsMaterial"));
|
||||
if (!material)
|
||||
return 0;
|
||||
|
||||
visAttributes=owner->AllocateVisAttributes("PinsVisAttributes", material);
|
||||
|
||||
RadmonDetectorLayerVolumesList * list(component.GenerateVolumesList());
|
||||
|
||||
if (list==0)
|
||||
return 0;
|
||||
|
||||
G4int n(list->GetNItems());
|
||||
|
||||
if (n==0)
|
||||
{
|
||||
delete list;
|
||||
return 0;
|
||||
}
|
||||
|
||||
RadmonDetectorLayerVolumeItem * item;
|
||||
RadmonDetectorLayerVolumeItem * motherItem;
|
||||
|
||||
while (n>0)
|
||||
{
|
||||
n--;
|
||||
|
||||
item=list->GetItem(n);
|
||||
if (item->GetMotherVolumeItem()==0)
|
||||
{
|
||||
motherItem=item;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!motherItem)
|
||||
G4Exception("RadmonTDetectorVolumesWithPinsDecorator::GenerateVolumesList: No mother volume found.");
|
||||
|
||||
intersection.Initialize(motherItem);
|
||||
|
||||
G4Box * singlePin(new G4Box("SinglePin", holesRadius, pinLength/2., thickness/2.));
|
||||
|
||||
G4ThreeVector offset;
|
||||
|
||||
offset.setX((fullHolesStep/2.)*static_cast<G4double>(holesAlongWidth-1));
|
||||
offset.setY(height/2.-pinLength/2.);
|
||||
offset.setZ(0.);
|
||||
|
||||
G4int i(holesAlongWidth);
|
||||
G4int index(0);
|
||||
G4String indexStr;
|
||||
|
||||
const G4double heightFraction(.999);
|
||||
const G4double pDx2(holesRadius);
|
||||
const G4double pDx1(pDx2*(1.-heightFraction));
|
||||
const G4double pDy1((markedPinLength-pinLength)*heightFraction/2.);
|
||||
|
||||
while (i>0)
|
||||
{
|
||||
index++;
|
||||
indexStr=G4UIcommand::ConvertToString(index);
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(singlePin, offset, index==1, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Pin"+indexStr);
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
|
||||
if (index==markedPin)
|
||||
{
|
||||
G4Trap * trap;
|
||||
|
||||
G4ThreeVector offset2(offset);
|
||||
if (offset2.getY()<0)
|
||||
{
|
||||
offset2.setY(offset2.getY()+pDy1+pinLength/2);
|
||||
// pDz pTheta pPhi pDy1 pDx1 pDx2 pAlp1
|
||||
trap=new G4Trap("Track"+indexStr, thickness/2., 0.*deg, 0.*deg, pDy1, pDx2, pDx1, 0*deg,
|
||||
// pDy2 pDx3 pDx4 pAlp2
|
||||
pDy1, pDx2, pDx1, 0*deg);
|
||||
}
|
||||
else
|
||||
{
|
||||
offset2.setY(offset2.getY()-pDy1-pinLength/2);
|
||||
// pDz pTheta pPhi pDy1 pDx1 pDx2 pAlp1
|
||||
trap=new G4Trap("Track"+indexStr, thickness/2., 0.*deg, 0.*deg, pDy1, pDx1, pDx2, 0*deg,
|
||||
// pDy2 pDx3 pDx4 pAlp2
|
||||
pDy1, pDx1, pDx2, 0*deg);
|
||||
}
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(trap, offset2, true, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("MarkedPin");
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
}
|
||||
|
||||
offset.setY(-offset.getY());
|
||||
if (offset.getY()>=0)
|
||||
{
|
||||
offset.setX(offset.getX()-fullHolesStep);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
offset.setX(width/2.-pinLength/2.);
|
||||
offset.setY((fullHolesStep/2.)*static_cast<G4double>(holesAlongHeight-1));
|
||||
i=holesAlongHeight;
|
||||
|
||||
G4RotationMatrix rotation(G4RotationMatrix::IDENTITY);
|
||||
rotation.setDelta(90*deg);
|
||||
|
||||
while (i>0)
|
||||
{
|
||||
index++;
|
||||
indexStr=G4UIcommand::ConvertToString(index);
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(singlePin, rotation, offset, index==1, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Pin"+indexStr);
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
|
||||
if (index==markedPin)
|
||||
{
|
||||
G4Trap * trap;
|
||||
|
||||
G4ThreeVector offset2(offset);
|
||||
if (offset2.getX()<0)
|
||||
{
|
||||
offset2.setX(offset2.getX()+pDy1+pinLength/2);
|
||||
// pDz pTheta pPhi pDy1 pDx1 pDx2 pAlp1
|
||||
trap=new G4Trap("Track"+indexStr, thickness/2., 0.*deg, 0.*deg, pDy1, pDx2, pDx1, 0*deg,
|
||||
// pDy2 pDx3 pDx4 pAlp2
|
||||
pDy1, pDx2, pDx1, 0*deg);
|
||||
}
|
||||
else
|
||||
{
|
||||
offset2.setX(offset2.getX()-pDy1-pinLength/2);
|
||||
// pDz pTheta pPhi pDy1 pDx1 pDx2 pAlp1
|
||||
trap=new G4Trap("Track"+indexStr, thickness/2., 0.*deg, 0.*deg, pDy1, pDx1, pDx2, 0*deg,
|
||||
// pDy2 pDx3 pDx4 pAlp2
|
||||
pDy1, pDx1, pDx2, 0*deg);
|
||||
}
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(trap, rotation, offset2, true, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("MarkedPin");
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
}
|
||||
|
||||
offset.setX(-offset.getX());
|
||||
if (offset.getX()>=0)
|
||||
{
|
||||
offset.setY(offset.getY()-fullHolesStep);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHPINSDECORATOR_HH */
|
||||
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithTracksDecorator.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithTracksDecorator.hh,v 1.3 2006/06/29 16:12:48 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Decorates with tracks according to the pin-out
|
||||
// - Constructor
|
||||
// - Destructor
|
||||
// - RadmonDetectorLayerVolumesList * GenerateVolumesList(void)
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHTRACKSDECORATOR_HH
|
||||
#define RADMONTDETECTORVOLUMESWITHTRACKSDECORATOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLayerVolumeItemIntersection.hh"
|
||||
|
||||
// Forward declaration
|
||||
class RadmonVDetectorLabelledEntityConstructor;
|
||||
class RadmonDetectorLayerVolumesList;
|
||||
class G4VSolid;
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
class RadmonTDetectorVolumesWithTracksDecorator
|
||||
{
|
||||
public:
|
||||
RadmonTDetectorVolumesWithTracksDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor);
|
||||
~RadmonTDetectorVolumesWithTracksDecorator();
|
||||
|
||||
RadmonDetectorLayerVolumesList * GenerateVolumesList(void);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonTDetectorVolumesWithTracksDecorator();
|
||||
RadmonTDetectorVolumesWithTracksDecorator(const RadmonTDetectorVolumesWithTracksDecorator & copy);
|
||||
RadmonTDetectorVolumesWithTracksDecorator & operator=(const RadmonTDetectorVolumesWithTracksDecorator & copy);
|
||||
|
||||
// Private attributes
|
||||
const RadmonVDetectorLabelledEntityConstructor * owner;
|
||||
LayerVolumesComponent component;
|
||||
G4VisAttributes * visAttributes;
|
||||
RadmonDetectorLayerVolumeItemIntersection intersection;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonTDetectorVolumesWithTracksDecorator.icc"
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHTRACKSDECORATOR_HH */
|
||||
+264
@@ -0,0 +1,264 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonTDetectorVolumesWithTracksDecorator.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonTDetectorVolumesWithTracksDecorator.icc,v 1.1.2.2 2006/06/29 16:12:50 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONTDETECTORVOLUMESWITHTRACKSDECORATOR_HH
|
||||
#error "RadmonTDetectorVolumesWithTracksDecorator.icc cannot be included directly. Please use RadmonTDetectorVolumesWithTracksDecorator.hh"
|
||||
#else /* RADMONTDETECTORVOLUMESWITHTRACKSDECORATOR_HH */
|
||||
// Include files
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
#include "RadmonDetectorLayerVolumesList.hh"
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
#include "G4Trap.hh"
|
||||
#include "G4UIcommand.hh"
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithTracksDecorator<LayerVolumesComponent> :: RadmonTDetectorVolumesWithTracksDecorator(const RadmonVDetectorLabelledEntityConstructor * constructor)
|
||||
:
|
||||
owner(constructor),
|
||||
component(constructor),
|
||||
visAttributes(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonTDetectorVolumesWithTracksDecorator<LayerVolumesComponent> :: ~RadmonTDetectorVolumesWithTracksDecorator()
|
||||
{
|
||||
delete visAttributes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class LayerVolumesComponent>
|
||||
RadmonDetectorLayerVolumesList * RadmonTDetectorVolumesWithTracksDecorator<LayerVolumesComponent> :: GenerateVolumesList(void)
|
||||
{
|
||||
G4double width(owner->GetWidth());
|
||||
if (width<0)
|
||||
return 0;
|
||||
|
||||
G4double height(owner->GetHeight());
|
||||
if (height<0)
|
||||
return 0;
|
||||
|
||||
G4double thickness(owner->GetThickness());
|
||||
if (thickness<0)
|
||||
return 0;
|
||||
|
||||
G4int holesAlongWidth(owner->GetAttributeAsInteger("HolesAlongWidth", -1));
|
||||
if (holesAlongWidth<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithTracksDecorator::GenerateVolumesList: \"HolesAlongWidth\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4int holesAlongHeight(owner->GetAttributeAsInteger("HolesAlongHeight", -1));
|
||||
if (holesAlongHeight<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithTracksDecorator::GenerateVolumesList: \"HolesAlongHeight\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((holesAlongWidth+holesAlongHeight)<=0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithTracksDecorator::GenerateVolumesList: Both \"HolesAlongHeight\" and \"HolesAlongHeight\" attributes are 0." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double holesRadius(owner->GetAttributeAsMeasure("HolesRadius", "Length", -1.));
|
||||
if (holesRadius<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithTracksDecorator::GenerateVolumesList: \"HolesRadius\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double holesStep(owner->GetAttributeAsMeasure("HolesStep", "Length", -1.));
|
||||
if (holesStep<0)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithTracksDecorator::GenerateVolumesList: \"HolesStep\" attribute not defined." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4double fullHolesStep(holesRadius*2.+holesStep);
|
||||
|
||||
if (fullHolesStep*static_cast<G4double>(holesAlongWidth-1)>width || fullHolesStep>width)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithTracksDecorator::GenerateVolumesList: Holes parameters does not fit along width." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (fullHolesStep*static_cast<G4double>(holesAlongHeight-1)>height || fullHolesStep>height)
|
||||
{
|
||||
G4cout << "RadmonTDetectorVolumesWithTracksDecorator::GenerateVolumesList: Holes parameters does not fit along height." << G4endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
G4Material * material(owner->GetMaterial("TracksMaterial"));
|
||||
if (!material)
|
||||
return 0;
|
||||
|
||||
visAttributes=owner->AllocateVisAttributes("TracksVisAttributes", material);
|
||||
|
||||
RadmonDetectorLayerVolumesList * list(component.GenerateVolumesList());
|
||||
|
||||
if (list==0)
|
||||
return 0;
|
||||
|
||||
G4int n(list->GetNItems());
|
||||
|
||||
if (n==0)
|
||||
{
|
||||
delete list;
|
||||
return 0;
|
||||
}
|
||||
|
||||
RadmonDetectorLayerVolumeItem * item;
|
||||
RadmonDetectorLayerVolumeItem * motherItem;
|
||||
|
||||
while (n>0)
|
||||
{
|
||||
n--;
|
||||
|
||||
item=list->GetItem(n);
|
||||
if (item->GetMotherVolumeItem()==0)
|
||||
{
|
||||
motherItem=item;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!motherItem)
|
||||
G4Exception("RadmonTDetectorVolumesWithTracksDecorator::GenerateVolumesList: No mother volume found.");
|
||||
|
||||
intersection.Initialize(motherItem);
|
||||
|
||||
const G4double heightFraction(.999);
|
||||
|
||||
G4int index(0);
|
||||
G4String indexStr;
|
||||
fullHolesStep/=2;
|
||||
G4double angle;
|
||||
const G4double pDx2(holesRadius);
|
||||
const G4double pDx1(pDx2*(1.-heightFraction));
|
||||
G4Trap * trap;
|
||||
G4ThreeVector offset((fullHolesStep/2.)*static_cast<G4double>(holesAlongWidth-1), height/4.*(2.-heightFraction), 0);
|
||||
G4int i(holesAlongWidth);
|
||||
|
||||
while (i>0)
|
||||
{
|
||||
index++;
|
||||
indexStr=G4UIcommand::ConvertToString(index);
|
||||
|
||||
if (offset.getY()>=0)
|
||||
{
|
||||
angle=90.*deg-offset.getPhi();
|
||||
// pDz pTheta pPhi pDy1 pDx1 pDx2 pAlp1
|
||||
trap=new G4Trap("Track"+indexStr, thickness/2., 0.*deg, 0.*deg, height/4.*heightFraction, pDx1, pDx2, angle,
|
||||
// pDy2 pDx3 pDx4 pAlp2
|
||||
height/4.*heightFraction, pDx1, pDx2, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
angle=-90*deg-offset.getPhi();
|
||||
// pDz pTheta pPhi pDy1 pDx1 pDx2 pAlp1
|
||||
trap=new G4Trap("Track"+indexStr, thickness/2., 0.*deg, 0.*deg, height/4.*heightFraction, pDx2, pDx1, angle,
|
||||
// pDy2 pDx3 pDx4 pAlp2
|
||||
height/4.*heightFraction, pDx2, pDx1, angle);
|
||||
}
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(trap, offset, true, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Track"+indexStr);
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
|
||||
offset.setY(-offset.getY());
|
||||
if (offset.getY()>=0)
|
||||
{
|
||||
offset.setX(offset.getX()-fullHolesStep);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
G4RotationMatrix rotation(G4RotationMatrix::IDENTITY);
|
||||
rotation.setDelta(90*deg);
|
||||
|
||||
offset.setX(width/4.*(2.-heightFraction));
|
||||
offset.setY((fullHolesStep/2.)*static_cast<G4double>(holesAlongHeight-1));
|
||||
i=holesAlongHeight;
|
||||
|
||||
while (i>0)
|
||||
{
|
||||
index++;
|
||||
indexStr=G4UIcommand::ConvertToString(index);
|
||||
|
||||
if (offset.getX()>=0)
|
||||
{
|
||||
angle=-offset.getPhi();
|
||||
// pDz pTheta pPhi pDy1 pDx1 pDx2 pAlp1
|
||||
trap=new G4Trap("Track"+indexStr, thickness/2., 0.*deg, 0.*deg, width/4.*heightFraction, pDx1, pDx2, angle,
|
||||
// pDy2 pDx3 pDx4 pAlp2
|
||||
width/4.*heightFraction, pDx1, pDx2, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
angle=-offset.getPhi();
|
||||
// pDz pTheta pPhi pDy1 pDx1 pDx2 pAlp1
|
||||
trap=new G4Trap("Track"+indexStr, thickness/2., 0.*deg, 0.*deg, width/4.*heightFraction, pDx2, pDx1, angle,
|
||||
// pDy2 pDx3 pDx4 pAlp2
|
||||
width/4.*heightFraction, pDx2, pDx1, angle);
|
||||
}
|
||||
|
||||
item=list->AppendItem();
|
||||
item->SetSolid(intersection.ApplyTo(trap, rotation, offset, true, true));
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetName("Track"+indexStr);
|
||||
item->SetMotherVolumeItem(motherItem);
|
||||
|
||||
offset.setX(-offset.getX());
|
||||
if (offset.getX()>=0)
|
||||
{
|
||||
offset.setY(offset.getY()-fullHolesStep);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
#endif /* RADMONTDETECTORVOLUMESWITHTRACKSDECORATOR_HH */
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorEntitiesConstructorsFactory.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorEntitiesConstructorsFactory.hh,v 1.4 2006/06/29 16:12:52 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Abstract class of a factory of detector-entity constructor
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORENTITIESCONSTRUCTORSFACTORY_HH
|
||||
#define RADMONVDETECTORENTITIESCONSTRUCTORSFACTORY_HH
|
||||
|
||||
// Forward declaration
|
||||
class RadmonVDetectorEntityConstructor;
|
||||
class G4String;
|
||||
|
||||
class RadmonVDetectorEntitiesConstructorsFactory
|
||||
{
|
||||
public:
|
||||
inline virtual ~RadmonVDetectorEntitiesConstructorsFactory();
|
||||
|
||||
virtual RadmonVDetectorEntityConstructor * CreateEntityConstructor(const G4String & entityName) = 0;
|
||||
|
||||
protected:
|
||||
inline RadmonVDetectorEntitiesConstructorsFactory();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonVDetectorEntitiesConstructorsFactory(const RadmonVDetectorEntitiesConstructorsFactory & copy);
|
||||
RadmonVDetectorEntitiesConstructorsFactory & operator=(const RadmonVDetectorEntitiesConstructorsFactory & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonVDetectorEntitiesConstructorsFactory.icc"
|
||||
#endif /* RADMONVDETECTORENTITIESCONSTRUCTORSFACTORY_HH */
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorEntitiesConstructorsFactory.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorEntitiesConstructorsFactory.icc,v 1.3 2006/06/29 16:13:10 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORENTITIESCONSTRUCTORSFACTORY_HH
|
||||
#error "RadmonVDetectorEntitiesConstructorsFactory.icc cannot be included directly. Please use RadmonVDetectorEntitiesConstructorsFactory.hh"
|
||||
#else /* RADMONVDETECTORENTITIESCONSTRUCTORSFACTORY_HH */
|
||||
inline RadmonVDetectorEntitiesConstructorsFactory :: ~RadmonVDetectorEntitiesConstructorsFactory()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonVDetectorEntitiesConstructorsFactory :: RadmonVDetectorEntitiesConstructorsFactory()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONVDETECTORENTITIESCONSTRUCTORSFACTORY_HH */
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorEntityConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorEntityConstructor.hh,v 1.4 2006/06/29 16:13:12 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Abstract class of a detector-entity constructor
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORENTITYCONSTRUCTOR_HH
|
||||
#define RADMONVDETECTORENTITYCONSTRUCTOR_HH
|
||||
|
||||
// Forward declarations
|
||||
class G4LogicalVolume;
|
||||
class G4String;
|
||||
|
||||
class RadmonVDetectorEntityConstructor
|
||||
{
|
||||
public:
|
||||
inline virtual ~RadmonVDetectorEntityConstructor();
|
||||
|
||||
virtual void SetEntityAttribute(const G4String & attributeName, const G4String &value) = 0;
|
||||
virtual G4LogicalVolume * ConstructLogicalVolume() = 0;
|
||||
|
||||
protected:
|
||||
inline RadmonVDetectorEntityConstructor();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonVDetectorEntityConstructor(const RadmonVDetectorEntityConstructor & copy);
|
||||
RadmonVDetectorEntityConstructor & operator=(const RadmonVDetectorEntityConstructor & copy);
|
||||
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonVDetectorEntityConstructor.icc"
|
||||
#endif /* RADMONVDETECTORENTITYCONSTRUCTOR_HH */
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorEntityConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorEntityConstructor.icc,v 1.3 2006/06/29 16:13:14 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORENTITYCONSTRUCTOR_HH
|
||||
#error "RadmonVDetectorEntityConstructor.icc cannot be included directly. Please use RadmonVDetectorEntityConstructor.hh"
|
||||
#else /* RADMONVDETECTORENTITYCONSTRUCTOR_HH */
|
||||
inline RadmonVDetectorEntityConstructor :: RadmonVDetectorEntityConstructor()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonVDetectorEntityConstructor :: ~RadmonVDetectorEntityConstructor()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONVDETECTORENTITYCONSTRUCTOR_HH */
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorLabelledEntityConstructor.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorLabelledEntityConstructor.hh,v 1.8 2006/06/29 16:13:16 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Abstract class of a detector-entity constructor with label
|
||||
// and attributes
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORLABELLEDENTITYCONSTRUCTOR_HH
|
||||
#define RADMONVDETECTORLABELLEDENTITYCONSTRUCTOR_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonLayoutEntityWithAttributes.hh"
|
||||
#include "RadmonVDetectorEntityConstructor.hh"
|
||||
|
||||
// Forward declaration
|
||||
class G4Material;
|
||||
class G4VisAttributes;
|
||||
class G4VSensitiveDetector;
|
||||
|
||||
class RadmonVDetectorLabelledEntityConstructor : public RadmonVDetectorEntityConstructor, public RadmonLayoutEntityWithAttributes
|
||||
{
|
||||
public:
|
||||
inline virtual ~RadmonVDetectorLabelledEntityConstructor();
|
||||
|
||||
inline const G4String & GetLabel(void) const;
|
||||
inline virtual void SetEntityAttribute(const G4String & attributeName, const G4String & value);
|
||||
virtual RadmonVDetectorLabelledEntityConstructor * New(void) const = 0;
|
||||
|
||||
G4double GetWidth(void) const;
|
||||
G4double GetHeight(void) const;
|
||||
G4double GetThickness(void) const;
|
||||
|
||||
G4Material * GetMaterial(const G4String & attributeName) const;
|
||||
G4VisAttributes * AllocateVisAttributes(const G4String & attributeName, const G4Material * material) const;
|
||||
|
||||
G4VSensitiveDetector * AllocateSensitiveDetector(const G4String & attributeName, const G4String & defaultAttrbuteValue) const;
|
||||
|
||||
protected:
|
||||
inline RadmonVDetectorLabelledEntityConstructor(const G4String & label);
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonVDetectorLabelledEntityConstructor(const RadmonVDetectorLabelledEntityConstructor & copy);
|
||||
RadmonVDetectorLabelledEntityConstructor & operator=(const RadmonVDetectorLabelledEntityConstructor & copy);
|
||||
|
||||
// Private attributes
|
||||
G4String entityLabel;
|
||||
};
|
||||
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.icc"
|
||||
#endif /* RADMONVDETECTORLABELLEDENTITYCONSTRUCTOR_HH */
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorLabelledEntityConstructor.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorLabelledEntityConstructor.icc,v 1.3 2006/06/29 16:13:18 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORLABELLEDENTITYCONSTRUCTOR_HH
|
||||
#error "RadmonVDetectorLabelledEntityConstructor.icc cannot be included directly. Please use RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
#else /* RADMONVDETECTORLABELLEDENTITYCONSTRUCTOR_HH */
|
||||
inline RadmonVDetectorLabelledEntityConstructor :: ~RadmonVDetectorLabelledEntityConstructor()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline const G4String & RadmonVDetectorLabelledEntityConstructor :: GetLabel(void) const
|
||||
{
|
||||
return entityLabel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonVDetectorLabelledEntityConstructor :: SetEntityAttribute(const G4String & attributeName, const G4String & value)
|
||||
{
|
||||
SetAttribute(attributeName, value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline RadmonVDetectorLabelledEntityConstructor :: RadmonVDetectorLabelledEntityConstructor(const G4String & label)
|
||||
:
|
||||
entityLabel(label)
|
||||
{
|
||||
}
|
||||
#endif /* RADMONVDETECTORLABELLEDENTITYCONSTRUCTOR_HH */
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorLayerVolumeItemOperation.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorLayerVolumeItemOperation.hh,v 1.3 2006/06/29 16:13:20 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Operates on solids
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORLAYERVOLUMEITEMOPERATION_HH
|
||||
#define RADMONVDETECTORLAYERVOLUMEITEMOPERATION_HH
|
||||
|
||||
// Include files
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include <stack>
|
||||
|
||||
// Forward declarations
|
||||
class RadmonDetectorLayerVolumeItem;
|
||||
class G4VSolid;
|
||||
|
||||
class RadmonVDetectorLayerVolumeItemOperation
|
||||
{
|
||||
public:
|
||||
void Initialize(G4VSolid * solid, const G4RotationMatrix & rotation, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
void Initialize(G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
void Initialize(G4VSolid * solid, G4bool ownSolid=true);
|
||||
void Initialize(const RadmonDetectorLayerVolumeItem * item);
|
||||
|
||||
G4VSolid * ApplyTo(G4VSolid * solid, const G4RotationMatrix & rotation, const G4ThreeVector & position, G4bool ownSolid=true, G4bool ownResult=true);
|
||||
inline G4VSolid * ApplyTo(G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid=true, G4bool ownResult=true);
|
||||
inline G4VSolid * ApplyTo(G4VSolid * solid, G4bool ownSolid=true, G4bool ownResult=true);
|
||||
void ApplyTo(RadmonDetectorLayerVolumeItem * item, G4bool ownResult=true);
|
||||
|
||||
protected:
|
||||
inline RadmonVDetectorLayerVolumeItemOperation();
|
||||
RadmonVDetectorLayerVolumeItemOperation(G4VSolid * solid, const G4RotationMatrix & rotation, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
RadmonVDetectorLayerVolumeItemOperation(G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid=true);
|
||||
RadmonVDetectorLayerVolumeItemOperation(G4VSolid * solid, G4bool ownSolid=true);
|
||||
RadmonVDetectorLayerVolumeItemOperation(const RadmonDetectorLayerVolumeItem * item);
|
||||
|
||||
~RadmonVDetectorLayerVolumeItemOperation();
|
||||
virtual G4VSolid * Operate(G4VSolid * left, G4VSolid * right, G4RotationMatrix * relativeRotation, const G4ThreeVector & relativePosition) = 0;
|
||||
|
||||
inline G4RotationMatrix * AllocateMatrix();
|
||||
inline void OwnSolid(G4VSolid * solid);
|
||||
|
||||
private:
|
||||
inline void Validate();
|
||||
|
||||
void Merge(const G4RotationMatrix & rightRotation, const G4ThreeVector & rightPosition, G4RotationMatrix & relativeRotation, G4ThreeVector & relativePosition) const;
|
||||
void Absolute(const RadmonDetectorLayerVolumeItem * item, G4RotationMatrix & rotation, G4ThreeVector & position) const;
|
||||
|
||||
// Hidden constructors and operators
|
||||
RadmonVDetectorLayerVolumeItemOperation(const RadmonVDetectorLayerVolumeItemOperation & copy);
|
||||
RadmonVDetectorLayerVolumeItemOperation & operator=(const RadmonVDetectorLayerVolumeItemOperation & copy);
|
||||
|
||||
// Private data types
|
||||
typedef std::stack<G4VSolid *> OwnedSolids;
|
||||
typedef std::stack<G4RotationMatrix> OwnedMatrices;
|
||||
|
||||
// Private attributes
|
||||
OwnedSolids ownedSolids;
|
||||
OwnedMatrices ownedMatrices;
|
||||
G4RotationMatrix leftRotation;
|
||||
G4RotationMatrix invLeftRotation;
|
||||
G4ThreeVector leftPosition;
|
||||
G4VSolid * leftSolid;
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonVDetectorLayerVolumeItemOperation.icc"
|
||||
#endif /* RADMONVDETECTORLAYERVOLUMEITEMOPERATION_HH */
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorLayerVolumeItemOperation.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorLayerVolumeItemOperation.icc,v 1.3 2006/06/29 16:13:22 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORLAYERVOLUMEITEMOPERATION_HH
|
||||
#error "RadmonVDetectorLayerVolumeItemOperation.icc cannot be included directly. Please use RadmonVDetectorLayerVolumeItemOperation.hh"
|
||||
#else /* RADMONVDETECTORLAYERVOLUMEITEMOPERATION_HH */
|
||||
inline RadmonVDetectorLayerVolumeItemOperation :: RadmonVDetectorLayerVolumeItemOperation()
|
||||
:
|
||||
leftSolid(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline G4VSolid * RadmonVDetectorLayerVolumeItemOperation :: ApplyTo(G4VSolid * solid, const G4ThreeVector & position, G4bool ownSolid, G4bool ownResult)
|
||||
{
|
||||
return ApplyTo(solid, G4RotationMatrix::IDENTITY, position, ownSolid, ownResult);
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4VSolid * RadmonVDetectorLayerVolumeItemOperation :: ApplyTo(G4VSolid * solid, G4bool ownSolid, G4bool ownResult)
|
||||
{
|
||||
return ApplyTo(solid, G4ThreeVector(0, 0, 0), ownSolid, ownResult);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inline G4RotationMatrix * RadmonVDetectorLayerVolumeItemOperation :: AllocateMatrix()
|
||||
{
|
||||
ownedMatrices.push(G4RotationMatrix::IDENTITY);
|
||||
return &ownedMatrices.top();
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void RadmonVDetectorLayerVolumeItemOperation :: OwnSolid(G4VSolid * solid)
|
||||
{
|
||||
ownedSolids.push(solid);
|
||||
}
|
||||
#endif /* RADMONVDETECTORLAYERVOLUMEITEMOPERATION_HH */
|
||||
@@ -0,0 +1,118 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorLayout.hh
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorLayout.hh,v 1.7 2006/06/29 16:13:24 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
// Description: Abstract class to keep track of the configured detector
|
||||
// layout
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORLAYOUT_HH
|
||||
#define RADMONVDETECTORLAYOUT_HH
|
||||
|
||||
// Include files
|
||||
#include "RadmonVLayoutSubject.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
|
||||
class RadmonVDetectorLayout : public RadmonVLayoutSubject
|
||||
{
|
||||
public:
|
||||
virtual void EnableEnvironment(void) = 0;
|
||||
virtual void DisableEnvironment(void) = 0;
|
||||
virtual G4bool IsEnabledEnvironment(void) const = 0;
|
||||
|
||||
virtual void SetEnvironmentType(const G4String & type) = 0;
|
||||
virtual const G4String & GetEnvironmentType() const = 0;
|
||||
virtual G4int GetEnvironmentNAttributes(void) const = 0;
|
||||
virtual const G4String & GetEnvironmentAttributeName(G4int index) const = 0;
|
||||
virtual void SetEnvironmentAttribute(const G4String & attributeName, const G4String & attributeValue) = 0;
|
||||
virtual const G4String GetEnvironmentAttribute(const G4String & attributeName, const G4String & defaultAttributeValue) const = 0;
|
||||
virtual void ClearEnvironmentAttribute(const G4String & attributeName) = 0;
|
||||
|
||||
virtual void CreateMultilayer(const G4String & multilayerLabel) = 0;
|
||||
virtual void RemoveMultilayer(const G4String & multilayerLabel) = 0;
|
||||
virtual void SetMultilayerWidth(const G4String & multilayerLabel, G4double width) = 0;
|
||||
virtual G4double GetMultilayerWidth(const G4String & multilayerLabel) const = 0;
|
||||
virtual void SetMultilayerHeight(const G4String & multilayerLabel, G4double height) = 0;
|
||||
virtual G4double GetMultilayerHeight(const G4String & multilayerLabel) const = 0;
|
||||
virtual G4double GetMultilayerTotalThickness(const G4String & multilayerLabel) const = 0;
|
||||
|
||||
virtual void AppendLayerToMultilayer(const G4String & multilayerLabel, const G4String & layerLabel) = 0;
|
||||
virtual void RemoveLayerFromMultilayer(const G4String & multilayerLabel, const G4String & layerLabel) = 0;
|
||||
virtual void RemoveAllLayersFromMultilayer(const G4String & multilayerLabel) = 0;
|
||||
virtual G4int GetMultilayerNLayers(const G4String & multilayerLabel) const = 0;
|
||||
virtual const G4String & GetMultilayerLayerLabel(const G4String & multilayerLabel, G4int index) const = 0;
|
||||
|
||||
virtual void SetLayerThickness(const G4String & multilayerLabel, const G4String & layerLabel, G4double thickness) = 0;
|
||||
virtual G4double GetLayerThickness(const G4String & multilayerLabel, const G4String & layerLabel) const = 0;
|
||||
virtual void SetLayerType(const G4String & multilayerLabel, const G4String & layerLabel, const G4String & type) = 0;
|
||||
virtual const G4String & GetLayerType(const G4String & multilayerLabel, const G4String & layerLabel) const = 0;
|
||||
|
||||
virtual G4int GetLayerNAttributes(const G4String & multilayerLabel, const G4String & layerLabel) const = 0;
|
||||
virtual const G4String & GetLayerAttributeName(const G4String & multilayerLabel, const G4String & layerLabel, G4int index) const = 0;
|
||||
virtual void SetLayerAttribute(const G4String & multilayerLabel, const G4String & layerLabel, const G4String & attributeName, const G4String & attributeValue) = 0;
|
||||
virtual const G4String GetLayerAttribute(const G4String & multilayerLabel, const G4String & layerLabel, const G4String & attributeName, const G4String & defaultAttributeValue) const = 0;
|
||||
virtual void ClearLayerAttribute(const G4String & multilayerLabel, const G4String & layerLabel, const G4String & attributeName) = 0;
|
||||
|
||||
virtual void CreatePlacement(const G4String & placementLabel, const G4String & multilayerName) = 0;
|
||||
virtual G4int GetNPlacements() const = 0;
|
||||
virtual const G4String & GetPlacementLabel(G4int index) const = 0;
|
||||
virtual void RemovePlacement(const G4String & placementLabel) = 0;
|
||||
|
||||
virtual const G4String & GetPlacementMultilayerType(const G4String & placementLabel) const = 0;
|
||||
virtual void SetPlacementPosition(const G4String & placementLabel, const G4ThreeVector & position) = 0;
|
||||
virtual const G4ThreeVector & GetPlacementPosition(const G4String & placementLabel) const = 0;
|
||||
virtual void SetPlacementPosition(const G4String & placementLabel, const G4String & originLabel, const G4ThreeVector & offset) = 0;
|
||||
virtual void SetPlacementRotation(const G4String & placementLabel, const G4RotationMatrix & rotation) = 0;
|
||||
virtual const G4RotationMatrix & GetPlacementRotation(const G4String & placementLabel) const = 0;
|
||||
virtual void SetPlacementRotation(const G4String & placementLabel, const G4String & originLabel, const G4RotationMatrix & relativeRotation) = 0;
|
||||
|
||||
virtual void DumpLayout(std::ostream & out) const = 0;
|
||||
|
||||
virtual G4bool Load(std::istream & in) = 0;
|
||||
virtual G4bool Save(std::ostream & out) const = 0;
|
||||
|
||||
protected:
|
||||
inline RadmonVDetectorLayout();
|
||||
inline ~RadmonVDetectorLayout();
|
||||
|
||||
private:
|
||||
// Hidden constructors and operators
|
||||
RadmonVDetectorLayout(const RadmonVDetectorLayout & copy);
|
||||
RadmonVDetectorLayout & operator=(const RadmonVDetectorLayout & copy);
|
||||
};
|
||||
|
||||
// Inline implementations
|
||||
#include "RadmonVDetectorLayout.icc"
|
||||
#endif /* RADMONVDETECTORLAYOUT_HH */
|
||||
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonVDetectorLayout.icc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonVDetectorLayout.icc,v 1.3 2006/06/29 16:13:26 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
#ifndef RADMONVDETECTORLAYOUT_HH
|
||||
#error "RadmonVDetectorLayout.icc cannot be included directly. Please use RadmonVDetectorLayout.hh"
|
||||
#else /* RADMONVDETECTORLAYOUT_HH */
|
||||
inline RadmonVDetectorLayout :: RadmonVDetectorLayout()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline RadmonVDetectorLayout :: ~RadmonVDetectorLayout()
|
||||
{
|
||||
}
|
||||
#endif /* RADMONVDETECTORLAYOUT_HH */
|
||||
@@ -0,0 +1,328 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorConstruction.cc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorConstruction.cc,v 1.4.2.2 2006/06/29 16:13:28 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorConstruction.hh"
|
||||
|
||||
#include "RadmonVDetectorLayout.hh"
|
||||
#include "RadmonVDetectorEntityConstructor.hh"
|
||||
#include "RadmonVDetectorEntitiesConstructorsFactory.hh"
|
||||
#include "RadmonMaterialsManager.hh"
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4UIcommand.hh"
|
||||
#include "G4Sphere.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
|
||||
|
||||
|
||||
RadmonDetectorConstruction :: RadmonDetectorConstruction(RadmonVDetectorLayout * layout, RadmonVDetectorEntitiesConstructorsFactory * factory)
|
||||
:
|
||||
detectorLayout(layout),
|
||||
constructorsFactory(factory),
|
||||
environmentConstructor(0),
|
||||
environmentPhysicalVolume(0),
|
||||
environmentLogicalVolume(0),
|
||||
environmentSolid(0)
|
||||
{
|
||||
if (detectorLayout==0)
|
||||
G4Exception("RadmonDetectorConstruction::RadmonDetectorConstruction: layout==0.");
|
||||
|
||||
if (factory==0)
|
||||
G4Exception("RadmonDetectorConstruction::RadmonDetectorConstruction: factory==0.");
|
||||
|
||||
detectorLayout->AttachObserver(this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
RadmonDetectorConstruction :: ~RadmonDetectorConstruction()
|
||||
{
|
||||
detectorLayout->DetachObserver(this);
|
||||
|
||||
Destruct();
|
||||
|
||||
delete constructorsFactory;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
G4VPhysicalVolume * RadmonDetectorConstruction :: Construct(void)
|
||||
{
|
||||
// This method will not change the detector layout
|
||||
RadmonVDetectorLayout const * const & const_detectorLayout(detectorLayout);
|
||||
|
||||
if (const_detectorLayout->IsEnabledEnvironment())
|
||||
BuildEnvironmentFromType(const_detectorLayout->GetEnvironmentType());
|
||||
else
|
||||
BuildEnvironmentSphere();
|
||||
|
||||
environmentPhysicalVolume=new G4PVPlacement(0, G4ThreeVector(), "worldPV", environmentLogicalVolume, 0, false, 0);
|
||||
|
||||
G4int placement(const_detectorLayout->GetNPlacements());
|
||||
while (placement>0)
|
||||
{
|
||||
placement--;
|
||||
BuildMultilayer(placement);
|
||||
}
|
||||
|
||||
return environmentPhysicalVolume;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorConstruction :: OnLayoutChange(void)
|
||||
{
|
||||
Destruct();
|
||||
G4RunManager::GetRunManager()->DefineWorldVolume(Construct(), true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorConstruction :: Destruct(void)
|
||||
{
|
||||
// Layers destruction
|
||||
LayerItem item;
|
||||
|
||||
while (!layersStack.empty())
|
||||
{
|
||||
item=layersStack.top();
|
||||
|
||||
environmentLogicalVolume->RemoveDaughter(item.second);
|
||||
delete item.second;
|
||||
delete item.first;
|
||||
|
||||
layersStack.pop();
|
||||
}
|
||||
|
||||
// Environment destruction
|
||||
delete environmentPhysicalVolume;
|
||||
environmentPhysicalVolume=0;
|
||||
|
||||
if (environmentConstructor)
|
||||
{
|
||||
delete environmentConstructor;
|
||||
environmentConstructor=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
delete environmentLogicalVolume;
|
||||
delete environmentSolid;
|
||||
environmentSolid=0;
|
||||
}
|
||||
|
||||
environmentLogicalVolume=0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorConstruction :: BuildEnvironmentFromType(const G4String & type)
|
||||
{
|
||||
environmentConstructor=constructorsFactory->CreateEntityConstructor(type);
|
||||
|
||||
if (environmentConstructor==0)
|
||||
{
|
||||
G4cout << "RadmonDetectorConstruction::BuildEnvironmentFromType: Environment type \"" << type << "\" not found. Environment ignored." << G4endl;
|
||||
BuildEnvironmentSphere();
|
||||
}
|
||||
|
||||
// This method will not change the detector layout
|
||||
RadmonVDetectorLayout const * const & const_detectorLayout(detectorLayout);
|
||||
|
||||
G4int n(const_detectorLayout->GetEnvironmentNAttributes());
|
||||
G4String name;
|
||||
G4String value;
|
||||
|
||||
while (n>0)
|
||||
{
|
||||
n--;
|
||||
name=const_detectorLayout->GetEnvironmentAttributeName(n);
|
||||
value=const_detectorLayout->GetEnvironmentAttribute(name, G4String());
|
||||
|
||||
environmentConstructor->SetEntityAttribute(name, value);
|
||||
}
|
||||
|
||||
environmentLogicalVolume=environmentConstructor->ConstructLogicalVolume();
|
||||
|
||||
if (environmentLogicalVolume==0)
|
||||
{
|
||||
delete environmentConstructor;
|
||||
environmentConstructor=0;
|
||||
G4cout << "RadmonDetectorConstruction::BuildEnvironmentFromType: Environment type \"" << type << "\" not built. Environment ignored." << G4endl;
|
||||
BuildEnvironmentSphere();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorConstruction :: BuildEnvironmentSphere(void)
|
||||
{
|
||||
// This method will not change the detector layout
|
||||
RadmonVDetectorLayout const * const & const_detectorLayout(detectorLayout);
|
||||
|
||||
G4double maxRadius(-0.1);
|
||||
G4double radius;
|
||||
G4ThreeVector vect;
|
||||
|
||||
G4int placement(const_detectorLayout->GetNPlacements());
|
||||
G4String placementLabel;
|
||||
G4String multilayerLabel;
|
||||
|
||||
while (placement>0)
|
||||
{
|
||||
placement--;
|
||||
placementLabel=const_detectorLayout->GetPlacementLabel(placement);
|
||||
multilayerLabel=const_detectorLayout->GetPlacementMultilayerType(placementLabel);
|
||||
|
||||
vect.setX(const_detectorLayout->GetMultilayerWidth(multilayerLabel));
|
||||
vect.setY(const_detectorLayout->GetMultilayerHeight(multilayerLabel));
|
||||
vect.setZ(const_detectorLayout->GetMultilayerTotalThickness(multilayerLabel));
|
||||
radius=const_detectorLayout->GetPlacementPosition(placementLabel).getR()+vect.getR()/2.;
|
||||
|
||||
if (radius>maxRadius)
|
||||
maxRadius=radius;
|
||||
}
|
||||
|
||||
if (maxRadius<=0.)
|
||||
maxRadius=5*m;
|
||||
|
||||
G4Material & vacuum(RadmonMaterialsManager::Instance()->GetMaterial("RADMON_VACUUM"));
|
||||
|
||||
environmentSolid=new G4Sphere("worldSphere", 0.*mm, maxRadius, 0.*deg, 360.*deg, 0.*deg, 180.*deg);
|
||||
environmentLogicalVolume=new G4LogicalVolume(environmentSolid, &vacuum, "worldLV", 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorConstruction :: BuildMultilayer(G4int index)
|
||||
{
|
||||
// This method will not change the detector layout
|
||||
RadmonVDetectorLayout const * const & const_detectorLayout(detectorLayout);
|
||||
|
||||
G4String placementLabel(const_detectorLayout->GetPlacementLabel(index));
|
||||
G4String multilayerLabel(const_detectorLayout->GetPlacementMultilayerType(placementLabel));
|
||||
G4RotationMatrix rotation(const_detectorLayout->GetPlacementRotation(placementLabel));
|
||||
G4ThreeVector position(const_detectorLayout->GetPlacementPosition(placementLabel));
|
||||
|
||||
G4double width(const_detectorLayout->GetMultilayerWidth(multilayerLabel));
|
||||
if (width<=0.)
|
||||
return;
|
||||
|
||||
G4String widthStr(G4UIcommand::ConvertToString(width/mm)+" mm");
|
||||
|
||||
G4double height(const_detectorLayout->GetMultilayerHeight(multilayerLabel));
|
||||
if (height<=0.)
|
||||
return;
|
||||
|
||||
G4String heightStr(G4UIcommand::ConvertToString(height/mm)+" mm");
|
||||
|
||||
G4double z(const_detectorLayout->GetMultilayerTotalThickness(multilayerLabel));
|
||||
if (z<=0.)
|
||||
return;
|
||||
|
||||
z/=2.;
|
||||
|
||||
G4int n(const_detectorLayout->GetMultilayerNLayers(multilayerLabel));
|
||||
if (n==0)
|
||||
return;
|
||||
|
||||
while (n>0)
|
||||
{
|
||||
n--;
|
||||
|
||||
G4String layerLabel(const_detectorLayout->GetMultilayerLayerLabel(multilayerLabel, n));
|
||||
G4String layerType(const_detectorLayout->GetLayerType(multilayerLabel, layerLabel));
|
||||
|
||||
G4double layerThickness(const_detectorLayout->GetLayerThickness(multilayerLabel, layerLabel));
|
||||
if (layerThickness<=0.)
|
||||
continue;
|
||||
|
||||
RadmonVDetectorEntityConstructor * entityConstructor(constructorsFactory->CreateEntityConstructor(layerType));
|
||||
|
||||
if (entityConstructor==0)
|
||||
{
|
||||
z-=layerThickness;
|
||||
G4cout << "RadmonDetectorConstruction::BuildMultilayer: Layer type \"" << layerType << "\" not found. Layer ignored." << G4endl;
|
||||
continue;
|
||||
}
|
||||
|
||||
G4int m(const_detectorLayout->GetLayerNAttributes(multilayerLabel, layerLabel));
|
||||
G4String name;
|
||||
G4String value;
|
||||
|
||||
while (m>0)
|
||||
{
|
||||
m--;
|
||||
name=const_detectorLayout->GetLayerAttributeName(multilayerLabel, layerLabel, m);
|
||||
value=const_detectorLayout->GetLayerAttribute(multilayerLabel, layerLabel, name, G4String());
|
||||
|
||||
entityConstructor->SetEntityAttribute(name, value);
|
||||
}
|
||||
|
||||
entityConstructor->SetEntityAttribute("_WIDTH", widthStr);
|
||||
entityConstructor->SetEntityAttribute("_HEIGHT", heightStr);
|
||||
entityConstructor->SetEntityAttribute("_THICKNESS", G4UIcommand::ConvertToString(layerThickness/mm)+" mm");
|
||||
|
||||
G4LogicalVolume * entityLogicalVolume(entityConstructor->ConstructLogicalVolume());
|
||||
|
||||
if (entityLogicalVolume==0)
|
||||
{
|
||||
delete entityConstructor;
|
||||
G4cout << "RadmonDetectorConstruction::BuildMultilayer: Layer \"" << layerLabel << "\" from \"" << multilayerLabel << "\" not built. Layer ignored." << G4endl;
|
||||
z-=layerThickness;
|
||||
continue;
|
||||
}
|
||||
|
||||
layerThickness/=2.;
|
||||
|
||||
z-=layerThickness;
|
||||
G4ThreeVector layerPosition(rotation.colZ());
|
||||
layerPosition*=z;
|
||||
layerPosition+=position;
|
||||
|
||||
G4VPhysicalVolume * entityPhysicalVolume(new G4PVPlacement(G4Transform3D(rotation, layerPosition), entityLogicalVolume, placementLabel+"_"+multilayerLabel+"_"+layerLabel, environmentLogicalVolume, false, 0));
|
||||
|
||||
z-=layerThickness;
|
||||
|
||||
layersStack.push(LayerItem(entityConstructor, entityPhysicalVolume));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorEnvironmentLayout.cc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorEnvironmentLayout.cc,v 1.5 2006/06/29 16:13:30 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorEnvironmentLayout.hh"
|
||||
#include "RadmonDumpStyle.hh"
|
||||
#include <iomanip>
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorEnvironmentLayout :: DumpLayout(std::ostream & out, const G4String & indent) const
|
||||
{
|
||||
if (!enabled)
|
||||
out << indent << "Environment disabled\n";
|
||||
else
|
||||
{
|
||||
G4int width(RADMONDUMP_INDENT_WIDTH-indent.length());
|
||||
if (width<0)
|
||||
width=0;
|
||||
|
||||
out << indent << std::setw(width); out.setf(std::ostream::left, std::ostream::adjustfield); out << "Type" << " = \"" << environmentType << "\"\n"
|
||||
<< indent << "Attributes:\n";
|
||||
|
||||
G4String indent2(indent);
|
||||
indent2.prepend(" ");
|
||||
|
||||
DumpAttributesLayout(out, indent2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorFlatVolumeComponent.cc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorFlatVolumeComponent.cc,v 1.2.2.2 2006/06/29 16:13:32 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorFlatVolumeComponent.hh"
|
||||
#include "RadmonDetectorLayerVolumesList.hh"
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
RadmonDetectorFlatVolumeComponent :: ~RadmonDetectorFlatVolumeComponent()
|
||||
{
|
||||
delete visAttributes;
|
||||
delete box;
|
||||
}
|
||||
|
||||
|
||||
|
||||
RadmonDetectorLayerVolumesList * RadmonDetectorFlatVolumeComponent :: GenerateVolumesList(void)
|
||||
{
|
||||
G4double width(owner->GetWidth());
|
||||
if (width<0)
|
||||
return 0;
|
||||
|
||||
G4double height(owner->GetHeight());
|
||||
if (height<0)
|
||||
return 0;
|
||||
|
||||
G4double thickness(owner->GetThickness());
|
||||
if (thickness<0)
|
||||
return 0;
|
||||
|
||||
G4Material * material(owner->GetMaterial("Material"));
|
||||
if (!material)
|
||||
return 0;
|
||||
|
||||
visAttributes=owner->AllocateVisAttributes("VisAttributes", material);
|
||||
box=new G4Box("FlatVolume", width/2., height/2., thickness/2.);
|
||||
|
||||
RadmonDetectorLayerVolumesList * list=new RadmonDetectorLayerVolumesList;
|
||||
RadmonDetectorLayerVolumeItem * item=list->AppendItem();
|
||||
|
||||
item->SetSolid(box);
|
||||
item->SetAttributes(visAttributes);
|
||||
item->SetMaterial(material);
|
||||
item->SetSensitiveDetector(owner->AllocateSensitiveDetector("SensitiveDetector", ""));
|
||||
item->SetName("FlatVolume");
|
||||
|
||||
return list;
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLabelledEntitiesConstructorsFactory.cc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLabelledEntitiesConstructorsFactory.cc,v 1.2.2.2 2006/06/29 16:13:34 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLabelledEntitiesConstructorsFactory.hh"
|
||||
#include "RadmonDetectorLabelledEntitiesConstructorsMessenger.hh"
|
||||
#include "RadmonVDetectorLabelledEntityConstructor.hh"
|
||||
|
||||
|
||||
RadmonDetectorLabelledEntitiesConstructorsFactory :: ~RadmonDetectorLabelledEntitiesConstructorsFactory()
|
||||
{
|
||||
EntityConstructorsList::iterator i(entityConstructorsList.begin());
|
||||
EntityConstructorsList::iterator end(entityConstructorsList.end());
|
||||
|
||||
RadmonDetectorLabelledEntitiesConstructorsMessenger * messenger(RadmonDetectorLabelledEntitiesConstructorsMessenger::Instance());
|
||||
|
||||
while (i!=end)
|
||||
{
|
||||
messenger->RemoveAvailableConstructor((*i)->GetLabel());
|
||||
|
||||
delete (*i);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
RadmonVDetectorEntityConstructor * RadmonDetectorLabelledEntitiesConstructorsFactory :: CreateEntityConstructor(const G4String & entityName)
|
||||
{
|
||||
EntityConstructorsList::iterator i(entityConstructorsList.begin());
|
||||
EntityConstructorsList::iterator end(entityConstructorsList.end());
|
||||
|
||||
while (i!=end)
|
||||
{
|
||||
if ((*i)->GetLabel()==entityName)
|
||||
return (*i)->New();
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorLabelledEntitiesConstructorsFactory :: AppendLabelledEntityConstructor(RadmonVDetectorLabelledEntityConstructor * constructor)
|
||||
{
|
||||
entityConstructorsList.push_back(constructor);
|
||||
|
||||
RadmonDetectorLabelledEntitiesConstructorsMessenger * messenger(RadmonDetectorLabelledEntitiesConstructorsMessenger::Instance());
|
||||
messenger->AddAvailableConstructor(constructor->GetLabel());
|
||||
}
|
||||
+146
@@ -0,0 +1,146 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLabelledEntitiesConstructorsMessenger.cc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLabelledEntitiesConstructorsMessenger.cc,v 1.5 2006/06/29 16:13:36 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
// Messenger commands path
|
||||
#define COMMANDS_PATH "/radmon/detectorFactory/"
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLabelledEntitiesConstructorsMessenger.hh"
|
||||
|
||||
|
||||
|
||||
RadmonDetectorLabelledEntitiesConstructorsMessenger * RadmonDetectorLabelledEntitiesConstructorsMessenger :: Instance(void)
|
||||
{
|
||||
if (instance==0)
|
||||
{
|
||||
instance=new RadmonDetectorLabelledEntitiesConstructorsMessenger;
|
||||
|
||||
if (!instance)
|
||||
G4Exception("RadmonDetectorLabelledEntitiesConstructorsMessenger::Instance: RadmonDetectorLabelledEntitiesConstructorsMessenger singleton not allocated.");
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorLabelledEntitiesConstructorsMessenger :: AddAvailableConstructor(const G4String & name)
|
||||
{
|
||||
availableConstructors.insert(name);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorLabelledEntitiesConstructorsMessenger :: RemoveAvailableConstructor(const G4String & name)
|
||||
{
|
||||
availableConstructors.erase(name);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
RadmonDetectorLabelledEntitiesConstructorsMessenger :: RadmonDetectorLabelledEntitiesConstructorsMessenger()
|
||||
:
|
||||
RadmonMessenger(COMMANDS_PATH, "Interactive labelled detector entities constructors factory commands."),
|
||||
RADMON_INITIALIZE_COMMAND(Dump)
|
||||
{
|
||||
RADMON_CREATE_COMMAND_0ARGS(Dump, "Print out the current available detector entity constructors");
|
||||
}
|
||||
|
||||
|
||||
|
||||
RadmonDetectorLabelledEntitiesConstructorsMessenger :: ~RadmonDetectorLabelledEntitiesConstructorsMessenger()
|
||||
{
|
||||
RADMON_DESTROY_COMMAND(Dump);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
G4String RadmonDetectorLabelledEntitiesConstructorsMessenger :: GetCurrentValue(G4UIcommand * /* command */)
|
||||
{
|
||||
G4cout << "RadmonDetectorLabelledEntitiesConstructorsMessenger::GetCurrentValue(): Not supported" << G4endl;
|
||||
|
||||
return G4String();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorLabelledEntitiesConstructorsMessenger :: SetNewValue(G4UIcommand * command, G4String newValue)
|
||||
{
|
||||
RADMON_BEGIN_LIST_SET_COMMANDS
|
||||
RADMON_SET_COMMAND(Dump)
|
||||
RADMON_END_LIST_SET_COMMANDS
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Events
|
||||
void RadmonDetectorLabelledEntitiesConstructorsMessenger :: OnDump(const G4String & /* value */)
|
||||
{
|
||||
G4String indent("- ");
|
||||
|
||||
G4String indent2(indent);
|
||||
indent2.prepend(" ");
|
||||
|
||||
G4cout << indent << "Available constructors:\n";
|
||||
|
||||
AvailableConstructors::const_iterator i(availableConstructors.begin());
|
||||
AvailableConstructors::const_iterator end(availableConstructors.end());
|
||||
|
||||
if (i==end)
|
||||
G4cout << indent2 << "No constructors available.\n";
|
||||
else
|
||||
{
|
||||
while (i!=end)
|
||||
{
|
||||
G4cout << indent2 << (*i) << '\n';
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
G4cout << G4endl;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
RadmonDetectorLabelledEntitiesConstructorsMessenger * RadmonDetectorLabelledEntitiesConstructorsMessenger :: instance(0);
|
||||
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerLayout.cc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerLayout.cc,v 1.5 2006/06/29 16:13:39 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLayerLayout.hh"
|
||||
#include "RadmonDumpStyle.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
#include <iomanip>
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorLayerLayout :: DumpLayout(std::ostream & out, const G4String & indent) const
|
||||
{
|
||||
G4int width(RADMONDUMP_INDENT_WIDTH-indent.length());
|
||||
if (width<0)
|
||||
width=0;
|
||||
|
||||
out << indent << std::setw(width); out.setf(std::ostream::left, std::ostream::adjustfield); out << "Label"; out.setf(std::ostream::right, std::ostream::adjustfield); out << " = \"" << layerLabel << "\"\n"
|
||||
<< indent << std::setw(width); out.setf(std::ostream::left, std::ostream::adjustfield); out << "Type"; out.setf(std::ostream::right, std::ostream::adjustfield); out << " = \"" << layerType << "\"\n"
|
||||
<< indent << std::setw(width); out.setf(std::ostream::left, std::ostream::adjustfield); out << "Thickness"; out.setf(std::ostream::right, std::ostream::adjustfield); out << " = " << std::setprecision(RADMONDUMP_DOUBLE_PRECISION) << G4BestUnit(layerThickness, "Length") << '\n'
|
||||
<< indent << "Attributes:\n";
|
||||
|
||||
G4String indent2(indent);
|
||||
indent2.prepend(" ");
|
||||
|
||||
DumpAttributesLayout(out, indent2);
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// File name: RadmonDetectorLayerVolumeItem.cc
|
||||
// Creation date: Sep 2005
|
||||
// Main author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
// Id: $Id: RadmonDetectorLayerVolumeItem.cc,v 1.2.2.2 2006/06/29 16:13:44 gunter Exp $
|
||||
// Tag: $Name: geant4-08-01 $
|
||||
//
|
||||
|
||||
// Include files
|
||||
#include "RadmonDetectorLayerVolumeItem.hh"
|
||||
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4SDManager.hh"
|
||||
|
||||
RadmonDetectorLayerVolumeItem :: ~RadmonDetectorLayerVolumeItem()
|
||||
{
|
||||
if (volumePhysical)
|
||||
{
|
||||
volumeMother->GetLogicalVolume()->RemoveDaughter(volumePhysical);
|
||||
delete volumePhysical;
|
||||
}
|
||||
|
||||
if (volumeLogical->GetNoDaughters())
|
||||
G4Exception("RadmonDetectorLayerVolumeItem::~RadmonDetectorLayerVolumeItem: Logical volume removed prior of daughters");
|
||||
|
||||
delete volumeLogical;
|
||||
|
||||
if (volumeSensitiveDetector)
|
||||
{
|
||||
G4SDManager * manager(G4SDManager::GetSDMpointer());
|
||||
|
||||
if (manager)
|
||||
if (! manager->FindSensitiveDetector(volumeSensitiveDetector->GetFullPathName(), false))
|
||||
delete volumeSensitiveDetector;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
G4LogicalVolume * RadmonDetectorLayerVolumeItem :: GetLogicalVolume(void)
|
||||
{
|
||||
if (! volumeLogical)
|
||||
{
|
||||
if (volumeSensitiveDetector)
|
||||
{
|
||||
G4SDManager * manager(G4SDManager::GetSDMpointer());
|
||||
|
||||
if (manager)
|
||||
{
|
||||
G4VSensitiveDetector * sensitiveDetector(manager->FindSensitiveDetector(volumeSensitiveDetector->GetFullPathName(), false));
|
||||
|
||||
if (!sensitiveDetector)
|
||||
manager->AddNewDetector(volumeSensitiveDetector);
|
||||
else if (sensitiveDetector!=volumeSensitiveDetector)
|
||||
{
|
||||
delete volumeSensitiveDetector;
|
||||
volumeSensitiveDetector=sensitiveDetector;
|
||||
}
|
||||
|
||||
volumeSensitiveDetector->Activate(true);
|
||||
}
|
||||
}
|
||||
|
||||
volumeLogical=new G4LogicalVolume(volumeSolid, volumeMaterial, volumeName+"LV", 0, volumeSensitiveDetector, 0);
|
||||
if (volumeAttributes)
|
||||
volumeLogical->SetVisAttributes(volumeAttributes);
|
||||
|
||||
if (volumeMother)
|
||||
volumePhysical=new G4PVPlacement(&volumeRotation, volumePosition, volumeLogical, volumeName+"LV", volumeMother->GetLogicalVolume(), false, 0);
|
||||
}
|
||||
|
||||
return volumeLogical;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void RadmonDetectorLayerVolumeItem :: Assertion(void)
|
||||
{
|
||||
if (volumeLogical)
|
||||
G4Exception("RadmonDetectorLayerVolumeItem::Assertion: You cannot change a RadmonDetectorLayerVolumeItem after GetLogicalVolume call.");
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user