450 for (
G4int i=0; i<npar; ++i){ Rpar[i] = par[i];}
453 if ( shape ==
"BOX" ) {
455 pos [
fIAxis-1] = (hi + lo)/2.;
457 else if ( shape ==
"TRD1" ) {
464 tn = (Rpar[1] - Rpar[0])/(2.* Rpar[3]);
465 x1 = Rpar[0]; z1 = -Rpar[3];
466 Rpar[0] = x1 + tn * (lo/
cm - z1);
467 Rpar[1] = x1 + tn * (hi/
cm - z1);
468 Rpar[3] = (hi - lo)/2./
cm;
469 pos[2] = (hi + lo)/2.;
472 else if ( shape ==
"TRD2" ) {
480 tn1 = (Rpar[1] - Rpar[0])/(2.* Rpar[4]);
481 tn2 = (Rpar[3] - Rpar[2])/(2.* Rpar[4]);
482 x1 = Rpar[0]; y1 = Rpar[2]; z1 = -Rpar[3];
483 Rpar[0] = x1 + tn1 * (lo/
cm - z1);
484 Rpar[1] = x1 + tn1 * (hi/
cm - z1);
485 Rpar[2] = y1 + tn2 * (lo/
cm - z1);
486 Rpar[3] = y1 + tn2 * (hi/
cm - z1);
487 Rpar[4] = (hi - lo)/2./
cm;
488 pos[2] = (hi + lo)/2.;
491 else if ( shape ==
"TRAP" ) {
492 Exception(
"CreateEnvelope",
"TRAP-x,y,z");
494 else if ( shape ==
"TUBE" ) {
506 Rpar[2] = (hi - lo)/2./
cm;
507 pos [2] = (hi + lo)/2.;
510 else if ( shape ==
"TUBS" ) {
520 Rpar[2] = (hi - lo)/2./
cm;
521 pos [2] = (hi + lo)/2.;
524 else if ( shape ==
"CONE" ) {
536 tn1 = (Rpar[3] - Rpar[1])/(2.* Rpar[0]);
537 tn2 = (Rpar[4] - Rpar[2])/(2.* Rpar[0]);
538 rmin = Rpar[1]; rmax = Rpar[2]; z1 = -Rpar[0];
539 Rpar[1] = rmin + tn1 * (lo/
cm - z1);
540 Rpar[3] = rmin + tn1 * (hi/
cm - z1);
541 Rpar[2] = rmax + tn2 * (lo/
cm - z1);
542 Rpar[4] = rmax + tn2 * (hi/
cm - z1);
543 Rpar[0] = (hi - lo)/2./
cm;
544 pos[2] = (hi + lo)/2.;
547 else if ( shape ==
"CONS" ) {
557 tn1 = (Rpar[3] - Rpar[1])/(2.* Rpar[0]);
558 tn2 = (Rpar[4] - Rpar[2])/(2.* Rpar[0]);
559 rmin = Rpar[1]; rmax = Rpar[2]; z1 = -Rpar[0];
560 Rpar[1] = rmin + tn1 * (lo/
cm - z1);
561 Rpar[3] = rmin + tn1 * (hi/
cm - z1);
562 Rpar[2] = rmax + tn2 * (lo/
cm - z1);
563 Rpar[4] = rmax + tn2 * (hi/
cm - z1);
564 Rpar[0] = (hi - lo)/2./
cm;
565 pos[2] = (hi + lo)/2.;
568 else if ( shape ==
"SPHE" ) {
569 Exception(
"CreateEnvelope",
"SPHE-x,y,z");
571 else if ( shape ==
"PARA" ) {
572 Exception(
"CreateEnvelope",
"PARA-x,y,z");
574 else if ( shape ==
"PGON" ) {
584 else if ( shape ==
"PCON" ) {
595 Exception(
"CreateEnvelope",
"Unknown shape" + shape);
607 G3Pos* aG3Pos =
new G3Pos(motherName, 1, offset, 0, only);
G3G4DLL_API G4double Rpar[1000]
void Exception(G4String where, G4String what)
CLHEP::Hep3Vector G4ThreeVector
G3VolTableEntry * GetMasterClone()
G3VolTableEntry * G4CreateVTE(G4String vname, G4String shape, G4int nmed, G4double Rpar[], G4int npar)
void AddG3Pos(G3Pos *aG3Pos)
static const G4double pos