Define a hourglass solid

Hello, I must draw two targets similiar to hourglass

  1. The first one is this one


modifing the code that @evc wrote me to define a meniscus, I wrote

G4double pHourRmax = 1.85*cm;
 G4Orb* HourOrb1 =    new G4Orb("HourOrb1", pHourRmax);
G4Orb* HourOrb2 =    new G4Orb("HourOrb2", pHourRmax);
G4Tubs* HourTub =    
            new G4Tubs("HourTube",                    //its name
                pRMin, pRMax, pDz, pSPhi, pDPhi);    //its size*/
        	G4ThreeVector positionHourOrb1(0,0,1.95*cm);
        	G4ThreeVector positionHourOrb2(0,0,-1.95*cm);
        	G4VSolid* HourTmp = new G4SubtractionSolid("HourTmp", HourTub, HourOrb1, &identity, positionHourOrb1);
        	G4VSolid* HourGlass = new G4SubtractionSolid("HourGlass", HourTmp, HourOrb1, &identity, positionHourOrb2); 

when I look the logical volume


but when I look the targets I get these ones


the lateral view isn’t curve , but it is still linear. Is there a way to get a lateral surface somthing like

  1. I’ve to build a second target like this one
    ie. the lataeral surface must be curve in the up and down of it and linear at the center…
    is there a way to do it?

@evc maybe, are you able to help me to do this too?

1 Like

Make a G4UnionSolid, starting with your first shape, and joining it with a G4Tubs. The top and bottom flats of the cylinder be the flat portions of your shape (which you labelled “Linear” in your cross-section diagram).

  1. It is an illusion, the surface is not flat, it is curved. Try to draw the lens as a wire frame, like in your first image.
  2. Use G4Ellipsoid instead G4Orb, it has cuts in Z.

Thank you the both @mkelsey and @evc!