Import Geant4 0.0.0 source tree
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: G4PTrd.cc,v 2.0 1998/07/02 16:13:29 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// Implementation for G4Trd class
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// 19.06.98 A.Kimura Converted G4Trd.cc
|
||||
|
||||
|
||||
#include "G4VSolid.hh"
|
||||
#include "G4PTrd.hh"
|
||||
#include "G4Trd.hh"
|
||||
|
||||
#include "G4AffineTransform.hh"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
|
||||
// Constructor - check & set half widths
|
||||
|
||||
G4PTrd::G4PTrd(const G4Trd* theTrd) : G4PCSGSolid(theTrd->GetName())
|
||||
{
|
||||
G4double pdx1 = theTrd->GetXHalfLength1();
|
||||
G4double pdx2 = theTrd->GetXHalfLength2();
|
||||
G4double pdy1 = theTrd->GetYHalfLength1();
|
||||
G4double pdy2 = theTrd->GetYHalfLength2();
|
||||
G4double pdz = theTrd->GetZHalfLength();
|
||||
CheckAndSetAllParameters (pdx1, pdx2, pdy1, pdy2, pdz);
|
||||
}
|
||||
|
||||
void
|
||||
G4PTrd::CheckAndSetAllParameters (G4double pdx1, G4double pdx2,
|
||||
G4double pdy1, G4double pdy2,
|
||||
G4double pdz) {
|
||||
if (pdx1>0&&pdx2>0&&pdy1>0&&pdy2>0&&pdz>0)
|
||||
{
|
||||
fDx1=pdx1; fDx2=pdx2;
|
||||
fDy1=pdy1; fDy2=pdy2;
|
||||
fDz=pdz;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pdx1>=0 && pdx2>=0 && pdy1>=0 && pdy2>=0 && pdz>=0)
|
||||
{
|
||||
// G4double Minimum_length= (1+per_thousand) * kCarTolerance/2.;
|
||||
// FIX-ME : temporary solution for ZERO or very-small parameters.
|
||||
G4double Minimum_length= kCarTolerance/2.;
|
||||
fDx1=max(pdx1,Minimum_length);
|
||||
fDx2=max(pdx2,Minimum_length);
|
||||
fDy1=max(pdy1,Minimum_length);
|
||||
fDy2=max(pdy2,Minimum_length);
|
||||
fDz=max(pdz,Minimum_length);
|
||||
}
|
||||
else
|
||||
G4Exception("Error in G4PTrd::G4PTrd - One or more parameters are < 0");
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------
|
||||
|
||||
// Destructor
|
||||
|
||||
G4PTrd::~G4PTrd()
|
||||
{}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
// make a transient object
|
||||
G4VSolid* G4PTrd::MakeTransientObject() const {
|
||||
G4VSolid* transientObject = new G4Trd(GetName(),
|
||||
fDx1, fDx2,
|
||||
fDy1, fDy2,
|
||||
fDz);
|
||||
return transientObject;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user