| Message: Re: Geometry Parameterization | Not Logged In (login) |
|
Yes my channels are overlapping with the sphere. I have Added a picture of the geometry to help explain what I am doing. To solve this over lap problem I think I need to use a subtraction solid. I am not sure the best way to implement this though. Since the channels are meeting with a sphere at slightly different locations, each channel is going to be slightly different. Here is a snippet of my code. Any suggestions on how to implement the subtraction solid so that the channels meet with the sphere would be greatly appreciated.
I am a student at Florida A&M University working for the physics department. The goal of the project is to eventually create a particle detector that uses radiation Cerenkov radiation to determine which particles travel through the sphere. /////////////////////////////// Sphere
G4VSolid* outerSphereSolid = new G4Sphere("outer_Sphere", // Name
0*m, // Inner radius
.00012*m, // Outer radius
0.*deg, // Starting phi
360.*deg, // Delta phi
0.*deg, // Starting theta
180.*deg); // Delta theta
G4LogicalVolume* outerSphereLogical =
new G4LogicalVolume(outerSphereSolid, SiO2, "OuterSphere_Logical");
G4VPhysicalVolume* outerSpherePhys =new G4PVPlacement(0, G4ThreeVector(-.00001,0,0), outerSphereLogical, "Outer_Sphere_Physical", air_Logical, false, 0); //////////////////////////////////////////////////////////////////////////////// /// Quartz Channels ////////////////////////////////////////////////////////////////////////////////
//below are constants to define the spacing of the quartz Channels double n=-.000075; double k=-.000075; int l=0; /////////////////////////////////////////////////// //The array with the G4PVPlacement() coordinates double space[12];
//below is a while loop that fills the location coordinate array
while(l<11)
{
space[l]=n;
n=n+.000015;
l=l+1;
} //class declarations in arrays
G4VSolid* holeSolid; G4LogicalVolume*holeLogical; G4VPhysicalVolume* holePhys[10][10];
G4VisAttributes* holeAttributes[10][10];
G4MultiFunctionalDetector* detector; G4SDManager* manager; G4PSPassageCellCurrent* scorer;
G4VSolid* detector_Solid; G4LogicalVolume* detector_Logical; G4VPhysicalVolume* detector_Phys[10][10]; // Create Solid and Logical volumes for channels. //channels are called holes due to old version of detector
holeSolid= new G4Tubs("Hole_Solid", 0.0*m, .000003*m,
hole_Length, 0.*deg, 360.*deg);
holeLogical= new G4LogicalVolume(holeSolid, SiO2, "Hole_Logical"); // // Create Solid and Logical volumes for detectors. //
detector_Solid = new G4Box("Detector_Solid",
size_Detector_X/10, size_Detector_Y/10, size_Detector_Z);
detector_Logical =
new G4LogicalVolume(detector_Solid, SiO2,
"Detector_Logical");
//loop that instantiates the Quartz Channels and their surface //defintions
G4int Ni = 11;
G4int Nj = 11;
for(int i=0;i<Ni;i++)
{
for(int j=0;j<Nj;j++)
{
// Define “index” as a number to distinguish the hole.
G4int index = i*Ni + Nj ; //Index Number of the hole.
holePhys[i][j] = new G4PVPlacement(0, G4ThreeVector(space[j]*m,space[i]*m, hole_Location_Z), holeLogical, "Hole_Physical", air_Logical, false, index);
|
| Inline Depth: | Outline Depth: | Add message: |
|
to: |