GenieGen module requires a cryostat in the geometry
For a dirt interaction simulation, I am trying to run Genie on a geometry with the cryostat removed. However lar stops with an exception because it cannot find the cryostat. The exception is coming from the GenieGen module.
Conceptually this shouldn't be the case (at no point does Genie actually need the cryostat to exist in the geometry) so I will treat this as a bug
Here is the (end of the) lar output:
%MSG-s ArtException: GENIEGen:generator@BeginJob 02-Nov-2018 17:34:39 CDT ModuleConstruction cet::exception caught in art ---- OtherArt BEGIN ---- GeometryCore BEGIN Cryostat #0 does not exist A cet::exception is going through WorkerT<EDProducer>: Module type=GENIEGen, Module label=generator, Parameter Set ID=00880dc2ae37920da00b4e7fead60fe542d4f94a, Process name=GenieGen, Release Version=v2_05_01, Pass ID=, Main Parameter Set ID=5d70910de02924b88379af3897248be658519b67 ---- GeometryCore END ---- OtherArt END %MSG Art has completed and will exit with status 1.
I believe the actual problem lies in beginJob(), where histograms are made based on detector dimensions. You should add some exception handling there; eg make the dimensions based on the the topVolume if there is an exception thrown.
#3 Updated by Pawel Guzowski over 2 years ago
I am running uboonecode v06_26_01_20 (but this will affect many experiments and versions, as it is in the GenieGen::beginJob module in larsim). The larsoft version is v06_26_01_14, and larsim is v06_13_01_10
I have attached the fcl file along with a gdml file that will produce this error.
The only difference from the standard gdml file is removing the cryostat from the geometry. The diff with the standard is:
--- /cvmfs/uboone.opensciencegrid.org/products/uboonecode/v06_26_01_20/gdml/microboonev11.gdml 2018-07-13 10:02:57.000000000 -0500 +++ microboonev11_nocryo.gdml 2018-11-19 12:18:44.841892759 -0600 @@ -46959,10 +46959,12 @@ <volume name="volDetEnclosure"> <materialref ref="Air"/> <solidref ref="DetEnclosure"/> + <!-- <physvol> <volumeref ref="volCryostat"/> <position name="posCryostat" unit="cm" x="0" y="0" z="0"/> </physvol> + --> <physvol> <volumeref ref="volInsulation"/> <position name="posInsulation" unit="cm" x="0" y="0" z="0"/>
#4 Updated by Kyle Knoepfel over 2 years ago
Instead of adding exception-handling as the control-flow mechanism, we suggest adding a configuration parameter (e.g.
'allowNoCryostat') that would allow the behavior you suggest, without introducing an exception.
Are you requesting a bug-fix release of LArSoft v06_26_01 with the implemented feature (in addition to adding the feature to the develop branches)?