@dsawkey and @bmorgan
To be clear, regardless of my criticisms, I appreciate GREATLY that this software exists and the effort that goes in to its development, so please don’t misunderstand the aims of my critiques - which is to make this software used more readily by more people to accomplish more cool stuff more quickly.
But here’s the deal: I’ve been in HEP since 2003, and even then GEANT4 was known as one of the nine circles of hell, a reputation that is not inevitable in my view, though is fair to be frank.
And I became somewhat of a GEANT4 expert several years ago - but owing to the overall lack of intuitiveness inherent to its construction, I have completely forgotten nearly every nuance, even though I know exactly what I want to do in principle.
Furthermore, I recently participated in a test beam at Fermilab for a new detector prototype, and no one had simulated the detector yet because of the unnecessary complexity of the software and resulting scarcity of GEANT4 ‘experts’.
Thus I volunteered to develop a simulation, and here I am again wading through the particulars of this software, begging for help from the developers, who keep their secrets locked behind pages and pages and pages of ‘guides’, rather than via a set of simple, clear, limited, intuitive examples. There is no reason the optical examples need to be buried inside the absurdness of the LXe application.
I am clearly not an expert on GEANT4, however, I am an expert educator and teacher according to my students, and here is what I am willing to do:
It is 2021, GEANT4 should have a series of videos on YouTube or the like, of a screen share of someone demonstrating the correct way to program single features at a time, explaining how the simulation works while doing it.
Then, a developer can piece together the examples into whatever framework they need, and have confidence that they aren’t spinning their wheels.
I volunteer to produce these videos, as long as I can work with someone who is an expert to decide on which topics are most relevant, and who can verify that my implementations are correct.
Of course, the software changes as patches are released, and I would be more than willing to update the videos for the latest releases when they are released. Why? Because it will help me in my own application development.
I have a Ph.D. in physics, I do hard stuff well all the time. The difficulties inherent with developing for GEANT4 are 100% due to the lack of clarity by the developers to educate their users, and the lack of helpfulness and overall condescending nature of those who ‘help’ in this forum.
For example, you told me what I did wrong, but did not tell me the correct way to do it. So I am going to try something else, do it wrong again, come ask for help again, and you’re going to tell me it’s wrong, and to read the manual again, a manual, mind you, that is so poorly written it may as well not exist.
This is amazing software and it should be utilized by many more people, and take far fewer man-hours to help our breakthroughs occur faster.
Certainly I am not the only person to voice these concerns.
But aside from that, back to my example because it is still not clear to me what I should do:
I have a LYSO crystal with 5 holes in it.
I have a quartz capillary that goes through the hole, but is not in contact with the hole (air exists between the quartz and the LYSO).
I don’t want light to come out of the sides of the LYSO tile, but I do want light to come out of the holes drilled in the tile.
So I have a LYSOLogical, a LYSOPhysical, a quartzLogical and a quartzPhysical object, each with indices of refraction and optical properties defined.
Do I need to add a tyvekWrapLogical and physical object, and assign the surface to that object in order to accomplish this?
Thank you again for your consideration-