From ddaf13c57b4ed131afd0238483173a4128eeac6c Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Sat, 8 May 2021 00:20:42 -0500 Subject: [PATCH 01/40] Update beam scripts, plus related cleanup --- .../src/InFlightStepDumper_module.cc | 0 .../data}/conditions_01.txt | 0 .../data}/globalConstants_01.txt | 0 JobConfig/beam/BeamResampler.fcl | 75 +++ JobConfig/beam/DS-resampler.fcl | 2 +- JobConfig/beam/POT.fcl | 57 +++ JobConfig/beam/POT_MT.fcl | 4 + JobConfig/beam/POT_extmon.fcl | 45 ++ JobConfig/beam/beam_defs_g4s1.fcl | 315 ------------ JobConfig/beam/beam_defs_g4s1MT.fcl | 14 - JobConfig/beam/beam_g4s1MT_phase1.fcl | 14 - JobConfig/beam/epilog.fcl | 8 + JobConfig/beam/flash.fcl | 20 - JobConfig/beam/prolog.fcl | 465 +++++++++++------- JobConfig/beam/prolog_old.fcl | 233 +++++++++ JobConfig/common/epilog.fcl | 5 + JobConfig/common/epilog_MT.fcl | 8 + JobConfig/common/mu2eg4.fcl | 20 - JobConfig/common/prolog.fcl | 49 ++ JobConfig/mixing/Run1.fcl | 2 +- JobConfig/pileup/Pileup.fcl | 33 ++ JobConfig/{beam => pileup}/deuteron.fcl | 0 JobConfig/{beam => pileup}/dio.fcl | 0 JobConfig/pileup/epilog.fcl | 12 +- JobConfig/pileup/mustop.fcl | 72 +-- JobConfig/{beam => pileup}/neutron.fcl | 0 JobConfig/{beam => pileup}/oot.fcl | 0 JobConfig/{beam => pileup}/photon.fcl | 0 JobConfig/pileup/pileup.fcl | 25 - JobConfig/pileup/prolog.fcl | 92 ++-- JobConfig/{beam => pileup}/proton.fcl | 0 JobConfig/primary/Calo-cosmic.fcl | 2 +- JobConfig/primary/CeEndpoint.fcl | 2 +- JobConfig/primary/CeMLeadingLog.fcl | 2 +- JobConfig/primary/CePLeadingLog.fcl | 2 +- JobConfig/primary/CeplusEndpoint.fcl | 2 +- JobConfig/primary/DIOtail.fcl | 2 +- JobConfig/primary/DS-cosmic-nofield.fcl | 2 +- JobConfig/primary/DS-cosmic.fcl | 2 +- JobConfig/primary/Garage-cosmic.fcl | 2 +- JobConfig/primary/IPA-Michel.fcl | 2 +- .../primary/{primary.fcl => Primary.fcl} | 18 +- JobConfig/primary/epilog.fcl | 4 +- JobConfig/primary/flatE.fcl | 2 +- JobConfig/primary/flatInternalRMC.fcl | 2 +- JobConfig/primary/flatInternalRPC.fcl | 2 +- JobConfig/primary/flatpigamma.fcl | 2 +- JobConfig/primary/flatproton.fcl | 2 +- JobConfig/primary/prolog.fcl | 29 +- JobConfig/primary/proton.fcl | 2 +- Mu2eG4/fcl/prolog.fcl | 2 +- Mu2eG4/geom/geom_common_phase1.txt | 9 - Validation/src/ValGenParticle.cc | 2 +- 53 files changed, 920 insertions(+), 746 deletions(-) rename {Analyses => CommonMC}/src/InFlightStepDumper_module.cc (100%) rename {Mu2eG4/test => ConditionsService/data}/conditions_01.txt (100%) rename {Mu2eG4/test => GlobalConstantsService/data}/globalConstants_01.txt (100%) create mode 100644 JobConfig/beam/BeamResampler.fcl create mode 100644 JobConfig/beam/POT.fcl create mode 100644 JobConfig/beam/POT_MT.fcl create mode 100644 JobConfig/beam/POT_extmon.fcl delete mode 100644 JobConfig/beam/beam_defs_g4s1.fcl delete mode 100644 JobConfig/beam/beam_defs_g4s1MT.fcl delete mode 100644 JobConfig/beam/beam_g4s1MT_phase1.fcl create mode 100644 JobConfig/beam/epilog.fcl delete mode 100644 JobConfig/beam/flash.fcl create mode 100644 JobConfig/beam/prolog_old.fcl create mode 100644 JobConfig/common/epilog.fcl create mode 100644 JobConfig/common/epilog_MT.fcl create mode 100644 JobConfig/common/prolog.fcl create mode 100644 JobConfig/pileup/Pileup.fcl rename JobConfig/{beam => pileup}/deuteron.fcl (100%) rename JobConfig/{beam => pileup}/dio.fcl (100%) rename JobConfig/{beam => pileup}/neutron.fcl (100%) rename JobConfig/{beam => pileup}/oot.fcl (100%) rename JobConfig/{beam => pileup}/photon.fcl (100%) delete mode 100644 JobConfig/pileup/pileup.fcl rename JobConfig/{beam => pileup}/proton.fcl (100%) rename JobConfig/primary/{primary.fcl => Primary.fcl} (63%) delete mode 100644 Mu2eG4/geom/geom_common_phase1.txt diff --git a/Analyses/src/InFlightStepDumper_module.cc b/CommonMC/src/InFlightStepDumper_module.cc similarity index 100% rename from Analyses/src/InFlightStepDumper_module.cc rename to CommonMC/src/InFlightStepDumper_module.cc diff --git a/Mu2eG4/test/conditions_01.txt b/ConditionsService/data/conditions_01.txt similarity index 100% rename from Mu2eG4/test/conditions_01.txt rename to ConditionsService/data/conditions_01.txt diff --git a/Mu2eG4/test/globalConstants_01.txt b/GlobalConstantsService/data/globalConstants_01.txt similarity index 100% rename from Mu2eG4/test/globalConstants_01.txt rename to GlobalConstantsService/data/globalConstants_01.txt diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl new file mode 100644 index 0000000000..f1565b9fad --- /dev/null +++ b/JobConfig/beam/BeamResampler.fcl @@ -0,0 +1,75 @@ +# +# Re-sample particles entering the DS, propagate them, and write out DetectorSteps and target mustops +# +# original author: Yuri Oksuzian, 2019 +# Updated for MDC2020 (DetectorSteps): D. Brown + +#include "CommonMC/fcl/prolog.fcl" +#include "JobConfig/common/prolog.fcl" +#include "JobConfig/beam/prolog.fcl" +#include "JobConfig/primary/prolog.fcl" +#include "JobConfig/pileup/prolog.fcl" + +process_name: BeamResampler + +source : { + module_type : EmptyEvent + maxEvents : @nil +} + +services : @local::Common.services +physics: { + producers : { + @table::CommonMC.producers + @table::Beam.producers + @table::Primary.producers + } + filters : { + @table::Common.filters + @table::Beam.filters + @table::Pileup.filters + } + analyzers : @local::Common.analyzers + # setup paths I need to add TimeMaps and time filtering FIXME + tgtPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, tgtStopFilter] + detPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, flashPrefilter, + @sequence::Primary.DetStepSequence ] #@sequence::CommonMC.TimeMaps, + + trigger_paths: [ detPath, tgtPath ] + outPath : [ detectorOutput, tgtStopOutput ] + end_paths: [outPath] +} +outputs: { + tgtStopOutput : @local::Beam.outputs.tgtStopOutput + detectorOutput : @local::Beam.outputs.detectorOutput +} + +# Point Mu2eG4 to the pre-simulated data +physics.producers.g4run.inputs: { + primaryType: "StepPoints" + primaryTag: "beamResampler:Beam" + inputMCTrajectories: "" + + simStageOverride: 1 + inputPhysVolumeMultiInfo: "beamResampler" + updateEventLevelVolumeInfos: { + input: "beamResampler:eventlevel" + outInstance: "eventlevel" + } +} +# copy over VD hits +physics.producers.g4run.SDConfig.preSimulatedHits: ["beamResampler:virtualdetector"] +# Kill stuck e+/e- +physics.producers.g4run.Mu2eG4CommonCut:{ + type: intersection + pars: + [ + {type: intersection pars: [ { type: kineticEnergy cut: 1.0 }, { type: pdgId pars: [ 11, -11] }]}, + {type: inVolume pars: [ TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, DS2Vacuum, HallAir ]} + ] +} +#include "JobConfig/common/epilog.fcl" +#include "JobConfig/pileup/epilog.fcl" +# test +physics.filters.beamResampler.fileNames: [ "sim.owner.Beam.version.sequencer.art" ] + diff --git a/JobConfig/beam/DS-resampler.fcl b/JobConfig/beam/DS-resampler.fcl index 7ea207e564..d6a11d0d21 100644 --- a/JobConfig/beam/DS-resampler.fcl +++ b/JobConfig/beam/DS-resampler.fcl @@ -5,7 +5,7 @@ #include "JobConfig/beam/prolog.fcl" -process_name: dsresampler +process_name: DSBeamResampler source: { module_type : EmptyEvent } services: { @table::mu2e.services.simServices } diff --git a/JobConfig/beam/POT.fcl b/JobConfig/beam/POT.fcl new file mode 100644 index 0000000000..f4a9caf3ff --- /dev/null +++ b/JobConfig/beam/POT.fcl @@ -0,0 +1,57 @@ +# +# Script to shoot beam protons onto the production target. Daughter particles are filtered and collected at: +# 1) Charged particles at the entrance to the DS at the beamline +# 2) (mostly) neutral particles that exit the TS or otherwise reach the inside of the shielding before the CRV +# +#include "fcl/minimalMessageService.fcl" +#include "fcl/standardServices.fcl" +#include "JobConfig/common/prolog.fcl" +#include "JobConfig/beam/prolog.fcl" + +process_name : POT + +source : { + module_type : EmptyEvent + maxEvents : @nil +} + +services : @local::Common.services + +physics : { + # setup the modules + producers: @local::Beam.producers + filters: { + @table::Common.filters + @table::Beam.filters + } + analyzers : @local::Common.analyzers + # setup the paths + BeamPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, BeamFilter, compressPVBeam] + CRVNeutralsPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, CRVNeutralsFilter, compressPVCRVNeutrals] + trigger_paths : [BeamPath, CRVNeutralsPath ] + LogPath : [ genCountLogger ] + OutputPath : [BeamOutput, CRVNeutralsOutput ] + end_paths: [OutputPath, LogPath ] +} +# setup outputs +outputs: { + BeamOutput : @local::Beam.outputs.BeamOutput + CRVNeutralsOutput : @local::Beam.outputs.CRVNeutralsOutput +} +# setup Mu2eG4 selection +physics.producers.g4run.Mu2eG4CommonCut: { + type: union + pars: [ + @local::mu2eg4CutDeltaElectrons, # 8% speed up from killing electrons with Ek<1 MeV + @local::Beam.DetectorRegionCuts # defines Beam and CVRNeutrals regions + ] +} +# tweak Mu2eG4 settings +physics.producers.g4run.SDConfig.enableSD: [ virtualdetector ] # only VDs are active +physics.producers.g4run.physics.minRangeCut : 1. # mm coarse range for this stage +#include "JobConfig/beam/epilog.fcl" +#include "JobConfig/common/epilog.fcl" +# +# Output file names are defined in prolog + + diff --git a/JobConfig/beam/POT_MT.fcl b/JobConfig/beam/POT_MT.fcl new file mode 100644 index 0000000000..b40009ac34 --- /dev/null +++ b/JobConfig/beam/POT_MT.fcl @@ -0,0 +1,4 @@ +# MT version of ProtonsOnTarget +#include "JobConfig/beam/ProtonsOnTarget.fcl" +#include "JobConfig/common/epilog_MT.fcl" + diff --git a/JobConfig/beam/POT_extmon.fcl b/JobConfig/beam/POT_extmon.fcl new file mode 100644 index 0000000000..55345ebeb4 --- /dev/null +++ b/JobConfig/beam/POT_extmon.fcl @@ -0,0 +1,45 @@ +# +# Script to shoot beam protons onto the production target. Daughter particles are filtered and collected at: +# 1) extmon beam +# 2) extmon region +# +#include "fcl/minimalMessageService.fcl" +#include "fcl/standardServices.fcl" +#include "JobConfig/common/prolog.fcl" +#include "JobConfig/beam/prolog.fcl" + +process_name : POT + +source : { + module_type : EmptyEvent + maxEvents : @nil +} + +services : @local::beam.services + +physics : { + # setup the modules + producers: @local::beam.producers + filters: @local::beam.filters + analyzers : @local::beam.analyzers + # setup the paths + ExtMonBeamPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, extmonBeamFilter, compressPVextmonBeam] + ExtMonRegionPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, extmonRegionFilter, compressPVextmonRegion] + trigger_paths : [ExtMonBeamPath, ExtMonRegionPath ] + LogPath : [ genCountLogger ] + OutputPath : [ExtMonBeamOutput, ExtMonReigionOutput ] + end_paths: [OutputPath, LogPath ] +} +# setup outputs +outputs: { + ExtMonBeamOutput : @local::beam.outputs.ExtMonBeamOutput + ExtMonRegionOutput : @local::beam.outputs.ExtMonRegionOutput +} +# tweak Mu2eG4 settings +physics.producers.g4run.SDConfig.enableSD: [ virtualdetector ] # only VDs are active +physics.producers.g4run.physics.minRangeCut : 1. # mm coarse range for this stage +#include "JobConfig/beam/epilog.fcl" +# +# Output file names are defined in prolog + + diff --git a/JobConfig/beam/beam_defs_g4s1.fcl b/JobConfig/beam/beam_defs_g4s1.fcl deleted file mode 100644 index 26b41e3a5b..0000000000 --- a/JobConfig/beam/beam_defs_g4s1.fcl +++ /dev/null @@ -1,315 +0,0 @@ -// Yuri Oksuzian, March 2019 -// Include this for beam_g4s1MT_phase1.fcl -// Yuri: turned off extinction monitor output streams - -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardProducers.fcl" -#include "fcl/standardServices.fcl" -#include "Mu2eG4/fcl/prolog.fcl" - -BEGIN_PROLOG -# Mu2eG4 cuts - - -dsRegionCuts: { - type: intersection - pars: [ - // Plane on the west side, outside of the wall - { type: plane normal: [ 0, 0, 1 ] point : [ 0, 0, -4851 ] }, - - // Yuri's e-mail 2015-04-10: x=1612. from CRV considerations. - // This is also large enought to enclose TS3 (its half length is 975 mm). - // Yuri: Moved the plane to cover all the shielding from stage 1. - { type: plane normal: [ -1, 0, 0 ] point : [ 2800., 0, 0 ] }, - - // Make sure the muon beam reaches our DS2Vacuum stopping volume - {type: notInVolume pars:[TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, Coll31, Coll32, Coll51, TS2InnerCryoShell, TS3InnerCryoShell, TS4InnerCryoShell, TS2CryoInsVac, TS3CryoInsVac, PbarAbsDisk, PbarAbsWedge, VirtualDetector_Coll31_In, VirtualDetector_Coll32_In, VirtualDetector_Coll31_Out, VirtualDetector_Coll32_Out, Coll31OutRecord, Coll32InRecord, Coll31OutRecord, VirtualDetector_TS4_Bend, VirtualDetector_Coll5_In, VirtualDetector_Coll5_Out, VirtualDetector_Coll5_OutSurf]}, - - // This union splits the output of the above cuts - // into two exclusive streams - { type: union pars: [ - { - type: intersection - pars: [ - { type: inVolume pars: [DS2Vacuum] }, - { type: isCharged } - ] - write: mubeam - }, - { type: constant - value: true - write: dsregion - } - ] - } - ] -} - -extMonRegionCuts: { - type: intersection - pars: [ - { - type: plane - normal: @local::mu2eg4BeamDumpNormal - // Dump core center: (661.90, 527.40, -19428.2) - // A plane 950 mm beyond the core center as measured along - // the "beam" direction normal to the dump face. - // DeltaZ = L/cos(13.72 degrees) - point: [ 661.90, 527.40, -20406.10 ] - }, - - // Split the output of the "plane" cut above into two exclusive streams - { type: union pars: [ - - { type: intersection - pars: [ - { - type: inVolume - pars: - [ collimator1Channel, - HallAir, - ExtMonFNALfilterMagnetAperture, - ExtMonFNALfilterMagnetApertureMarginUp, - ExtMonFNALfilterMagnetApertureMarginDn - ] - }, - { type: isCharged } - ] - write: extmonbeam - }, - - { type: constant value: true write: extmonregion } - ] - } - ] -} -#---------------------------------------------------------------- -END_PROLOG - -#================================================================ -# Give this job a name. -process_name : beamg4s1 - -source : { - module_type : EmptyEvent - maxEvents : @nil -} - -services : { - - message : @local::default_message - TFileService : { } - RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } - - GeometryService : { inputFile : "Mu2eG4/geom/geom_common_current.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } - Mu2eG4Helper : { } - SeedService : @local::automaticSeeds -} - -physics : { - analyzers: { - genCountLogger: { - module_type: GenEventCountReader - } - - collectionSizes: { - module_type: CollectionSizeAnalyzer - useModuleLabel: true useInstanceName: true useProcessName: false - } - } - - producers: { - - generate: @local::PrimaryProtonGun - - genCounter: { - module_type: GenEventCounter - } - - g4run : @local::g4run - - compressPVmuonBeam : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "muonBeamFilter" ] - } - - compressPVdsRegion : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "dsRegionFilter" ] - } - - compressPVextmonBeam : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "extmonBeamFilter" ] - } - - compressPVextmonRegion : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "extmonRegionFilter" ] - } - - compressPVFull : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "g4run" ] - } - } - - filters: { - muonBeamFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:mubeam" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - dsRegionFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:dsregion" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - extmonBeamFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:extmonbeam" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - extmonRegionFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:extmonregion" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - g4status: { - module_type: FilterStatusG4 - input: "g4run" - maxAcceptedStatus: 1 # status 2 and above means StepPointMCCollection may have non-dereferencable pointers - } - - g4consistent: { - module_type: FilterStatusG4 - input: "g4run" - maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers - } - } - - trigmubeam : [generate, genCounter, g4run, g4consistent, muonBeamFilter, compressPVmuonBeam] - trigdsregion : [generate, genCounter, g4run, g4consistent, dsRegionFilter, compressPVdsRegion] -// trigextmonbeam : [generate, genCounter, g4run, g4consistent, extmonBeamFilter, compressPVextmonBeam] -// trigextmonregion : [generate, genCounter, g4run, g4consistent, extmonRegionFilter, compressPVextmonRegion] - g4StatusFilter : [generate, genCounter, g4run, "!g4status", compressPVFull ] -// trigger_paths : [trigmubeam, trigdsregion, trigextmonbeam, trigextmonregion, g4StatusFilter] - trigger_paths : [trigmubeam, trigdsregion, g4StatusFilter] - - outputs: [truncatedEvtsOutput, mubeamout, dsout] - an: [ genCountLogger, collectionSizes ] - end_paths: [outputs, an] -} - -outputs: { - - mubeamout : { - module_type : RootOutput - SelectEvents: ["trigmubeam"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_muonBeamFilter_*_*", - "keep *_compressPVmuonBeam_*_*" - ] - } - - -dsout : { - module_type : RootOutput - SelectEvents: ["trigdsregion"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_dsRegionFilter_*_*", - "keep *_compressPVdsRegion_*_*" - ] - } - - extmonbeamout : { - module_type : RootOutput - SelectEvents: ["trigextmonbeam"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_extmonBeamFilter_*_*", - "keep *_compressPVextmonBeam_*_*" - ] - } - - extmonregionout : { - module_type : RootOutput - SelectEvents: ["trigextmonregion"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_extmonRegionFilter_*_*", - "keep *_compressPVextmonRegion_*_*" - ] - } - - truncatedEvtsOutput : { - module_type : RootOutput - SelectEvents: ["g4StatusFilter"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_g4run_*_*", - "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_g4run_*_*", - "keep *_compressPVFull_*_*" - ] - } - -} -// -// Mu2eG4 cuts are evaluated in the listed order. -// The first match wins. For the "intersection" -// type, the first false stops the evaluation. -// For the "union" type the first true stops the evaluation. -physics.producers.g4run.Mu2eG4CommonCut: { - type: union - pars: [ - @local::mu2eg4CutDeltaElectrons, // 8% speed up from killing electrons with Ek<1 MeV - @local::dsRegionCuts - //, @local::extMonRegionCuts - ] -} - -physics.producers.g4run.SDConfig.enableSD: [ virtualdetector ] // activate just the explicitly listed SDs - -// Larger range cut for the first stage -physics.producers.g4run.physics.minRangeCut : 1. // mm - -// Limit the amount of "Begin processing the ... record" messages -services.message.destinations.log.categories.ArtReport.reportEvery : 1 -services.message.destinations.log.categories.ArtReport.limit : 1 -services.message.destinations.log.categories.ArtReport.timespan : 300 - -// Initialze seeding of random engines: do not put these lines in base .fcl files for grid jobs. -services.SeedService.baseSeed : 8 -services.SeedService.maxUniqueEngines : 20 diff --git a/JobConfig/beam/beam_defs_g4s1MT.fcl b/JobConfig/beam/beam_defs_g4s1MT.fcl deleted file mode 100644 index 4a4d2839a2..0000000000 --- a/JobConfig/beam/beam_defs_g4s1MT.fcl +++ /dev/null @@ -1,14 +0,0 @@ -// Lisa Goodenough, January 2020 -// Include this for beam_g4s1MT_phase1.fcl -// Yuri: turned off extinction monitor output streams - -#include "JobConfig/beam/beam_defs_g4s1.fcl" - -# Note that all parameters except the following should be set -# in the non MT file included above (which includes prolog files) - - -physics.producers.g4run.module_type : "Mu2eG4MT" - -services.scheduler.num_schedules : 5 -services.scheduler.num_threads : 5 diff --git a/JobConfig/beam/beam_g4s1MT_phase1.fcl b/JobConfig/beam/beam_g4s1MT_phase1.fcl deleted file mode 100644 index 6a3a4fc120..0000000000 --- a/JobConfig/beam/beam_g4s1MT_phase1.fcl +++ /dev/null @@ -1,14 +0,0 @@ -// Lisa Goodenough, Jan 2020 - -#include "JobConfig/beam/beam_defs_g4s1MT.fcl" - -physics.producers.g4run.maxEventsToSeed : 20000 -//services.scheduler.num_threads : 5 -//services.scheduler.num_schedules : 5 - -services.TFileService.fileName : "nts.owner.beam-g4s1mt.version.sequencer.root" -services.GeometryService.inputFile : "Mu2eG4/geom/geom_common_phase1.txt" -services.GeometryService.simulatedDetector.tool_type : "Mu2e" -outputs.mubeamout.fileName : "sim.owner.beam-g4s1-mubeam.version.sequencer.art" -outputs.dsout.fileName : "sim.owner.beam-g4s1-dsregion.version.sequencer.art" -outputs.truncatedEvtsOutput.fileName : "sim.owner.beam-g4s1-truncated.version.sequencer.art" diff --git a/JobConfig/beam/epilog.fcl b/JobConfig/beam/epilog.fcl new file mode 100644 index 0000000000..a03f9a8a0e --- /dev/null +++ b/JobConfig/beam/epilog.fcl @@ -0,0 +1,8 @@ +#turn off MCTrajectories +physics.producers.g4run.TrajectoryControl.produce : false +# no histogram output +services.TFileService.fileName : null +# limit printout +services.message.destinations.log.categories.ArtReport.reportEvery : 1 +services.message.destinations.log.categories.ArtReport.limit : 1 +services.message.destinations.log.categories.ArtReport.timespan : 300 diff --git a/JobConfig/beam/flash.fcl b/JobConfig/beam/flash.fcl deleted file mode 100644 index d4aca4b392..0000000000 --- a/JobConfig/beam/flash.fcl +++ /dev/null @@ -1,20 +0,0 @@ -// Start with particles hitting the detector mother volumes and -// write out StepPoints in the detectors. -// -// Beam flash particles. -// -// Andrei Gaponenko, 2015 - -#include "JobConfig/beam/prolog.fcl" - -process_name: flash - -source: { module_type : RootInput } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Flash } -outputs: { @table::mu2e.outputs.g4s4Defs } - -services.TFileService.fileName: "nts.owner.flash.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.flash-TrkCal.version.sequencer.art" -outputs.crvOutput.fileName: "sim.owner.flash-CRV.version.sequencer.art" -outputs.truncatedEvtsOutput.fileName: "sim.owner.flash-truncated.version.sequencer.art" diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index 063cc6f1c2..4684d81dd0 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -1,130 +1,44 @@ -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardServices.fcl" -#include "CaloMC/fcl/prolog.fcl" +# +# Common config for all beam jobs +# #include "Mu2eG4/fcl/prolog.fcl" #include "EventGenerator/fcl/prolog.fcl" -#include "TrackerMC/fcl/prolog.fcl" - +#include "JobConfig/pileup/prolog.fcl" BEGIN_PROLOG -mu2e.services.simServices: { @table::Services.Sim } - -// Change the geometry file -mu2e.services.simServices.GeometryService.inputFile : "JobConfig/common/geom_baseline.txt" - -// Default seeding of random engines - the seed will be overwritten in grid jobs -mu2e.services.simServices.SeedService.baseSeed: 8 -mu2e.services.simServices.SeedService.maxUniqueEngines: 20 - -// Limit the amount of "Begin processing the ... record" messages -mu2e.services.simServices.message.destinations.log.categories.ArtReport.reportEvery: 1 -mu2e.services.simServices.message.destinations.log.categories.ArtReport.limit: 1 -mu2e.services.simServices.message.destinations.log.categories.ArtReport.timespan: 300 - -#================================================================ -mu2e.physics.producers.g4run.commonBase: { - module_type: Mu2eG4 - physics: @local::mu2eg4DefaultPhysics - ResourceLimits: @local::mu2eg4DefaultResourceLimits - TrajectoryControl: @local::mu2eg4NoTrajectories - debug: @local::mu2eg4DefaultDebug - visualization: @local::mu2eg4NoVisualization - - inputs: @nil - - SDConfig: { - enableSD: [ tracker, calorimeter, calorimeterRO, CRV, virtualdetector, protonabsorber ] - TimeVD: { times: [] } - preSimulatedHits: @nil - } - - Mu2eG4StackingOnlyCut: @local::mu2eg4CutNeutrinos - Mu2eG4SteppingOnlyCut: {} - Mu2eG4CommonCut: {} -} - -#---------------------------------------------------------------- -mu2e.physics.producers.g4run.flash: @local::mu2e.physics.producers.g4run.commonBase -mu2e.physics.producers.g4run.flash.inputs: { - primaryType: "StepPoints" - primaryTag: "mothersFilter:DetectorMother" - inputMCTrajectories: "" - inputPhysVolumeMultiInfo: "compressPVMothers" -} -mu2e.physics.producers.g4run.flash.SDConfig.preSimulatedHits: ["mothersFilter:virtualdetector"] - -#---------------------------------------------------------------- -mu2e.physics.producers.g4run.muons: @local::mu2e.physics.producers.g4run.commonBase -mu2e.physics.producers.g4run.muons.inputs: { - primaryType: "GenParticles" - primaryTag: "generate" -} -mu2e.physics.producers.g4run.muons.SDConfig.preSimulatedHits: [] - -#================================================================ -mu2e.outputs.g4s4Defs: { - detectorOutput: { - module_type: RootOutput - SelectEvents: [detPath] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_detectorFilter_*_*", - "keep *_CaloShowerCrystalSteps_*_*", - "keep *_CaloShowerROSteps_*_*", - "keep *_compressPVDetector_*_*", - "drop mu2e::StepPointMCs_detectorFilter_tracker_*", - "keep mu2e::StrawGasSteps_makeSGS_*_*" - ] - fileName: @nil - } - - crvOutput: { - module_type: RootOutput - SelectEvents: [crvPath] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_crvFilter_*_*", - "keep *_compressPVCRV_*_*" - ] - fileName: @nil - } +Beam: { - truncatedEvtsOutput: { - module_type: RootOutput - SelectEvents: [g4StatusPath] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_g4run_*_*", - "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_*_*_*", - "keep *_compressPVFull_*_*" - ] - fileName: @nil - } -} - -#================================================================ -mu2e.physics.g4s4CommonBase: { producers: { - g4run: @nil + generate: @local::PrimaryProtonGun + genCounter: { module_type: GenEventCounter } + g4run : @local::g4run + + compressPVBeam : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "BeamFilter" ] + } - CaloShowerStepMaker: @local::CaloShowerStepMaker + compressPVCRVNeutrals : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "CRVNeutralsFilter" ] + } - CaloShowerCrystalSteps: { - module_type: CaloShowerUpdater - showerInput: "CaloShowerStepMaker:calorimeter" - newSimParticles: "detectorFilter" + compressPVextmonBeam : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "extmonBeamFilter" ] } - CaloShowerROSteps: { - module_type: CaloShowerUpdater - showerInput: "CaloShowerStepMaker:calorimeterRO" - newSimParticles: "detectorFilter" + compressPVextmonRegion : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "extmonRegionFilter" ] } compressPVDetector: { @@ -133,101 +47,284 @@ mu2e.physics.g4s4CommonBase: { hitInputs: [] particleInputs: [ "detectorFilter" ] } + compressPVCRV: { module_type: CompressPhysicalVolumes volumesInput: "g4run" hitInputs: [] particleInputs: [ "crvFilter" ] } - compressPVFull: { + + compressPVFull : { module_type: CompressPhysicalVolumes - volumesInput: "g4run" - hitInputs: [] - particleInputs: [ "g4run" ] + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "g4run" ] } + +# below are used for stopped muon daughter selecting/vetoing + + stoppedMuonFinder: { + module_type: "StoppedParticlesFinder" + particleInput: "g4run" + particleTypes: [ 13 ] + physVolInfoInput: "g4run:eventlevel" + useEventLevelVolumeInfo: true + stoppingMaterial: "StoppingTarget_Al" + verbosityLevel: 1 + } + + stoppedMuonDaughters: { + module_type: SimParticleDaughterSelector + particleInput: "stoppedMuonFinder" + # EMCascade should not be vetoed because we do not re-simulate it + processes: [ "DIO", "NuclearCapture" ] + } + } filters: { - detectorFilter: { - module_type: FilterG4Out - mainHitInputs: [ "g4run:tracker" ] - mainSPPtrInputs: [ "CaloShowerStepMaker" ] - extraHitInputs: [ "g4run:virtualdetector", "g4run:protonabsorber" ] - vetoDaughters: [] + + BeamFilter: { + module_type: FilterG4Out + mainHitInputs : [ "g4run:Beam" ] + extraHitInputs : [ "g4run:virtualdetector" ] + vetoDaughters: [] } - crvFilter: { + CRVNeutralsFilter: { module_type: FilterG4Out - mainHitInputs: [ "g4run:CRV"] - extraHitInputs: [ "g4run:virtualdetector" ] + mainHitInputs : [ "g4run:CRVNeutrals" ] + extraHitInputs : [ "g4run:virtualdetector" ] + vetoDaughters: [] + } + + extmonBeamFilter: { + module_type: FilterG4Out + mainHitInputs : [ "g4run:extmonbeam" ] + extraHitInputs : [ "g4run:virtualdetector" ] vetoDaughters: [] } - TrkStepFilter : { - module_type : MinimumHits - mode : "trackerOnly" - MinNStraws : 10 - MinPartMom : 40.0 # MeV/c - PDGCodes : [11,-11, 13, -13] - generatorModuleLabel : "generate" - g4ModuleLabel : "g4run" + extmonRegionFilter: { + module_type: FilterG4Out + mainHitInputs : [ "g4run:extmonregion" ] + extraHitInputs : [ "g4run:virtualdetector" ] + vetoDaughters: [] } - g4status: { - module_type: FilterStatusG4 - input: "g4run" + flashPrefilter: { + module_type: FilterG4Out + mainHitInputs: [ "g4run:tracker", "g4run:calorimeter", "g4run:CRV", "g4run:virtualdetector" ] + vetoParticles: [ "stoppedMuonDaughters" ] + } + + tgtStopFilter: { + module_type: FilterG4Out + mainHitInputs: [] + extraHitInputs: [ "g4run:virtualdetector" ] + mainSPPtrInputs: [ "stoppedMuonFinder" ] } - g4consistent: { - module_type: FilterStatusG4 - input: "g4run" - maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers + + beamResampler: { + module_type: ResamplingMixer + fileNames: @nil + readMode: "sequential" + wrapFiles: true + mu2e: { + products: { + genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } + simParticleMixer: { mixingMap: [ [ "BeamFilter", "" ] ] } + stepPointMCMixer: { mixingMap: [ + [ "BeamFilter:virtualdetector", ":" ], + [ "BeamFilter:Beam", ":" ] + ] } + + volumeInfoMixer: { + srInput: "compressPVBeam" + evtOutInstanceName: "eventlevel" + } + } + } } } - analyzers: { genCountLogger: { module_type: GenEventCountReader } } + outputs: { + + BeamOutput : { + module_type : RootOutput + SelectEvents: ["BeamPath"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_BeamFilter_*_*", + "keep *_compressPVBeam_*_*" + ] + fileName : "sim.owner.Beam.version.sequencer.art" + } + + CRVNeutralsOutput : { + module_type : RootOutput + SelectEvents: ["CRVNeutralsPath"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_CRVNeutralsFilter_*_*", + "keep *_compressPVCRVNeutrals_*_*" + ] + fileName : "sim.owner.CRVNeutrals.version.sequencer.art" + } + + extmonbeamOutput : { + module_type : RootOutput + SelectEvents: ["ExtMonBeamPath"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_extmonBeamFilter_*_*", + "keep *_compressPVextmonBeam_*_*" + ] + } + + extmonregionOutput : { + module_type : RootOutput + SelectEvents: ["ExtMonRegionPath"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_extmonRegionFilter_*_*", + "keep *_compressPVextmonRegion_*_*" + ] + } + + TruncatedOutput : { + module_type : RootOutput + SelectEvents: ["g4StatusFilter"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_g4run_*_*", + "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_g4run_*_*", + "keep *_compressPVFull_*_*" + ] + } - crvPath: @nil - detPath: @nil - g4StatusPath: @nil - trigger_paths: [ detPath, crvPath, g4StatusPath ] + tgtStopOutput : { + module_type : RootOutput + SelectEvents: [tgtPath] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_tgtStopFilter_*_*" + ] + fileName : "sim.owner.MuTargetStops.version.sequencer.art" + } - out: [ detectorOutput, crvOutput, truncatedEvtsOutput ] - gcl: [genCountLogger] - end_paths: [out, gcl] -} + detectorOutput : { + module_type: RootOutput + SelectEvents: [detPath] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + @sequence::Pileup.KeptProducts + ] + fileName: "dts.owner.BeamFlash.version.sequencer.art" -crvPathCommon: [ g4run, g4consistent, crvFilter, compressPVCRV ] -detPathCommon: [ g4run, g4consistent, CaloShowerStepMaker, detectorFilter, CaloShowerCrystalSteps, CaloShowerROSteps, compressPVDetector, @sequence::TrackerMC.StepSim ] -g4StatusPathCommon: [ g4run, "!g4status", compressPVFull ] - -#---------------------------------------------------------------- -mu2e.physics.g4s4Flash: @local::mu2e.physics.g4s4CommonBase -mu2e.physics.g4s4Flash.producers.g4run: @local::mu2e.physics.producers.g4run.flash -mu2e.physics.g4s4Flash.crvPath: [ @sequence::crvPathCommon ] -mu2e.physics.g4s4Flash.detPath: [ @sequence::detPathCommon ] -mu2e.physics.g4s4Flash.g4StatusPath: [ @sequence::g4StatusPathCommon ] - -#---------------------------------------------------------------- -mu2e.physics.g4s4Muons: @local::mu2e.physics.g4s4CommonBase -mu2e.physics.g4s4Muons.producers.g4run: @local::mu2e.physics.producers.g4run.muons - -mu2e.physics.g4s4Muons.producers.generate: { - module_type: StoppedParticleReactionGun - verbosityLevel : 1 - physics: @nil - muonStops : { @table::mu2e.tgtMuonStops - } -} + } -mu2e.physics.g4s4Muons.producers.genCounter: { - module_type: GenEventCounter -} -mu2e.physics.g4s4Muons.crvPath: [ generate, genCounter, @sequence::crvPathCommon ] -mu2e.physics.g4s4Muons.detPath: [ generate, genCounter, @sequence::detPathCommon ] -mu2e.physics.g4s4Muons.g4StatusPath: [ generate, genCounter, @sequence::g4StatusPathCommon ] -mu2e.physics.Signal.detPath : [ generate, genCounter, g4run, g4consistent, CaloShowerStepMaker, TrkStepFilter, detectorFilter, CaloShowerCrystalSteps, CaloShowerROSteps, compressPVDetector ] -#================================================================ + } +# define some paths; these can be mixed and matches as art guarantees no duplicate running + g4StatusPath : [generate, genCounter, g4run, "!g4statusFilter", compressPVFull ] + +# define regions where particles may eventually interact with the detectors (CRV or trracker/calo), See doc 26541 for a graphical description +# Mu2eG4 cuts are evaluated in the listed order. +# The first match wins. For the "intersection" +# type, the first false stops the evaluation. +# For the "union" type the first true stops the evaluation. + + DetectorRegionCuts: { + type: intersection + pars: [ + // Plane on the west side, outside of the wall + { type: plane normal: [ 0, 0, 1 ] point : [ 0, 0, -4851 ] }, + + // Yuri's e-mail 2015-04-10: x=1612. from CRV considerations. + // This is also large enought to enclose TS3 (its half length is 975 mm). + // Yuri: Moved the plane to cover all the shielding from stage 1. + { type: plane normal: [ -1, 0, 0 ] point : [ 2800., 0, 0 ] }, + + // Make sure the charged particle beam reaches our DS2Vacuum stopping volume + {type: notInVolume pars:[TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, Coll31, Coll32, Coll51, TS2InnerCryoShell, TS3InnerCryoShell, TS4InnerCryoShell, TS2CryoInsVac, TS3CryoInsVac, PbarAbsDisk, PbarAbsWedge, VirtualDetector_Coll31_In, VirtualDetector_Coll32_In, VirtualDetector_Coll31_Out, VirtualDetector_Coll32_Out, Coll31OutRecord, Coll32InRecord, Coll31OutRecord, VirtualDetector_TS4_Bend, VirtualDetector_Coll5_In, VirtualDetector_Coll5_Out, VirtualDetector_Coll5_OutSurf]}, + + // This union splits the output of the above cuts + // into two exclusive streams; Beam (charged particles entering the DS) and CRVNeutrals ((mostly)neutral particles approaching the CRV + { type: union pars: [ + { + type: intersection + pars: [ + { type: inVolume pars: [DS2Vacuum] }, + { type: isCharged } + ] + write: Beam + }, + { type: constant + value: true + write: CRVNeutrals + } + ] + } + ] + } + +# define extinction monitor region + extMonRegionCuts: { + type: intersection + pars: [ + { + type: plane + normal: @local::mu2eg4BeamDumpNormal + // Dump core center: (661.90, 527.40, -19428.2) + // A plane 950 mm beyond the core center as measured along + // the "beam" direction normal to the dump face. + // DeltaZ = L/cos(13.72 degrees) + point: [ 661.90, 527.40, -20406.10 ] + }, + + // Split the output of the "plane" cut above into two exclusive streams + { type: union pars: [ + + { type: intersection + pars: [ + { + type: inVolume + pars: + [ collimator1Channel, + HallAir, + ExtMonFNALfilterMagnetAperture, + ExtMonFNALfilterMagnetApertureMarginUp, + ExtMonFNALfilterMagnetApertureMarginDn + ] + }, + { type: isCharged } + ] + write: extmonbeam + }, + + { type: constant value: true write: extmonregion } + ] + } + ] + } +} END_PROLOG + diff --git a/JobConfig/beam/prolog_old.fcl b/JobConfig/beam/prolog_old.fcl new file mode 100644 index 0000000000..063cc6f1c2 --- /dev/null +++ b/JobConfig/beam/prolog_old.fcl @@ -0,0 +1,233 @@ +#include "fcl/minimalMessageService.fcl" +#include "fcl/standardServices.fcl" +#include "CaloMC/fcl/prolog.fcl" +#include "Mu2eG4/fcl/prolog.fcl" +#include "EventGenerator/fcl/prolog.fcl" +#include "TrackerMC/fcl/prolog.fcl" + +BEGIN_PROLOG + +mu2e.services.simServices: { @table::Services.Sim } + +// Change the geometry file +mu2e.services.simServices.GeometryService.inputFile : "JobConfig/common/geom_baseline.txt" + +// Default seeding of random engines - the seed will be overwritten in grid jobs +mu2e.services.simServices.SeedService.baseSeed: 8 +mu2e.services.simServices.SeedService.maxUniqueEngines: 20 + +// Limit the amount of "Begin processing the ... record" messages +mu2e.services.simServices.message.destinations.log.categories.ArtReport.reportEvery: 1 +mu2e.services.simServices.message.destinations.log.categories.ArtReport.limit: 1 +mu2e.services.simServices.message.destinations.log.categories.ArtReport.timespan: 300 + +#================================================================ +mu2e.physics.producers.g4run.commonBase: { + module_type: Mu2eG4 + physics: @local::mu2eg4DefaultPhysics + ResourceLimits: @local::mu2eg4DefaultResourceLimits + TrajectoryControl: @local::mu2eg4NoTrajectories + debug: @local::mu2eg4DefaultDebug + visualization: @local::mu2eg4NoVisualization + + inputs: @nil + + SDConfig: { + enableSD: [ tracker, calorimeter, calorimeterRO, CRV, virtualdetector, protonabsorber ] + TimeVD: { times: [] } + preSimulatedHits: @nil + } + + Mu2eG4StackingOnlyCut: @local::mu2eg4CutNeutrinos + Mu2eG4SteppingOnlyCut: {} + Mu2eG4CommonCut: {} +} + +#---------------------------------------------------------------- +mu2e.physics.producers.g4run.flash: @local::mu2e.physics.producers.g4run.commonBase +mu2e.physics.producers.g4run.flash.inputs: { + primaryType: "StepPoints" + primaryTag: "mothersFilter:DetectorMother" + inputMCTrajectories: "" + inputPhysVolumeMultiInfo: "compressPVMothers" +} +mu2e.physics.producers.g4run.flash.SDConfig.preSimulatedHits: ["mothersFilter:virtualdetector"] + +#---------------------------------------------------------------- +mu2e.physics.producers.g4run.muons: @local::mu2e.physics.producers.g4run.commonBase +mu2e.physics.producers.g4run.muons.inputs: { + primaryType: "GenParticles" + primaryTag: "generate" +} +mu2e.physics.producers.g4run.muons.SDConfig.preSimulatedHits: [] + +#================================================================ +mu2e.outputs.g4s4Defs: { + detectorOutput: { + module_type: RootOutput + SelectEvents: [detPath] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_detectorFilter_*_*", + "keep *_CaloShowerCrystalSteps_*_*", + "keep *_CaloShowerROSteps_*_*", + "keep *_compressPVDetector_*_*", + "drop mu2e::StepPointMCs_detectorFilter_tracker_*", + "keep mu2e::StrawGasSteps_makeSGS_*_*" + ] + fileName: @nil + } + + crvOutput: { + module_type: RootOutput + SelectEvents: [crvPath] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_crvFilter_*_*", + "keep *_compressPVCRV_*_*" + ] + fileName: @nil + } + + truncatedEvtsOutput: { + module_type: RootOutput + SelectEvents: [g4StatusPath] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_g4run_*_*", + "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_*_*_*", + "keep *_compressPVFull_*_*" + ] + fileName: @nil + } +} + +#================================================================ +mu2e.physics.g4s4CommonBase: { + producers: { + g4run: @nil + + CaloShowerStepMaker: @local::CaloShowerStepMaker + + CaloShowerCrystalSteps: { + module_type: CaloShowerUpdater + showerInput: "CaloShowerStepMaker:calorimeter" + newSimParticles: "detectorFilter" + } + + CaloShowerROSteps: { + module_type: CaloShowerUpdater + showerInput: "CaloShowerStepMaker:calorimeterRO" + newSimParticles: "detectorFilter" + } + + compressPVDetector: { + module_type: CompressPhysicalVolumes + volumesInput: "g4run" + hitInputs: [] + particleInputs: [ "detectorFilter" ] + } + compressPVCRV: { + module_type: CompressPhysicalVolumes + volumesInput: "g4run" + hitInputs: [] + particleInputs: [ "crvFilter" ] + } + compressPVFull: { + module_type: CompressPhysicalVolumes + volumesInput: "g4run" + hitInputs: [] + particleInputs: [ "g4run" ] + } + } + + filters: { + detectorFilter: { + module_type: FilterG4Out + mainHitInputs: [ "g4run:tracker" ] + mainSPPtrInputs: [ "CaloShowerStepMaker" ] + extraHitInputs: [ "g4run:virtualdetector", "g4run:protonabsorber" ] + vetoDaughters: [] + } + + crvFilter: { + module_type: FilterG4Out + mainHitInputs: [ "g4run:CRV"] + extraHitInputs: [ "g4run:virtualdetector" ] + vetoDaughters: [] + } + + TrkStepFilter : { + module_type : MinimumHits + mode : "trackerOnly" + MinNStraws : 10 + MinPartMom : 40.0 # MeV/c + PDGCodes : [11,-11, 13, -13] + generatorModuleLabel : "generate" + g4ModuleLabel : "g4run" + } + + g4status: { + module_type: FilterStatusG4 + input: "g4run" + } + g4consistent: { + module_type: FilterStatusG4 + input: "g4run" + maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers + } + } + + analyzers: { genCountLogger: { module_type: GenEventCountReader } } + + crvPath: @nil + detPath: @nil + g4StatusPath: @nil + trigger_paths: [ detPath, crvPath, g4StatusPath ] + + out: [ detectorOutput, crvOutput, truncatedEvtsOutput ] + gcl: [genCountLogger] + end_paths: [out, gcl] +} + +crvPathCommon: [ g4run, g4consistent, crvFilter, compressPVCRV ] +detPathCommon: [ g4run, g4consistent, CaloShowerStepMaker, detectorFilter, CaloShowerCrystalSteps, CaloShowerROSteps, compressPVDetector, @sequence::TrackerMC.StepSim ] +g4StatusPathCommon: [ g4run, "!g4status", compressPVFull ] + +#---------------------------------------------------------------- +mu2e.physics.g4s4Flash: @local::mu2e.physics.g4s4CommonBase +mu2e.physics.g4s4Flash.producers.g4run: @local::mu2e.physics.producers.g4run.flash +mu2e.physics.g4s4Flash.crvPath: [ @sequence::crvPathCommon ] +mu2e.physics.g4s4Flash.detPath: [ @sequence::detPathCommon ] +mu2e.physics.g4s4Flash.g4StatusPath: [ @sequence::g4StatusPathCommon ] + +#---------------------------------------------------------------- +mu2e.physics.g4s4Muons: @local::mu2e.physics.g4s4CommonBase +mu2e.physics.g4s4Muons.producers.g4run: @local::mu2e.physics.producers.g4run.muons + +mu2e.physics.g4s4Muons.producers.generate: { + module_type: StoppedParticleReactionGun + verbosityLevel : 1 + physics: @nil + muonStops : { @table::mu2e.tgtMuonStops + } +} + +mu2e.physics.g4s4Muons.producers.genCounter: { + module_type: GenEventCounter +} + +mu2e.physics.g4s4Muons.crvPath: [ generate, genCounter, @sequence::crvPathCommon ] +mu2e.physics.g4s4Muons.detPath: [ generate, genCounter, @sequence::detPathCommon ] +mu2e.physics.g4s4Muons.g4StatusPath: [ generate, genCounter, @sequence::g4StatusPathCommon ] +mu2e.physics.Signal.detPath : [ generate, genCounter, g4run, g4consistent, CaloShowerStepMaker, TrkStepFilter, detectorFilter, CaloShowerCrystalSteps, CaloShowerROSteps, compressPVDetector ] + +#================================================================ + +END_PROLOG diff --git a/JobConfig/common/epilog.fcl b/JobConfig/common/epilog.fcl new file mode 100644 index 0000000000..5647010f8a --- /dev/null +++ b/JobConfig/common/epilog.fcl @@ -0,0 +1,5 @@ +# test values; these get overwritten by generate_fcl +services.SeedService.baseSeed : 773651 +services.SeedService.maxUniqueEngines : 20 +# by default, turn off histogram output +services.TFileService.fileName : "/dev/null" diff --git a/JobConfig/common/epilog_MT.fcl b/JobConfig/common/epilog_MT.fcl new file mode 100644 index 0000000000..f8c54773bc --- /dev/null +++ b/JobConfig/common/epilog_MT.fcl @@ -0,0 +1,8 @@ +# +# epilog to transform a serial Mu2eG4 job into a Mu2eG4MT job +# content from Lisa Goodenough +# +physics.producers.g4run.module_type : "Mu2eG4MT" +physics.producers.g4run.maxEventsToSeed : 20000 +services.scheduler.num_schedules : 5 +services.scheduler.num_threads : 5 diff --git a/JobConfig/common/mu2eg4.fcl b/JobConfig/common/mu2eg4.fcl index 7c314be7f3..7406c7a9c4 100644 --- a/JobConfig/common/mu2eg4.fcl +++ b/JobConfig/common/mu2eg4.fcl @@ -1,26 +1,6 @@ # default production configuration of G4. Specific stages may customize this BEGIN_PROLOG -mu2e.physics.producers.g4run.commonBase: { - module_type: Mu2eG4 - physics: @local::mu2eg4DefaultPhysics - ResourceLimits: @local::mu2eg4DefaultResourceLimits - TrajectoryControl: @local::mu2eg4NoTrajectories - debug: @local::mu2eg4DefaultDebug - visualization: @local::mu2eg4NoVisualization - - inputs: @nil - - SDConfig: { - enableSD: [ tracker, calorimeter, CRV, virtualdetector ] - TimeVD: { times: [] } - preSimulatedHits: @nil - } - - Mu2eG4StackingOnlyCut: @local::mu2eg4CutNeutrinos - Mu2eG4SteppingOnlyCut: {} - Mu2eG4CommonCut: {} -} #---------------------------------------------------------------- mu2e.physics.producers.g4run.flash: @local::mu2e.physics.producers.g4run.commonBase diff --git a/JobConfig/common/prolog.fcl b/JobConfig/common/prolog.fcl new file mode 100644 index 0000000000..50aa16bcb0 --- /dev/null +++ b/JobConfig/common/prolog.fcl @@ -0,0 +1,49 @@ +# +# common prolog for all production jobs. These are mostly legacy +# +#include "fcl/standardServices.fcl" +#include "Mu2eG4/fcl/prolog.fcl" + +BEGIN_PROLOG +Common: { + services : { + RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } + GeometryService : { + inputFile : "Mu2eG4/geom/geom_common.txt" + simulatedDetector : { tool_type : "Mu2e" } + } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } + message : @local::default_message + TFileService : { } + Mu2eG4Helper : { } + SeedService : @local::automaticSeeds + DbService : @local::DbEmpty + ProditionsService: @local::Proditions + } + + producers : { + g4run: @local::mu2eg4runDefaultSingleStage + genCounter: { module_type: GenEventCounter } + } + + filters : { + g4statusFilter: { + module_type: FilterStatusG4 + input: "g4run" + maxAcceptedStatus: 1 # status 2 and above means StepPointMCCollection may have non-dereferencable pointers + } + + g4consistentFilter: { + module_type: FilterStatusG4 + input: "g4run" + maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers + } + } + analyzers: { + genCountLogger: { module_type: GenEventCountReader makeHistograms: false } + } + g4Sequence : [ g4run, g4consistentFilter ] + generateSequence : [ generate, genCounter ] +} +END_PROLOG diff --git a/JobConfig/mixing/Run1.fcl b/JobConfig/mixing/Run1.fcl index f8442ea978..ab78d8b79a 100644 --- a/JobConfig/mixing/Run1.fcl +++ b/JobConfig/mixing/Run1.fcl @@ -9,7 +9,7 @@ #physics.filters.mustopMixer.mu2e.simStageEfficiencyTags : [ muHitPerMuStop, muStopPerMuBeamEnterDS, muBeamEnterDSPerPOT ] physics.filters.mustopMixer.mu2e.meanEventsPerProton : 3.51e-5 # from hand calculations: will come from simStageEfficiency once we have the full chain TODO physics.filters.mustopMixer.mu2e.simStageEfficiencyTags: [] -physics.filters.mustopMixer.mu2e.skipFactor : 10.0 # skip a random number of mixin events between 0 and this factor times the number corresponding to the nominal pulse. Set to the maximum PBI +physics.filters.mustopMixer.mu2e.skipFactor : 1.0 # skip a random number of mixin events between 0 and this factor times the number corresponding to the nominal pulse. Set to the maximum PBI physics.producers.PBISim.sigma: 0.7147 # =sqrt(-ln(0.6)) SDF=0.6 physics.producers.PBISim.extendedMean: 1.58e7 // mean of the uncut distribution physics.producers.PBISim.cutMax: 1.58e8 // cut the tail at 10 times the mean diff --git a/JobConfig/pileup/Pileup.fcl b/JobConfig/pileup/Pileup.fcl new file mode 100644 index 0000000000..baa8f7947a --- /dev/null +++ b/JobConfig/pileup/Pileup.fcl @@ -0,0 +1,33 @@ +# +# generate and produce Detector Steps from pileup +# +# original author: Dave Brown, LBNL +# +#include "JobConfig/common/prolog.fcl" +#include "JobConfig/primary/prolog.fcl" +#include "JobConfig/pileup/prolog.fcl" +process_name : Pileup + +source: { module_type : EmptyEvent } +services: { @table::Services.Sim } +physics: { + producers : { + @table::Common.producers + @table::Primary.producers + @table::Pileup.producers + } + filters : { + @table::Common.filters + @table::Pileup.filters + } + analyzers : { @table::Pileup.analyzers } + TriggerPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, @local::Primary::DetStepSequence ] + EndPath : @local::Pileup.EndPath + trigger_paths : [ TriggerPath ] + end_paths : [ EndPath ] +} +outputs: { Output : @local::Pileup.Output } +#include "JobConfig/primary/epilog.fcl" +#include "JobConfig/pileup/epilog.fcl" +#include "JobConfig/common/epilog.fcl" + diff --git a/JobConfig/beam/deuteron.fcl b/JobConfig/pileup/deuteron.fcl similarity index 100% rename from JobConfig/beam/deuteron.fcl rename to JobConfig/pileup/deuteron.fcl diff --git a/JobConfig/beam/dio.fcl b/JobConfig/pileup/dio.fcl similarity index 100% rename from JobConfig/beam/dio.fcl rename to JobConfig/pileup/dio.fcl diff --git a/JobConfig/pileup/epilog.fcl b/JobConfig/pileup/epilog.fcl index 8b13789179..0dcddbdb41 100644 --- a/JobConfig/pileup/epilog.fcl +++ b/JobConfig/pileup/epilog.fcl @@ -1 +1,11 @@ - +# don't need to keep StepPointMC info +physics.producers.compressDetStepMCs.stepPointMCTags : [ ] +# remove some intermediate genealogy steps +physics.producers.compressDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression +# no MC Trajectories +physics.producers.compressDetStepMCs.mcTrajectoryTag : "" +# don't create MCTrajectories +physics.producers.g4run.TrajectoryControl.produce : false +# only detector SDs +physics.producers.g4run.SDConfig.enableSD: [@sequence::physics.producers.g4run.SDConfig.enableSD ] + diff --git a/JobConfig/pileup/mustop.fcl b/JobConfig/pileup/mustop.fcl index 53e7e69a26..321d7cc4be 100644 --- a/JobConfig/pileup/mustop.fcl +++ b/JobConfig/pileup/mustop.fcl @@ -1,70 +1,18 @@ -// Generate all muon stop emission products -// -// Andy Edmonds, 2020 -BEGIN_PROLOG -dioGenTool : { - tool_type : DIOGenerator - spectrum : { - spectrumShape : Czarnecki - pdgId : 11 # Czarnecki option in BinnedSpecturm needs pdgId here - elow : 1. //MeV - spectrumResolution : 0.1 //MeV - } -} - -muonCaptureProtonGenTool : { - tool_type : MuCapProtonGenerator - spectrumVariable : kineticEnergy - spectrum : { - spectrumShape : ejectedProtons - nbins: 1000 - } -} - -muonCaptureDeuteronGenTool : { - tool_type : MuCapDeuteronGenerator - spectrumVariable : kineticEnergy - spectrum : { - spectrumShape : ejectedProtons - nbins: 1000 - } -} - -muonCaptureNeutronGenTool : { - tool_type : MuCapNeutronGenerator - spectrumVariable: kineticEnergy - spectrum: { - spectrumShape: tabulated - spectrumFileName: "ConditionsService/data/neutronSpectrum.txt" - } -} - -muonCapturePhotonGenTool : { - tool_type : MuCapPhotonGenerator - spectrum : { - spectrumShape: flat - elow: 0.0 // MeV - ehi: 7.0 // MeV - } -} - -# An example that isn't used in this fcl -#muonCapture1809keVGammaGenTool : { -# tool_type : MuCap1809keVGammaGenerator -#} - -END_PROLOG -#include "JobConfig/pileup/pileup.fcl" +# +# Generate all muon stop emission products +# +# Andy Edmonds, 2020 +#include "JobConfig/pileup/Pileup.fcl" physics.producers.generate: { module_type: MuStopProductsGun verbosityLevel : 1 stops : @local::mu2e.tgtMuonStops - captureProducts : [ @local::muonCaptureProtonGenTool, - @local::muonCaptureDeuteronGenTool, - @local::muonCaptureNeutronGenTool, - @local::muonCapturePhotonGenTool + captureProducts : [ @local.Pileup::muonCaptureProtonGenTool, + @local.Pileup::muonCaptureDeuteronGenTool, + @local.Pileup::muonCaptureNeutronGenTool, + @local.Pileup::muonCapturePhotonGenTool ] - decayProducts : [ @local::dioGenTool ] + decayProducts : [ @local.Pileup::dioGenTool ] } # set the stops. This should go away with art-based muon stops FIXME! physics.producers.generate.stops.inputFiles : [ "mergedMuonStops/nts.mu2e.DS-TGTstops.MDC2018a.001002_00000000.root" ] diff --git a/JobConfig/beam/neutron.fcl b/JobConfig/pileup/neutron.fcl similarity index 100% rename from JobConfig/beam/neutron.fcl rename to JobConfig/pileup/neutron.fcl diff --git a/JobConfig/beam/oot.fcl b/JobConfig/pileup/oot.fcl similarity index 100% rename from JobConfig/beam/oot.fcl rename to JobConfig/pileup/oot.fcl diff --git a/JobConfig/beam/photon.fcl b/JobConfig/pileup/photon.fcl similarity index 100% rename from JobConfig/beam/photon.fcl rename to JobConfig/pileup/photon.fcl diff --git a/JobConfig/pileup/pileup.fcl b/JobConfig/pileup/pileup.fcl deleted file mode 100644 index 3b2ed3679c..0000000000 --- a/JobConfig/pileup/pileup.fcl +++ /dev/null @@ -1,25 +0,0 @@ -# -# generate and produce Detector Steps from pileup -# -# original author: Dave Brown, LBNL -# -#include "JobConfig/pileup/prolog.fcl" -process_name : Pileup - -source: { module_type : EmptyEvent } -services: { @table::Services.Sim } -physics: { - producers : { @table::Pileup.producers } - filters : { @table::Pileup.filters } - analyzers : { @table::Pileup.analyzers } - TriggerPath : @local::Pileup.TriggerPath - EndPath : @local::Pileup.EndPath -} -outputs: { Output : @local::Pileup.Output } -#include "JobConfig/primary/epilog.fcl" - -physics.end_paths : [ EndPath ] # needed for generate_fcl -# test values; these get overwritten by generate_fcl -services.SeedService.baseSeed : 773651 -services.SeedService.maxUniqueEngines : 20 - diff --git a/JobConfig/pileup/prolog.fcl b/JobConfig/pileup/prolog.fcl index 4f5a9ef41a..159bc44b67 100644 --- a/JobConfig/pileup/prolog.fcl +++ b/JobConfig/pileup/prolog.fcl @@ -1,9 +1,6 @@ # # Prolog to create pileup particle steps for mixing # -#include "Mu2eG4/fcl/prolog.fcl" -#include "JobConfig/common/mu2eg4.fcl" -#include "fcl/standardServices.fcl" #include "EventGenerator/fcl/prolog.fcl" #include "TrackerMC/fcl/prolog.fcl" #include "CaloMC/fcl/prolog.fcl" @@ -15,31 +12,9 @@ BEGIN_PROLOG Pileup: { producers : { - g4run : @local::mu2e.physics.producers.g4run.muons - genCounter: { module_type: GenEventCounter } - @table::EventGenerator.producers - @table::TrackerMC.StepProducers - @table::CaloMC.StepProducers - CrvSteps : @local::CrvSteps - - compressDetStepMCs : { - module_type : CompressDetStepMCs - strawGasStepTag : "StrawGasStepMaker" - caloShowerStepTag : "CaloShowerStepMaker" - crvStepTag : "CrvSteps" - simParticleTag : "g4run" - stepPointMCTags : [ "g4run:virtualdetector", "g4run:protonabsorber" ]#, "g4run:stoppingtarget" ] - mcTrajectoryTag : "g4run" - debugLevel : 0 - compressionOptions : @local::DetStepCompression.extraCompression - } + # nothing specific: all come from primary } filters : { -# generator truncation filter; only needed for cosmic rays in principle - g4status: { - module_type: FilterStatusG4 - input: "g4run" - } # step filter to select any detectable signal DetStepFilter : { module_type : DetectorStepFilter @@ -57,12 +32,6 @@ Pileup: { MinimumCrvSteps : 1 } } - TriggerSequence : [ generate, genCounter, g4run, g4status, - @sequence::TrackerMC.StepSim, - @sequence::CaloMC.StepSim, - CrvSteps, - DetStepFilter, - compressDetStepMCs ] KeptProducts : [ "keep mu2e::StrawGasSteps_compressDetStepMCs_*_*", "keep mu2e::CaloShowerSteps_compressDetStepMCs_*_*", @@ -73,10 +42,6 @@ Pileup: { "keep art::TriggerResults_*_*_*", "keep mu2e::GenEventCount_*_*_*" ] - analyzers: { - genCountLogger: { module_type: GenEventCountReader makeHistograms: false } - } - Output : { module_type : RootOutput SelectEvents : [ TriggerPath ] @@ -85,8 +50,61 @@ Pileup: { } # define paths EndPath : [ genCountLogger, Output ] + +# define tools + dioGenTool : { + tool_type : DIOGenerator + spectrum : { + spectrumShape : Czarnecki + pdgId : 11 # Czarnecki option in BinnedSpecturm needs pdgId here + elow : 1. #MeV + spectrumResolution : 0.1 #MeV + } + } + + muonCaptureProtonGenTool : { + tool_type : MuCapProtonGenerator + spectrumVariable : kineticEnergy + spectrum : { + spectrumShape : ejectedProtons + nbins: 1000 + } + } + + muonCaptureDeuteronGenTool : { + tool_type : MuCapDeuteronGenerator + spectrumVariable : kineticEnergy + spectrum : { + spectrumShape : ejectedProtons + nbins: 1000 + } + } + + muonCaptureNeutronGenTool : { + tool_type : MuCapNeutronGenerator + spectrumVariable: kineticEnergy + spectrum: { + spectrumShape: tabulated + spectrumFileName: "ConditionsService/data/neutronSpectrum.txt" + } + } + + muonCapturePhotonGenTool : { + tool_type : MuCapPhotonGenerator + spectrum : { + spectrumShape: flat + elow: 0.0 # MeV + ehi: 7.0 # MeV + } + } + + # An example that isn't used in this fcl + #muonCapture1809keVGammaGenTool : { + # tool_type : MuCap1809keVGammaGenerator + #} + } +# define output Pileup.Output.outputCommands : [ "drop *_*_*_*", @sequence::Pileup.KeptProducts] -Pileup.TriggerPath : [ @sequence::Pileup.TriggerSequence ] END_PROLOG diff --git a/JobConfig/beam/proton.fcl b/JobConfig/pileup/proton.fcl similarity index 100% rename from JobConfig/beam/proton.fcl rename to JobConfig/pileup/proton.fcl diff --git a/JobConfig/primary/Calo-cosmic.fcl b/JobConfig/primary/Calo-cosmic.fcl index c255bfc80e..f0b48456a2 100644 --- a/JobConfig/primary/Calo-cosmic.fcl +++ b/JobConfig/primary/Calo-cosmic.fcl @@ -4,7 +4,7 @@ # original author: Ralf Ehrlich, UVA # (based on Dave Brown's CeEndpoint) # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : { module_type : EventGenerator diff --git a/JobConfig/primary/CeEndpoint.fcl b/JobConfig/primary/CeEndpoint.fcl index 809e3ceddd..844a41b96f 100644 --- a/JobConfig/primary/CeEndpoint.fcl +++ b/JobConfig/primary/CeEndpoint.fcl @@ -3,7 +3,7 @@ # # original author: Dave Brown, LBNL # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : @local::CeEndpointGun # set the stops. This should go away with art-based muon stops FIXME! diff --git a/JobConfig/primary/CeMLeadingLog.fcl b/JobConfig/primary/CeMLeadingLog.fcl index 0cc8655f75..2e1b7b1dee 100644 --- a/JobConfig/primary/CeMLeadingLog.fcl +++ b/JobConfig/primary/CeMLeadingLog.fcl @@ -1,7 +1,7 @@ # # Radiative Ce- spectrum, based on doc 7615 spectrum # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : @local::EventGenerator.producers.CeMLeadingLog # set the stops. This should go away with art-based muon stops FIXME! diff --git a/JobConfig/primary/CePLeadingLog.fcl b/JobConfig/primary/CePLeadingLog.fcl index bca1db2625..a895db1ede 100644 --- a/JobConfig/primary/CePLeadingLog.fcl +++ b/JobConfig/primary/CePLeadingLog.fcl @@ -1,7 +1,7 @@ # # Radiative Ce- spectrum, based on doc 7615 spectrum # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : @local::EventGenerator.producers.CePLeadingLog # set the stops. This should go away with art-based muon stops FIXME! diff --git a/JobConfig/primary/CeplusEndpoint.fcl b/JobConfig/primary/CeplusEndpoint.fcl index 69f9b99b18..2c978997da 100644 --- a/JobConfig/primary/CeplusEndpoint.fcl +++ b/JobConfig/primary/CeplusEndpoint.fcl @@ -3,7 +3,7 @@ # # original author: Dave Brown, LBNL # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : @local::CeplusEndpointGun # set the stops. This should go away with art-based muon stops FIXME! diff --git a/JobConfig/primary/DIOtail.fcl b/JobConfig/primary/DIOtail.fcl index e7bc890f9f..bfc56a1dff 100644 --- a/JobConfig/primary/DIOtail.fcl +++ b/JobConfig/primary/DIOtail.fcl @@ -1,7 +1,7 @@ # # Radiative DIO spectrum far tail, based on doc 7615 spectrum # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : @local::EventGenerator.producers.dioalll # set the stops. This should go away with art-based muon stops FIXME! diff --git a/JobConfig/primary/DS-cosmic-nofield.fcl b/JobConfig/primary/DS-cosmic-nofield.fcl index 7cd6491d85..541aeecdf0 100644 --- a/JobConfig/primary/DS-cosmic-nofield.fcl +++ b/JobConfig/primary/DS-cosmic-nofield.fcl @@ -1,7 +1,7 @@ # # cosmic-nofield ray muons produced at a box around the DS without field # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : { module_type : EventGenerator diff --git a/JobConfig/primary/DS-cosmic.fcl b/JobConfig/primary/DS-cosmic.fcl index dbd3380c18..4683701bac 100644 --- a/JobConfig/primary/DS-cosmic.fcl +++ b/JobConfig/primary/DS-cosmic.fcl @@ -4,7 +4,7 @@ # original author: Ralf Ehrlich, UVA # (based on Dave Brown's CeEndpoint) # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : { module_type : EventGenerator diff --git a/JobConfig/primary/Garage-cosmic.fcl b/JobConfig/primary/Garage-cosmic.fcl index af0f21dc99..4f6a60ca9e 100644 --- a/JobConfig/primary/Garage-cosmic.fcl +++ b/JobConfig/primary/Garage-cosmic.fcl @@ -4,7 +4,7 @@ # original author: Ralf Ehrlich, UVA # (based on Dave Brown's CeEndpoint) # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : { module_type : EventGenerator diff --git a/JobConfig/primary/IPA-Michel.fcl b/JobConfig/primary/IPA-Michel.fcl index afa62a7e14..5325453fa2 100644 --- a/JobConfig/primary/IPA-Michel.fcl +++ b/JobConfig/primary/IPA-Michel.fcl @@ -3,7 +3,7 @@ # # original author: Dave Brown, LBNL # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate :{ module_type: StoppedParticleG4Gun diff --git a/JobConfig/primary/primary.fcl b/JobConfig/primary/Primary.fcl similarity index 63% rename from JobConfig/primary/primary.fcl rename to JobConfig/primary/Primary.fcl index d26d6e4611..8a0a38b13d 100644 --- a/JobConfig/primary/primary.fcl +++ b/JobConfig/primary/Primary.fcl @@ -3,25 +3,33 @@ # # original author: Dave Brown, LBNL # +#include "JobConfig/common/prolog.fcl" #include "JobConfig/primary/prolog.fcl" # name all processes the same, to mask any provenance in ensemble creation process_name: Primary # the following will change when we read art stops source: { module_type : EmptyEvent } -services: @local::Services.Sim +services: @local::Common.services physics : { - producers : { @table::Primary.producers } - filters : { @table::Primary.filters } + producers : { + @table::Common.producers + @table::Primary.producers + } + filters : { + @table::Common.filters + @table::Primary.filters + } analyzers : { @table::Primary.analyzers } - TriggerPath : @local::Primary.TriggerPath + TriggerPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, FindMCPrimary ] EndPath : @local::Primary.EndPath + trigger_paths : [ TriggerPath ] + end_paths : [ EndPath ] } outputs : { Output :@local::Primary.Output } # # final configuration # #include "JobConfig/primary/epilog.fcl" -physics.end_paths : [ EndPath ] # needed for generate_fcl # no histogram output services.TFileService.fileName : "/dev/null" # test values; these get overwritten by generate_fcl diff --git a/JobConfig/primary/epilog.fcl b/JobConfig/primary/epilog.fcl index 0e7540dfd5..1f41fb347c 100644 --- a/JobConfig/primary/epilog.fcl +++ b/JobConfig/primary/epilog.fcl @@ -5,7 +5,5 @@ physics.producers.g4run.physics.minRangeRegionCuts: { CalorimeterMother : 0.1} # save the MC Trajectories of primary particles physics.producers.g4run.TrajectoryControl: @local::mu2eg4DefaultTrajectories # extend the sensitive volume list to include passive material (only for primaries) -physics.producers.g4run.SDConfig.enableSD: [@sequence::mu2e.physics.producers.g4run.commonBase.SDConfig.enableSD, stoppingtarget , protonabsorber ] -# patch CRV modules -physics.producers.CrvSteps.stepPointsModuleLabels : ["g4run"] +physics.producers.g4run.SDConfig.enableSD: [@sequence::physics.producers.g4run.SDConfig.enableSD, stoppingtarget , protonabsorber ] diff --git a/JobConfig/primary/flatE.fcl b/JobConfig/primary/flatE.fcl index ad87fd5b66..f91d218440 100644 --- a/JobConfig/primary/flatE.fcl +++ b/JobConfig/primary/flatE.fcl @@ -1,6 +1,6 @@ # generate flat particles from stopped muons and produce digis. this is WITHOUT MIXING -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : { module_type: StoppedParticleReactionGun diff --git a/JobConfig/primary/flatInternalRMC.fcl b/JobConfig/primary/flatInternalRMC.fcl index 0f92dc0d48..7960a008e9 100644 --- a/JobConfig/primary/flatInternalRMC.fcl +++ b/JobConfig/primary/flatInternalRMC.fcl @@ -1,7 +1,7 @@ # # internal RMC with a flat virtual photon energy spectrum # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : @local::EventGenerator.producers.RMCGun # set the stops. This should go away with art-based muon stops FIXME! diff --git a/JobConfig/primary/flatInternalRPC.fcl b/JobConfig/primary/flatInternalRPC.fcl index 86a8414581..9c3f25d873 100644 --- a/JobConfig/primary/flatInternalRPC.fcl +++ b/JobConfig/primary/flatInternalRPC.fcl @@ -1,7 +1,7 @@ # # internal RPC with a flat virtual photon energy spectrum # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : @local::EventGenerator.producers.RPCGun # set the stops. This should go away with art-based muon stops FIXME! diff --git a/JobConfig/primary/flatpigamma.fcl b/JobConfig/primary/flatpigamma.fcl index bb91f97e15..622c30ba26 100644 --- a/JobConfig/primary/flatpigamma.fcl +++ b/JobConfig/primary/flatpigamma.fcl @@ -1,6 +1,6 @@ # flat range of photons from pion stops to study external RPC background -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : { module_type: RPCGun diff --git a/JobConfig/primary/flatproton.fcl b/JobConfig/primary/flatproton.fcl index 08d642e3ca..f8c650f602 100644 --- a/JobConfig/primary/flatproton.fcl +++ b/JobConfig/primary/flatproton.fcl @@ -3,7 +3,7 @@ # # original author: Dave Brown, LBNL # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate : { module_type: StoppedParticleReactionGun diff --git a/JobConfig/primary/prolog.fcl b/JobConfig/primary/prolog.fcl index fbef7aac51..1152c8bd0c 100644 --- a/JobConfig/primary/prolog.fcl +++ b/JobConfig/primary/prolog.fcl @@ -2,7 +2,6 @@ # Prolog to create primary (signal, signal-like or calibration) particles and subsequent detector steps # #include "Mu2eG4/fcl/prolog.fcl" -#include "JobConfig/common/mu2eg4.fcl" #include "fcl/standardServices.fcl" #include "EventGenerator/fcl/prolog.fcl" #include "TrackerMC/fcl/prolog.fcl" @@ -10,18 +9,18 @@ #include "CRVResponse/fcl/prolog.fcl" #include "Filters/fcl/prolog.fcl" #include "Compression/fcl/prolog.fcl" -#include "JobConfig/cosmic/prolog.fcl" # BEGIN_PROLOG Primary: { producers : { - g4run : @local::mu2e.physics.producers.g4run.muons - genCounter: { module_type: GenEventCounter } @table::EventGenerator.producers @table::TrackerMC.StepProducers @table::CaloMC.StepProducers - CrvSteps : @local::CrvSteps + CrvSteps :{ + @table::CrvSteps + stepPointsModuleLabels : ["g4run"] + } compressDetStepMCs : { module_type : CompressDetStepMCs @@ -29,9 +28,10 @@ Primary: { caloShowerStepTag : "CaloShowerStepMaker" crvStepTag : "CrvSteps" simParticleTag : "g4run" - stepPointMCTags : [ "g4run:virtualdetector", "g4run:protonabsorber", "g4run:stoppingtarget" ] mcTrajectoryTag : "g4run" debugLevel : 0 + # save StepPoints in VDs, ProtonAbsorber and ST + stepPointMCTags : [ "g4run:virtualdetector", "g4run:protonabsorber", "g4run:stoppingtarget" ] compressionOptions : @local::DetStepCompression.standardCompression } # the following should be reconfigured to run after step compression once that is working @@ -45,32 +45,28 @@ Primary: { } filters : { -# needed for cosmic rays - g4status: @local::Cosmic.g4status - stepPointMomentumFilter : @local::Cosmic.stepPointMomentumFilter - cosmicFilter : @local::Cosmic.cosmicFilter # default step filter for Sim Primary selection DetStepFilter : { module_type : DetectorStepFilter StrawGasSteps : [ "StrawGasStepMaker" ] CaloShowerSteps : [ "CaloShowerStepMaker" ] - CrvSteps : [ ] + CrvSteps : [ ] # dont filter on CRV for primaries MinimumTrkStepEnergy : 1.0e-6 # 1 ev MinimumCaloStepEnergy : 0.0 MinimumCrvStepEnergy : 1.0e-6 # get a real value from CRV experts FIXME! MinimumPartMom : 80.0 # MeV/c MaximumPartMom : 1e6 # MeV/c - KeepPDG : [-11, 11, -13, 13, -211, 211 ] # electrons and muons and pions: values should be defined in a common config file FIXME - MinimumTrkSteps : 10 - MinimumSumCaloStepE : 50.0 + KeepPDG : [ ] # Loop at steps from all particle types + MinimumTrkSteps : 10 # primary must produce at least this many TrkSteps + MinimumSumCaloStepE : 50.0 # or at least this much calo energy } } - TriggerSequence : [ genCounter, g4run, g4status, + DetStepSequence : [ @sequence::TrackerMC.StepSim, @sequence::CaloMC.StepSim, CrvSteps, - DetStepFilter, compressDetStepMCs, FindMCPrimary ] + DetStepFilter, compressDetStepMCs ] KeptProducts : [ "keep mu2e::StrawGasSteps_compressDetStepMCs_*_*", @@ -105,5 +101,4 @@ Primary: { Primary.EndPath : [ @sequence::Primary.EndSequence, Output ] Primary.Output.outputCommands : [ "drop *_*_*_*", @sequence::Primary.KeptProducts] -Primary.TriggerPath : [ generate, @sequence::Primary.TriggerSequence ] END_PROLOG diff --git a/JobConfig/primary/proton.fcl b/JobConfig/primary/proton.fcl index 772137d7e6..ba9b3a374f 100644 --- a/JobConfig/primary/proton.fcl +++ b/JobConfig/primary/proton.fcl @@ -3,7 +3,7 @@ # # original author: Dave Brown, LBNL # -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" # set the generator physics.producers.generate :{ module_type: StoppedParticleReactionGun diff --git a/Mu2eG4/fcl/prolog.fcl b/Mu2eG4/fcl/prolog.fcl index 40c5019c11..18f3d6fe64 100644 --- a/Mu2eG4/fcl/prolog.fcl +++ b/Mu2eG4/fcl/prolog.fcl @@ -156,7 +156,7 @@ mu2eg4runDefaultSingleStage: { verbosityLevel : 0 enableAllSDs : false # this would activate all SDs listed in StepInstanceName enum # activate minimal set of sensitive detectors used by everybody - enableSD : [ tracker, calorimeter, calorimeterRO, CRV, virtualdetector ] + enableSD : [ tracker, calorimeter, CRV, virtualdetector ] # in the including fcl file set e.g. physics.producers.g4run.SDConfig.enableSD : @erase # whan setting enableAllSDs : true TimeVD: { times: [] } diff --git a/Mu2eG4/geom/geom_common_phase1.txt b/Mu2eG4/geom/geom_common_phase1.txt deleted file mode 100644 index 5ffdd4bc55..0000000000 --- a/Mu2eG4/geom/geom_common_phase1.txt +++ /dev/null @@ -1,9 +0,0 @@ -// A geometry file for using all regular concrete shielding design. -// Most of the geometry is inherited from the existing shielding geometry, except as below. - -// First, the base geometry to start from... -#include "Mu2eG4/geom/geom_common_current.txt" - -// External Shielding -#include "Mu2eG4/geom/ExtShieldUpstream_v06.txt" -#include "Mu2eG4/geom/ExtShieldDownstream_v06.txt" diff --git a/Validation/src/ValGenParticle.cc b/Validation/src/ValGenParticle.cc index 2110771a27..0dd8f10cb7 100644 --- a/Validation/src/ValGenParticle.cc +++ b/Validation/src/ValGenParticle.cc @@ -25,7 +25,7 @@ int mu2e::ValGenParticle::fill(const mu2e::GenParticleCollection & coll, _hVer->Fill(1.0); _hN->Fill(coll.size()); - for(auto sp : coll) { + for(auto const& sp : coll) { _id.fill(sp.pdgId()); double p = sp.momentum().vect().mag(); _hp->Fill(p); From f45c86c21c0886376709dac6ab2bf29b31378e5f Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Sat, 8 May 2021 09:56:05 -0500 Subject: [PATCH 02/40] rename path --- JobConfig/beam/BeamResampler.fcl | 6 +++--- JobConfig/beam/prolog.fcl | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index f1565b9fad..b3492426f5 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -31,16 +31,16 @@ physics: { } analyzers : @local::Common.analyzers # setup paths I need to add TimeMaps and time filtering FIXME - tgtPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, tgtStopFilter] + tgtPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, MuTargetStopFilter] detPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, flashPrefilter, @sequence::Primary.DetStepSequence ] #@sequence::CommonMC.TimeMaps, trigger_paths: [ detPath, tgtPath ] - outPath : [ detectorOutput, tgtStopOutput ] + outPath : [ detectorOutput, MuTargetStopOutput ] end_paths: [outPath] } outputs: { - tgtStopOutput : @local::Beam.outputs.tgtStopOutput + MuTargetStopOutput : @local::Beam.outputs.MuTargetStopOutput detectorOutput : @local::Beam.outputs.detectorOutput } diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index 4684d81dd0..7205425fa3 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -119,7 +119,7 @@ Beam: { vetoParticles: [ "stoppedMuonDaughters" ] } - tgtStopFilter: { + MuTargetStopFilter: { module_type: FilterG4Out mainHitInputs: [] extraHitInputs: [ "g4run:virtualdetector" ] @@ -214,14 +214,14 @@ Beam: { ] } - tgtStopOutput : { + MuTargetStopOutput : { module_type : RootOutput SelectEvents: [tgtPath] outputCommands: [ "drop *_*_*_*", "keep mu2e::GenParticles_*_*_*", "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", - "keep *_tgtStopFilter_*_*" + "keep *_MuTargetStopFilter_*_*" ] fileName : "sim.owner.MuTargetStops.version.sequencer.art" } @@ -230,7 +230,6 @@ Beam: { module_type: RootOutput SelectEvents: [detPath] outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", @sequence::Pileup.KeptProducts From 2578fc9213ae2d1b7c18c9ce4899291f71098988 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Mon, 10 May 2021 23:13:02 -0500 Subject: [PATCH 03/40] Add timing cut and early stream to beam resampling --- CommonMC/fcl/prolog.fcl | 4 -- EventGenerator/fcl/prolog.fcl | 8 --- Filters/src/DetectorStepFilter_module.cc | 23 +++++++- JobConfig/beam/BeamResampler.fcl | 43 ++++++++++---- JobConfig/beam/prolog.fcl | 56 ++++++++++++++++--- .../digitize/{digitize.fcl => Digitize.fcl} | 0 JobConfig/digitize/OffSpill.fcl | 2 +- JobConfig/digitize/OnSpill.fcl | 2 +- JobConfig/primary/Primary.fcl | 2 +- JobConfig/primary/prolog.fcl | 4 +- 10 files changed, 105 insertions(+), 39 deletions(-) rename JobConfig/digitize/{digitize.fcl => Digitize.fcl} (100%) diff --git a/CommonMC/fcl/prolog.fcl b/CommonMC/fcl/prolog.fcl index ceca5a91cd..e1d893b0b8 100644 --- a/CommonMC/fcl/prolog.fcl +++ b/CommonMC/fcl/prolog.fcl @@ -1,8 +1,4 @@ # -*- mode: tcl -*- -#------------------------------------------------------------------------------ -# this file is included by fcl/standardProducers.fcl inside the PROLOG section -#------------------------------------------------------------------------------ - BEGIN_PROLOG # define non-proton GenIDs diff --git a/EventGenerator/fcl/prolog.fcl b/EventGenerator/fcl/prolog.fcl index f8d2e67364..d7e294cf07 100644 --- a/EventGenerator/fcl/prolog.fcl +++ b/EventGenerator/fcl/prolog.fcl @@ -56,14 +56,6 @@ mu2e.IPAMuonStops: { verbosityLevel : 0 } -# Generate Event -generate: { - module_type : EventGenerator - inputfile : "Mu2eG4/test/genconfig_02.txt" - allowReplacement : true - messageOnReplacement : true -} - # provided for consistency in some production scripts dummyGenerator : { module_type : EventGenerator diff --git a/Filters/src/DetectorStepFilter_module.cc b/Filters/src/DetectorStepFilter_module.cc index ece682ca2d..e2b8226cb9 100644 --- a/Filters/src/DetectorStepFilter_module.cc +++ b/Filters/src/DetectorStepFilter_module.cc @@ -7,6 +7,7 @@ // art includes. #include "fhiclcpp/ParameterSet.h" +#include "cetlib_except/exception.h" #include "art/Framework/Core/EDFilter.h" #include "art/Framework/Principal/Event.h" #include "art/Framework/Principal/Run.h" @@ -18,6 +19,7 @@ #include "MCDataProducts/inc/CaloShowerStep.hh" #include "MCDataProducts/inc/CrvStep.hh" #include "MCDataProducts/inc/SimParticle.hh" +#include "Mu2eUtilities/inc/SimParticleTimeOffset.hh" #include namespace mu2e { @@ -50,6 +52,9 @@ namespace mu2e { fhicl::Sequence keepPDG { Name("KeepPDG"), Comment("PDG particle codes to keep") }; + fhicl::Atom minTime { Name("MinimumTime"), Comment("Minimum time for good step (ns since POT)"), -1.0}; + fhicl::Sequence SPTO { Name("TimeOffsets"), Comment("Sim Particle Time Offset Maps"), std::vector () }; + }; using Parameters = art::EDFilter::Table; @@ -68,6 +73,8 @@ namespace mu2e { double minSumCaloE_; unsigned maxNTrk_, maxNCrv_; double maxSumCaloE_; + double minTime_; + SimParticleTimeOffset toff_; // time offsets unsigned nEvt_, nPassed_; }; @@ -86,6 +93,8 @@ namespace mu2e { , maxNTrk_(conf().maxNTrkSteps()) , maxNCrv_(conf().maxNCrvSteps()) , maxSumCaloE_(conf().maxSumCaloStepE()) + , minTime_(conf().minTime()) + , toff_(conf().SPTO()) , nEvt_(0) , nPassed_(0) { @@ -93,9 +102,14 @@ namespace mu2e { for(const auto& trktag : conf().trkSteps()) { trkStepCols_.emplace_back(trktag); consumes(trktag); } for(const auto& calotag : conf().caloSteps()) { caloStepCols_.emplace_back(calotag); consumes(calotag); } for(const auto& crvtag : conf().crvSteps()) { crvStepCols_.emplace_back(crvtag); consumes(crvtag); } + + if(minTime_ > -1.0 && conf().SPTO().size() ==0) + throw cet::exception("Filter")<<"mu2e::DetectorStepFilter: time cut requires time offsets" << std::endl; } bool DetectorStepFilter::filter(art::Event& event) { + if(minTime_ > -1.0)toff_.updateMap(event); + bool selecttrk(false), selectcalo(false), selectcrv(false); ++nEvt_; // Count Trk step from same particle @@ -107,7 +121,8 @@ namespace mu2e { double mom = sgs.momentum().R(); if(sgs.ionizingEdep() > minTrkE_ && mom > minPartM_ && mom < maxPartM_ && - goodParticle(*sgs.simParticle())){ + goodParticle(*sgs.simParticle()) && + (minTime_ < 0.0 || sgs.time() + toff_.totalTimeOffset(sgs.simParticle()) > minTime_)) { auto ifnd = counttrk.find(sgs.simParticle().get()); if(ifnd == counttrk.end()) counttrk.insert(CT::value_type(sgs.simParticle().get(),1)); @@ -131,7 +146,8 @@ namespace mu2e { for(const auto& css : *csscolH ) { if(css.energyDepBirks() > minCaloE_ && css.momentumIn() > minPartM_ && css.momentumIn() < maxPartM_ && - goodParticle(*css.simParticle())){ + goodParticle(*css.simParticle()) && + (minTime_ < 0.0 || css.time() + toff_.totalTimeOffset(css.simParticle()) > minTime_)) { auto ifnd = caloESum.find(css.simParticle().get()); if(ifnd == caloESum.end()) caloESum.insert(CES::value_type(css.simParticle().get(),css.energyDepBirks())); @@ -156,7 +172,8 @@ namespace mu2e { double mom = crvs.startMom().R(); if(crvs.visibleEDep() > minCrvE_ && mom > minPartM_ && mom < maxPartM_ && - goodParticle(*crvs.simParticle())) { + goodParticle(*crvs.simParticle()) && + (minTime_ < 0.0 || crvs.startTime() + toff_.totalTimeOffset(crvs.simParticle()) > minTime_)) { auto ifnd = countcrv.find(crvs.simParticle().get()); if(ifnd == countcrv.end()) countcrv.insert(CC::value_type(crvs.simParticle().get(),1)); diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index b3492426f5..cb46df504e 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -1,5 +1,7 @@ # -# Re-sample particles entering the DS, propagate them, and write out DetectorSteps and target mustops +# Re-sample particles entering the DS, propagate them to the detectors or stopping target, and write out the corresponding flash DetectorSteps and target mustops. +# Note the main flash stream has a time cut to avoid energy far outside the digitization window. A prescaled but otherwise uncut stream is used to +# record the flash peak # # original author: Yuri Oksuzian, 2019 # Updated for MDC2020 (DetectorSteps): D. Brown @@ -23,25 +25,31 @@ physics: { @table::CommonMC.producers @table::Beam.producers @table::Primary.producers + compressEarlyDetStepMCs : @local::Primary.producers.compressDetStepMCs } filters : { @table::Common.filters @table::Beam.filters @table::Pileup.filters + EarlyDetStepFilter : @local::Pileup.filters.DetStepFilter # special instance to select flash without time cuts (prescaled) } - analyzers : @local::Common.analyzers - # setup paths I need to add TimeMaps and time filtering FIXME - tgtPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, MuTargetStopFilter] - detPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, flashPrefilter, - @sequence::Primary.DetStepSequence ] #@sequence::CommonMC.TimeMaps, - - trigger_paths: [ detPath, tgtPath ] - outPath : [ detectorOutput, MuTargetStopOutput ] + analyzers : { + @table::Common.analyzers + } + # setup paths + mustopPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, MuTargetStopFilter] + flashPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, + @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] + earlyFlashPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, EarlyPrescaleFilter, + @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressEarlyDetStepMCs ] + trigger_paths: [ flashPath, earlyFlashPath, mustopPath ] + outPath : [ FlashOutput, EarlyFlashOutput, MuTargetStopOutput ] end_paths: [outPath] } outputs: { MuTargetStopOutput : @local::Beam.outputs.MuTargetStopOutput - detectorOutput : @local::Beam.outputs.detectorOutput + FlashOutput : @local::Beam.outputs.FlashOutput + EarlyFlashOutput : @local::Beam.outputs.EarlyFlashOutput } # Point Mu2eG4 to the pre-simulated data @@ -70,6 +78,21 @@ physics.producers.g4run.Mu2eG4CommonCut:{ } #include "JobConfig/common/epilog.fcl" #include "JobConfig/pileup/epilog.fcl" +physics.producers.compressEarlyDetStepMCs.stepPointMCTags : [ ] +physics.producers.compressEarlyDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression +physics.producers.compressEarlyDetStepMCs.mcTrajectoryTag : "" +physics.producers.compressEarlyDetStepMCs.simParticleTag : "FlashFilter" +# reconfigure StepPoint producers for this job; this avoids double-counting particles +physics.producers.StrawGasStepMaker.SkipTheseStepPoints : "g4run" +physics.producers.StrawGasStepMaker.KeepDeltasModule : "" +physics.producers.CaloShowerStepMaker.caloStepPointCollection : ["FlashFilter:calorimeter"] +physics.producers.CrvSteps.stepPointsModuleLabels : [ "FlashFilter" ] +# tweak compression for this job +physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" +# time cut for the main flash stream +physics.filters.DetStepFilter.MinimumTime : 300 # select energy deposits after the peak of the flash has passed, to keep useless payload down +physics.filters.DetStepFilter.TimeOffsets : [ "protonTimeMap" ] # only proton time map is relevant to this job + # test physics.filters.beamResampler.fileNames: [ "sim.owner.Beam.version.sequencer.art" ] diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index 7205425fa3..8810206b09 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -13,6 +13,8 @@ Beam: { genCounter: { module_type: GenEventCounter } g4run : @local::g4run + + compressPVBeam : { module_type: CompressPhysicalVolumes volumesInput : "g4run" @@ -113,7 +115,7 @@ Beam: { vetoDaughters: [] } - flashPrefilter: { + FlashFilter: { module_type: FilterG4Out mainHitInputs: [ "g4run:tracker", "g4run:calorimeter", "g4run:CRV", "g4run:virtualdetector" ] vetoParticles: [ "stoppedMuonDaughters" ] @@ -132,6 +134,7 @@ Beam: { readMode: "sequential" wrapFiles: true mu2e: { + writeEventIDs : true products: { genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } simParticleMixer: { mixingMap: [ [ "BeamFilter", "" ] ] } @@ -147,6 +150,13 @@ Beam: { } } } + + EarlyPrescaleFilter : { + module_type : PrescaleEvent + nPrescale : 1 + triggerPath : "earlyFlashPath" + triggerFlag : ["PrescaleRandom"] + } } outputs: { @@ -216,30 +226,58 @@ Beam: { MuTargetStopOutput : { module_type : RootOutput - SelectEvents: [tgtPath] + SelectEvents: [mustopPath] outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", + "keep art::EventIDs_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", "keep *_MuTargetStopFilter_*_*" ] fileName : "sim.owner.MuTargetStops.version.sequencer.art" } - detectorOutput : { + FlashOutput : { module_type: RootOutput - SelectEvents: [detPath] + SelectEvents: [flashPath] + outputCommands: [ "keep *_*_*_*"] outputCommands: [ "drop *_*_*_*", + "keep art::EventIDs_*_*_*", "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", + "keep mu2e::SimParticleart::Ptrdoublestd::map_*_*_*", @sequence::Pileup.KeptProducts ] fileName: "dts.owner.BeamFlash.version.sequencer.art" - } - - +# Sadly, I have to replicate the content of Pileup.KeptProducts below, since FCL is not a language and won't allow me to define a variable. +# This will be a source of extra maintenance and likely an error sounce in the future. +# + EarlyFlashOutput : { + module_type: RootOutput + SelectEvents: [earlyFlashPath] + outputCommands: [ "drop *_*_*_*", + "keep art::EventIDs_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep mu2e::StrawGasSteps_compressEarlyDetStepMCs_*_*", + "keep mu2e::CaloShowerSteps_compressEarlyDetStepMCs_*_*", + "keep mu2e::CrvSteps_compressEarlyDetStepMCs_*_*", + "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_virtualdetector_*", + "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_protonabsorber_*", + "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_stoppingtarget_*", + "keep mu2e::StatusG4_*_*_*", + "keep mu2e::SimParticlemv_compressEarlyDetStepMCs_*_*", + "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_compressEarlyDetStepMCs_*_*", + "keep mu2e::GenParticles_compressEarlyDetStepMCs_*_*", + "keep mu2e::PrimaryParticle_*_*_*", + "keep mu2e::CosmicLivetime_*_*_*", + "keep art::TriggerResults_*_*_*", + "keep mu2e::GenEventCount_*_*_*" + ] + fileName: "dts.owner.EarlyBeamFlash.version.sequencer.art" + } } # define some paths; these can be mixed and matches as art guarantees no duplicate running diff --git a/JobConfig/digitize/digitize.fcl b/JobConfig/digitize/Digitize.fcl similarity index 100% rename from JobConfig/digitize/digitize.fcl rename to JobConfig/digitize/Digitize.fcl diff --git a/JobConfig/digitize/OffSpill.fcl b/JobConfig/digitize/OffSpill.fcl index fd6ca8cbae..59b4a42efb 100644 --- a/JobConfig/digitize/OffSpill.fcl +++ b/JobConfig/digitize/OffSpill.fcl @@ -1,7 +1,7 @@ # # Digitization specialization for off-spill simulations # -#include "JobConfig/digitize/digitize.fcl" +#include "JobConfig/digitize/Digitize.fcl" # add trigger paths #include "gen/fcl/Trigger/OffSpillTrigMenu/OffSpillTrigMenu.fcl" # setthe event timing for OffSpill diff --git a/JobConfig/digitize/OnSpill.fcl b/JobConfig/digitize/OnSpill.fcl index 39421ffdf8..453b74cb7c 100644 --- a/JobConfig/digitize/OnSpill.fcl +++ b/JobConfig/digitize/OnSpill.fcl @@ -1,7 +1,7 @@ # # Digitization specialization for on-spill simulations # -#include "JobConfig/digitize/digitize.fcl" +#include "JobConfig/digitize/Digitize.fcl" # add trigger paths #include "gen/fcl/Trigger/OnSpillTrigMenu/OnSpillTrigMenu.fcl" # set the event timing for Onspill diff --git a/JobConfig/primary/Primary.fcl b/JobConfig/primary/Primary.fcl index 8a0a38b13d..0090465aee 100644 --- a/JobConfig/primary/Primary.fcl +++ b/JobConfig/primary/Primary.fcl @@ -20,7 +20,7 @@ physics : { @table::Primary.filters } analyzers : { @table::Primary.analyzers } - TriggerPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, FindMCPrimary ] + TriggerPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence, FindMCPrimary ] EndPath : @local::Primary.EndPath trigger_paths : [ TriggerPath ] end_paths : [ EndPath ] diff --git a/JobConfig/primary/prolog.fcl b/JobConfig/primary/prolog.fcl index 1152c8bd0c..abcc08dd57 100644 --- a/JobConfig/primary/prolog.fcl +++ b/JobConfig/primary/prolog.fcl @@ -65,8 +65,8 @@ Primary: { DetStepSequence : [ @sequence::TrackerMC.StepSim, @sequence::CaloMC.StepSim, - CrvSteps, - DetStepFilter, compressDetStepMCs ] + CrvSteps ] + DetStepFilterSequence : [ DetStepFilter, compressDetStepMCs ] KeptProducts : [ "keep mu2e::StrawGasSteps_compressDetStepMCs_*_*", From 125039aff7359470b228a06281458b73a8a61cb1 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Tue, 11 May 2021 11:20:20 -0500 Subject: [PATCH 04/40] Get CRVNeutral resampling to work. Small cleanups --- JobConfig/beam/BeamResampler.fcl | 12 ++- JobConfig/beam/CRVNeutralsResampler.fcl | 95 +++++++++++++++++++++++ JobConfig/beam/prolog.fcl | 26 ++++++- JobConfig/pileup/Pileup.fcl | 9 +-- JobConfig/pileup/mustop.fcl | 13 ++-- TrackerMC/src/MakeStrawGasSteps_module.cc | 26 ++----- 6 files changed, 145 insertions(+), 36 deletions(-) create mode 100644 JobConfig/beam/CRVNeutralsResampler.fcl diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index cb46df504e..5dbb9af675 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -48,8 +48,14 @@ physics: { } outputs: { MuTargetStopOutput : @local::Beam.outputs.MuTargetStopOutput - FlashOutput : @local::Beam.outputs.FlashOutput - EarlyFlashOutput : @local::Beam.outputs.EarlyFlashOutput + FlashOutput : { + @table::Beam.outputs.FlashOutput + fileName: "dts.owner.BeamFlash.version.sequencer.art" + } + EarlyFlashOutput : { + @table::Beam.outputs.EarlyFlashOutput + fileName: "dts.owner.EarlyBeamFlash.version.sequencer.art" + } } # Point Mu2eG4 to the pre-simulated data @@ -81,7 +87,7 @@ physics.producers.g4run.Mu2eG4CommonCut:{ physics.producers.compressEarlyDetStepMCs.stepPointMCTags : [ ] physics.producers.compressEarlyDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression physics.producers.compressEarlyDetStepMCs.mcTrajectoryTag : "" -physics.producers.compressEarlyDetStepMCs.simParticleTag : "FlashFilter" +physics.producers.compressEarlyDetStepMCs.simParticleTag : "g4run" # reconfigure StepPoint producers for this job; this avoids double-counting particles physics.producers.StrawGasStepMaker.SkipTheseStepPoints : "g4run" physics.producers.StrawGasStepMaker.KeepDeltasModule : "" diff --git a/JobConfig/beam/CRVNeutralsResampler.fcl b/JobConfig/beam/CRVNeutralsResampler.fcl new file mode 100644 index 0000000000..356a72ec7a --- /dev/null +++ b/JobConfig/beam/CRVNeutralsResampler.fcl @@ -0,0 +1,95 @@ +# +# Re-sample (mostly neutral) particles exiting the TS or PS headed towards the CRV, and write out the corresponding flash DetectorSteps +# Note the main flash stream has a time cut to avoid energy far outside the digitization window. A prescaled but otherwise uncut stream is used to +# record the flash peak +# +# Updated for MDC2020 (DetectorSteps): D. Brown + +#include "CommonMC/fcl/prolog.fcl" +#include "JobConfig/common/prolog.fcl" +#include "JobConfig/beam/prolog.fcl" +#include "JobConfig/primary/prolog.fcl" +#include "JobConfig/pileup/prolog.fcl" + +process_name: BeamResampler + +source : { + module_type : EmptyEvent + maxEvents : @nil +} + +services : @local::Common.services +physics: { + producers : { + @table::CommonMC.producers + @table::Beam.producers + @table::Primary.producers + compressEarlyDetStepMCs : @local::Primary.producers.compressDetStepMCs + } + filters : { + @table::Common.filters + @table::Beam.filters + @table::Pileup.filters + EarlyDetStepFilter : @local::Pileup.filters.DetStepFilter # special instance to select flash without time cuts (prescaled) + } + analyzers : { + @table::Common.analyzers + } + # setup paths + flashPath : [ genCounter, crvResampler, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] + earlyFlashPath : [ genCounter, crvResampler, @sequence::Common.g4Sequence, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressEarlyDetStepMCs ] + trigger_paths: [ flashPath, earlyFlashPath ] + outPath : [ FlashOutput, EarlyFlashOutput ] + end_paths: [outPath] +} +outputs: { + FlashOutput : { + @table::Beam.outputs.FlashOutput + fileName: "dts.owner.CRVFlash.version.sequencer.art" + } + EarlyFlashOutput : { + @table::Beam.outputs.EarlyFlashOutput + fileName: "dts.owner.EarlyCRVFlash.version.sequencer.art" + } +} + +# Point Mu2eG4 to the pre-simulated data +physics.producers.g4run.inputs: { + primaryType: "StepPoints" + primaryTag: "crvResampler:CRVNeutrals" + inputMCTrajectories: "" + + simStageOverride: 1 + inputPhysVolumeMultiInfo: "crvResampler" + updateEventLevelVolumeInfos: { + input: "crvResampler:eventlevel" + outInstance: "eventlevel" + } +} +# Kill stuck e+/e- +physics.producers.g4run.Mu2eG4CommonCut:{ + type: intersection + pars: + [ + {type: intersection pars: [ { type: kineticEnergy cut: 1.0 }, { type: pdgId pars: [ 11, -11] }]}, + {type: inVolume pars: [ TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, DS2Vacuum, HallAir ]} + ] +} +#include "JobConfig/common/epilog.fcl" +#include "JobConfig/pileup/epilog.fcl" +physics.producers.compressEarlyDetStepMCs.stepPointMCTags : [ ] +physics.producers.compressEarlyDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression +physics.producers.compressEarlyDetStepMCs.mcTrajectoryTag : "" +#physics.producers.compressEarlyDetStepMCs.simParticleTag : "g4run" +physics.producers.StrawGasStepMaker.KeepDeltasModule : "" +#physics.producers.CaloShowerStepMaker.caloStepPointCollection : ["g4run:calorimeter"] +#physics.producers.CrvSteps.stepPointsModuleLabels : [ "g4run" ] +# tweak compression for this job +#physics.producers.compressDetStepMCs.simParticleTag : "g4runr" +# time cut for the main flash stream +physics.filters.DetStepFilter.MinimumTime : 300 # select energy deposits after the peak of the flash has passed, to keep useless payload down +physics.filters.DetStepFilter.TimeOffsets : [ "protonTimeMap" ] # only proton time map is relevant to this job + +# test +physics.filters.crvResampler.fileNames: [ "sim.owner.CRVNeutrals.version.sequencer.art" ] + diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index 8810206b09..529b50ab11 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -151,9 +151,31 @@ Beam: { } } + crvResampler: { + module_type: ResamplingMixer + fileNames: @nil + readMode: "sequential" + wrapFiles: true + mu2e: { + writeEventIDs : true + products: { + genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } + simParticleMixer: { mixingMap: [ [ "CRVNeutralsFilter", "" ] ] } + stepPointMCMixer: { mixingMap: [ + [ "CRVNeutralsFilter:CRVNeutrals", ":" ] + ] } + + volumeInfoMixer: { + srInput: "compressPVCRVNeutrals" + evtOutInstanceName: "eventlevel" + } + } + } + } + EarlyPrescaleFilter : { module_type : PrescaleEvent - nPrescale : 1 + nPrescale : 1000 triggerPath : "earlyFlashPath" triggerFlag : ["PrescaleRandom"] } @@ -248,7 +270,6 @@ Beam: { "keep mu2e::SimParticleart::Ptrdoublestd::map_*_*_*", @sequence::Pileup.KeptProducts ] - fileName: "dts.owner.BeamFlash.version.sequencer.art" } # Sadly, I have to replicate the content of Pileup.KeptProducts below, since FCL is not a language and won't allow me to define a variable. @@ -276,7 +297,6 @@ Beam: { "keep art::TriggerResults_*_*_*", "keep mu2e::GenEventCount_*_*_*" ] - fileName: "dts.owner.EarlyBeamFlash.version.sequencer.art" } } diff --git a/JobConfig/pileup/Pileup.fcl b/JobConfig/pileup/Pileup.fcl index baa8f7947a..d66e5ba39b 100644 --- a/JobConfig/pileup/Pileup.fcl +++ b/JobConfig/pileup/Pileup.fcl @@ -9,7 +9,7 @@ process_name : Pileup source: { module_type : EmptyEvent } -services: { @table::Services.Sim } +services: { @table::Common.services } physics: { producers : { @table::Common.producers @@ -20,14 +20,13 @@ physics: { @table::Common.filters @table::Pileup.filters } - analyzers : { @table::Pileup.analyzers } - TriggerPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, @local::Primary::DetStepSequence ] + analyzers : { @table::Common.analyzers } + TriggerPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] EndPath : @local::Pileup.EndPath trigger_paths : [ TriggerPath ] end_paths : [ EndPath ] } outputs: { Output : @local::Pileup.Output } +#include "JobConfig/common/epilog.fcl" #include "JobConfig/primary/epilog.fcl" #include "JobConfig/pileup/epilog.fcl" -#include "JobConfig/common/epilog.fcl" - diff --git a/JobConfig/pileup/mustop.fcl b/JobConfig/pileup/mustop.fcl index 321d7cc4be..faa444737d 100644 --- a/JobConfig/pileup/mustop.fcl +++ b/JobConfig/pileup/mustop.fcl @@ -7,15 +7,14 @@ physics.producers.generate: { module_type: MuStopProductsGun verbosityLevel : 1 stops : @local::mu2e.tgtMuonStops - captureProducts : [ @local.Pileup::muonCaptureProtonGenTool, - @local.Pileup::muonCaptureDeuteronGenTool, - @local.Pileup::muonCaptureNeutronGenTool, - @local.Pileup::muonCapturePhotonGenTool + captureProducts : [ @local::Pileup.muonCaptureProtonGenTool, + @local::Pileup.muonCaptureDeuteronGenTool, + @local::Pileup.muonCaptureNeutronGenTool, + @local::Pileup.muonCapturePhotonGenTool ] - decayProducts : [ @local.Pileup::dioGenTool ] + decayProducts : [ @local::Pileup.dioGenTool ] } # set the stops. This should go away with art-based muon stops FIXME! physics.producers.generate.stops.inputFiles : [ "mergedMuonStops/nts.mu2e.DS-TGTstops.MDC2018a.001002_00000000.root" ] - -services.TFileService.fileName: "/dev/null" +# define the output file outputs.Output.fileName: "dts.owner.mustop.version.sequencer.art" diff --git a/TrackerMC/src/MakeStrawGasSteps_module.cc b/TrackerMC/src/MakeStrawGasSteps_module.cc index 5b6b4de99e..94327dbc52 100644 --- a/TrackerMC/src/MakeStrawGasSteps_module.cc +++ b/TrackerMC/src/MakeStrawGasSteps_module.cc @@ -53,12 +53,6 @@ namespace mu2e { Comment("Compress short delta-rays into the primary step"),true}; fhicl::Atom maxDeltaLength{ Name("MaxDeltaLength"), Comment("Maximum step length for a delta ray to be compressed (mm)"),0.5}; - fhicl::Atom radiusTolerance{ Name("RadiusTolerance"), - Comment("Tolerance to accept a point outside the straw radius (mm) "),0.5}; - fhicl::Atom parabolicRotation{ Name("parabolicRotation"), - Comment("Maximum bending rotation to use parabolic end estimation (radians)"),0.15}; - fhicl::Atom curlRotation{ Name("curlRotation"), - Comment("Minimum bending rotation to use curl end estimation (radians)"),2.0}; fhicl::Atom minionBG{ Name("minionBetaGamma"), Comment("Minimum beta*gamma to consider a particle minimmum-ionizing"),0.5}; fhicl::Atom minionKE{ Name("minionKineticEnergy"), @@ -67,8 +61,6 @@ namespace mu2e { Comment("Maximum bend radius to straw radius ratio to consider a particle a curler"),1.0}; fhicl::Atom lineRatio{ Name("LineRatio"), Comment("Minimum bend radius to straw radius ratio to consider a particle path a line (mm)"),10.0}; - fhicl::Atom csize{ Name("OutputCollectionSize"), - Comment("Estimated size of output collection"), 2000}; fhicl::Atom trackerSteps { Name("trackerStepPoints"), Comment("Tracker StepPointMC Instance name"),"tracker"}; fhicl::Atom stepsToSkip { Name("SkipTheseStepPoints"), @@ -102,11 +94,11 @@ namespace mu2e { void fillStepDiag(Straw const& straw, StrawGasStep const& sgs, SPMCPV const& spmcptrs); int _debug, _diag; bool _combineDeltas, _allAssns; - float _maxDeltaLen, _radtol, _parrot, _curlrot; + float _maxDeltaLen; float _minionBG, _minionKE; float _curlfac, _linefac; float _curlmom, _linemom; - unsigned _csize, _ssize; + unsigned _ssize; string _keepDeltas; // StepPointMC selector // This selector will select only data products with the given instance name. @@ -133,14 +125,10 @@ namespace mu2e { _combineDeltas(config().combineDeltas()), _allAssns(config().allStepsAssns()), _maxDeltaLen(config().maxDeltaLength()), - _radtol(config().radiusTolerance()), - _parrot(config().parabolicRotation()), - _curlrot(config().curlRotation()), _minionBG(config().minionBG()), _minionKE(config().minionKE()), _curlfac(config().curlRatio()), _linefac(config().lineRatio()), - _csize(config().csize()), _ssize(config().startSize()), _keepDeltas(config().keepDeltas()), _selector{art::ProductInstanceNameSelector(config().trackerSteps()) && @@ -207,7 +195,6 @@ namespace mu2e { TrackerStatus const& trackerStatus = _trackerStatus_h.get(event.id()); // create output unique_ptr sgsc(new StrawGasStepCollection); - sgsc->reserve(_csize); unique_ptr sgsa(new StrawGasStepAssns); // needed for making Ptrs auto StrawGasStepCollectionPID = event.getProductID(); @@ -231,12 +218,15 @@ namespace mu2e { if(stepsHandles.empty()){ throw cet::exception("SIM")<<"mu2e::MakeStrawGasSteps: No StepPointMC collections found for tracker" << endl; } - // diagnostic counters - unsigned nspmcs(0), nspss(0); - // Loop over StepPointMC collections + // set initial container size + unsigned nspss(0), nspmcs(0); for( auto const& handle : stepsHandles) { StepPointMCCollection const& steps(*handle); nspmcs += steps.size(); + } + sgsc->reserve(nspmcs); + // Loop over StepPointMC collections + for( auto const& handle : stepsHandles) { // see if we should compress deltas from this collection bool dcomp = _combineDeltas && (handle.provenance()->moduleLabel() != _keepDeltas); if(_debug > 1){ From ae72bc242992f6763831948f69571b352a2a8d0e Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Tue, 11 May 2021 12:39:25 -0500 Subject: [PATCH 05/40] Migrate conditions_01.txt and globalConstants_01.txt out of Mu2eG4/test --- Analyses/fcl/PionMomentumAnalyzer.fcl | 4 ++-- Analyses/fcl/pbars1hist.fcl | 4 ++-- Analyses/fcl/simParticleAnalyzer.fcl | 4 ++-- Analyses/test/ConversionEnergyLoss.fcl | 4 ++-- Analyses/test/InteractiveRoot.fcl | 4 ++-- Analyses/test/InteractiveRoot2.fcl | 4 ++-- Analyses/test/SelectiveStepPtPrinter_g4s1.fcl | 4 ++-- Analyses/test/TVirtDebug.fcl | 4 ++-- Analyses/test/TestTO.fcl | 2 +- Analyses/test/cosmicFilter.fcl | 4 ++-- Analyses/test/extmon_uci_readback.fcl | 4 ++-- Analyses/test/genMixReco.fcl | 4 ++-- Analyses/test/histforpabs.fcl | 4 ++-- Analyses/test/hitDisplay.fcl | 4 ++-- Analyses/test/isoRPCtest.fcl | 4 ++-- Analyses/test/materailsPropStudy.fcl | 4 ++-- Analyses/test/mixPointsDump.fcl | 4 ++-- Analyses/test/printStrawHits.fcl | 4 ++-- Analyses/test/printTrackerGeom.fcl | 4 ++-- Analyses/test/psVacuum_readback.fcl | 4 ++-- Analyses/test/readCaloDigi.fcl | 4 ++-- Analyses/test/readMCTrajectories.fcl | 4 ++-- Analyses/test/readStoppedPis.fcl | 4 ++-- Analyses/test/readTrackCluster.fcl | 4 ++-- Analyses/test/readback0.fcl | 4 ++-- Analyses/test/simParticleCheck00.fcl | 4 ++-- Analyses/test/simParticlesWithHitsExample.fcl | 4 ++-- Analyses/test/stoppingTarget00.fcl | 4 ++-- Analyses/test/transportMuonStudy.fcl | 4 ++-- .../test/transportMuonStudy_onlyTransport.fcl | 4 ++-- Analyses/test/vd_readStage2.fcl | 4 ++-- Analyses/test/vd_readback.fcl | 4 ++-- BFieldGeom/test/makeBinaryMaps.fcl | 4 ++-- BFieldGeom/test/readBinaryMaps.fcl | 4 ++-- BFieldTest/test/BFieldSymmetry.fcl | 4 ++-- BFieldTest/test/BFieldTest.fcl | 4 ++-- .../efficiencyCheck/CRV_Efficiency_check.fcl | 4 ++-- .../singleCounter/dicounter_across.fcl | 4 ++-- CRVResponse/singleCounter/singleCounter.fcl | 4 ++-- .../singleCounter/singleCounter_across.fcl | 4 ++-- .../singleCounter/singleCounter_darkNoise.fcl | 4 ++-- .../singleCounter/singleCounter_point.fcl | 4 ++-- CRVResponse/singleModule/singleModule.fcl | 4 ++-- CRVResponse/test/CRVResponseDAQ.fcl | 4 ++-- CRVResponse/test/CRVResponsePlot_v05.fcl | 4 ++-- CRVResponse/test/CRVResponseReco.fcl | 4 ++-- ...CRVResponse_RadiationBackgroundStudies.fcl | 4 ++-- CRVResponse/test/CRVResponse_v05.fcl | 4 ++-- CRVResponse/test/CRVResponse_v07.fcl | 4 ++-- CalPatRec/test/calPatRec.fcl | 4 ++-- CalPatRec/test/calPatRec_01.fcl | 4 ++-- CalPatRec/test/calPatRec_02.fcl | 4 ++-- CalPatRec/test/calPatRec_display.fcl | 4 ++-- CalPatRec/test/calPatRec_display_cnv00502.fcl | 4 ++-- CalPatRec/test/calPatRec_display_read.fcl | 4 ++-- CalPatRec/test/deltaFinder_debug.fcl | 4 ++-- CalPatRec/test/deltaFinder_debug_ce.fcl | 4 ++-- CalPatRec/test/deltaFinder_test.fcl | 4 ++-- CalPatRec/test/mergePatRec.fcl | 4 ++-- CalPatRec/test/mergePatRec_02.fcl | 4 ++-- CalPatRec/test/mergePatRec_03.fcl | 4 ++-- CalPatRec/test/mergePatRec_display.fcl | 4 ++-- CalPatRec/test/mergePatRec_display_read.fcl | 4 ++-- CalPatRec/test/printTrackerNumerology.fcl | 4 ++-- CalPatRec/test/trkPatRec_01.fcl | 4 ++-- CalPatRec/test/trkPatRec_02.fcl | 4 ++-- CalPatRec/test/trkPatRec_display.fcl | 4 ++-- CalPatRec/test/trkPatRec_display_read.fcl | 4 ++-- CaloCluster/test/CaloClusterProduction.fcl | 4 ++-- CaloCluster/test/ClusterTrajectory.fcl | 4 ++-- CaloCluster/test/readCaloCluster.fcl | 4 ++-- CaloCluster/test/readCaloClusterEff.fcl | 4 ++-- .../test/readCaloClusterEnergyResolMap.fcl | 4 ++-- CaloCluster/test/readCogRecFunc.fcl | 4 ++-- CaloCluster/test/readCrystalHit.fcl | 4 ++-- CaloCluster/test/readOffSetCog.fcl | 4 ++-- EventGenerator/fcl/cryTest.fcl | 4 ++-- EventGenerator/test/FromStepPointMCs.fcl | 2 +- EventGenerator/test/ceLeadingLog_test.fcl | 4 ++-- EventGenerator/test/ceMEndpoint_test.fcl | 4 ++-- EventGenerator/test/ceMLeadingLog_test.fcl | 4 ++-- EventGenerator/test/cePEndpoint_test.fcl | 4 ++-- EventGenerator/test/cePLeadingLog_test.fcl | 4 ++-- EventGenerator/test/corsikaTest.fcl | 4 ++-- .../test/g4test_FromStepPointMCs.fcl | 4 ++-- EventGenerator/test/rpc_int_test.fcl | 4 ++-- EventMixing/test/inspectMixed.fcl | 4 ++-- EventMixing/test/inspectUnMixed.fcl | 4 ++-- EventMixing/test/mixProducer_01.fcl | 4 ++-- .../test/EMFBoxFluxAnalyzer.fcl | 2 +- .../test/EMFRoomFluxAnalyzer.fcl | 2 +- ExtinctionMonitorFNAL/test/digiDefsCommon.fcl | 4 ++-- ExtinctionMonitorFNAL/test/digiTuning.fcl | 4 ++-- .../test/emfRecoTrackAnalysis.fcl | 4 ++-- .../test/extMonFNALDefsCommon.fcl | 4 ++-- .../test/g4detectorDefsCommon.fcl | 4 ++-- .../test/g4s1_channelTest.fcl | 4 ++-- .../test/g4s1_emfMARSRoomHistos.fcl | 2 +- ExtinctionMonitorFNAL/test/recoDefsCommon.fcl | 4 ++-- ExtinctionMonitorFNAL/test/trajectoryIn.fcl | 4 ++-- JobConfig/beam/DS_pions.fcl | 4 ++-- JobConfig/beam/TGTpionstops.fcl | 4 ++-- JobConfig/beam/TS-CRV.fcl | 4 ++-- JobConfig/beam/beam_test_4_replicated.fcl | 2 +- JobConfig/cosmic/filterStage1.fcl | 4 ++-- JobConfig/extmon/extmonbeam_g4s2.fcl | 4 ++-- JobConfig/pbar/resample_vertex_s1.fcl | 4 ++-- JobConfig/pbar/resample_vertex_s2.fcl | 4 ++-- JobConfig/pbar/vertex_s0.fcl | 4 ++-- JobConfig/pbar/vertex_s1.fcl | 4 ++-- JobConfig/pions/pions_g4s1.fcl | 4 ++-- JobConfig/pions/pions_g4s2.fcl | 4 ++-- JobConfig/pions/pions_g4s3.fcl | 4 ++-- JobConfig/pions/pions_g4s4_IntConv.fcl | 4 ++-- JobConfig/pions/pions_g4s4_RPC.fcl | 4 ++-- JobConfig/pions/pions_nts3tgtstops.fcl | 4 ++-- JobConfig/primary/Primary.fcl | 2 +- JobConfig/primary/prolog.fcl | 1 + .../MuonTransportSingleStage.fcl | 4 ++-- .../MuonTransport/MuonTransportStage1.fcl | 4 ++-- .../MuonTransport/MuonTransportStage2.fcl | 4 ++-- JobConfig/validation/mixPointsDump.fcl | 4 ++-- .../validation/psEnclosureBeamWindow.fcl | 4 ++-- .../validation/psEnclosureExtMonWindow.fcl | 4 ++-- Mu2eG4/fcl/iontest_g4s2.fcl | 4 ++-- Mu2eG4/fcl/rantest.fcl | 4 ++-- Mu2eG4/fcl/replayWithSkip.fcl | 4 ++-- ParticleID/test/test.fcl | 4 ++-- TrackCaloMatching/test/caloMatching.fcl | 4 ++-- TrackCaloMatching/test/readCaloMatching.fcl | 4 ++-- TrackCaloMatching/test/readExtrapol.fcl | 4 ++-- TrackCaloMatching/test/trkExtrapol.fcl | 4 ++-- TrkExt/test/TrkExt.fcl | 4 ++-- TrkFilters/fcl/ReadDigisCalo.fcl | 4 ++-- TrkFilters/fcl/TTDigis.fcl | 4 ++-- Validation/fcl/ceSimReco.fcl | 20 ++++++++++--------- fcl/standardServices.fcl | 4 ++-- 137 files changed, 275 insertions(+), 272 deletions(-) diff --git a/Analyses/fcl/PionMomentumAnalyzer.fcl b/Analyses/fcl/PionMomentumAnalyzer.fcl index 929818ec52..56967404e5 100644 --- a/Analyses/fcl/PionMomentumAnalyzer.fcl +++ b/Analyses/fcl/PionMomentumAnalyzer.fcl @@ -8,8 +8,8 @@ source: { module_type: RootInput } services: { message: @local::default_message TFileService: { fileName: "nts.owner.pionMomentum.ver.seq.root" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService: { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService: { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } } diff --git a/Analyses/fcl/pbars1hist.fcl b/Analyses/fcl/pbars1hist.fcl index ef84f7e5f4..ec2e29a232 100644 --- a/Analyses/fcl/pbars1hist.fcl +++ b/Analyses/fcl/pbars1hist.fcl @@ -8,8 +8,8 @@ source: { module_type: RootInput } services: { message: @local::default_message TFileService: { fileName: "pbars1hist.root" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService: { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService: { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } } diff --git a/Analyses/fcl/simParticleAnalyzer.fcl b/Analyses/fcl/simParticleAnalyzer.fcl index cc5a455cae..e4518860f1 100644 --- a/Analyses/fcl/simParticleAnalyzer.fcl +++ b/Analyses/fcl/simParticleAnalyzer.fcl @@ -9,8 +9,8 @@ process_name : SimParticleAnalyzer services : { message : @local::default_message GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService :{ conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService :{ conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } physics : diff --git a/Analyses/test/ConversionEnergyLoss.fcl b/Analyses/test/ConversionEnergyLoss.fcl index eb492eb8a4..6179094e16 100644 --- a/Analyses/test/ConversionEnergyLoss.fcl +++ b/Analyses/test/ConversionEnergyLoss.fcl @@ -47,10 +47,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } # close of services block diff --git a/Analyses/test/InteractiveRoot.fcl b/Analyses/test/InteractiveRoot.fcl index c726db5484..0174a4e5eb 100644 --- a/Analyses/test/InteractiveRoot.fcl +++ b/Analyses/test/InteractiveRoot.fcl @@ -25,8 +25,8 @@ services : { TFileService : { fileName : "interactiveRoot.root" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } physics : { diff --git a/Analyses/test/InteractiveRoot2.fcl b/Analyses/test/InteractiveRoot2.fcl index ab53bcca21..c21636cabf 100644 --- a/Analyses/test/InteractiveRoot2.fcl +++ b/Analyses/test/InteractiveRoot2.fcl @@ -25,8 +25,8 @@ services : { TFileService : { fileName : "interactiveRoot.root" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } physics : { diff --git a/Analyses/test/SelectiveStepPtPrinter_g4s1.fcl b/Analyses/test/SelectiveStepPtPrinter_g4s1.fcl index 19189b98bd..4cccf6ac21 100644 --- a/Analyses/test/SelectiveStepPtPrinter_g4s1.fcl +++ b/Analyses/test/SelectiveStepPtPrinter_g4s1.fcl @@ -22,8 +22,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "Mu2eG4/geom/geom_common_current.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds Mu2eG4Helper : { } } diff --git a/Analyses/test/TVirtDebug.fcl b/Analyses/test/TVirtDebug.fcl index 5f6379b700..6e4c15e9bd 100644 --- a/Analyses/test/TVirtDebug.fcl +++ b/Analyses/test/TVirtDebug.fcl @@ -20,8 +20,8 @@ services : { TFileService : { fileName : "readback.root" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } physics : { diff --git a/Analyses/test/TestTO.fcl b/Analyses/test/TestTO.fcl index 12c66f8cdc..9fe9b87b52 100644 --- a/Analyses/test/TestTO.fcl +++ b/Analyses/test/TestTO.fcl @@ -38,7 +38,7 @@ services : conditionsfile : "Mu2eG4/test/conditions_01_it.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/Analyses/test/cosmicFilter.fcl b/Analyses/test/cosmicFilter.fcl index d99fa0acb4..7c23c0580e 100644 --- a/Analyses/test/cosmicFilter.fcl +++ b/Analyses/test/cosmicFilter.fcl @@ -34,10 +34,10 @@ services : { } ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } diff --git a/Analyses/test/extmon_uci_readback.fcl b/Analyses/test/extmon_uci_readback.fcl index a663538d0d..e792d9bdb9 100644 --- a/Analyses/test/extmon_uci_readback.fcl +++ b/Analyses/test/extmon_uci_readback.fcl @@ -33,10 +33,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/Analyses/test/genMixReco.fcl b/Analyses/test/genMixReco.fcl index 60eacfff65..f7c88908a3 100644 --- a/Analyses/test/genMixReco.fcl +++ b/Analyses/test/genMixReco.fcl @@ -43,8 +43,8 @@ services : { # Mu2e services GeometryService : { inputFile : "JobConfig/TDR/geom_MothersToHits.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } BTrkHelper : @local::BTrkHelperDefault SeedService : @local::automaticSeeds diff --git a/Analyses/test/histforpabs.fcl b/Analyses/test/histforpabs.fcl index d15bf28c77..a3b94ffb43 100644 --- a/Analyses/test/histforpabs.fcl +++ b/Analyses/test/histforpabs.fcl @@ -40,10 +40,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } # close of services block diff --git a/Analyses/test/hitDisplay.fcl b/Analyses/test/hitDisplay.fcl index eb87018ab4..f5a56b45a0 100644 --- a/Analyses/test/hitDisplay.fcl +++ b/Analyses/test/hitDisplay.fcl @@ -38,10 +38,10 @@ services : } ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault } # close of services block diff --git a/Analyses/test/isoRPCtest.fcl b/Analyses/test/isoRPCtest.fcl index 974092cec4..aadc47c768 100644 --- a/Analyses/test/isoRPCtest.fcl +++ b/Analyses/test/isoRPCtest.fcl @@ -45,10 +45,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } # close of services block physics : diff --git a/Analyses/test/materailsPropStudy.fcl b/Analyses/test/materailsPropStudy.fcl index 9406919a3b..81af64256a 100644 --- a/Analyses/test/materailsPropStudy.fcl +++ b/Analyses/test/materailsPropStudy.fcl @@ -25,9 +25,9 @@ services : GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/Analyses/test/mixPointsDump.fcl b/Analyses/test/mixPointsDump.fcl index d1fce2464b..abc946737b 100644 --- a/Analyses/test/mixPointsDump.fcl +++ b/Analyses/test/mixPointsDump.fcl @@ -11,8 +11,8 @@ services: { TFileService: { fileName: "stepPoints.root" } message: @local::default_message RandomNumberGenerator: {defaultEngineKind: "MixMaxRng" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService: { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService: { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService: @local::automaticSeeds } diff --git a/Analyses/test/printStrawHits.fcl b/Analyses/test/printStrawHits.fcl index 9c9071fe31..5830527c81 100644 --- a/Analyses/test/printStrawHits.fcl +++ b/Analyses/test/printStrawHits.fcl @@ -18,8 +18,8 @@ services : { message : @local::default_message GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/Analyses/test/printTrackerGeom.fcl b/Analyses/test/printTrackerGeom.fcl index d536b24ef0..2d57b00fa1 100644 --- a/Analyses/test/printTrackerGeom.fcl +++ b/Analyses/test/printTrackerGeom.fcl @@ -19,8 +19,8 @@ services : { # GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } GeometryService : { inputFile : "gtest1.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/Analyses/test/psVacuum_readback.fcl b/Analyses/test/psVacuum_readback.fcl index 3faf10db35..ac474da1e0 100644 --- a/Analyses/test/psVacuum_readback.fcl +++ b/Analyses/test/psVacuum_readback.fcl @@ -35,10 +35,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/Analyses/test/readCaloDigi.fcl b/Analyses/test/readCaloDigi.fcl index 5274a2d8bc..acfd860602 100644 --- a/Analyses/test/readCaloDigi.fcl +++ b/Analyses/test/readCaloDigi.fcl @@ -22,8 +22,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/Analyses/test/readMCTrajectories.fcl b/Analyses/test/readMCTrajectories.fcl index 43eee25b02..c1cb754e8d 100644 --- a/Analyses/test/readMCTrajectories.fcl +++ b/Analyses/test/readMCTrajectories.fcl @@ -22,8 +22,8 @@ services : TFileService : { fileName : "readMCTrajectories.root" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/Analyses/test/readStoppedPis.fcl b/Analyses/test/readStoppedPis.fcl index 1fb8f79c71..bc6126a50d 100644 --- a/Analyses/test/readStoppedPis.fcl +++ b/Analyses/test/readStoppedPis.fcl @@ -35,10 +35,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : {inputFile : "Mu2eG4/test/globalConstants_01.txt"} + GlobalConstantsService : {inputFile : "GlobalConstantsService/data/globalConstants_01.txt"} } diff --git a/Analyses/test/readTrackCluster.fcl b/Analyses/test/readTrackCluster.fcl index 58f6f69e56..80dad69bb0 100644 --- a/Analyses/test/readTrackCluster.fcl +++ b/Analyses/test/readTrackCluster.fcl @@ -32,8 +32,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/TDR/geom_MothersToHits.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/Analyses/test/readback0.fcl b/Analyses/test/readback0.fcl index 086d9113ed..cd8418c37f 100644 --- a/Analyses/test/readback0.fcl +++ b/Analyses/test/readback0.fcl @@ -33,10 +33,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/Analyses/test/simParticleCheck00.fcl b/Analyses/test/simParticleCheck00.fcl index 42b3dce3a8..d76799b925 100644 --- a/Analyses/test/simParticleCheck00.fcl +++ b/Analyses/test/simParticleCheck00.fcl @@ -50,8 +50,8 @@ services : { TFileService : { fileName : "simParticleCheck00.root" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/Analyses/test/simParticlesWithHitsExample.fcl b/Analyses/test/simParticlesWithHitsExample.fcl index 5a7b064d63..8a110e8431 100644 --- a/Analyses/test/simParticlesWithHitsExample.fcl +++ b/Analyses/test/simParticlesWithHitsExample.fcl @@ -25,9 +25,9 @@ services : GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } # close of services block diff --git a/Analyses/test/stoppingTarget00.fcl b/Analyses/test/stoppingTarget00.fcl index fb7e35a8bb..789095b37c 100644 --- a/Analyses/test/stoppingTarget00.fcl +++ b/Analyses/test/stoppingTarget00.fcl @@ -34,10 +34,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/Analyses/test/transportMuonStudy.fcl b/Analyses/test/transportMuonStudy.fcl index caa520f751..f3b2094298 100644 --- a/Analyses/test/transportMuonStudy.fcl +++ b/Analyses/test/transportMuonStudy.fcl @@ -28,9 +28,9 @@ services : GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/Analyses/test/transportMuonStudy_onlyTransport.fcl b/Analyses/test/transportMuonStudy_onlyTransport.fcl index 3e996372d0..c352b2d5ec 100644 --- a/Analyses/test/transportMuonStudy_onlyTransport.fcl +++ b/Analyses/test/transportMuonStudy_onlyTransport.fcl @@ -28,9 +28,9 @@ services : GeometryService : { inputFile : "Analyses/test/geom_transportOnly.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/Analyses/test/vd_readStage2.fcl b/Analyses/test/vd_readStage2.fcl index 2497088727..390dd91c1e 100644 --- a/Analyses/test/vd_readStage2.fcl +++ b/Analyses/test/vd_readStage2.fcl @@ -26,8 +26,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/Analyses/test/vd_readback.fcl b/Analyses/test/vd_readback.fcl index 5c3db9a64a..a345fe0f3d 100644 --- a/Analyses/test/vd_readback.fcl +++ b/Analyses/test/vd_readback.fcl @@ -35,10 +35,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/BFieldGeom/test/makeBinaryMaps.fcl b/BFieldGeom/test/makeBinaryMaps.fcl index 86e722b685..06ae95eeb1 100644 --- a/BFieldGeom/test/makeBinaryMaps.fcl +++ b/BFieldGeom/test/makeBinaryMaps.fcl @@ -21,8 +21,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "BFieldGeom/test/geom_makeBinaries.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds diff --git a/BFieldGeom/test/readBinaryMaps.fcl b/BFieldGeom/test/readBinaryMaps.fcl index 7198c68eba..6271f7ba6f 100644 --- a/BFieldGeom/test/readBinaryMaps.fcl +++ b/BFieldGeom/test/readBinaryMaps.fcl @@ -20,8 +20,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "BFieldGeom/test/geom_readBinaries.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds diff --git a/BFieldTest/test/BFieldSymmetry.fcl b/BFieldTest/test/BFieldSymmetry.fcl index 6e96efecd0..68032d150e 100644 --- a/BFieldTest/test/BFieldSymmetry.fcl +++ b/BFieldTest/test/BFieldSymmetry.fcl @@ -16,8 +16,8 @@ services: { scheduler : { defaultExceptions : false } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds } diff --git a/BFieldTest/test/BFieldTest.fcl b/BFieldTest/test/BFieldTest.fcl index a17879c9a7..5aa8c07ff0 100644 --- a/BFieldTest/test/BFieldTest.fcl +++ b/BFieldTest/test/BFieldTest.fcl @@ -14,8 +14,8 @@ services: { scheduler : { defaultExceptions : false } GeometryService : { inputFile : "Mu2eG4/test/geom_mau10_custom.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/CRVResponse/efficiencyCheck/CRV_Efficiency_check.fcl b/CRVResponse/efficiencyCheck/CRV_Efficiency_check.fcl index 0b0776124e..85889d03e5 100644 --- a/CRVResponse/efficiencyCheck/CRV_Efficiency_check.fcl +++ b/CRVResponse/efficiencyCheck/CRV_Efficiency_check.fcl @@ -396,8 +396,8 @@ services : RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "CRVResponse/efficiencyCheck/geom_T.txt" } //REPLACE - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/singleCounter/dicounter_across.fcl b/CRVResponse/singleCounter/dicounter_across.fcl index da0013676e..0e77ed4588 100644 --- a/CRVResponse/singleCounter/dicounter_across.fcl +++ b/CRVResponse/singleCounter/dicounter_across.fcl @@ -18,8 +18,8 @@ services : RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "CRVResponse/singleCounter/geom_dicounter.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/singleCounter/singleCounter.fcl b/CRVResponse/singleCounter/singleCounter.fcl index 4dbf132a3d..1d4185d19c 100644 --- a/CRVResponse/singleCounter/singleCounter.fcl +++ b/CRVResponse/singleCounter/singleCounter.fcl @@ -18,8 +18,8 @@ services : RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "CRVResponse/singleCounter/geom.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/singleCounter/singleCounter_across.fcl b/CRVResponse/singleCounter/singleCounter_across.fcl index a2be5f623a..50230eaa55 100644 --- a/CRVResponse/singleCounter/singleCounter_across.fcl +++ b/CRVResponse/singleCounter/singleCounter_across.fcl @@ -18,8 +18,8 @@ services : RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "CRVResponse/singleCounter/geom.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/singleCounter/singleCounter_darkNoise.fcl b/CRVResponse/singleCounter/singleCounter_darkNoise.fcl index 5330871da6..3c7ca08721 100644 --- a/CRVResponse/singleCounter/singleCounter_darkNoise.fcl +++ b/CRVResponse/singleCounter/singleCounter_darkNoise.fcl @@ -18,8 +18,8 @@ services : RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "CRVResponse/singleCounter/geom.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/singleCounter/singleCounter_point.fcl b/CRVResponse/singleCounter/singleCounter_point.fcl index 72c56947b9..b134178dd6 100644 --- a/CRVResponse/singleCounter/singleCounter_point.fcl +++ b/CRVResponse/singleCounter/singleCounter_point.fcl @@ -18,8 +18,8 @@ services : RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "CRVResponse/singleCounter/geom.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/singleModule/singleModule.fcl b/CRVResponse/singleModule/singleModule.fcl index 01f786909c..a59911f938 100644 --- a/CRVResponse/singleModule/singleModule.fcl +++ b/CRVResponse/singleModule/singleModule.fcl @@ -18,8 +18,8 @@ services : RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "CRVResponse/singleModule/geom.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/test/CRVResponseDAQ.fcl b/CRVResponse/test/CRVResponseDAQ.fcl index 1213345b64..66c59876f2 100644 --- a/CRVResponse/test/CRVResponseDAQ.fcl +++ b/CRVResponse/test/CRVResponseDAQ.fcl @@ -16,8 +16,8 @@ services : { RandomNumberGenerator: {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/test/CRVResponsePlot_v05.fcl b/CRVResponse/test/CRVResponsePlot_v05.fcl index 858567c22b..f1c74e301f 100644 --- a/CRVResponse/test/CRVResponsePlot_v05.fcl +++ b/CRVResponse/test/CRVResponsePlot_v05.fcl @@ -18,8 +18,8 @@ services : RandomNumberGenerator: {defaultEngineKind: "MixMaxRng" } TFileService : { fileName: "test.root" } GeometryService : { inputFile : "Mu2eG4/geom/studies/geom_cosmic_v05.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/test/CRVResponseReco.fcl b/CRVResponse/test/CRVResponseReco.fcl index f5157b4dc5..86464dbbfe 100644 --- a/CRVResponse/test/CRVResponseReco.fcl +++ b/CRVResponse/test/CRVResponseReco.fcl @@ -17,8 +17,8 @@ services : { RandomNumberGenerator: {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/test/CRVResponse_RadiationBackgroundStudies.fcl b/CRVResponse/test/CRVResponse_RadiationBackgroundStudies.fcl index eccf84fda9..696fbfff1e 100644 --- a/CRVResponse/test/CRVResponse_RadiationBackgroundStudies.fcl +++ b/CRVResponse/test/CRVResponse_RadiationBackgroundStudies.fcl @@ -13,8 +13,8 @@ services : { RandomNumberGenerator: {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/test/CRVResponse_v05.fcl b/CRVResponse/test/CRVResponse_v05.fcl index a360709dc6..d63efaec33 100644 --- a/CRVResponse/test/CRVResponse_v05.fcl +++ b/CRVResponse/test/CRVResponse_v05.fcl @@ -17,8 +17,8 @@ services : { RandomNumberGenerator: {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/studies/geom_cosmic_v05.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds } diff --git a/CRVResponse/test/CRVResponse_v07.fcl b/CRVResponse/test/CRVResponse_v07.fcl index ec07eae452..a8655ca206 100644 --- a/CRVResponse/test/CRVResponse_v07.fcl +++ b/CRVResponse/test/CRVResponse_v07.fcl @@ -16,8 +16,8 @@ services : { RandomNumberGenerator: {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common_crv_v07.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds } diff --git a/CalPatRec/test/calPatRec.fcl b/CalPatRec/test/calPatRec.fcl index 8a546efba5..4155502013 100644 --- a/CalPatRec/test/calPatRec.fcl +++ b/CalPatRec/test/calPatRec.fcl @@ -38,8 +38,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/CalPatRec/test/calPatRec_01.fcl b/CalPatRec/test/calPatRec_01.fcl index f86d283afd..26eebb8c29 100644 --- a/CalPatRec/test/calPatRec_01.fcl +++ b/CalPatRec/test/calPatRec_01.fcl @@ -40,8 +40,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/CalPatRec/test/calPatRec_02.fcl b/CalPatRec/test/calPatRec_02.fcl index d468535502..1238fbc6fc 100644 --- a/CalPatRec/test/calPatRec_02.fcl +++ b/CalPatRec/test/calPatRec_02.fcl @@ -39,8 +39,8 @@ services : { GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } diff --git a/CalPatRec/test/calPatRec_display.fcl b/CalPatRec/test/calPatRec_display.fcl index 243eff7db8..f1df6841a2 100644 --- a/CalPatRec/test/calPatRec_display.fcl +++ b/CalPatRec/test/calPatRec_display.fcl @@ -50,8 +50,8 @@ services : { GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } #GeometryService : { inputFile : "murat/geom/geom_common_BaF2_r_1_1.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/CalPatRec/test/calPatRec_display_cnv00502.fcl b/CalPatRec/test/calPatRec_display_cnv00502.fcl index 47865e9f51..946e07dfeb 100644 --- a/CalPatRec/test/calPatRec_display_cnv00502.fcl +++ b/CalPatRec/test/calPatRec_display_cnv00502.fcl @@ -50,8 +50,8 @@ services : { GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } #GeometryService : { inputFile : "murat/geom/geom_common_BaF2_r_1_1.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/CalPatRec/test/calPatRec_display_read.fcl b/CalPatRec/test/calPatRec_display_read.fcl index cc6cd29fc7..c4241087bc 100644 --- a/CalPatRec/test/calPatRec_display_read.fcl +++ b/CalPatRec/test/calPatRec_display_read.fcl @@ -50,8 +50,8 @@ services : { GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } #GeometryService : { inputFile : "murat/geom/geom_common_BaF2_r_1_1.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/CalPatRec/test/deltaFinder_debug.fcl b/CalPatRec/test/deltaFinder_debug.fcl index 3b169d784b..85b331e5f1 100644 --- a/CalPatRec/test/deltaFinder_debug.fcl +++ b/CalPatRec/test/deltaFinder_debug.fcl @@ -18,8 +18,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } # Timing : { } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/CalPatRec/test/deltaFinder_debug_ce.fcl b/CalPatRec/test/deltaFinder_debug_ce.fcl index 09617ff9b6..dad845f267 100644 --- a/CalPatRec/test/deltaFinder_debug_ce.fcl +++ b/CalPatRec/test/deltaFinder_debug_ce.fcl @@ -18,8 +18,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } # Timing : { } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/CalPatRec/test/deltaFinder_test.fcl b/CalPatRec/test/deltaFinder_test.fcl index a95adc0757..1a5aa93e8b 100644 --- a/CalPatRec/test/deltaFinder_test.fcl +++ b/CalPatRec/test/deltaFinder_test.fcl @@ -24,8 +24,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } # Timing : { } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/CalPatRec/test/mergePatRec.fcl b/CalPatRec/test/mergePatRec.fcl index d4a1ed192d..c430809722 100644 --- a/CalPatRec/test/mergePatRec.fcl +++ b/CalPatRec/test/mergePatRec.fcl @@ -32,8 +32,8 @@ services : { GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } diff --git a/CalPatRec/test/mergePatRec_02.fcl b/CalPatRec/test/mergePatRec_02.fcl index dc6b228724..9fcc455a5a 100644 --- a/CalPatRec/test/mergePatRec_02.fcl +++ b/CalPatRec/test/mergePatRec_02.fcl @@ -41,8 +41,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/CalPatRec/test/mergePatRec_03.fcl b/CalPatRec/test/mergePatRec_03.fcl index 7b0da05b25..b4cf44b32a 100644 --- a/CalPatRec/test/mergePatRec_03.fcl +++ b/CalPatRec/test/mergePatRec_03.fcl @@ -42,8 +42,8 @@ services : { GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } diff --git a/CalPatRec/test/mergePatRec_display.fcl b/CalPatRec/test/mergePatRec_display.fcl index 859b8b35ce..e7557d4adf 100644 --- a/CalPatRec/test/mergePatRec_display.fcl +++ b/CalPatRec/test/mergePatRec_display.fcl @@ -49,8 +49,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/CalPatRec/test/mergePatRec_display_read.fcl b/CalPatRec/test/mergePatRec_display_read.fcl index 5c4d6f5003..5789f186c4 100644 --- a/CalPatRec/test/mergePatRec_display_read.fcl +++ b/CalPatRec/test/mergePatRec_display_read.fcl @@ -48,8 +48,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/CalPatRec/test/printTrackerNumerology.fcl b/CalPatRec/test/printTrackerNumerology.fcl index 35d9ed0d5c..374b97f6a9 100644 --- a/CalPatRec/test/printTrackerNumerology.fcl +++ b/CalPatRec/test/printTrackerNumerology.fcl @@ -20,8 +20,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } # Timing : { } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/CalPatRec/test/trkPatRec_01.fcl b/CalPatRec/test/trkPatRec_01.fcl index 9907c45c5f..7ae9606458 100644 --- a/CalPatRec/test/trkPatRec_01.fcl +++ b/CalPatRec/test/trkPatRec_01.fcl @@ -38,8 +38,8 @@ services : { GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } diff --git a/CalPatRec/test/trkPatRec_02.fcl b/CalPatRec/test/trkPatRec_02.fcl index 0fdb561f84..a20a777e2f 100644 --- a/CalPatRec/test/trkPatRec_02.fcl +++ b/CalPatRec/test/trkPatRec_02.fcl @@ -37,8 +37,8 @@ services : { GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } diff --git a/CalPatRec/test/trkPatRec_display.fcl b/CalPatRec/test/trkPatRec_display.fcl index 0e13f76ede..8ac7089755 100644 --- a/CalPatRec/test/trkPatRec_display.fcl +++ b/CalPatRec/test/trkPatRec_display.fcl @@ -38,8 +38,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : @local::automaticSeeds diff --git a/CalPatRec/test/trkPatRec_display_read.fcl b/CalPatRec/test/trkPatRec_display_read.fcl index c33bc52ad1..1152c5ddce 100644 --- a/CalPatRec/test/trkPatRec_display_read.fcl +++ b/CalPatRec/test/trkPatRec_display_read.fcl @@ -42,8 +42,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault # Mu2eG4Helper : { } # SeedService : @local::automaticSeeds diff --git a/CaloCluster/test/CaloClusterProduction.fcl b/CaloCluster/test/CaloClusterProduction.fcl index 97473459cf..407f5ab7b4 100644 --- a/CaloCluster/test/CaloClusterProduction.fcl +++ b/CaloCluster/test/CaloClusterProduction.fcl @@ -37,10 +37,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/CaloCluster/test/ClusterTrajectory.fcl b/CaloCluster/test/ClusterTrajectory.fcl index e3976ec63c..6773d9175e 100644 --- a/CaloCluster/test/ClusterTrajectory.fcl +++ b/CaloCluster/test/ClusterTrajectory.fcl @@ -37,11 +37,11 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } GlobalConstantsService : { - inputFile : "Mu2eG4/test/globalConstants_01.txt" + inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } diff --git a/CaloCluster/test/readCaloCluster.fcl b/CaloCluster/test/readCaloCluster.fcl index c936776202..b5373fa3fd 100644 --- a/CaloCluster/test/readCaloCluster.fcl +++ b/CaloCluster/test/readCaloCluster.fcl @@ -37,10 +37,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/CaloCluster/test/readCaloClusterEff.fcl b/CaloCluster/test/readCaloClusterEff.fcl index 6d58cb12e7..81f4790627 100644 --- a/CaloCluster/test/readCaloClusterEff.fcl +++ b/CaloCluster/test/readCaloClusterEff.fcl @@ -36,10 +36,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/CaloCluster/test/readCaloClusterEnergyResolMap.fcl b/CaloCluster/test/readCaloClusterEnergyResolMap.fcl index c48ebaa6d7..d2696ca2cc 100644 --- a/CaloCluster/test/readCaloClusterEnergyResolMap.fcl +++ b/CaloCluster/test/readCaloClusterEnergyResolMap.fcl @@ -37,10 +37,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/CaloCluster/test/readCogRecFunc.fcl b/CaloCluster/test/readCogRecFunc.fcl index b4e0205c86..03058369e2 100644 --- a/CaloCluster/test/readCogRecFunc.fcl +++ b/CaloCluster/test/readCogRecFunc.fcl @@ -105,10 +105,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService: @local::automaticSeeds diff --git a/CaloCluster/test/readCrystalHit.fcl b/CaloCluster/test/readCrystalHit.fcl index 128206453e..c68775f364 100644 --- a/CaloCluster/test/readCrystalHit.fcl +++ b/CaloCluster/test/readCrystalHit.fcl @@ -36,11 +36,11 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } GlobalConstantsService : { - inputFile : "Mu2eG4/test/globalConstants_01.txt" + inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } diff --git a/CaloCluster/test/readOffSetCog.fcl b/CaloCluster/test/readOffSetCog.fcl index 9f3ec2d1b2..7ee590a367 100644 --- a/CaloCluster/test/readOffSetCog.fcl +++ b/CaloCluster/test/readOffSetCog.fcl @@ -37,10 +37,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/EventGenerator/fcl/cryTest.fcl b/EventGenerator/fcl/cryTest.fcl index 1bccb9a1c4..1f08859108 100644 --- a/EventGenerator/fcl/cryTest.fcl +++ b/EventGenerator/fcl/cryTest.fcl @@ -38,8 +38,8 @@ services : { TFileService : { fileName : "nts.cryHist.owner.version.sequencer.root" } GeometryService : @local::Services.Core.GeometryService - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } SeedService : @local::automaticSeeds diff --git a/EventGenerator/test/FromStepPointMCs.fcl b/EventGenerator/test/FromStepPointMCs.fcl index fd207f4a22..4e93f02738 100644 --- a/EventGenerator/test/FromStepPointMCs.fcl +++ b/EventGenerator/test/FromStepPointMCs.fcl @@ -14,7 +14,7 @@ services: { message: @local::default_message scheduler: { defaultExceptions : false } - GlobalConstantsService : { inputFile : "Mu2eG4/test/conditions_01.txt" } + GlobalConstantsService : { inputFile : "ConditionsService/data/conditions_01.txt" } } physics: { diff --git a/EventGenerator/test/ceLeadingLog_test.fcl b/EventGenerator/test/ceLeadingLog_test.fcl index f1548156ac..dab0aa71aa 100644 --- a/EventGenerator/test/ceLeadingLog_test.fcl +++ b/EventGenerator/test/ceLeadingLog_test.fcl @@ -22,8 +22,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/EventGenerator/test/ceMEndpoint_test.fcl b/EventGenerator/test/ceMEndpoint_test.fcl index 07ad9fe02d..baedb50fde 100644 --- a/EventGenerator/test/ceMEndpoint_test.fcl +++ b/EventGenerator/test/ceMEndpoint_test.fcl @@ -19,8 +19,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/EventGenerator/test/ceMLeadingLog_test.fcl b/EventGenerator/test/ceMLeadingLog_test.fcl index 1aedf501b0..2f3e38cb1e 100644 --- a/EventGenerator/test/ceMLeadingLog_test.fcl +++ b/EventGenerator/test/ceMLeadingLog_test.fcl @@ -17,8 +17,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/EventGenerator/test/cePEndpoint_test.fcl b/EventGenerator/test/cePEndpoint_test.fcl index c3fc669069..256a5ee8cf 100644 --- a/EventGenerator/test/cePEndpoint_test.fcl +++ b/EventGenerator/test/cePEndpoint_test.fcl @@ -19,8 +19,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/EventGenerator/test/cePLeadingLog_test.fcl b/EventGenerator/test/cePLeadingLog_test.fcl index 969b7c7322..d9b57817bb 100644 --- a/EventGenerator/test/cePLeadingLog_test.fcl +++ b/EventGenerator/test/cePLeadingLog_test.fcl @@ -19,8 +19,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/EventGenerator/test/corsikaTest.fcl b/EventGenerator/test/corsikaTest.fcl index 0cd817b906..d9c98b0c0e 100644 --- a/EventGenerator/test/corsikaTest.fcl +++ b/EventGenerator/test/corsikaTest.fcl @@ -54,8 +54,8 @@ services : { TFileService : { fileName : "nts.corsikaHist.owner.version.sequencer.root" } GeometryService : @local::Services.Core.GeometryService - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } diff --git a/EventGenerator/test/g4test_FromStepPointMCs.fcl b/EventGenerator/test/g4test_FromStepPointMCs.fcl index cfbc76a5e5..16788b05df 100644 --- a/EventGenerator/test/g4test_FromStepPointMCs.fcl +++ b/EventGenerator/test/g4test_FromStepPointMCs.fcl @@ -23,8 +23,8 @@ services: { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/EventGenerator/test/rpc_int_test.fcl b/EventGenerator/test/rpc_int_test.fcl index fbb1871dea..7d5bc180f4 100644 --- a/EventGenerator/test/rpc_int_test.fcl +++ b/EventGenerator/test/rpc_int_test.fcl @@ -24,8 +24,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault Mu2eG4Helper : { } SeedService : { @table::automaticSeeds diff --git a/EventMixing/test/inspectMixed.fcl b/EventMixing/test/inspectMixed.fcl index 9dac5c8177..549474b14c 100644 --- a/EventMixing/test/inspectMixed.fcl +++ b/EventMixing/test/inspectMixed.fcl @@ -31,10 +31,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/EventMixing/test/inspectUnMixed.fcl b/EventMixing/test/inspectUnMixed.fcl index 1fcc980a24..25444f3259 100644 --- a/EventMixing/test/inspectUnMixed.fcl +++ b/EventMixing/test/inspectUnMixed.fcl @@ -31,10 +31,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } diff --git a/EventMixing/test/mixProducer_01.fcl b/EventMixing/test/mixProducer_01.fcl index 858a9e2363..17bf798ce9 100644 --- a/EventMixing/test/mixProducer_01.fcl +++ b/EventMixing/test/mixProducer_01.fcl @@ -24,9 +24,9 @@ services : GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/ExtinctionMonitorFNAL/test/EMFBoxFluxAnalyzer.fcl b/ExtinctionMonitorFNAL/test/EMFBoxFluxAnalyzer.fcl index de8d548fa9..810ee2a7a2 100644 --- a/ExtinctionMonitorFNAL/test/EMFBoxFluxAnalyzer.fcl +++ b/ExtinctionMonitorFNAL/test/EMFBoxFluxAnalyzer.fcl @@ -14,7 +14,7 @@ services: { message: @local::default_message scheduler: { defaultExceptions : false } TFileService : { fileName : "histEMFBoxFluxAnalyzer.root" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } physics: { diff --git a/ExtinctionMonitorFNAL/test/EMFRoomFluxAnalyzer.fcl b/ExtinctionMonitorFNAL/test/EMFRoomFluxAnalyzer.fcl index 900fc53dd7..d5fdef6f05 100644 --- a/ExtinctionMonitorFNAL/test/EMFRoomFluxAnalyzer.fcl +++ b/ExtinctionMonitorFNAL/test/EMFRoomFluxAnalyzer.fcl @@ -21,7 +21,7 @@ services: { message: @local::default_message scheduler: { defaultExceptions : false } TFileService: { fileName : "EMFRoomFluxAnalyzer.root" } - GlobalConstantsService: { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService: { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } GeometryService: { inputFile : "ExtinctionMonitorFNAL/test/geom_emfMARS.txt" } } diff --git a/ExtinctionMonitorFNAL/test/digiDefsCommon.fcl b/ExtinctionMonitorFNAL/test/digiDefsCommon.fcl index c51a040e00..d38deca5b0 100644 --- a/ExtinctionMonitorFNAL/test/digiDefsCommon.fcl +++ b/ExtinctionMonitorFNAL/test/digiDefsCommon.fcl @@ -14,8 +14,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds Mu2eG4Helper : { } } diff --git a/ExtinctionMonitorFNAL/test/digiTuning.fcl b/ExtinctionMonitorFNAL/test/digiTuning.fcl index 8515df5b95..d29322db8a 100644 --- a/ExtinctionMonitorFNAL/test/digiTuning.fcl +++ b/ExtinctionMonitorFNAL/test/digiTuning.fcl @@ -18,8 +18,8 @@ services : { TFileService : { fileName : "digiTuning.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds } diff --git a/ExtinctionMonitorFNAL/test/emfRecoTrackAnalysis.fcl b/ExtinctionMonitorFNAL/test/emfRecoTrackAnalysis.fcl index ce030f9d5e..c1cced4008 100644 --- a/ExtinctionMonitorFNAL/test/emfRecoTrackAnalysis.fcl +++ b/ExtinctionMonitorFNAL/test/emfRecoTrackAnalysis.fcl @@ -14,8 +14,8 @@ services: { TFileService: { fileName: "hist_emfRecoTracks.root" } message: @local::default_message GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService: { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService: { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } physics: { diff --git a/ExtinctionMonitorFNAL/test/extMonFNALDefsCommon.fcl b/ExtinctionMonitorFNAL/test/extMonFNALDefsCommon.fcl index 770489ebbe..deb65cf9df 100644 --- a/ExtinctionMonitorFNAL/test/extMonFNALDefsCommon.fcl +++ b/ExtinctionMonitorFNAL/test/extMonFNALDefsCommon.fcl @@ -28,13 +28,13 @@ services : { } ConditionsService: { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" printConfig : true configStatsVerbosity : 0 } GlobalConstantsService: { - inputFile : "Mu2eG4/test/globalConstants_01.txt" + inputFile : "GlobalConstantsService/data/globalConstants_01.txt" printConfig : true configStatsVerbosity : 0 } diff --git a/ExtinctionMonitorFNAL/test/g4detectorDefsCommon.fcl b/ExtinctionMonitorFNAL/test/g4detectorDefsCommon.fcl index c02bbd3d67..c09af20d0f 100644 --- a/ExtinctionMonitorFNAL/test/g4detectorDefsCommon.fcl +++ b/ExtinctionMonitorFNAL/test/g4detectorDefsCommon.fcl @@ -36,8 +36,8 @@ services : { RandomNumberGenerator: {defaultEngineKind: "MixMaxRng"} GeometryService: {@table::Services.Core.GeometryService} - ConditionsService: { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService: { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService: { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService: { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService: @local::automaticSeeds Mu2eG4Helper: { } } diff --git a/ExtinctionMonitorFNAL/test/g4s1_channelTest.fcl b/ExtinctionMonitorFNAL/test/g4s1_channelTest.fcl index 918b926887..ec47702759 100644 --- a/ExtinctionMonitorFNAL/test/g4s1_channelTest.fcl +++ b/ExtinctionMonitorFNAL/test/g4s1_channelTest.fcl @@ -22,8 +22,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "ExtinctionMonitorFNAL/test/geom_channelTest.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds Mu2eG4Helper : { } } diff --git a/ExtinctionMonitorFNAL/test/g4s1_emfMARSRoomHistos.fcl b/ExtinctionMonitorFNAL/test/g4s1_emfMARSRoomHistos.fcl index 4e6cf63d34..4d436b07f6 100644 --- a/ExtinctionMonitorFNAL/test/g4s1_emfMARSRoomHistos.fcl +++ b/ExtinctionMonitorFNAL/test/g4s1_emfMARSRoomHistos.fcl @@ -16,7 +16,7 @@ services: { message: @local::default_message scheduler: { defaultExceptions : false } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds } diff --git a/ExtinctionMonitorFNAL/test/recoDefsCommon.fcl b/ExtinctionMonitorFNAL/test/recoDefsCommon.fcl index cd2da6b21f..9606525b09 100644 --- a/ExtinctionMonitorFNAL/test/recoDefsCommon.fcl +++ b/ExtinctionMonitorFNAL/test/recoDefsCommon.fcl @@ -25,8 +25,8 @@ services: { scheduler: { defaultExceptions : false } TFileService: {} GeometryService: { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService: { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService: { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService: { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService: { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } physics : { diff --git a/ExtinctionMonitorFNAL/test/trajectoryIn.fcl b/ExtinctionMonitorFNAL/test/trajectoryIn.fcl index 0b50b16246..a13b041afa 100644 --- a/ExtinctionMonitorFNAL/test/trajectoryIn.fcl +++ b/ExtinctionMonitorFNAL/test/trajectoryIn.fcl @@ -17,8 +17,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "ExtinctionMonitorFNAL/test/geom_Mau11.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/JobConfig/beam/DS_pions.fcl b/JobConfig/beam/DS_pions.fcl index 89de1a97f0..a98e7a1314 100644 --- a/JobConfig/beam/DS_pions.fcl +++ b/JobConfig/beam/DS_pions.fcl @@ -29,8 +29,8 @@ services : { TFileService : { fileName : "nts.owner.DS-pions.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/JobConfig/beam/TGTpionstops.fcl b/JobConfig/beam/TGTpionstops.fcl index 3d4259a6e6..a1f1b542d4 100644 --- a/JobConfig/beam/TGTpionstops.fcl +++ b/JobConfig/beam/TGTpionstops.fcl @@ -12,8 +12,8 @@ services : { message : @local::default_message TFileService : { fileName : "nts.owner.pions-nts3.version.sequencer.root" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } physics : { diff --git a/JobConfig/beam/TS-CRV.fcl b/JobConfig/beam/TS-CRV.fcl index e9643710e1..0305e5a78b 100644 --- a/JobConfig/beam/TS-CRV.fcl +++ b/JobConfig/beam/TS-CRV.fcl @@ -21,8 +21,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/JobConfig/beam/beam_test_4_replicated.fcl b/JobConfig/beam/beam_test_4_replicated.fcl index 19fdce8249..44c50af07c 100644 --- a/JobConfig/beam/beam_test_4_replicated.fcl +++ b/JobConfig/beam/beam_test_4_replicated.fcl @@ -19,7 +19,7 @@ services : { message : @local::default_message // TFileService : { fileName : "beam_test_4_replicated.root" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService : @local::automaticSeeds RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } } diff --git a/JobConfig/cosmic/filterStage1.fcl b/JobConfig/cosmic/filterStage1.fcl index 935225a6a8..c0f21621e3 100644 --- a/JobConfig/cosmic/filterStage1.fcl +++ b/JobConfig/cosmic/filterStage1.fcl @@ -21,8 +21,8 @@ services : { TFileService : { fileName : "nts.owner.filtered-s1.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common_crv_v07.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/JobConfig/extmon/extmonbeam_g4s2.fcl b/JobConfig/extmon/extmonbeam_g4s2.fcl index 6c1d69911b..d75e6f45cd 100644 --- a/JobConfig/extmon/extmonbeam_g4s2.fcl +++ b/JobConfig/extmon/extmonbeam_g4s2.fcl @@ -23,8 +23,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/JobConfig/pbar/resample_vertex_s1.fcl b/JobConfig/pbar/resample_vertex_s1.fcl index 60731ccee7..8622cc6d2b 100644 --- a/JobConfig/pbar/resample_vertex_s1.fcl +++ b/JobConfig/pbar/resample_vertex_s1.fcl @@ -41,8 +41,8 @@ services : { TFileService : { fileName : "nts.owner.pbar_s1_toVD91.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/JobConfig/pbar/resample_vertex_s2.fcl b/JobConfig/pbar/resample_vertex_s2.fcl index d543304a06..e598a6ce1b 100644 --- a/JobConfig/pbar/resample_vertex_s2.fcl +++ b/JobConfig/pbar/resample_vertex_s2.fcl @@ -28,8 +28,8 @@ services : { TFileService : { fileName : "nts.owner.pbar_s2_toColl31Out.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/cd3/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/JobConfig/pbar/vertex_s0.fcl b/JobConfig/pbar/vertex_s0.fcl index 47b6a6e7a6..477cbad76a 100644 --- a/JobConfig/pbar/vertex_s0.fcl +++ b/JobConfig/pbar/vertex_s0.fcl @@ -32,8 +32,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/JobConfig/pbar/vertex_s1.fcl b/JobConfig/pbar/vertex_s1.fcl index 6fed62fbc6..56d0edb908 100644 --- a/JobConfig/pbar/vertex_s1.fcl +++ b/JobConfig/pbar/vertex_s1.fcl @@ -39,8 +39,8 @@ services : { TFileService : { fileName : "nts.owner.pbar_s1_toVD91.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/JobConfig/pions/pions_g4s1.fcl b/JobConfig/pions/pions_g4s1.fcl index be055f0511..d03357a5cd 100644 --- a/JobConfig/pions/pions_g4s1.fcl +++ b/JobConfig/pions/pions_g4s1.fcl @@ -29,8 +29,8 @@ services : { TFileService : { fileName : "nts.owner.pions-g4s1.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/JobConfig/pions/pions_g4s2.fcl b/JobConfig/pions/pions_g4s2.fcl index a147b870d0..b1c2645d20 100644 --- a/JobConfig/pions/pions_g4s2.fcl +++ b/JobConfig/pions/pions_g4s2.fcl @@ -28,8 +28,8 @@ services : { TFileService : { fileName : "nts.owner.pions-g4s2.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/JobConfig/pions/pions_g4s3.fcl b/JobConfig/pions/pions_g4s3.fcl index 0b722b66ea..79824c1f52 100644 --- a/JobConfig/pions/pions_g4s3.fcl +++ b/JobConfig/pions/pions_g4s3.fcl @@ -28,8 +28,8 @@ services : { TFileService : { fileName : "nts.owner.pions-g4s3.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/JobConfig/pions/pions_g4s4_IntConv.fcl b/JobConfig/pions/pions_g4s4_IntConv.fcl index be882a5666..8a23a5431c 100644 --- a/JobConfig/pions/pions_g4s4_IntConv.fcl +++ b/JobConfig/pions/pions_g4s4_IntConv.fcl @@ -18,8 +18,8 @@ services : { TFileService : { fileName : "nts.owner.pions-g4s4-IntConv.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/JobConfig/pions/pions_g4s4_RPC.fcl b/JobConfig/pions/pions_g4s4_RPC.fcl index 5f55025bcf..039c40e59f 100644 --- a/JobConfig/pions/pions_g4s4_RPC.fcl +++ b/JobConfig/pions/pions_g4s4_RPC.fcl @@ -18,8 +18,8 @@ services : { TFileService : { fileName : "nts.owner.pions-g4s4-RPC.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/JobConfig/pions/pions_nts3tgtstops.fcl b/JobConfig/pions/pions_nts3tgtstops.fcl index 7406f28b32..2a2e66f0e6 100644 --- a/JobConfig/pions/pions_nts3tgtstops.fcl +++ b/JobConfig/pions/pions_nts3tgtstops.fcl @@ -12,8 +12,8 @@ services : { message : @local::default_message TFileService : { fileName : "nts.owner.pions-nts3.version.sequencer.root" } GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } } physics : { diff --git a/JobConfig/primary/Primary.fcl b/JobConfig/primary/Primary.fcl index 0090465aee..738e3805b8 100644 --- a/JobConfig/primary/Primary.fcl +++ b/JobConfig/primary/Primary.fcl @@ -20,7 +20,7 @@ physics : { @table::Primary.filters } analyzers : { @table::Primary.analyzers } - TriggerPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence, FindMCPrimary ] + TriggerPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, @sequence::Primary.PrimarySequence] EndPath : @local::Primary.EndPath trigger_paths : [ TriggerPath ] end_paths : [ EndPath ] diff --git a/JobConfig/primary/prolog.fcl b/JobConfig/primary/prolog.fcl index abcc08dd57..fd8c4b2705 100644 --- a/JobConfig/primary/prolog.fcl +++ b/JobConfig/primary/prolog.fcl @@ -98,6 +98,7 @@ Primary: { EndSequence : [ genCountLogger ] # define paths } +Primary.PrimarySequence : [ @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence, FindMCPrimary ] Primary.EndPath : [ @sequence::Primary.EndSequence, Output ] Primary.Output.outputCommands : [ "drop *_*_*_*", @sequence::Primary.KeptProducts] diff --git a/JobConfig/test/MuonTransport/MuonTransportSingleStage.fcl b/JobConfig/test/MuonTransport/MuonTransportSingleStage.fcl index 61126251d9..ec6d2a70d9 100644 --- a/JobConfig/test/MuonTransport/MuonTransportSingleStage.fcl +++ b/JobConfig/test/MuonTransport/MuonTransportSingleStage.fcl @@ -16,8 +16,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/test/MuonTransport/geom_MuonTransportSingleStage.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/JobConfig/test/MuonTransport/MuonTransportStage1.fcl b/JobConfig/test/MuonTransport/MuonTransportStage1.fcl index 21209c4a5f..1244854367 100644 --- a/JobConfig/test/MuonTransport/MuonTransportStage1.fcl +++ b/JobConfig/test/MuonTransport/MuonTransportStage1.fcl @@ -16,8 +16,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/test/MuonTransport/geom_MuonTransportStage1.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/JobConfig/test/MuonTransport/MuonTransportStage2.fcl b/JobConfig/test/MuonTransport/MuonTransportStage2.fcl index 5693682ba6..897a97c133 100644 --- a/JobConfig/test/MuonTransport/MuonTransportStage2.fcl +++ b/JobConfig/test/MuonTransport/MuonTransportStage2.fcl @@ -16,8 +16,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/test/MuonTransport/geom_MuonTransportSingleStage.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/JobConfig/validation/mixPointsDump.fcl b/JobConfig/validation/mixPointsDump.fcl index adecd0f05c..9d6a5a3caa 100644 --- a/JobConfig/validation/mixPointsDump.fcl +++ b/JobConfig/validation/mixPointsDump.fcl @@ -13,8 +13,8 @@ services: { TFileService: { fileName: "stepPoints.root" } message: @local::default_message RandomNumberGenerator: {defaultEngineKind: "MixMaxRng" } - ConditionsService: { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService: { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService: { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService: { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } SeedService: @local::automaticSeeds } diff --git a/JobConfig/validation/psEnclosureBeamWindow.fcl b/JobConfig/validation/psEnclosureBeamWindow.fcl index 7046c5b8d9..0dbf8a3b53 100644 --- a/JobConfig/validation/psEnclosureBeamWindow.fcl +++ b/JobConfig/validation/psEnclosureBeamWindow.fcl @@ -21,8 +21,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/validation/geom_psEnclosure.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/JobConfig/validation/psEnclosureExtMonWindow.fcl b/JobConfig/validation/psEnclosureExtMonWindow.fcl index 82120020f3..1f715d57cc 100644 --- a/JobConfig/validation/psEnclosureExtMonWindow.fcl +++ b/JobConfig/validation/psEnclosureExtMonWindow.fcl @@ -23,8 +23,8 @@ services : { RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } GeometryService : { inputFile : "JobConfig/validation/geom_psEnclosure.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } SeedService : @local::automaticSeeds } diff --git a/Mu2eG4/fcl/iontest_g4s2.fcl b/Mu2eG4/fcl/iontest_g4s2.fcl index 5211cb36f0..ff63e4e7c0 100644 --- a/Mu2eG4/fcl/iontest_g4s2.fcl +++ b/Mu2eG4/fcl/iontest_g4s2.fcl @@ -33,8 +33,8 @@ services : { TFileService : { fileName : "nts.owner.iontest-g4s2.version.sequencer.root" } RandomNumberGenerator : {defaultEngineKind: "MixMaxRng"} GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : {} SeedService : @local::automaticSeeds } diff --git a/Mu2eG4/fcl/rantest.fcl b/Mu2eG4/fcl/rantest.fcl index 628ca1d6c7..530120718c 100644 --- a/Mu2eG4/fcl/rantest.fcl +++ b/Mu2eG4/fcl/rantest.fcl @@ -33,10 +33,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } #Mu2eG4Helper : { } diff --git a/Mu2eG4/fcl/replayWithSkip.fcl b/Mu2eG4/fcl/replayWithSkip.fcl index df85484f33..e8e15fe188 100644 --- a/Mu2eG4/fcl/replayWithSkip.fcl +++ b/Mu2eG4/fcl/replayWithSkip.fcl @@ -40,10 +40,10 @@ services : ConditionsService : { - conditionsfile : "Mu2eG4/test/conditions_01.txt" + conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } diff --git a/ParticleID/test/test.fcl b/ParticleID/test/test.fcl index 30b0641815..6af7edea16 100644 --- a/ParticleID/test/test.fcl +++ b/ParticleID/test/test.fcl @@ -21,8 +21,8 @@ services : { TFileService : { fileName : "testpid.root" } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault } diff --git a/TrackCaloMatching/test/caloMatching.fcl b/TrackCaloMatching/test/caloMatching.fcl index e01985e25a..868bc707cc 100644 --- a/TrackCaloMatching/test/caloMatching.fcl +++ b/TrackCaloMatching/test/caloMatching.fcl @@ -24,9 +24,9 @@ services : GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault diff --git a/TrackCaloMatching/test/readCaloMatching.fcl b/TrackCaloMatching/test/readCaloMatching.fcl index 3eb7f6d97d..3bfe6ec493 100644 --- a/TrackCaloMatching/test/readCaloMatching.fcl +++ b/TrackCaloMatching/test/readCaloMatching.fcl @@ -26,9 +26,9 @@ services : GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault diff --git a/TrackCaloMatching/test/readExtrapol.fcl b/TrackCaloMatching/test/readExtrapol.fcl index 3346142834..bb321fc26c 100644 --- a/TrackCaloMatching/test/readExtrapol.fcl +++ b/TrackCaloMatching/test/readExtrapol.fcl @@ -26,9 +26,9 @@ services : GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault diff --git a/TrackCaloMatching/test/trkExtrapol.fcl b/TrackCaloMatching/test/trkExtrapol.fcl index 5beb96d4ee..2895eb7859 100644 --- a/TrackCaloMatching/test/trkExtrapol.fcl +++ b/TrackCaloMatching/test/trkExtrapol.fcl @@ -24,9 +24,9 @@ services : GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault diff --git a/TrkExt/test/TrkExt.fcl b/TrkExt/test/TrkExt.fcl index 79e407ea42..de38d823db 100644 --- a/TrkExt/test/TrkExt.fcl +++ b/TrkExt/test/TrkExt.fcl @@ -23,9 +23,9 @@ services : GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } BTrkHelper : @local::BTrkHelperDefault diff --git a/TrkFilters/fcl/ReadDigisCalo.fcl b/TrkFilters/fcl/ReadDigisCalo.fcl index bc7713201d..d2bd546ed2 100644 --- a/TrkFilters/fcl/ReadDigisCalo.fcl +++ b/TrkFilters/fcl/ReadDigisCalo.fcl @@ -29,8 +29,8 @@ services : { # Timing : { } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } BTrkHelper : @local::BTrkHelperDefault SeedService : { @table::automaticSeeds diff --git a/TrkFilters/fcl/TTDigis.fcl b/TrkFilters/fcl/TTDigis.fcl index af37fdf6df..51da37d078 100644 --- a/TrkFilters/fcl/TTDigis.fcl +++ b/TrkFilters/fcl/TTDigis.fcl @@ -28,8 +28,8 @@ services : { # Timing : { } GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } Mu2eG4Helper : { } BTrkHelper : @local::BTrkHelperDefault SeedService : { @table::automaticSeeds diff --git a/Validation/fcl/ceSimReco.fcl b/Validation/fcl/ceSimReco.fcl index 6ac2a2eaa2..834d379b0a 100644 --- a/Validation/fcl/ceSimReco.fcl +++ b/Validation/fcl/ceSimReco.fcl @@ -1,11 +1,9 @@ # # generate conversion electrons from stopped muon file # and simulate all the way through the detector -# run calorimeter and tracker reco +# run calorimeter and tracker and CRV reco # - -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardServices.fcl" +#include "JobConfig/common/prolog.fcl" #include "JobConfig/primary/prolog.fcl" #include "JobConfig/digitize/prolog.fcl" #include "JobConfig/reco/prolog.fcl" @@ -13,31 +11,33 @@ process_name : ceSimReco source : { module_type :EmptyEvent } -services: @local::Services.SimAndReco +services: @local::Common.services physics: { producers : { + @table::Common.producers @table::Primary.producers @table::Digitize.producers @table::Reconstruction.producers -# @table::Trigger.producers generate : @local::CeEndpointGun } filters : { + @table::Common.filters @table::Primary.filters @table::Digitize.filters @table::Reconstruction.filters -# @table::Trigger.filters } analyzers: { + @table::Common.analyzers @table::Primary.analyzers @table::Digitize.analyzers @table::Reconstruction.analyzers -# @table::Trigger.analyzers } TriggerPath : [ - @sequence::Primary.TriggerPath, + @sequence::Common.generateSequence, + @sequence::Common.g4Sequence, + @sequence::Primary.PrimarySequence, @sequence::Digitize.TriggerPath, @sequence::Reconstruction.CaloReco, @sequence::Reconstruction.TrkReco, @@ -52,6 +52,8 @@ physics: { @sequence::Reconstruction.EndSequence, Output ] + trigger_paths : [ TriggerPath ] + end_paths : [ EndPath ] } outputs : { diff --git a/fcl/standardServices.fcl b/fcl/standardServices.fcl index e2f034683f..44bd03eefe 100644 --- a/fcl/standardServices.fcl +++ b/fcl/standardServices.fcl @@ -41,8 +41,8 @@ Services : { GeometryService : { inputFile : "Mu2eG4/geom/geom_common.txt" simulatedDetector : { tool_type: "Mu2e" } } - ConditionsService : { conditionsfile : "Mu2eG4/test/conditions_01.txt" } - GlobalConstantsService : { inputFile : "Mu2eG4/test/globalConstants_01.txt" } + ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } + GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } DbService : @local::DbEmpty ProditionsService: @local::Proditions } From 8f51134b2f34d37f93c318c8b3b1addb4d95c00e Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Tue, 11 May 2021 16:29:01 -0500 Subject: [PATCH 06/40] Put back legacy generator --- EventGenerator/fcl/prolog.fcl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/EventGenerator/fcl/prolog.fcl b/EventGenerator/fcl/prolog.fcl index d7e294cf07..b68653954b 100644 --- a/EventGenerator/fcl/prolog.fcl +++ b/EventGenerator/fcl/prolog.fcl @@ -56,6 +56,13 @@ mu2e.IPAMuonStops: { verbosityLevel : 0 } +# Generate Event; this is legacy, should not be used +generate: { + module_type : EventGenerator + allowReplacement : true + messageOnReplacement : true +} + # provided for consistency in some production scripts dummyGenerator : { module_type : EventGenerator From f813e7c83201e5fc87344f3bea66dc98a836490d Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Tue, 11 May 2021 16:31:49 -0500 Subject: [PATCH 07/40] put back default file --- EventGenerator/fcl/prolog.fcl | 1 + 1 file changed, 1 insertion(+) diff --git a/EventGenerator/fcl/prolog.fcl b/EventGenerator/fcl/prolog.fcl index b68653954b..f954bf3302 100644 --- a/EventGenerator/fcl/prolog.fcl +++ b/EventGenerator/fcl/prolog.fcl @@ -59,6 +59,7 @@ mu2e.IPAMuonStops: { # Generate Event; this is legacy, should not be used generate: { module_type : EventGenerator + inputfile : "Mu2eG4/test/genconfig_02.txt" allowReplacement : true messageOnReplacement : true } From df3ee0aced45e57587b7cf5827cd82d52a57b302 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Wed, 12 May 2021 11:31:50 -0500 Subject: [PATCH 08/40] remove 'services' stanza from common/prolog. Delete more obsolete files --- JobConfig/beam/BeamResampler.fcl | 3 +- JobConfig/beam/CRV-cat.fcl | 35 --- JobConfig/beam/CRVNeutralsResampler.fcl | 3 +- JobConfig/beam/DS-flash.fcl | 148 ------------ JobConfig/beam/DS-resampler.fcl | 172 -------------- JobConfig/beam/DS.fcl | 265 --------------------- JobConfig/beam/OOTstops.fcl | 35 --- JobConfig/beam/POT.fcl | 3 +- JobConfig/beam/PS-resampler.fcl | 103 -------- JobConfig/beam/PS.fcl | 301 ------------------------ JobConfig/beam/TS-CRV.fcl | 143 ----------- JobConfig/beam/TS.fcl | 164 ------------- JobConfig/beam/beam_nts1dsregion.fcl | 32 --- JobConfig/beam/prolog_old.fcl | 233 ------------------ JobConfig/common/prolog.fcl | 17 -- JobConfig/pileup/Pileup.fcl | 3 +- JobConfig/primary/Primary.fcl | 3 +- 17 files changed, 9 insertions(+), 1654 deletions(-) delete mode 100644 JobConfig/beam/CRV-cat.fcl delete mode 100644 JobConfig/beam/DS-flash.fcl delete mode 100644 JobConfig/beam/DS-resampler.fcl delete mode 100644 JobConfig/beam/DS.fcl delete mode 100644 JobConfig/beam/OOTstops.fcl delete mode 100644 JobConfig/beam/PS-resampler.fcl delete mode 100644 JobConfig/beam/PS.fcl delete mode 100644 JobConfig/beam/TS-CRV.fcl delete mode 100644 JobConfig/beam/TS.fcl delete mode 100644 JobConfig/beam/beam_nts1dsregion.fcl delete mode 100644 JobConfig/beam/prolog_old.fcl diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index 5dbb9af675..5dcb089f3e 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -6,6 +6,7 @@ # original author: Yuri Oksuzian, 2019 # Updated for MDC2020 (DetectorSteps): D. Brown +#include "fcl/standardServices.fcl" #include "CommonMC/fcl/prolog.fcl" #include "JobConfig/common/prolog.fcl" #include "JobConfig/beam/prolog.fcl" @@ -19,7 +20,7 @@ source : { maxEvents : @nil } -services : @local::Common.services +services : @local::Services.Sim physics: { producers : { @table::CommonMC.producers diff --git a/JobConfig/beam/CRV-cat.fcl b/JobConfig/beam/CRV-cat.fcl deleted file mode 100644 index 10b51cfc37..0000000000 --- a/JobConfig/beam/CRV-cat.fcl +++ /dev/null @@ -1,35 +0,0 @@ -// Re-sample CRV data. This dumps subrun headers from CD3 -// while doing concatenation for MDC2018 -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardServices.fcl" -process_name: CRVcat - -physics.producers.genCounter: {module_type: GenEventCounter } -physics.filters.crvFilter: { - module_type: ResamplingMixer - fileNames: @nil - readMode: "sequential" - wrapFiles: true - mu2e: { - products: { - genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } - simParticleMixer: { mixingMap: [ [ "crvFilter", "" ] ] } - stepPointMCMixer: { mixingMap: [ [ "crvFilter:CRV", ":" ] ] } - } - } -} - -source: { module_type : EmptyEvent } -services : @local::Services.Sim -outputs.crvOutput : { - module_type: RootOutput - SelectEvents: [crvPath] - fileName: @nil - outputCommands: [ "drop *_*_*_*", - "keep *_crvFilter_*_*" ] -} -physics.crvPath: [ crvFilter ] -physics.out: [ crvOutput ] -# must use end_paths or generate_fcl won't see the output module -physics.end_paths : [out] - diff --git a/JobConfig/beam/CRVNeutralsResampler.fcl b/JobConfig/beam/CRVNeutralsResampler.fcl index 356a72ec7a..5145a0cdd1 100644 --- a/JobConfig/beam/CRVNeutralsResampler.fcl +++ b/JobConfig/beam/CRVNeutralsResampler.fcl @@ -5,6 +5,7 @@ # # Updated for MDC2020 (DetectorSteps): D. Brown +#include "fcl/standardServices.fcl" #include "CommonMC/fcl/prolog.fcl" #include "JobConfig/common/prolog.fcl" #include "JobConfig/beam/prolog.fcl" @@ -18,7 +19,7 @@ source : { maxEvents : @nil } -services : @local::Common.services +services : @local::Services.Sim physics: { producers : { @table::CommonMC.producers diff --git a/JobConfig/beam/DS-flash.fcl b/JobConfig/beam/DS-flash.fcl deleted file mode 100644 index e34e5e0839..0000000000 --- a/JobConfig/beam/DS-flash.fcl +++ /dev/null @@ -1,148 +0,0 @@ -// Re-sample particles entering the DS, propagate them, and write out tracker hits -// and compressed calorimeter showers. That is, we start with the same inputs -// as regular beam stage 3, but our outputs correspond to stage 4. -// -// Andrei Gaponenko, 2018 - -#include "JobConfig/beam/prolog.fcl" - -process_name: dsflash - -source: { module_type : EmptyEvent } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Flash } -outputs: { @table::mu2e.outputs.g4s4Defs } - -//---------------------------------------------------------------- -// Mofidy the CD3-like flash s4 setup for the resampling. - -// Take out truncated and CRV streams -physics.trigger_paths: [ detPath ] -physics.out: [ detectorOutput ] - -// We should run genCounter for all EmptyEvent jobs. -physics.producers.genCounter: {module_type: GenEventCounter } - -// Bring in info from the previous stage -physics.filters.flashResample: { - module_type: ResamplingMixer - fileNames: @nil - readMode: "sequential" - wrapFiles: true - mu2e: { - products: { - genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } - simParticleMixer: { mixingMap: [ [ "muonBeamFilter", "" ] ] } - stepPointMCMixer: { mixingMap: [ - [ "muonBeamFilter:virtualdetector", ":" ], - [ "muonBeamFilter:DSVacuum", ":" ] - ] } - } - } -} - -// Point Mu2eG4 to the pre-simulated data -physics.producers.g4run.inputs: { - primaryType: "StepPoints" - primaryTag: "flashResample:DSVacuum" - inputMCTrajectories: "" - inputPhysVolumeMultiInfo: "" # earlier info dropped -} -physics.producers.g4run.SDConfig.preSimulatedHits: ["flashResample:virtualdetector"] - - -//---------------------------------------------------------------- -// stopped muon daughter vetoing - -physics.producers.stoppedMuonFinder: { - module_type: "StoppedParticlesFinder" - particleInput: "g4run" - particleTypes: [ 13 ] - physVolInfoInput: "g4run" - stoppingMaterial: "StoppingTarget_Al" - verbosityLevel: 1 -} - -physics.producers.stoppedMuonDaughters: { - module_type: SimParticleDaughterSelector - particleInput: "stoppedMuonFinder" - // EMCascade should not be vetoed because we do not re-simulate it - processes: [ "DIO", "NuclearCapture" ] -} - -physics.producers.outOfTargetMuonFinder : { - module_type : StoppedParticlesFinder - particleInput : "g4run" - physVolInfoInput : "g4run" - vetoedMaterials : [ "StoppingTarget_Al" ] - particleTypes : [ 13 ] // mu- - verbosityLevel: 1 -} - -physics.producers.outOfTargetMuonDaughters: { - module_type: SimParticleDaughterSelector - particleInput: "outOfTargetMuonFinder" - // We do re-simulate EMCascade for out of target stops - processes: [ "DIO", "NuclearCapture", "EMCascade" ] -} - -physics.filters.flashPrefilter: { - module_type: FilterG4Out - mainHitInputs: [ "g4run:tracker", "g4run:calorimeter", "g4run:calorimeterRO" ] - extraHitInputs: [ "g4run:virtualdetector", "g4run:protonabsorber" ] - vetoParticles: [ "stoppedMuonDaughters", "outOfTargetMuonDaughters" ] -} - -//---------------------------------------------------------------- -// Fix shower compressor config -physics.producers.CaloShowerStepMaker.physVolInfoInput: g4run -physics.producers.CaloShowerStepMaker.usePhysVolInfo: true -physics.producers.CaloShowerStepMaker.calorimeterStepPoints: "flashPrefilter:calorimeter" -physics.producers.CaloShowerStepMaker.calorimeterROStepPoints: "flashPrefilter:calorimeterRO" -// The module needs to stop using getMany() and accept InputTags for configuration. -// Until it is fixed, we have to use a hacked version. -physics.producers.CaloShowerStepMaker.module_type: CaloShowerStepMakerHACKED - - -//---------------------------------------------------------------- -// The final filter -physics.filters.detectorFilter: { - module_type: "FilterG4Out" - mainHitInputs: [ - "flashPrefilter:tracker" - ] - mainSPPtrInputs: [ - "CaloShowerStepMaker" - ] - extraHitInputs: [ - "flashPrefilter:virtualdetector", - "flashPrefilter:protonabsorber" - ] -} - -// Add genCounter and flashResample to the trigger path. -physics.detPath: [ "genCounter", "flashResample", - //need to remove compressPVDetector// @sequence::physics.detPath - "g4run", - "g4consistent", - // Need to veto stopped muon daughters - "stoppedMuonFinder", - "stoppedMuonDaughters", - "outOfTargetMuonFinder", - "outOfTargetMuonDaughters", - - "flashPrefilter", # removes stopped muon daughters, filters out stuff not hitting tracker or calo - - "CaloShowerStepMaker", - "detectorFilter", # filters out particles in calo showers - - "CaloShowerCrystalSteps", - "CaloShowerROSteps" -] - -// Set output file names -services.TFileService.fileName: "nts.owner.DS-flash.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.DS-flash-TrkCal.version.sequencer.art" - -// Test: -// physics.filters.flashResample.fileNames: [ "/mu2e/data/users/gandr/20180524.cache/sim.mu2e.cd3-beam-g4s2-mubeam.0728a.001002_00000000.art" ] diff --git a/JobConfig/beam/DS-resampler.fcl b/JobConfig/beam/DS-resampler.fcl deleted file mode 100644 index d6a11d0d21..0000000000 --- a/JobConfig/beam/DS-resampler.fcl +++ /dev/null @@ -1,172 +0,0 @@ -// Re-sample particles entering the DS, propagate them, and write out tracker hits -// and compressed calorimeter showers. -// -// Yuri Oksuzian, 2019 - -#include "JobConfig/beam/prolog.fcl" - -process_name: DSBeamResampler - -source: { module_type : EmptyEvent } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Flash } -outputs: { @table::mu2e.outputs.g4s4Defs } - -//---------------------------------------------------------------- -physics.trigger_paths: [ detPath, tgtFilter ] -physics.out: [ detectorOutput, tgtStopOutput ] - -// We should run genCounter for all EmptyEvent jobs. -physics.producers.genCounter: {module_type: GenEventCounter } - -// Bring in info from the previous stage -physics.filters.flashResample: { - module_type: ResamplingMixer - fileNames: @nil - readMode: "sequential" - wrapFiles: true - mu2e: { - products: { - genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } - simParticleMixer: { mixingMap: [ [ "muonBeamFilter", "" ] ] } - stepPointMCMixer: { mixingMap: [ - [ "muonBeamFilter:virtualdetector", ":" ], - [ "muonBeamFilter:mubeam", ":" ] - ] } - - volumeInfoMixer: { - srInput: "compressPVmuonBeam" - evtOutInstanceName: "eventlevel" - } - } - } -} - -// Point Mu2eG4 to the pre-simulated data -physics.producers.g4run.inputs: { - primaryType: "StepPoints" - primaryTag: "flashResample:mubeam" - inputMCTrajectories: "" - - simStageOverride: 1 - inputPhysVolumeMultiInfo: "flashResample" - updateEventLevelVolumeInfos: { - input: "flashResample:eventlevel" - outInstance: "eventlevel" - } - -} -physics.producers.g4run.SDConfig.preSimulatedHits: ["flashResample:virtualdetector"] - -//---------------------------------------------------------------- -// stopped muon daughter vetoing - -physics.producers.stoppedMuonFinder: { - module_type: "StoppedParticlesFinder" - particleInput: "g4run" - particleTypes: [ 13 ] - physVolInfoInput: "g4run:eventlevel" - useEventLevelVolumeInfo: true - stoppingMaterial: "StoppingTarget_Al" - verbosityLevel: 1 -} - -physics.producers.stoppedMuonDaughters: { - module_type: SimParticleDaughterSelector - particleInput: "stoppedMuonFinder" - // EMCascade should not be vetoed because we do not re-simulate it - processes: [ "DIO", "NuclearCapture" ] -} - -physics.filters.flashPrefilter: { - module_type: FilterG4Out - mainHitInputs: [ "g4run:tracker", "g4run:calorimeter", "g4run:calorimeterRO", "g4run:CRV", "g4run:protonabsorber", "g4run:virtualdetector" ] - vetoParticles: [ "stoppedMuonDaughters" ] -} - -physics.filters.tgtStopFilter: { - module_type: FilterG4Out - mainHitInputs: [] - extraHitInputs: [ "g4run:virtualdetector" ] - mainSPPtrInputs: [ "stoppedMuonFinder" ] -} - -//---------------------------------------------------------------- -// Fix shower compressor config -physics.producers.CaloShowerStepMaker.physVolInfoInput: g4run -physics.producers.CaloShowerStepMaker.usePhysVolInfo: true -physics.producers.CaloShowerStepMaker.calorimeterStepPoints: "flashPrefilter:calorimeter" -physics.producers.CaloShowerStepMaker.calorimeterROStepPoints: "flashPrefilter:calorimeterRO" -// The module needs to stop using getMany() and accept InputTags for configuration. -// Until it is fixed, we have to use a hacked version. -physics.producers.CaloShowerStepMaker.module_type: CaloShowerStepMakerHACKED - - -//---------------------------------------------------------------- -// The final filter -physics.filters.detectorFilter: { - module_type: "FilterG4Out" - mainHitInputs: [ - "flashPrefilter:tracker", - "flashPrefilter:CRV" - ] - mainSPPtrInputs: [ - "CaloShowerStepMaker" - ] - extraHitInputs: [ - "flashPrefilter:virtualdetector", - "flashPrefilter:protonabsorber" - ] -} - -// Add genCounter and flashResample to the trigger path. -physics.detPath: [ "genCounter", "flashResample", - //need to remove compressPVDetector// @sequence::physics.detPath - "g4run", - "g4consistent", - // Need to veto stopped muon daughters - "stoppedMuonFinder", - "stoppedMuonDaughters", - "flashPrefilter", # removes stopped muon daughters, filters out stuff not hitting tracker or calo - "CaloShowerStepMaker", - "detectorFilter", # filters out particles in calo showers - "CaloShowerCrystalSteps", - "CaloShowerROSteps" -] - -physics.tgtFilter : ["genCounter", "flashResample", g4run, g4consistent, stoppedMuonFinder, tgtStopFilter] - - -outputs.tgtStopOutput : { - module_type : RootOutput - SelectEvents: [tgtFilter] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_tgtStopFilter_*_*" - ] - fileName : "sim.owner.DS-TGTstops.version.sequencer.art" -} - -// Set output file names -services.TFileService.fileName: "nts.owner.DS-resampler.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.DS-resampler-TrkCalCRV.version.sequencer.art" -services.GeometryService.simulatedDetector.tool_type : "Mu2e" -services.GeometryService.inputFile : "Mu2eG4/geom/geom_common_phase1.txt" - -physics.producers.g4run.Mu2eG4CommonCut:{ - // Kill stuck e+/e- - type: intersection - pars: - [ - {type: intersection pars: [ { type: kineticEnergy cut: 1.0 }, { type: pdgId pars: [ 11, -11] }]}, - {type: inVolume pars: [ TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, DS2Vacuum, HallAir ]} - ] -} - -// Test: -//physics.filters.flashResample.fileNames: [ "/pnfs/mu2e/tape/usr-sim/sim/gandr/PS-mubeam/0326a/art/c4/22/sim.gandr.PS-mubeam.0326a.000001_00000000.art" ] - -// Calo stuff is broken, get it out of the path to test PhysicalVolumeInfo handling by other modules -//physics.detPath: [ "genCounter", "flashResample", "g4run", "g4consistent", "stoppedMuonFinder", "stoppedMuonDaughters", "flashPrefilter" ] diff --git a/JobConfig/beam/DS.fcl b/JobConfig/beam/DS.fcl deleted file mode 100644 index 37a8484c66..0000000000 --- a/JobConfig/beam/DS.fcl +++ /dev/null @@ -1,265 +0,0 @@ -// Andrei Gaponenko, 2015 -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardProducers.fcl" -#include "fcl/standardServices.fcl" - -# Give this job a name. -process_name : DS - -source : { module_type : RootInput } - -services : @local::Services.Sim - -physics : { - - //================================================================ - producers: { - g4run: @local::g4run - - compressPVMothers: { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "mothersFilter" ] - } - - compressPVCRV: { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "crvFilter" ] - } - - compressPVTGTStops: { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "tgtStopFilter" ] - } - - compressPVOOTStops: { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "ootStopFilter" ] - } - - compressPVFull : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "g4run" ] - } - - //---------------------------------------------------------------- - stoppedMuonFinder : { - module_type : StoppedParticlesFinder - particleInput : "g4run" - // multiple matches, we'll get the one from the current process, which is what we want - physVolInfoInput : "g4run" - stoppingMaterial : "StoppingTarget_Al" - particleTypes : [ 13 ] // mu- - verbosityLevel: 1 - } - - stoppedMuonDaughters: { - module_type: SimParticleDaughterSelector - particleInput: "stoppedMuonFinder" - // EMCascade should not be vetoed because we do not re-simulate it - processes: [ "DIO", "NuclearCapture" ] - } - - outOfTargetMuonFinder : { - module_type : StoppedParticlesFinder - particleInput : "g4run" - physVolInfoInput : "g4run" - vetoedMaterials : [ "StoppingTarget_Al" ] - particleTypes : [ 13 ] // mu- - verbosityLevel: 1 - } - - outOfTargetMuonDaughters: { - module_type: SimParticleDaughterSelector - particleInput: "outOfTargetMuonFinder" - // We do re-simulate EMCascade for out of target stops - processes: [ "DIO", "NuclearCapture", "EMCascade" ] - } - - } // producers - - //================================================================ - filters: { - mothersFilter: { - module_type: FilterG4Out - mainHitInputs: [ "g4run:DetectorMother" ] - extraHitInputs: [ "g4run:virtualdetector" ] - vetoParticles: [ "stoppedMuonDaughters", "outOfTargetMuonDaughters" ] - } - - crvFilter: { - module_type: FilterG4Out - mainHitInputs: [ "g4run:CRV" ] - extraHitInputs: [ "g4run:virtualdetector" ] - vetoParticles: [ "stoppedMuonDaughters", "outOfTargetMuonDaughters" ] - } - - tgtStopFilter: { - module_type: FilterG4Out - mainHitInputs: [] - extraHitInputs: [ "g4run:virtualdetector" ] - mainSPPtrInputs: [ "stoppedMuonFinder" ] - } - - ootStopFilter: { - module_type: FilterG4Out - mainHitInputs: [] - extraHitInputs: [ "g4run:virtualdetector" ] - mainSPPtrInputs: [ "outOfTargetMuonFinder" ] - } - - g4status: { - module_type: FilterStatusG4 - input: "g4run" - } - - g4consistent: { - module_type: FilterStatusG4 - input: "g4run" - maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers - } - } - - //================================================================ - analyzers: { - genCountLogger: { - module_type: GenEventCountReader - } - } - - - //================================================================ - motherFilter: [ g4run, g4consistent, - stoppedMuonFinder, stoppedMuonDaughters, - outOfTargetMuonFinder, outOfTargetMuonDaughters, - mothersFilter, compressPVMothers - ] - - trigCRV: [ g4run, g4consistent, - stoppedMuonFinder, stoppedMuonDaughters, - outOfTargetMuonFinder, outOfTargetMuonDaughters, - crvFilter, compressPVCRV - ] - - tgtFilter : [g4run, g4consistent, stoppedMuonFinder, tgtStopFilter, compressPVTGTStops] - ootFilter : [g4run, g4consistent, outOfTargetMuonFinder, ootStopFilter, compressPVOOTStops] - g4StatusFilter : [g4run, "!g4status", compressPVFull ] - trigger_paths : [motherFilter, trigCRV, tgtFilter, ootFilter, g4StatusFilter] - - out : [mothersOutput, crvOutput, tgtStopOutput, ootStopOutput, truncatedEvtsOutput] - gcl : [genCountLogger] - end_paths : [out, gcl] -} - -outputs: { - mothersOutput : { - module_type : RootOutput - SelectEvents: [motherFilter] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_mothersFilter_*_*", - "keep *_compressPVMothers_*_*" - ] - fileName : "sim.owner.DS-beam.version.sequencer.art" - } - - crvOutput : { - module_type : RootOutput - SelectEvents: [trigCRV] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_crvFilter_*_*", - "keep *_compressPVCRV_*_*" - ] - fileName : "sim.owner.DS-crv.version.sequencer.art" - } - - tgtStopOutput : { - module_type : RootOutput - SelectEvents: [tgtFilter] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_tgtStopFilter_*_*", - "keep *_compressPVTGTStops_*_*" - ] - fileName : "sim.owner.DS-TGTstops.version.sequencer.art" - } - - ootStopOutput : { - module_type : RootOutput - SelectEvents: [ootFilter] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_ootStopFilter_*_*", - "keep *_compressPVOOTStops_*_*" - ] - fileName : "sim.owner.DS-OOTstops.version.sequencer.art" - } - - truncatedEvtsOutput : { - module_type : RootOutput - SelectEvents: [g4StatusFilter] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_g4run_*_*", - "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_*_*_*", - "keep *_compressPVFull_*_*" - ] - fileName : "sim.owner.DS-truncated.version.sequencer.art" - } -} -//================================================================ -physics.producers.g4run.inputs: { - primaryType: "StepPoints" - primaryTag: "muonBeamFilter:DSVacuum" - inputMCTrajectories: "" - inputPhysVolumeMultiInfo: "compressPVmuonBeam" -} - -// Mu2eG4 cuts are evaluated in the listed order. -// The first match wins. For the "intersection" -// type, the first false stops the evaluation. -// For the "union" type the first true stops the evaluation. -physics.producers.g4run.Mu2eG4CommonCut: { - type: inVolume - pars: [TrackerMother, CalorimeterMother] - write: DetectorMother -} - -physics.producers.g4run.SDConfig: { - enableSD : [ virtualdetector, CRV ] // activate just the explicitly listed SDs - preSimulatedHits: ["muonBeamFilter:virtualdetector"] - TimeVD: { times: [] } -} - -// Limit the amount of "Begin processing the ... record" messages -services.message.destinations.log.categories.ArtReport.reportEvery : 1 -services.message.destinations.log.categories.ArtReport.limit : 1 -services.message.destinations.log.categories.ArtReport.timespan : 300 - -physics.producers.g4run.physics.minRangeCut : 0.010 // mm - -services.TFileService.fileName : "nts.owner.DS.version.sequencer.root" - -// Initialze seeding of random engines: do not put these lines in base .fcl files for grid jobs. -services.SeedService.baseSeed : 8 -services.SeedService.maxUniqueEngines : 20 diff --git a/JobConfig/beam/OOTstops.fcl b/JobConfig/beam/OOTstops.fcl deleted file mode 100644 index c827601608..0000000000 --- a/JobConfig/beam/OOTstops.fcl +++ /dev/null @@ -1,35 +0,0 @@ -// Andrei Gaponenko, 2015 - -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardServices.fcl" - -process_name : DSOOTstops - -source : { module_type : RootInput } - -services : { - message: @local::default_message - TFileService: { fileName: "nts.owner.DS-OOTstops.version.sequencer.root" } -} - -physics: { - - analyzers: { - genCountLogger: { module_type: GenEventCountReader } - - outOfTargetDumper: { - module_type: StoppedParticlesDumper - dumpSimParticleLeaves: true - inputCollection: "ootStopFilter" - writeProperTime : false - } - } - - an: [ genCountLogger, outOfTargetDumper ] - end_paths: [an] -} - -// Limit the amount of "Begin processing the ... record" messages -services.message.destinations.log.categories.ArtReport.reportEvery : 1 -services.message.destinations.log.categories.ArtReport.limit : 1 -services.message.destinations.log.categories.ArtReport.timespan : 300 diff --git a/JobConfig/beam/POT.fcl b/JobConfig/beam/POT.fcl index f4a9caf3ff..e001ccdbfb 100644 --- a/JobConfig/beam/POT.fcl +++ b/JobConfig/beam/POT.fcl @@ -3,7 +3,6 @@ # 1) Charged particles at the entrance to the DS at the beamline # 2) (mostly) neutral particles that exit the TS or otherwise reach the inside of the shielding before the CRV # -#include "fcl/minimalMessageService.fcl" #include "fcl/standardServices.fcl" #include "JobConfig/common/prolog.fcl" #include "JobConfig/beam/prolog.fcl" @@ -15,7 +14,7 @@ source : { maxEvents : @nil } -services : @local::Common.services +services : @local::Services.Sim physics : { # setup the modules diff --git a/JobConfig/beam/PS-resampler.fcl b/JobConfig/beam/PS-resampler.fcl deleted file mode 100644 index 0b96a83410..0000000000 --- a/JobConfig/beam/PS-resampler.fcl +++ /dev/null @@ -1,103 +0,0 @@ -// Re-sample particles entering from the PS (dsregion stream), propagate them, and write out tracker, CRV hits -// and compressed calorimeter showers. -// -// Yuri Oksuzian, 2019 - -#include "JobConfig/beam/prolog.fcl" - -process_name: psresampler - -source: { module_type : EmptyEvent } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Flash } -outputs: { @table::mu2e.outputs.g4s4Defs } - -//---------------------------------------------------------------- -physics.trigger_paths: [ detPath ] -physics.out: [ detectorOutput ] - -// We should run genCounter for all EmptyEvent jobs. -physics.producers.genCounter: {module_type: GenEventCounter } - -// Bring in info from the previous stage -physics.filters.flashResample: { - module_type: ResamplingMixer - fileNames: @nil - readMode: "sequential" - wrapFiles: true - mu2e: { - products: { - genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } - simParticleMixer: { mixingMap: [ [ "dsRegionFilter", "" ] ] } - stepPointMCMixer: { mixingMap: [ - [ "dsRegionFilter:virtualdetector", ":" ], - [ "dsRegionFilter:dsregion", ":" ] - ] } - } - } -} - -// Point Mu2eG4 to the pre-simulated data -physics.producers.g4run.inputs: { - primaryType: "StepPoints" - primaryTag: "flashResample:dsregion" - inputMCTrajectories: "" - inputPhysVolumeMultiInfo: "" # earlier info dropped -} -physics.producers.g4run.SDConfig.preSimulatedHits: ["flashResample:virtualdetector"] - -//---------------------------------------------------------------- -physics.filters.flashPrefilter: { - module_type: FilterG4Out - mainHitInputs: [ "g4run:tracker", "g4run:calorimeter", "g4run:calorimeterRO", "g4run:CRV", "g4run:protonabsorber", "g4run:virtualdetector" ] - vetoParticles: [ ] -} - -//---------------------------------------------------------------- -// Fix shower compressor config -physics.producers.CaloShowerStepMaker.physVolInfoInput: g4run -physics.producers.CaloShowerStepMaker.usePhysVolInfo: true -physics.producers.CaloShowerStepMaker.calorimeterStepPoints: "flashPrefilter:calorimeter" -physics.producers.CaloShowerStepMaker.calorimeterROStepPoints: "flashPrefilter:calorimeterRO" -// The module needs to stop using getMany() and accept InputTags for configuration. -// Until it is fixed, we have to use a hacked version. -physics.producers.CaloShowerStepMaker.module_type: CaloShowerStepMakerHACKED - - -//---------------------------------------------------------------- -// The final filter -physics.filters.detectorFilter: { - module_type: "FilterG4Out" - mainHitInputs: [ - "flashPrefilter:tracker", - "flashPrefilter:CRV" - ] - mainSPPtrInputs: [ - "CaloShowerStepMaker" - ] - extraHitInputs: [ - "flashPrefilter:virtualdetector", - "flashPrefilter:protonabsorber" - ] -} - -// Add genCounter and flashResample to the trigger path. -physics.detPath: [ "genCounter", "flashResample", - //need to remove compressPVDetector// @sequence::physics.detPath - "g4run", - "g4consistent", - "flashPrefilter", # removes stopped muon daughters, filters out stuff not hitting tracker, calo or CRV - "CaloShowerStepMaker", - "detectorFilter", # filters out particles in calo showers - "CaloShowerCrystalSteps", - "CaloShowerROSteps" -] - -// Set output file names -services.TFileService.fileName: "nts.owner.PS-resampler.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.PS-resampler-TrkCalCRV.version.sequencer.art" -services.GeometryService.simulatedDetector.tool_type : "Mu2e" -services.GeometryService.inputFile : "Mu2eG4/geom/geom_common_phase1.txt" - -// Test: -// physics.filters.flashResample.fileNames: [ "/pnfs/mu2e/tape/phy-sim/sim/mu2e/beam-g4s1-dsregion/g4-10-5/art/91/b1/sim.mu2e.beam-g4s1-dsregion.g4-10-5.002701_00002991.art" ] diff --git a/JobConfig/beam/PS.fcl b/JobConfig/beam/PS.fcl deleted file mode 100644 index c8220de383..0000000000 --- a/JobConfig/beam/PS.fcl +++ /dev/null @@ -1,301 +0,0 @@ -// Andrei Gaponenko, 2013 - -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardProducers.fcl" -#include "fcl/standardServices.fcl" -#include "Mu2eG4/fcl/prolog.fcl" - -BEGIN_PROLOG -#---------------------------------------------------------------- -# Mu2eG4 cuts - -dsRegionCuts: { - type: intersection - pars: [ - // Plane on the west side, outside of the wall - { type: plane normal: [ 0, 0, 1 ] point : [ 0, 0, -4851 ] }, - - // Yuri's e-mail 2015-04-10: x=1612. from CRV considerations. - // This is also large enought to enclose TS3 (its half length is 975 mm). - { type: plane normal: [ -1, 0, 0 ] point : [ 1612., 0, 0 ] }, - - // Make sure the muon beam reaches our TS3Vacuum stopping volume - { type: notInVolume pars: [TS2Vacuum] }, - - // This union splits the output of the above cuts - // into two exclusive streams - { type: union pars: [ - { - type: intersection - pars: [ - { type: inVolume pars: [TS3Vacuum] }, - { type: isCharged } - ] - write: mubeam - }, - { type: constant - value: true - write: dsregion - } - ] - } - ] -} - -extMonRegionCuts: { - type: intersection - pars: [ - { - type: plane - normal: @local::mu2eg4BeamDumpNormal - // Dump core center: (661.90, 527.40, -19428.2) - // A plane 950 mm beyond the core center as measured along - // the "beam" direction normal to the dump face. - // DeltaZ = L/cos(13.72 degrees) - point: [ 661.90, 527.40, -20406.10 ] - }, - - // Split the output of the "plane" cut above into two exclusive streams - { type: union pars: [ - - { type: intersection - pars: [ - { - type: inVolume - pars: - [ collimator1Channel, - HallAir, - ExtMonFNALfilterMagnetAperture, - ExtMonFNALfilterMagnetApertureMarginUp, - ExtMonFNALfilterMagnetApertureMarginDn - ] - }, - { type: isCharged } - ] - write: extmonbeam - }, - - { type: constant value: true write: extmonregion } - ] - } - ] -} -#---------------------------------------------------------------- -END_PROLOG - -#================================================================ -# Give this job a name. -process_name : PS - -source : { - module_type : EmptyEvent - maxEvents : @nil -} - -services : @local::Services.Sim - -physics : { - analyzers: { - genCountLogger: { - module_type: GenEventCountReader - } - - collectionSizes: { - module_type: CollectionSizeAnalyzer - useModuleLabel: true useInstanceName: true useProcessName: false - } - } - - producers: { - generate: @local::PrimaryProtonGun - - genCounter: { - module_type: GenEventCounter - } - - g4run: @local::g4run - - compressPVmuonBeam : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "muonBeamFilter" ] - } - - compressPVdsRegion : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "dsRegionFilter" ] - } - - compressPVextmonBeam : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "extmonBeamFilter" ] - } - - compressPVextmonRegion : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "extmonRegionFilter" ] - } - - compressPVFull : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "g4run" ] - } - } - - filters: { - muonBeamFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:mubeam" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - dsRegionFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:dsregion" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - extmonBeamFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:extmonbeam" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - extmonRegionFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:extmonregion" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - g4status: { - module_type: FilterStatusG4 - input: "g4run" - } - - g4consistent: { - module_type: FilterStatusG4 - input: "g4run" - maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers - } - } - - trigmubeam : [generate, genCounter, g4run, g4consistent, muonBeamFilter, compressPVmuonBeam] - trigdsregion : [generate, genCounter, g4run, g4consistent, dsRegionFilter, compressPVdsRegion] - trigextmonbeam : [generate, genCounter, g4run, g4consistent, extmonBeamFilter, compressPVextmonBeam] - trigextmonregion : [generate, genCounter, g4run, g4consistent, extmonRegionFilter, compressPVextmonRegion] - g4StatusFilter : [generate, genCounter, g4run, "!g4status", compressPVFull ] - trigger_paths : [trigmubeam, trigdsregion, trigextmonbeam, trigextmonregion, g4StatusFilter] - - outputs: [truncatedEvtsOutput, mubeamout, dsout, extmonbeamout,extmonregionout] - an: [ genCountLogger, collectionSizes ] - end_paths: [outputs, an] -} - -outputs: { - - mubeamout : { - module_type : RootOutput - SelectEvents: ["trigmubeam"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_muonBeamFilter_*_*", - "keep *_compressPVmuonBeam_*_*" - ] - fileName : "sim.owner.PS-mubeam.version.sequencer.art" - } - - dsout : { - module_type : RootOutput - SelectEvents: ["trigdsregion"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_dsRegionFilter_*_*", - "keep *_compressPVdsRegion_*_*" - ] - fileName : "sim.owner.PS-dsregion.version.sequencer.art" - } - - extmonbeamout : { - module_type : RootOutput - SelectEvents: ["trigextmonbeam"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_extmonBeamFilter_*_*", - "keep *_compressPVextmonBeam_*_*" - ] - fileName : "sim.owner.PS-extmonbeam.version.sequencer.art" - } - - extmonregionout : { - module_type : RootOutput - SelectEvents: ["trigextmonregion"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_extmonRegionFilter_*_*", - "keep *_compressPVextmonRegion_*_*" - ] - fileName : "sim.owner.PS-extmonregion.version.sequencer.art" - } - - truncatedEvtsOutput : { - module_type : RootOutput - SelectEvents: ["g4StatusFilter"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_g4run_*_*", - "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_g4run_*_*", - "keep *_compressPVFull_*_*" - ] - fileName : "sim.owner.PS-truncated.version.sequencer.art" - } - -} - -//================================================================ -// Mu2eG4 cuts are evaluated in the listed order. -// The first match wins. For the "intersection" -// type, the first false stops the evaluation. -// For the "union" type the first true stops the evaluation. -physics.producers.g4run.Mu2eG4CommonCut: { - type: union - pars: [ - @local::mu2eg4CutDeltaElectrons, // 8% speed up from killing electrons with Ek<1 MeV - @local::dsRegionCuts, - @local::extMonRegionCuts - ] -} - -physics.producers.g4run.SDConfig.enableSD: [ virtualdetector ] // activate just the explicitly listed SDs - -// Larger range cut for the first stage -physics.producers.g4run.physics.minRangeCut : 1. // mm - -// Initialze seeding of random engines: do not put these lines in base .fcl files for grid jobs. -services.SeedService.baseSeed : 8 -services.SeedService.maxUniqueEngines : 20 - -services.GeometryService.inputFile : "JobConfig/common/geom_baseline.txt" -services.TFileService.fileName : "nts.owner.PS.version.sequencer.root" diff --git a/JobConfig/beam/TS-CRV.fcl b/JobConfig/beam/TS-CRV.fcl deleted file mode 100644 index 0305e5a78b..0000000000 --- a/JobConfig/beam/TS-CRV.fcl +++ /dev/null @@ -1,143 +0,0 @@ -// Andrei Gaponenko, 2015 -// Run this script over stage 1 dsregion output -// For example you can use the sample as an input: sim.mu2e.cd3-beam-g4s1cat-dsregion.051017.art - -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardProducers.fcl" -#include "fcl/standardServices.fcl" -#include "Mu2eG4/fcl/prolog.fcl" - -# Give this job a name. -process_name : TSCRV - -source : { - module_type : RootInput -} - -services : { - - message : @local::default_message - TFileService : { fileName : "nts.owner.beam-g4s2-crv.version.sequencer.root" } - RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } - - GeometryService : { inputFile : "JobConfig/common/geom_baseline.txt" } - ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } - Mu2eG4Helper : { } - SeedService : @local::automaticSeeds -} - -physics : { - analyzers: { - genCountLogger: { - module_type: GenEventCountReader - } - } - - producers: { - g4run: @local::g4run - - compressPVCRV : { - module_type : CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "crvFilter" ] - } - - compressPVFull : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "g4run" ] - } - } - - filters: { - crvFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:CRV" ] - extraHitInputs : [ ] - vetoDaughters: [] - } - - g4status: { - module_type: FilterStatusG4 - input: "g4run" - } - - g4consistent: { - module_type: FilterStatusG4 - input: "g4run" - maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers - } - } - - trigcrv : [g4run, g4consistent, crvFilter, compressPVCRV] - g4StatusFilter : [g4run, "!g4status", compressPVFull ] - trigger_paths : [trigcrv, g4StatusFilter] - - outputs: [truncatedEvtsOutput, crvout] - an: [ genCountLogger ] - end_paths: [outputs, an] -} - -outputs: { - - crvout : { - module_type : RootOutput - SelectEvents: ["trigcrv"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_crvFilter_*_TSCRV", - "keep *_compressPVCRV_*_TSCRV" - ] - fileName : "sim.owner.beam-g4s2-crv.version.sequencer.art" - } - - truncatedEvtsOutput : { - module_type : RootOutput - SelectEvents: ["g4StatusFilter"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_g4run_*_*", - "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_g4run_*_*", - "keep *_compressPVFull_*_*" - ] - fileName : "sim.owner.beam-g4s2-crv-truncated.version.sequencer.art" - } - -} -//================================================================ -physics.producers.g4run.inputs: { - primaryType: "StepPoints" - primaryTag: "dsRegionFilter:dsregion" - inputMCTrajectories: "" - inputPhysVolumeMultiInfo: "compressPVdsRegion" -} - -// Mu2eG4 cuts are evaluated in the listed order. -// The first match wins. For the "intersection" -// type, the first false stops the evaluation. -// For the "union" type the first true stops the evaluation. -physics.producers.g4run.Mu2eG4CommonCut: { - type: intersection - pars: [ - { - type: intersection - pars: [ { type: kineticEnergy cut: 1.0 }, { type: pdgId pars: [ 11, -11 ] }] - }, - { - type: inVolume - pars: [TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, DS1Vacuum, DS2Vacuum, DS3Vacuum ] - write: DSVacuum - } - ] -} - -physics.producers.g4run.SDConfig.enableSD: [ "CRV" ] - -//physics.producers.g4run.physics.minRangeCut : 1. // mm diff --git a/JobConfig/beam/TS.fcl b/JobConfig/beam/TS.fcl deleted file mode 100644 index 4305686794..0000000000 --- a/JobConfig/beam/TS.fcl +++ /dev/null @@ -1,164 +0,0 @@ -// Andrei Gaponenko, 2015 - -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardProducers.fcl" -#include "fcl/standardServices.fcl" -#include "Mu2eG4/fcl/prolog.fcl" - -# Give this job a name. -process_name : TS - -source : { - module_type : RootInput -} - -services : @local::Services.Sim - -physics : { - analyzers: { - genCountLogger: { - module_type: GenEventCountReader - } - } - - producers: { - g4run: @local::g4run - - compressPVmuonBeam : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "muonBeamFilter" ] - } - - compressPVCRV : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "crvFilter" ] - } - - compressPVFull : { - module_type: CompressPhysicalVolumes - volumesInput : "g4run" - hitInputs : [] - particleInputs : [ "g4run" ] - } - } - - filters: { - muonBeamFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:DSVacuum" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - crvFilter: { - module_type: FilterG4Out - mainHitInputs : [ "g4run:CRV" ] - extraHitInputs : [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - g4status: { - module_type: FilterStatusG4 - input: "g4run" - } - - g4consistent: { - module_type: FilterStatusG4 - input: "g4run" - maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers - } - } - - trigmubeam : [g4run, g4consistent, muonBeamFilter, compressPVmuonBeam] - trigcrv : [g4run, g4consistent, crvFilter, compressPVCRV] - g4StatusFilter : [g4run, "!g4status", compressPVFull ] - trigger_paths : [trigmubeam, trigcrv, g4StatusFilter] - - outputs: [truncatedEvtsOutput, mubeamout, crvout] - an: [ genCountLogger ] - end_paths: [outputs, an] -} - -outputs: { - - mubeamout : { - module_type : RootOutput - SelectEvents: ["trigmubeam"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_muonBeamFilter_*_TS", - "keep *_compressPVmuonBeam_*_TS" - ] - fileName : "sim.owner.TS-mubeam.version.sequencer.art" - } - - crvout : { - module_type : RootOutput - SelectEvents: ["trigcrv"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_crvFilter_*_TS", - "keep *_compressPVCRV_*_TS" - ] - fileName : "sim.owner.TS-crv.version.sequencer.art" - } - - truncatedEvtsOutput : { - module_type : RootOutput - SelectEvents: ["g4StatusFilter"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_g4run_*_*", - "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_g4run_*_*", - "keep *_compressPVFull_*_*" - ] - fileName : "sim.owner.TS-truncated.version.sequencer.art" - } - -} -//================================================================ -physics.producers.g4run.inputs: { - primaryType: "StepPoints" - primaryTag: "muonBeamFilter:mubeam" - inputMCTrajectories: "" - inputPhysVolumeMultiInfo: "compressPVmuonBeam" -} - -// Mu2eG4 cuts are evaluated in the listed order. -// The first match wins. For the "intersection" -// type, the first false stops the evaluation. -// For the "union" type the first true stops the evaluation. -physics.producers.g4run.Mu2eG4CommonCut: { - type: union - pars: [ - @local::mu2eg4CutDeltaElectrons, - { - type: inVolume - pars: [TS5Vacuum, DS1Vacuum, DS2Vacuum, DS3Vacuum ] - write: DSVacuum - } - ] -} - -physics.producers.g4run.SDConfig: { - enableSD : [ virtualdetector, CRV ] // activate just the explicitly listed SDs - preSimulatedHits: ["muonBeamFilter:virtualdetector"] - TimeVD: { times: [] } -} - -physics.producers.g4run.physics.minRangeCut : 1. // mm - -services.TFileService.fileName : "nts.owner.TS.version.sequencer.root" - -services.SeedService.baseSeed : 8 -services.SeedService.maxUniqueEngines : 20 diff --git a/JobConfig/beam/beam_nts1dsregion.fcl b/JobConfig/beam/beam_nts1dsregion.fcl deleted file mode 100644 index 94a8d7ae72..0000000000 --- a/JobConfig/beam/beam_nts1dsregion.fcl +++ /dev/null @@ -1,32 +0,0 @@ -// Andrei Gaponenko, 2015 - -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardServices.fcl" - -process_name : nts1dsregion - -source : { module_type : RootInput } - -services : { - message: @local::default_message - TFileService: { fileName: "nts.owner.beam-nts1-dsregion.version.sequencer.root" } -} - -physics : { - analyzers: { - genCountLogger: { module_type: GenEventCountReader } - - g4s1dsregion: { - module_type: InFlightStepDumper - inputCollection: "dsRegionFilter:dsregion" - } - } - - an: [ genCountLogger, g4s1dsregion ] - end_paths: [an] -} - -// Limit the amount of "Begin processing the ... record" messages -services.message.destinations.log.categories.ArtReport.reportEvery : 1 -services.message.destinations.log.categories.ArtReport.limit : 1 -services.message.destinations.log.categories.ArtReport.timespan : 300 diff --git a/JobConfig/beam/prolog_old.fcl b/JobConfig/beam/prolog_old.fcl deleted file mode 100644 index 063cc6f1c2..0000000000 --- a/JobConfig/beam/prolog_old.fcl +++ /dev/null @@ -1,233 +0,0 @@ -#include "fcl/minimalMessageService.fcl" -#include "fcl/standardServices.fcl" -#include "CaloMC/fcl/prolog.fcl" -#include "Mu2eG4/fcl/prolog.fcl" -#include "EventGenerator/fcl/prolog.fcl" -#include "TrackerMC/fcl/prolog.fcl" - -BEGIN_PROLOG - -mu2e.services.simServices: { @table::Services.Sim } - -// Change the geometry file -mu2e.services.simServices.GeometryService.inputFile : "JobConfig/common/geom_baseline.txt" - -// Default seeding of random engines - the seed will be overwritten in grid jobs -mu2e.services.simServices.SeedService.baseSeed: 8 -mu2e.services.simServices.SeedService.maxUniqueEngines: 20 - -// Limit the amount of "Begin processing the ... record" messages -mu2e.services.simServices.message.destinations.log.categories.ArtReport.reportEvery: 1 -mu2e.services.simServices.message.destinations.log.categories.ArtReport.limit: 1 -mu2e.services.simServices.message.destinations.log.categories.ArtReport.timespan: 300 - -#================================================================ -mu2e.physics.producers.g4run.commonBase: { - module_type: Mu2eG4 - physics: @local::mu2eg4DefaultPhysics - ResourceLimits: @local::mu2eg4DefaultResourceLimits - TrajectoryControl: @local::mu2eg4NoTrajectories - debug: @local::mu2eg4DefaultDebug - visualization: @local::mu2eg4NoVisualization - - inputs: @nil - - SDConfig: { - enableSD: [ tracker, calorimeter, calorimeterRO, CRV, virtualdetector, protonabsorber ] - TimeVD: { times: [] } - preSimulatedHits: @nil - } - - Mu2eG4StackingOnlyCut: @local::mu2eg4CutNeutrinos - Mu2eG4SteppingOnlyCut: {} - Mu2eG4CommonCut: {} -} - -#---------------------------------------------------------------- -mu2e.physics.producers.g4run.flash: @local::mu2e.physics.producers.g4run.commonBase -mu2e.physics.producers.g4run.flash.inputs: { - primaryType: "StepPoints" - primaryTag: "mothersFilter:DetectorMother" - inputMCTrajectories: "" - inputPhysVolumeMultiInfo: "compressPVMothers" -} -mu2e.physics.producers.g4run.flash.SDConfig.preSimulatedHits: ["mothersFilter:virtualdetector"] - -#---------------------------------------------------------------- -mu2e.physics.producers.g4run.muons: @local::mu2e.physics.producers.g4run.commonBase -mu2e.physics.producers.g4run.muons.inputs: { - primaryType: "GenParticles" - primaryTag: "generate" -} -mu2e.physics.producers.g4run.muons.SDConfig.preSimulatedHits: [] - -#================================================================ -mu2e.outputs.g4s4Defs: { - detectorOutput: { - module_type: RootOutput - SelectEvents: [detPath] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_detectorFilter_*_*", - "keep *_CaloShowerCrystalSteps_*_*", - "keep *_CaloShowerROSteps_*_*", - "keep *_compressPVDetector_*_*", - "drop mu2e::StepPointMCs_detectorFilter_tracker_*", - "keep mu2e::StrawGasSteps_makeSGS_*_*" - ] - fileName: @nil - } - - crvOutput: { - module_type: RootOutput - SelectEvents: [crvPath] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_crvFilter_*_*", - "keep *_compressPVCRV_*_*" - ] - fileName: @nil - } - - truncatedEvtsOutput: { - module_type: RootOutput - SelectEvents: [g4StatusPath] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_g4run_*_*", - "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_*_*_*", - "keep *_compressPVFull_*_*" - ] - fileName: @nil - } -} - -#================================================================ -mu2e.physics.g4s4CommonBase: { - producers: { - g4run: @nil - - CaloShowerStepMaker: @local::CaloShowerStepMaker - - CaloShowerCrystalSteps: { - module_type: CaloShowerUpdater - showerInput: "CaloShowerStepMaker:calorimeter" - newSimParticles: "detectorFilter" - } - - CaloShowerROSteps: { - module_type: CaloShowerUpdater - showerInput: "CaloShowerStepMaker:calorimeterRO" - newSimParticles: "detectorFilter" - } - - compressPVDetector: { - module_type: CompressPhysicalVolumes - volumesInput: "g4run" - hitInputs: [] - particleInputs: [ "detectorFilter" ] - } - compressPVCRV: { - module_type: CompressPhysicalVolumes - volumesInput: "g4run" - hitInputs: [] - particleInputs: [ "crvFilter" ] - } - compressPVFull: { - module_type: CompressPhysicalVolumes - volumesInput: "g4run" - hitInputs: [] - particleInputs: [ "g4run" ] - } - } - - filters: { - detectorFilter: { - module_type: FilterG4Out - mainHitInputs: [ "g4run:tracker" ] - mainSPPtrInputs: [ "CaloShowerStepMaker" ] - extraHitInputs: [ "g4run:virtualdetector", "g4run:protonabsorber" ] - vetoDaughters: [] - } - - crvFilter: { - module_type: FilterG4Out - mainHitInputs: [ "g4run:CRV"] - extraHitInputs: [ "g4run:virtualdetector" ] - vetoDaughters: [] - } - - TrkStepFilter : { - module_type : MinimumHits - mode : "trackerOnly" - MinNStraws : 10 - MinPartMom : 40.0 # MeV/c - PDGCodes : [11,-11, 13, -13] - generatorModuleLabel : "generate" - g4ModuleLabel : "g4run" - } - - g4status: { - module_type: FilterStatusG4 - input: "g4run" - } - g4consistent: { - module_type: FilterStatusG4 - input: "g4run" - maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers - } - } - - analyzers: { genCountLogger: { module_type: GenEventCountReader } } - - crvPath: @nil - detPath: @nil - g4StatusPath: @nil - trigger_paths: [ detPath, crvPath, g4StatusPath ] - - out: [ detectorOutput, crvOutput, truncatedEvtsOutput ] - gcl: [genCountLogger] - end_paths: [out, gcl] -} - -crvPathCommon: [ g4run, g4consistent, crvFilter, compressPVCRV ] -detPathCommon: [ g4run, g4consistent, CaloShowerStepMaker, detectorFilter, CaloShowerCrystalSteps, CaloShowerROSteps, compressPVDetector, @sequence::TrackerMC.StepSim ] -g4StatusPathCommon: [ g4run, "!g4status", compressPVFull ] - -#---------------------------------------------------------------- -mu2e.physics.g4s4Flash: @local::mu2e.physics.g4s4CommonBase -mu2e.physics.g4s4Flash.producers.g4run: @local::mu2e.physics.producers.g4run.flash -mu2e.physics.g4s4Flash.crvPath: [ @sequence::crvPathCommon ] -mu2e.physics.g4s4Flash.detPath: [ @sequence::detPathCommon ] -mu2e.physics.g4s4Flash.g4StatusPath: [ @sequence::g4StatusPathCommon ] - -#---------------------------------------------------------------- -mu2e.physics.g4s4Muons: @local::mu2e.physics.g4s4CommonBase -mu2e.physics.g4s4Muons.producers.g4run: @local::mu2e.physics.producers.g4run.muons - -mu2e.physics.g4s4Muons.producers.generate: { - module_type: StoppedParticleReactionGun - verbosityLevel : 1 - physics: @nil - muonStops : { @table::mu2e.tgtMuonStops - } -} - -mu2e.physics.g4s4Muons.producers.genCounter: { - module_type: GenEventCounter -} - -mu2e.physics.g4s4Muons.crvPath: [ generate, genCounter, @sequence::crvPathCommon ] -mu2e.physics.g4s4Muons.detPath: [ generate, genCounter, @sequence::detPathCommon ] -mu2e.physics.g4s4Muons.g4StatusPath: [ generate, genCounter, @sequence::g4StatusPathCommon ] -mu2e.physics.Signal.detPath : [ generate, genCounter, g4run, g4consistent, CaloShowerStepMaker, TrkStepFilter, detectorFilter, CaloShowerCrystalSteps, CaloShowerROSteps, compressPVDetector ] - -#================================================================ - -END_PROLOG diff --git a/JobConfig/common/prolog.fcl b/JobConfig/common/prolog.fcl index 50aa16bcb0..31b2b559be 100644 --- a/JobConfig/common/prolog.fcl +++ b/JobConfig/common/prolog.fcl @@ -1,27 +1,10 @@ # # common prolog for all production jobs. These are mostly legacy # -#include "fcl/standardServices.fcl" #include "Mu2eG4/fcl/prolog.fcl" BEGIN_PROLOG Common: { - services : { - RandomNumberGenerator : {defaultEngineKind: "MixMaxRng" } - GeometryService : { - inputFile : "Mu2eG4/geom/geom_common.txt" - simulatedDetector : { tool_type : "Mu2e" } - } - ConditionsService : { conditionsfile : "ConditionsService/data/conditions_01.txt" } - GlobalConstantsService : { inputFile : "GlobalConstantsService/data/globalConstants_01.txt" } - message : @local::default_message - TFileService : { } - Mu2eG4Helper : { } - SeedService : @local::automaticSeeds - DbService : @local::DbEmpty - ProditionsService: @local::Proditions - } - producers : { g4run: @local::mu2eg4runDefaultSingleStage genCounter: { module_type: GenEventCounter } diff --git a/JobConfig/pileup/Pileup.fcl b/JobConfig/pileup/Pileup.fcl index d66e5ba39b..4275503599 100644 --- a/JobConfig/pileup/Pileup.fcl +++ b/JobConfig/pileup/Pileup.fcl @@ -3,13 +3,14 @@ # # original author: Dave Brown, LBNL # +#include "fcl/standardServices.fcl" #include "JobConfig/common/prolog.fcl" #include "JobConfig/primary/prolog.fcl" #include "JobConfig/pileup/prolog.fcl" process_name : Pileup source: { module_type : EmptyEvent } -services: { @table::Common.services } +services : @local::Services.Sim physics: { producers : { @table::Common.producers diff --git a/JobConfig/primary/Primary.fcl b/JobConfig/primary/Primary.fcl index 738e3805b8..97ccd675ca 100644 --- a/JobConfig/primary/Primary.fcl +++ b/JobConfig/primary/Primary.fcl @@ -3,13 +3,14 @@ # # original author: Dave Brown, LBNL # +#include "fcl/standardServices.fcl" #include "JobConfig/common/prolog.fcl" #include "JobConfig/primary/prolog.fcl" # name all processes the same, to mask any provenance in ensemble creation process_name: Primary # the following will change when we read art stops source: { module_type : EmptyEvent } -services: @local::Common.services +services : @local::Services.Sim physics : { producers : { @table::Common.producers From 92163141433c5491646c745c1e2cd85693e306d3 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Thu, 13 May 2021 16:25:33 -0500 Subject: [PATCH 09/40] small fixes --- JobConfig/beam/PS.fcl | 301 +++++++++++++++++++++++++++++++++++ Validation/fcl/ceSimReco.fcl | 3 +- 2 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 JobConfig/beam/PS.fcl diff --git a/JobConfig/beam/PS.fcl b/JobConfig/beam/PS.fcl new file mode 100644 index 0000000000..c8220de383 --- /dev/null +++ b/JobConfig/beam/PS.fcl @@ -0,0 +1,301 @@ +// Andrei Gaponenko, 2013 + +#include "fcl/minimalMessageService.fcl" +#include "fcl/standardProducers.fcl" +#include "fcl/standardServices.fcl" +#include "Mu2eG4/fcl/prolog.fcl" + +BEGIN_PROLOG +#---------------------------------------------------------------- +# Mu2eG4 cuts + +dsRegionCuts: { + type: intersection + pars: [ + // Plane on the west side, outside of the wall + { type: plane normal: [ 0, 0, 1 ] point : [ 0, 0, -4851 ] }, + + // Yuri's e-mail 2015-04-10: x=1612. from CRV considerations. + // This is also large enought to enclose TS3 (its half length is 975 mm). + { type: plane normal: [ -1, 0, 0 ] point : [ 1612., 0, 0 ] }, + + // Make sure the muon beam reaches our TS3Vacuum stopping volume + { type: notInVolume pars: [TS2Vacuum] }, + + // This union splits the output of the above cuts + // into two exclusive streams + { type: union pars: [ + { + type: intersection + pars: [ + { type: inVolume pars: [TS3Vacuum] }, + { type: isCharged } + ] + write: mubeam + }, + { type: constant + value: true + write: dsregion + } + ] + } + ] +} + +extMonRegionCuts: { + type: intersection + pars: [ + { + type: plane + normal: @local::mu2eg4BeamDumpNormal + // Dump core center: (661.90, 527.40, -19428.2) + // A plane 950 mm beyond the core center as measured along + // the "beam" direction normal to the dump face. + // DeltaZ = L/cos(13.72 degrees) + point: [ 661.90, 527.40, -20406.10 ] + }, + + // Split the output of the "plane" cut above into two exclusive streams + { type: union pars: [ + + { type: intersection + pars: [ + { + type: inVolume + pars: + [ collimator1Channel, + HallAir, + ExtMonFNALfilterMagnetAperture, + ExtMonFNALfilterMagnetApertureMarginUp, + ExtMonFNALfilterMagnetApertureMarginDn + ] + }, + { type: isCharged } + ] + write: extmonbeam + }, + + { type: constant value: true write: extmonregion } + ] + } + ] +} +#---------------------------------------------------------------- +END_PROLOG + +#================================================================ +# Give this job a name. +process_name : PS + +source : { + module_type : EmptyEvent + maxEvents : @nil +} + +services : @local::Services.Sim + +physics : { + analyzers: { + genCountLogger: { + module_type: GenEventCountReader + } + + collectionSizes: { + module_type: CollectionSizeAnalyzer + useModuleLabel: true useInstanceName: true useProcessName: false + } + } + + producers: { + generate: @local::PrimaryProtonGun + + genCounter: { + module_type: GenEventCounter + } + + g4run: @local::g4run + + compressPVmuonBeam : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "muonBeamFilter" ] + } + + compressPVdsRegion : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "dsRegionFilter" ] + } + + compressPVextmonBeam : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "extmonBeamFilter" ] + } + + compressPVextmonRegion : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "extmonRegionFilter" ] + } + + compressPVFull : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "g4run" ] + } + } + + filters: { + muonBeamFilter: { + module_type: FilterG4Out + mainHitInputs : [ "g4run:mubeam" ] + extraHitInputs : [ "g4run:virtualdetector" ] + vetoDaughters: [] + } + + dsRegionFilter: { + module_type: FilterG4Out + mainHitInputs : [ "g4run:dsregion" ] + extraHitInputs : [ "g4run:virtualdetector" ] + vetoDaughters: [] + } + + extmonBeamFilter: { + module_type: FilterG4Out + mainHitInputs : [ "g4run:extmonbeam" ] + extraHitInputs : [ "g4run:virtualdetector" ] + vetoDaughters: [] + } + + extmonRegionFilter: { + module_type: FilterG4Out + mainHitInputs : [ "g4run:extmonregion" ] + extraHitInputs : [ "g4run:virtualdetector" ] + vetoDaughters: [] + } + + g4status: { + module_type: FilterStatusG4 + input: "g4run" + } + + g4consistent: { + module_type: FilterStatusG4 + input: "g4run" + maxAcceptedStatus: 9 # status 10 and above means StepPointMCCollection may have non-dereferencable pointers + } + } + + trigmubeam : [generate, genCounter, g4run, g4consistent, muonBeamFilter, compressPVmuonBeam] + trigdsregion : [generate, genCounter, g4run, g4consistent, dsRegionFilter, compressPVdsRegion] + trigextmonbeam : [generate, genCounter, g4run, g4consistent, extmonBeamFilter, compressPVextmonBeam] + trigextmonregion : [generate, genCounter, g4run, g4consistent, extmonRegionFilter, compressPVextmonRegion] + g4StatusFilter : [generate, genCounter, g4run, "!g4status", compressPVFull ] + trigger_paths : [trigmubeam, trigdsregion, trigextmonbeam, trigextmonregion, g4StatusFilter] + + outputs: [truncatedEvtsOutput, mubeamout, dsout, extmonbeamout,extmonregionout] + an: [ genCountLogger, collectionSizes ] + end_paths: [outputs, an] +} + +outputs: { + + mubeamout : { + module_type : RootOutput + SelectEvents: ["trigmubeam"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_muonBeamFilter_*_*", + "keep *_compressPVmuonBeam_*_*" + ] + fileName : "sim.owner.PS-mubeam.version.sequencer.art" + } + + dsout : { + module_type : RootOutput + SelectEvents: ["trigdsregion"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_dsRegionFilter_*_*", + "keep *_compressPVdsRegion_*_*" + ] + fileName : "sim.owner.PS-dsregion.version.sequencer.art" + } + + extmonbeamout : { + module_type : RootOutput + SelectEvents: ["trigextmonbeam"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_extmonBeamFilter_*_*", + "keep *_compressPVextmonBeam_*_*" + ] + fileName : "sim.owner.PS-extmonbeam.version.sequencer.art" + } + + extmonregionout : { + module_type : RootOutput + SelectEvents: ["trigextmonregion"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_extmonRegionFilter_*_*", + "keep *_compressPVextmonRegion_*_*" + ] + fileName : "sim.owner.PS-extmonregion.version.sequencer.art" + } + + truncatedEvtsOutput : { + module_type : RootOutput + SelectEvents: ["g4StatusFilter"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_g4run_*_*", + "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_g4run_*_*", + "keep *_compressPVFull_*_*" + ] + fileName : "sim.owner.PS-truncated.version.sequencer.art" + } + +} + +//================================================================ +// Mu2eG4 cuts are evaluated in the listed order. +// The first match wins. For the "intersection" +// type, the first false stops the evaluation. +// For the "union" type the first true stops the evaluation. +physics.producers.g4run.Mu2eG4CommonCut: { + type: union + pars: [ + @local::mu2eg4CutDeltaElectrons, // 8% speed up from killing electrons with Ek<1 MeV + @local::dsRegionCuts, + @local::extMonRegionCuts + ] +} + +physics.producers.g4run.SDConfig.enableSD: [ virtualdetector ] // activate just the explicitly listed SDs + +// Larger range cut for the first stage +physics.producers.g4run.physics.minRangeCut : 1. // mm + +// Initialze seeding of random engines: do not put these lines in base .fcl files for grid jobs. +services.SeedService.baseSeed : 8 +services.SeedService.maxUniqueEngines : 20 + +services.GeometryService.inputFile : "JobConfig/common/geom_baseline.txt" +services.TFileService.fileName : "nts.owner.PS.version.sequencer.root" diff --git a/Validation/fcl/ceSimReco.fcl b/Validation/fcl/ceSimReco.fcl index 834d379b0a..b21d0e1e64 100644 --- a/Validation/fcl/ceSimReco.fcl +++ b/Validation/fcl/ceSimReco.fcl @@ -3,6 +3,7 @@ # and simulate all the way through the detector # run calorimeter and tracker and CRV reco # +#include "fcl/standardServices.fcl" #include "JobConfig/common/prolog.fcl" #include "JobConfig/primary/prolog.fcl" #include "JobConfig/digitize/prolog.fcl" @@ -11,7 +12,7 @@ process_name : ceSimReco source : { module_type :EmptyEvent } -services: @local::Common.services +services : @local::Services.Sim physics: { producers : { From a604cba06709a721e3a0641defec862c44094c59 Mon Sep 17 00:00:00 2001 From: Richard Bonventre Date: Fri, 14 May 2021 12:03:20 -0700 Subject: [PATCH 10/40] Updated TrackerStatus bits --- DataProducts/inc/StrawStatus.hh | 18 ++++++++++-------- DataProducts/src/StrawStatus.cc | 4 +++- DbTables/inc/TrkElementStatus.hh | 4 ++-- TrackerConditions/src/TrackerStatus.cc | 4 +++- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/DataProducts/inc/StrawStatus.hh b/DataProducts/inc/StrawStatus.hh index ce1f4a2684..a6798743d9 100644 --- a/DataProducts/inc/StrawStatus.hh +++ b/DataProducts/inc/StrawStatus.hh @@ -19,17 +19,19 @@ struct StrawStatusDetail { enum bit_type { absent=0, // straw (mylar + wire + gas) or panel or plane is physically absent nowire=1, // wire is removed or broken - noHV=2, // wire(s) not attached to high voltage (blown fuse, ...) + noHV=2, // Fuse blown (should be on both channels on this preamp) or HV problem noLV=3, // no low voltage (ie no electronics gain or signal) nogas=4, // gas flow is turned off lowgasgain=5, // gas gain low - noPreamp=6, // no signal into ADC or TDC - noADC=7, // ADC not functioning - noTDC=8, // TDC not functioning - sparking=9, // straw generating microsparks - noise=10, // straw electronics generating noise - pickup=11, // straw noisy due to pickup (ie adjacent noisy straw) - suppress=12, // suppress signals from this straw for unspecified reasons + noHVPreamp=6, // HV preamp not installed or not connected to wire + noCalPreamp=7, // Cal preamp not installed or not connected to wire + noADC=8, // ADC not functioning + noTDC=9, // TDC not functioning + disabled=10, // readout of channel disabled in firmware + sparking=11, // straw generating microsparks + noise=12, // straw electronics generating noise + pickup=13, // straw noisy due to pickup (ie adjacent noisy straw) + suppress=14, // suppress signals from this straw for unspecified reasons }; // functions needed for the BitMap template diff --git a/DataProducts/src/StrawStatus.cc b/DataProducts/src/StrawStatus.cc index ce11fc2cf1..403f34d17e 100644 --- a/DataProducts/src/StrawStatus.cc +++ b/DataProducts/src/StrawStatus.cc @@ -25,7 +25,9 @@ namespace mu2e { bitnames[std::string("NoLV")] = bit_to_mask(noLV); bitnames[std::string("NoGas")] = bit_to_mask(nogas); bitnames[std::string("LowGasGain")] = bit_to_mask(lowgasgain); - bitnames[std::string("NoPreamp")] = bit_to_mask(noPreamp); + bitnames[std::string("NoHVPreamp")] = bit_to_mask(noHVPreamp); + bitnames[std::string("NoCalPreamp")] = bit_to_mask(noCalPreamp); + bitnames[std::string("Disabled")] = bit_to_mask(disabled); bitnames[std::string("NoADC")] = bit_to_mask(noADC); bitnames[std::string("NoTDC")] = bit_to_mask(noTDC); bitnames[std::string("Sparking")] = bit_to_mask(sparking); diff --git a/DbTables/inc/TrkElementStatus.hh b/DbTables/inc/TrkElementStatus.hh index 3e07209876..0eff004df3 100644 --- a/DbTables/inc/TrkElementStatus.hh +++ b/DbTables/inc/TrkElementStatus.hh @@ -85,12 +85,12 @@ namespace mu2e { class TrkStrawStatusShort : public TrkElementStatus { public: constexpr static const char* cxname = "TrkStrawStatusShort"; - TrkStrawStatusShort() : TrkElementStatus(cxname,"trk.strawstatusshort", StrawIdMask("uniquestraw"), StrawStatus("Sparking:Suppress:Noise:Pickup")) {} + TrkStrawStatusShort() : TrkElementStatus(cxname,"trk.strawstatusshort", StrawIdMask("uniquestraw"), StrawStatus("Sparking:Suppress:Noise:Pickup:Disabled")) {} }; class TrkStrawStatusLong : public TrkElementStatus { public: constexpr static const char* cxname = "TrkStrawStatusLong"; - TrkStrawStatusLong() : TrkElementStatus(cxname,"trk.strawstatuslong", StrawIdMask("uniquestraw"), StrawStatus("Absent:NoWire:NoHV:NoPreamp:NoADC:NoTDC")) {} + TrkStrawStatusLong() : TrkElementStatus(cxname,"trk.strawstatuslong", StrawIdMask("uniquestraw"), StrawStatus("Absent:NoWire:NoHV:NoHVPreamp:NoCalPreamp:NoADC:NoTDC")) {} }; }; diff --git a/TrackerConditions/src/TrackerStatus.cc b/TrackerConditions/src/TrackerStatus.cc index 9d9465c29f..ddc63429c9 100644 --- a/TrackerConditions/src/TrackerStatus.cc +++ b/TrackerConditions/src/TrackerStatus.cc @@ -53,7 +53,9 @@ namespace mu2e { StrawStatus(StrawStatus::noLV) | StrawStatus(StrawStatus::nogas) | StrawStatus(StrawStatus::lowgasgain) | - StrawStatus(StrawStatus::noPreamp); + StrawStatus(StrawStatus::noHVPreamp) | + StrawStatus(StrawStatus::noCalPreamp) | + StrawStatus(StrawStatus::disabled); StrawStatus status = strawStatus(sid); return status.hasAnyProperty(mask); } From 0a5b6c673afe3575625b6b6f2c86a66d8310357b Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Fri, 14 May 2021 19:39:59 -0500 Subject: [PATCH 11/40] Explicitly name IPA material so stops can be filtered. Rename Neutrals path and output. Add IPA stream to Beam resampler --- JobConfig/beam/BeamResampler.fcl | 4 +- ...alsResampler.fcl => NeutralsResampler.fcl} | 12 +-- JobConfig/beam/POT.fcl | 10 +-- JobConfig/beam/POT_MCTrajectory.fcl | 15 ++++ JobConfig/beam/prolog.fcl | 74 ++++++++++++++----- JobConfig/cosmic/S2Resampler.fcl | 2 +- JobConfig/cosmic/prolog.fcl | 3 + Mu2eG4/geom/protonAbsorber_cylindrical.txt | 2 +- Mu2eG4/src/ConstructMaterials.cc | 7 ++ 9 files changed, 97 insertions(+), 32 deletions(-) rename JobConfig/beam/{CRVNeutralsResampler.fcl => NeutralsResampler.fcl} (84%) create mode 100644 JobConfig/beam/POT_MCTrajectory.fcl diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index 5dcb089f3e..fabd027154 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -39,16 +39,18 @@ physics: { } # setup paths mustopPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, MuTargetStopFilter] + IPAStopPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter] flashPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] earlyFlashPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressEarlyDetStepMCs ] - trigger_paths: [ flashPath, earlyFlashPath, mustopPath ] + trigger_paths: [ flashPath, earlyFlashPath, mustopPath, IPAStopPath ] outPath : [ FlashOutput, EarlyFlashOutput, MuTargetStopOutput ] end_paths: [outPath] } outputs: { MuTargetStopOutput : @local::Beam.outputs.MuTargetStopOutput + IPAStopOutput : @local::Beam.outputs.IPAStopOutput FlashOutput : { @table::Beam.outputs.FlashOutput fileName: "dts.owner.BeamFlash.version.sequencer.art" diff --git a/JobConfig/beam/CRVNeutralsResampler.fcl b/JobConfig/beam/NeutralsResampler.fcl similarity index 84% rename from JobConfig/beam/CRVNeutralsResampler.fcl rename to JobConfig/beam/NeutralsResampler.fcl index 5145a0cdd1..b2305d8e5e 100644 --- a/JobConfig/beam/CRVNeutralsResampler.fcl +++ b/JobConfig/beam/NeutralsResampler.fcl @@ -37,8 +37,8 @@ physics: { @table::Common.analyzers } # setup paths - flashPath : [ genCounter, crvResampler, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] - earlyFlashPath : [ genCounter, crvResampler, @sequence::Common.g4Sequence, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressEarlyDetStepMCs ] + flashPath : [ genCounter, neutResampler, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] + earlyFlashPath : [ genCounter, neutResampler, @sequence::Common.g4Sequence, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressEarlyDetStepMCs ] trigger_paths: [ flashPath, earlyFlashPath ] outPath : [ FlashOutput, EarlyFlashOutput ] end_paths: [outPath] @@ -57,13 +57,13 @@ outputs: { # Point Mu2eG4 to the pre-simulated data physics.producers.g4run.inputs: { primaryType: "StepPoints" - primaryTag: "crvResampler:CRVNeutrals" + primaryTag: "neutResampler:Neutrals" inputMCTrajectories: "" simStageOverride: 1 - inputPhysVolumeMultiInfo: "crvResampler" + inputPhysVolumeMultiInfo: "neutResampler" updateEventLevelVolumeInfos: { - input: "crvResampler:eventlevel" + input: "neutResampler:eventlevel" outInstance: "eventlevel" } } @@ -92,5 +92,5 @@ physics.filters.DetStepFilter.MinimumTime : 300 # select energy deposits after t physics.filters.DetStepFilter.TimeOffsets : [ "protonTimeMap" ] # only proton time map is relevant to this job # test -physics.filters.crvResampler.fileNames: [ "sim.owner.CRVNeutrals.version.sequencer.art" ] +physics.filters.neutResampler.fileNames: [ "sim.owner.Neutrals.version.sequencer.art" ] diff --git a/JobConfig/beam/POT.fcl b/JobConfig/beam/POT.fcl index e001ccdbfb..25c1f3e7f8 100644 --- a/JobConfig/beam/POT.fcl +++ b/JobConfig/beam/POT.fcl @@ -26,23 +26,23 @@ physics : { analyzers : @local::Common.analyzers # setup the paths BeamPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, BeamFilter, compressPVBeam] - CRVNeutralsPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, CRVNeutralsFilter, compressPVCRVNeutrals] - trigger_paths : [BeamPath, CRVNeutralsPath ] + NeutralsPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, NeutralsFilter, compressPVNeutrals] + trigger_paths : [BeamPath, NeutralsPath ] LogPath : [ genCountLogger ] - OutputPath : [BeamOutput, CRVNeutralsOutput ] + OutputPath : [BeamOutput, NeutralsOutput ] end_paths: [OutputPath, LogPath ] } # setup outputs outputs: { BeamOutput : @local::Beam.outputs.BeamOutput - CRVNeutralsOutput : @local::Beam.outputs.CRVNeutralsOutput + NeutralsOutput : @local::Beam.outputs.NeutralsOutput } # setup Mu2eG4 selection physics.producers.g4run.Mu2eG4CommonCut: { type: union pars: [ @local::mu2eg4CutDeltaElectrons, # 8% speed up from killing electrons with Ek<1 MeV - @local::Beam.DetectorRegionCuts # defines Beam and CVRNeutrals regions + @local::Beam.DetectorRegionCuts # defines Beam and Neutrals regions ] } # tweak Mu2eG4 settings diff --git a/JobConfig/beam/POT_MCTrajectory.fcl b/JobConfig/beam/POT_MCTrajectory.fcl new file mode 100644 index 0000000000..b00799f058 --- /dev/null +++ b/JobConfig/beam/POT_MCTrajectory.fcl @@ -0,0 +1,15 @@ +# +# Add MCTrajectory to POT jobs +# +#include "JobConfig/beam/POT.fcl" + +physics.producers.g4run.TrajectoryControl: @local::mu2eg4DefaultTrajectories +physics.producers.g4run.TrajectoryControl: @local::mu2eg4DefaultTrajectories + +outputs.BeamOutput.outputCommands: [ + @sequence::outputs.BeamOutput.outputCommands, +"keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] + +outputs.NeutralsOutput.outputCommands: [ +@sequence::outputs.NeutralsOutput.outputCommands, +"keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index 529b50ab11..6e70f9caa8 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -22,11 +22,11 @@ Beam: { particleInputs : [ "BeamFilter" ] } - compressPVCRVNeutrals : { + compressPVNeutrals : { module_type: CompressPhysicalVolumes volumesInput : "g4run" hitInputs : [] - particleInputs : [ "CRVNeutralsFilter" ] + particleInputs : [ "NeutralsFilter" ] } compressPVextmonBeam : { @@ -50,11 +50,11 @@ Beam: { particleInputs: [ "detectorFilter" ] } - compressPVCRV: { + compressPVNeutrals: { module_type: CompressPhysicalVolumes volumesInput: "g4run" hitInputs: [] - particleInputs: [ "crvFilter" ] + particleInputs: [ "NeutralsFilter" ] } compressPVFull : { @@ -64,17 +64,34 @@ Beam: { particleInputs : [ "g4run" ] } + compressPVIPAStops: { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "IPAStopFilter" ] + } + # below are used for stopped muon daughter selecting/vetoing stoppedMuonFinder: { module_type: "StoppedParticlesFinder" particleInput: "g4run" - particleTypes: [ 13 ] + particleTypes: [ 13, -13 ] physVolInfoInput: "g4run:eventlevel" useEventLevelVolumeInfo: true stoppingMaterial: "StoppingTarget_Al" verbosityLevel: 1 } + + IPAMuonFinder : { + module_type : StoppedParticlesFinder + particleInput : "g4run" + physVolInfoInput : "g4run" + stoppingMaterials : [ "IPAPolyethyelene" ] + particleTypes : [ 13, -13 ] + verbosityLevel: 1 + } + stoppedMuonDaughters: { module_type: SimParticleDaughterSelector @@ -94,9 +111,9 @@ Beam: { vetoDaughters: [] } - CRVNeutralsFilter: { + NeutralsFilter: { module_type: FilterG4Out - mainHitInputs : [ "g4run:CRVNeutrals" ] + mainHitInputs : [ "g4run:Neutrals" ] extraHitInputs : [ "g4run:virtualdetector" ] vetoDaughters: [] } @@ -115,6 +132,14 @@ Beam: { vetoDaughters: [] } + IPAStopFilter: { + module_type: FilterG4Out + mainHitInputs: [] + extraHitInputs: [ "g4run:virtualdetector" ] + mainSPPtrInputs: [ "IPAMuonFinder" ] + } + + FlashFilter: { module_type: FilterG4Out mainHitInputs: [ "g4run:tracker", "g4run:calorimeter", "g4run:CRV", "g4run:virtualdetector" ] @@ -151,7 +176,7 @@ Beam: { } } - crvResampler: { + neutResampler: { module_type: ResamplingMixer fileNames: @nil readMode: "sequential" @@ -160,13 +185,13 @@ Beam: { writeEventIDs : true products: { genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } - simParticleMixer: { mixingMap: [ [ "CRVNeutralsFilter", "" ] ] } + simParticleMixer: { mixingMap: [ [ "NeutralsFilter", "" ] ] } stepPointMCMixer: { mixingMap: [ - [ "CRVNeutralsFilter:CRVNeutrals", ":" ] + [ "NeutralsFilter:Neutrals", ":" ] ] } volumeInfoMixer: { - srInput: "compressPVCRVNeutrals" + srInput: "compressPVNeutrals" evtOutInstanceName: "eventlevel" } } @@ -196,17 +221,17 @@ Beam: { fileName : "sim.owner.Beam.version.sequencer.art" } - CRVNeutralsOutput : { + NeutralsOutput : { module_type : RootOutput - SelectEvents: ["CRVNeutralsPath"] + SelectEvents: ["NeutralsPath"] outputCommands: [ "drop *_*_*_*", "keep mu2e::GenParticles_*_*_*", "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", - "keep *_CRVNeutralsFilter_*_*", - "keep *_compressPVCRVNeutrals_*_*" + "keep *_NeutralsFilter_*_*", + "keep *_compressPVNeutrals_*_*" ] - fileName : "sim.owner.CRVNeutrals.version.sequencer.art" + fileName : "sim.owner.Neutrals.version.sequencer.art" } extmonbeamOutput : { @@ -259,6 +284,19 @@ Beam: { fileName : "sim.owner.MuTargetStops.version.sequencer.art" } + IPAStopOutput : { + module_type : RIPAOutput + SelectEvents: [IPAStopPath] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_IPAStopFilter_*_*", + "keep *_compressPVIPAStops_*_*" + ] + fileName : "sim.owner.MuIPAStops.version.sequencer.art" + } + FlashOutput : { module_type: RootOutput SelectEvents: [flashPath] @@ -324,7 +362,7 @@ Beam: { {type: notInVolume pars:[TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, Coll31, Coll32, Coll51, TS2InnerCryoShell, TS3InnerCryoShell, TS4InnerCryoShell, TS2CryoInsVac, TS3CryoInsVac, PbarAbsDisk, PbarAbsWedge, VirtualDetector_Coll31_In, VirtualDetector_Coll32_In, VirtualDetector_Coll31_Out, VirtualDetector_Coll32_Out, Coll31OutRecord, Coll32InRecord, Coll31OutRecord, VirtualDetector_TS4_Bend, VirtualDetector_Coll5_In, VirtualDetector_Coll5_Out, VirtualDetector_Coll5_OutSurf]}, // This union splits the output of the above cuts - // into two exclusive streams; Beam (charged particles entering the DS) and CRVNeutrals ((mostly)neutral particles approaching the CRV + // into two exclusive streams; Beam (charged particles entering the DS) and Neutrals ((mostly)neutral particles approaching the CRV { type: union pars: [ { type: intersection @@ -336,7 +374,7 @@ Beam: { }, { type: constant value: true - write: CRVNeutrals + write: Neutrals } ] } diff --git a/JobConfig/cosmic/S2Resampler.fcl b/JobConfig/cosmic/S2Resampler.fcl index 39ff5f4fe3..aaf73fd582 100644 --- a/JobConfig/cosmic/S2Resampler.fcl +++ b/JobConfig/cosmic/S2Resampler.fcl @@ -1,7 +1,7 @@ // Re-sample cosmics from stage-1 // Yuri Oksuzian, 2020 -#include "JobConfig/primary/primary.fcl" +#include "JobConfig/primary/Primary.fcl" // Bring in info from the previous stage physics.filters.cosmicResample: @local::Cosmic.cosmicResample diff --git a/JobConfig/cosmic/prolog.fcl b/JobConfig/cosmic/prolog.fcl index d597d73784..90cf96e991 100644 --- a/JobConfig/cosmic/prolog.fcl +++ b/JobConfig/cosmic/prolog.fcl @@ -1,3 +1,6 @@ +# +# +# BEGIN_PROLOG crvOuterBox: { diff --git a/Mu2eG4/geom/protonAbsorber_cylindrical.txt b/Mu2eG4/geom/protonAbsorber_cylindrical.txt index e723bce798..02721cdb37 100644 --- a/Mu2eG4/geom/protonAbsorber_cylindrical.txt +++ b/Mu2eG4/geom/protonAbsorber_cylindrical.txt @@ -7,7 +7,7 @@ int protonabsorber.version = 2; -string protonabsorber.materialName = "Polyethylene096"; +string protonabsorber.materialName = "IPAPolyethylene"; double protonabsorber.OutRadius1 = 300.0; double protonabsorber.OutRadius0 = 300.0; double protonabsorber.thickness = 0.5; diff --git a/Mu2eG4/src/ConstructMaterials.cc b/Mu2eG4/src/ConstructMaterials.cc index eeec7267af..f0d579c65d 100644 --- a/Mu2eG4/src/ConstructMaterials.cc +++ b/Mu2eG4/src/ConstructMaterials.cc @@ -256,6 +256,13 @@ namespace mu2e { Polyethylene0956->AddMaterial( findMaterialOrThrow("G4_C"), 0.856289); } + mat = uniqueMaterialOrThrow( "IPAPolyethylene"); + { + G4Material* IPAPolyethylene = new G4Material( mat.name, 0.96*CLHEP::g/CLHEP::cm3, 2); + IPAPolyethylene->AddMaterial( findMaterialOrThrow("G4_H"), 0.14); + IPAPolyethylene->AddMaterial( findMaterialOrThrow("G4_C"), 0.86); + } + mat = uniqueMaterialOrThrow( "Polyethylene096"); { G4Material* Polyethylene096 = new G4Material( mat.name, 0.96*CLHEP::g/CLHEP::cm3, 2); From 38ef279345e53f9b9288d505ee888ab66f3b684b Mon Sep 17 00:00:00 2001 From: Krzysztof L Genser Date: Fri, 14 May 2021 23:01:21 -0500 Subject: [PATCH 12/40] Moved g4 vis macros to Mu2eG4/vis plus related mods --- Analyses/test/ConversionEnergyLoss.fcl | 2 +- Analyses/test/isoRPCtest.fcl | 2 +- Mu2eG4/fcl/g4test_03.fcl | 2 +- Mu2eG4/fcl/prolog.fcl | 2 +- Mu2eG4/fcl/rantest.fcl | 2 +- Mu2eG4/fcl/transportOnly.fcl | 2 +- Mu2eG4/g4study/g4study.fcl | 4 ++-- Mu2eG4/g4study/g4study_Box.fcl | 4 ++-- Mu2eG4/g4study/g4study_Calo01.fcl | 4 ++-- Mu2eG4/g4study/g4study_MuCapture.fcl | 4 ++-- Mu2eG4/g4study/g4study_Tube.fcl | 4 ++-- Mu2eG4/{test => vis}/vis45.mac | 0 Mu2eG4/{test => vis}/vis4530.mac | 0 Mu2eG4/{test => vis}/visTree.mac | 0 Mu2eG4/{test => vis}/vismqt.mac | 0 Mu2eG4/{test => vis}/vismqtm.mac | 0 Mu2eG4/{test => vis}/visqtGUI.mac | 4 ++-- Mu2eG4/{test => vis}/visxy.mac | 0 Mu2eG4/{test => vis}/visxz.mac | 0 Mu2eG4/{test => vis}/visyz.mac | 0 20 files changed, 18 insertions(+), 18 deletions(-) rename Mu2eG4/{test => vis}/vis45.mac (100%) rename Mu2eG4/{test => vis}/vis4530.mac (100%) rename Mu2eG4/{test => vis}/visTree.mac (100%) rename Mu2eG4/{test => vis}/vismqt.mac (100%) rename Mu2eG4/{test => vis}/vismqtm.mac (100%) rename Mu2eG4/{test => vis}/visqtGUI.mac (97%) rename Mu2eG4/{test => vis}/visxy.mac (100%) rename Mu2eG4/{test => vis}/visxz.mac (100%) rename Mu2eG4/{test => vis}/visyz.mac (100%) diff --git a/Analyses/test/ConversionEnergyLoss.fcl b/Analyses/test/ConversionEnergyLoss.fcl index eb492eb8a4..70d44ad38f 100644 --- a/Analyses/test/ConversionEnergyLoss.fcl +++ b/Analyses/test/ConversionEnergyLoss.fcl @@ -70,7 +70,7 @@ physics : { module_type : G4 generatorModuleLabel : generate - # visMacro : "Mu2eG4/test/visyz.mac" + # visMacro : "Mu2eG4/vis/visyz.mac" stepsSizeLimit : 10000 # StepPoint particlesSizeLimit : 10000 # SimParticle seed : [9877] diff --git a/Analyses/test/isoRPCtest.fcl b/Analyses/test/isoRPCtest.fcl index 974092cec4..fb1581ca05 100644 --- a/Analyses/test/isoRPCtest.fcl +++ b/Analyses/test/isoRPCtest.fcl @@ -67,7 +67,7 @@ physics : { module_type : G4 generatorModuleLabel : generate - # visMacro : "Mu2eG4/test/visyz.mac" + # visMacro : "Mu2eG4/vis/visyz.mac" stepsSizeLimit : 10000 # StepPoint particlesSizeLimit : 10000 # SimParticle seed : [9877] diff --git a/Mu2eG4/fcl/g4test_03.fcl b/Mu2eG4/fcl/g4test_03.fcl index fab4dcd567..0234386faa 100644 --- a/Mu2eG4/fcl/g4test_03.fcl +++ b/Mu2eG4/fcl/g4test_03.fcl @@ -104,7 +104,7 @@ physics.producers.generate.muonStops.inputFiles : @local::mergedMuon_tgtStops_md // Enable diagnsotic printout for pedagogical purposes. physics.producers.makeSH.diagLevel : 0 physics.producers.makeSH.maxFullPrint : 5 -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/vismqt.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/vismqt.mac" physics.producers.CaloShowerStepMaker.physVolInfoInput : "g4run" #physics.producers.g4run.physics.turnOffRadioactiveDecay: true #physics.producers.g4run.physics.addProcesses : [ "GammaToMuPair", "AnnihiToMuPair", "ee2hadr" ] diff --git a/Mu2eG4/fcl/prolog.fcl b/Mu2eG4/fcl/prolog.fcl index 40c5019c11..28229e2c8a 100644 --- a/Mu2eG4/fcl/prolog.fcl +++ b/Mu2eG4/fcl/prolog.fcl @@ -71,7 +71,7 @@ mu2eg4DefaultResourceLimits: { #---------------- mu2eg4NoVisualization: { initMacro : "" - GUIMacro : "Mu2eG4/test/visqtGUI.mac" + GUIMacro : "Mu2eG4/vis/visqtGUI.mac" } #---------------- mu2eg4NoTrajectories: { diff --git a/Mu2eG4/fcl/rantest.fcl b/Mu2eG4/fcl/rantest.fcl index 628ca1d6c7..fc6051c86e 100644 --- a/Mu2eG4/fcl/rantest.fcl +++ b/Mu2eG4/fcl/rantest.fcl @@ -60,7 +60,7 @@ physics : #{ # module_type : G4 # generatorModuleLabel : generate - # visMacro : "Mu2eG4/test/visxy.mac" + # visMacro : "Mu2eG4/vis/visxy.mac" # seed : [9877] # } diff --git a/Mu2eG4/fcl/transportOnly.fcl b/Mu2eG4/fcl/transportOnly.fcl index a52c215790..9e00074153 100644 --- a/Mu2eG4/fcl/transportOnly.fcl +++ b/Mu2eG4/fcl/transportOnly.fcl @@ -116,7 +116,7 @@ physics.producers.makeSH.diagLevel : 0 physics.producers.makeSH.maxFullPrint : 5 physics.producers.makeSH.minimumEnergy : 0 -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/vismqt.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/vismqt.mac" #physics.producers.CaloShowerStepMaker.physVolInfoInput : "g4run" physics.producers.g4run.debug.diagLevel : 1 #physics.producers.g4run.debug.worldVerbosityLevel : 1 diff --git a/Mu2eG4/g4study/g4study.fcl b/Mu2eG4/g4study/g4study.fcl index 41873355bb..13a1629dd9 100644 --- a/Mu2eG4/g4study/g4study.fcl +++ b/Mu2eG4/g4study/g4study.fcl @@ -98,8 +98,8 @@ services.SeedService.maxUniqueEngines : 20 #services.message.destinations.log.noTimeStamps : true # inform the geometry service it is not the standard Mu2e Detector # done via the tool_type above now -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/visxz.mac" -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/vismqt.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/visxz.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/vismqt.mac" physics.producers.g4run.physics.physicsListName : "ShieldingM" #physics.producers.g4run.physics.bfieldMaxStep : 500000. // not implemented (no field) diff --git a/Mu2eG4/g4study/g4study_Box.fcl b/Mu2eG4/g4study/g4study_Box.fcl index 853b77472d..de55ea2daf 100644 --- a/Mu2eG4/g4study/g4study_Box.fcl +++ b/Mu2eG4/g4study/g4study_Box.fcl @@ -94,8 +94,8 @@ outputs: { services.SeedService.baseSeed : 8 services.SeedService.maxUniqueEngines : 20 #services.message.destinations.log.noTimeStamps : true -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/visxz.mac" -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/vismqt.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/visxz.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/vismqt.mac" physics.producers.g4run.physics.physicsListName : "ShieldingM" #physics.producers.g4run.physics.bfieldMaxStep : 500000. // not implemented (no field) diff --git a/Mu2eG4/g4study/g4study_Calo01.fcl b/Mu2eG4/g4study/g4study_Calo01.fcl index 71362436b3..1aa979bd09 100644 --- a/Mu2eG4/g4study/g4study_Calo01.fcl +++ b/Mu2eG4/g4study/g4study_Calo01.fcl @@ -94,8 +94,8 @@ outputs: { services.SeedService.baseSeed : 8 services.SeedService.maxUniqueEngines : 20 #services.message.destinations.log.noTimeStamps : true -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/visxz.mac" -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/vismqt.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/visxz.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/vismqt.mac" physics.producers.g4run.physics.physicsListName : "ShieldingM" #physics.producers.g4run.physics.bfieldMaxStep : 500000. // not implemented (no field) diff --git a/Mu2eG4/g4study/g4study_MuCapture.fcl b/Mu2eG4/g4study/g4study_MuCapture.fcl index 978b17c7e4..fe470341f7 100644 --- a/Mu2eG4/g4study/g4study_MuCapture.fcl +++ b/Mu2eG4/g4study/g4study_MuCapture.fcl @@ -94,8 +94,8 @@ outputs: { services.SeedService.baseSeed : 8 services.SeedService.maxUniqueEngines : 20 #services.message.destinations.log.noTimeStamps : true -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/visxz.mac" -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/vismqt.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/visxz.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/vismqt.mac" physics.producers.g4run.physics.physicsListName : "ShieldingM" #physics.producers.g4run.physics.bfieldMaxStep : 500000. // not implemented (no field) diff --git a/Mu2eG4/g4study/g4study_Tube.fcl b/Mu2eG4/g4study/g4study_Tube.fcl index 3d443d7bfe..f195c28457 100644 --- a/Mu2eG4/g4study/g4study_Tube.fcl +++ b/Mu2eG4/g4study/g4study_Tube.fcl @@ -94,8 +94,8 @@ outputs: { services.SeedService.baseSeed : 8 services.SeedService.maxUniqueEngines : 20 #services.message.destinations.log.noTimeStamps : true -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/visxz.mac" -#physics.producers.g4run.visualization.initMacro : "Mu2eG4/test/vismqt.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/visxz.mac" +#physics.producers.g4run.visualization.initMacro : "Mu2eG4/vis/vismqt.mac" physics.producers.g4run.physics.physicsListName : "ShieldingM" #physics.producers.g4run.physics.bfieldMaxStep : 500000. // not implemented (no field) diff --git a/Mu2eG4/test/vis45.mac b/Mu2eG4/vis/vis45.mac similarity index 100% rename from Mu2eG4/test/vis45.mac rename to Mu2eG4/vis/vis45.mac diff --git a/Mu2eG4/test/vis4530.mac b/Mu2eG4/vis/vis4530.mac similarity index 100% rename from Mu2eG4/test/vis4530.mac rename to Mu2eG4/vis/vis4530.mac diff --git a/Mu2eG4/test/visTree.mac b/Mu2eG4/vis/visTree.mac similarity index 100% rename from Mu2eG4/test/visTree.mac rename to Mu2eG4/vis/visTree.mac diff --git a/Mu2eG4/test/vismqt.mac b/Mu2eG4/vis/vismqt.mac similarity index 100% rename from Mu2eG4/test/vismqt.mac rename to Mu2eG4/vis/vismqt.mac diff --git a/Mu2eG4/test/vismqtm.mac b/Mu2eG4/vis/vismqtm.mac similarity index 100% rename from Mu2eG4/test/vismqtm.mac rename to Mu2eG4/vis/vismqtm.mac diff --git a/Mu2eG4/test/visqtGUI.mac b/Mu2eG4/vis/visqtGUI.mac similarity index 97% rename from Mu2eG4/test/visqtGUI.mac rename to Mu2eG4/vis/visqtGUI.mac index f3e9d0a57e..4c7d0eadcf 100644 --- a/Mu2eG4/test/visqtGUI.mac +++ b/Mu2eG4/vis/visqtGUI.mac @@ -15,7 +15,7 @@ # # Start Here Menu/Button /gui/addMenu start "Start Here" -/gui/addButton start "Start by clicking Here Once" "/control/execute Mu2eG4/test/vismqtm.mac" +/gui/addButton start "Start by clicking Here Once" "/control/execute Mu2eG4/vis/vismqtm.mac" # # Viewer menu : /gui/addMenu viewer Viewer @@ -36,7 +36,7 @@ # Vis menu : /gui/addMenu vis Vis -#/gui/addButton vis "Create Viewer and Draw Event" "/control/execute Mu2eG4/test/visqtGUI_00.mac" +#/gui/addButton vis "Create Viewer and Draw Event" "/control/execute Mu2eG4/vis/visqtGUI_00.mac" /gui/addButton vis "Draw Current Event" "/vis/sceneHandler/drawEvent !" /gui/addButton vis "Create Viewer for current handler" "/vis/viewer/create ! ! !" /gui/addButton vis "Select viewer-0" "/vis/viewer/select viewer-0" diff --git a/Mu2eG4/test/visxy.mac b/Mu2eG4/vis/visxy.mac similarity index 100% rename from Mu2eG4/test/visxy.mac rename to Mu2eG4/vis/visxy.mac diff --git a/Mu2eG4/test/visxz.mac b/Mu2eG4/vis/visxz.mac similarity index 100% rename from Mu2eG4/test/visxz.mac rename to Mu2eG4/vis/visxz.mac diff --git a/Mu2eG4/test/visyz.mac b/Mu2eG4/vis/visyz.mac similarity index 100% rename from Mu2eG4/test/visyz.mac rename to Mu2eG4/vis/visyz.mac From e48ddf28c8292a98ff3b470d7f5d0b0f32907bb7 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Sat, 15 May 2021 11:12:59 -0500 Subject: [PATCH 13/40] Fix small problems --- JobConfig/beam/BeamResampler.fcl | 10 +++++----- JobConfig/beam/NeutralsResampler.fcl | 25 ++++++++++--------------- JobConfig/beam/prolog.fcl | 12 ++++++------ 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index fabd027154..8e1f946f58 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -26,7 +26,6 @@ physics: { @table::CommonMC.producers @table::Beam.producers @table::Primary.producers - compressEarlyDetStepMCs : @local::Primary.producers.compressDetStepMCs } filters : { @table::Common.filters @@ -43,9 +42,9 @@ physics: { flashPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] earlyFlashPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, EarlyPrescaleFilter, - @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressEarlyDetStepMCs ] + @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] trigger_paths: [ flashPath, earlyFlashPath, mustopPath, IPAStopPath ] - outPath : [ FlashOutput, EarlyFlashOutput, MuTargetStopOutput ] + outPath : [ FlashOutput, EarlyFlashOutput, MuTargetStopOutput, IPAStopOutput ] end_paths: [outPath] } outputs: { @@ -87,21 +86,22 @@ physics.producers.g4run.Mu2eG4CommonCut:{ } #include "JobConfig/common/epilog.fcl" #include "JobConfig/pileup/epilog.fcl" +#everything below should be in prolog FIXME! physics.producers.compressEarlyDetStepMCs.stepPointMCTags : [ ] physics.producers.compressEarlyDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression physics.producers.compressEarlyDetStepMCs.mcTrajectoryTag : "" physics.producers.compressEarlyDetStepMCs.simParticleTag : "g4run" -# reconfigure StepPoint producers for this job; this avoids double-counting particles +# reconfigure StepPoint producers for this job; this avoids double-counting particles from the mustop filter deep copy physics.producers.StrawGasStepMaker.SkipTheseStepPoints : "g4run" physics.producers.StrawGasStepMaker.KeepDeltasModule : "" physics.producers.CaloShowerStepMaker.caloStepPointCollection : ["FlashFilter:calorimeter"] physics.producers.CrvSteps.stepPointsModuleLabels : [ "FlashFilter" ] # tweak compression for this job physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" +physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" # time cut for the main flash stream physics.filters.DetStepFilter.MinimumTime : 300 # select energy deposits after the peak of the flash has passed, to keep useless payload down physics.filters.DetStepFilter.TimeOffsets : [ "protonTimeMap" ] # only proton time map is relevant to this job # test physics.filters.beamResampler.fileNames: [ "sim.owner.Beam.version.sequencer.art" ] - diff --git a/JobConfig/beam/NeutralsResampler.fcl b/JobConfig/beam/NeutralsResampler.fcl index b2305d8e5e..d855a0f421 100644 --- a/JobConfig/beam/NeutralsResampler.fcl +++ b/JobConfig/beam/NeutralsResampler.fcl @@ -12,7 +12,7 @@ #include "JobConfig/primary/prolog.fcl" #include "JobConfig/pileup/prolog.fcl" -process_name: BeamResampler +process_name: NeutralsResampler source : { module_type : EmptyEvent @@ -25,7 +25,6 @@ physics: { @table::CommonMC.producers @table::Beam.producers @table::Primary.producers - compressEarlyDetStepMCs : @local::Primary.producers.compressDetStepMCs } filters : { @table::Common.filters @@ -37,8 +36,8 @@ physics: { @table::Common.analyzers } # setup paths - flashPath : [ genCounter, neutResampler, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] - earlyFlashPath : [ genCounter, neutResampler, @sequence::Common.g4Sequence, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressEarlyDetStepMCs ] + flashPath : [ genCounter, neutralsResampler, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] + earlyFlashPath : [ genCounter, neutralsResampler, @sequence::Common.g4Sequence, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] trigger_paths: [ flashPath, earlyFlashPath ] outPath : [ FlashOutput, EarlyFlashOutput ] end_paths: [outPath] @@ -46,24 +45,24 @@ physics: { outputs: { FlashOutput : { @table::Beam.outputs.FlashOutput - fileName: "dts.owner.CRVFlash.version.sequencer.art" + fileName: "dts.owner.NeutralsFlash.version.sequencer.art" } EarlyFlashOutput : { @table::Beam.outputs.EarlyFlashOutput - fileName: "dts.owner.EarlyCRVFlash.version.sequencer.art" + fileName: "dts.owner.EarlyNeutralsFlash.version.sequencer.art" } } # Point Mu2eG4 to the pre-simulated data physics.producers.g4run.inputs: { primaryType: "StepPoints" - primaryTag: "neutResampler:Neutrals" + primaryTag: "neutralsResampler:Neutrals" inputMCTrajectories: "" simStageOverride: 1 - inputPhysVolumeMultiInfo: "neutResampler" + inputPhysVolumeMultiInfo: "neutralsResampler" updateEventLevelVolumeInfos: { - input: "neutResampler:eventlevel" + input: "neutralsResampler:eventlevel" outInstance: "eventlevel" } } @@ -78,19 +77,15 @@ physics.producers.g4run.Mu2eG4CommonCut:{ } #include "JobConfig/common/epilog.fcl" #include "JobConfig/pileup/epilog.fcl" +#everything below should be in prolog FIXME! physics.producers.compressEarlyDetStepMCs.stepPointMCTags : [ ] physics.producers.compressEarlyDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression physics.producers.compressEarlyDetStepMCs.mcTrajectoryTag : "" -#physics.producers.compressEarlyDetStepMCs.simParticleTag : "g4run" physics.producers.StrawGasStepMaker.KeepDeltasModule : "" -#physics.producers.CaloShowerStepMaker.caloStepPointCollection : ["g4run:calorimeter"] -#physics.producers.CrvSteps.stepPointsModuleLabels : [ "g4run" ] -# tweak compression for this job -#physics.producers.compressDetStepMCs.simParticleTag : "g4runr" # time cut for the main flash stream physics.filters.DetStepFilter.MinimumTime : 300 # select energy deposits after the peak of the flash has passed, to keep useless payload down physics.filters.DetStepFilter.TimeOffsets : [ "protonTimeMap" ] # only proton time map is relevant to this job # test -physics.filters.neutResampler.fileNames: [ "sim.owner.Neutrals.version.sequencer.art" ] +physics.filters.neutralsResampler.fileNames: [ "sim.owner.Neutrals.version.sequencer.art" ] diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index 6e70f9caa8..ffb5444124 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -86,12 +86,12 @@ Beam: { IPAMuonFinder : { module_type : StoppedParticlesFinder particleInput : "g4run" - physVolInfoInput : "g4run" - stoppingMaterials : [ "IPAPolyethyelene" ] + useEventLevelVolumeInfo: true + physVolInfoInput: "g4run:eventlevel" + stoppingMaterial : "IPAPolyethyelene" particleTypes : [ 13, -13 ] verbosityLevel: 1 } - stoppedMuonDaughters: { module_type: SimParticleDaughterSelector @@ -176,7 +176,7 @@ Beam: { } } - neutResampler: { + neutralsResampler: { module_type: ResamplingMixer fileNames: @nil readMode: "sequential" @@ -200,7 +200,7 @@ Beam: { EarlyPrescaleFilter : { module_type : PrescaleEvent - nPrescale : 1000 + nPrescale : 100 # test value FIXME triggerPath : "earlyFlashPath" triggerFlag : ["PrescaleRandom"] } @@ -285,7 +285,7 @@ Beam: { } IPAStopOutput : { - module_type : RIPAOutput + module_type : RootOutput SelectEvents: [IPAStopPath] outputCommands: [ "drop *_*_*_*", "keep mu2e::GenParticles_*_*_*", From 2bef810c99d1e4ef934c88a3fd44d7c296f75cce Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Mon, 17 May 2021 17:18:41 -0500 Subject: [PATCH 14/40] Add sim time offset, and option to allpy during resampling. Add proton time shift generation module. Update beam resampling scripts to use the proton time shift --- CommonMC/fcl/prolog.fcl | 2 + CommonMC/src/ProtonTimeOffset_module.cc | 87 +++++++++++++++++++++++ EventMixing/inc/Mu2eProductMixer.hh | 10 ++- EventMixing/src/Mu2eProductMixer.cc | 65 +++++++++++++---- EventMixing/src/ResamplingMixer_module.cc | 55 +++++++------- Filters/src/DetectorStepFilter_module.cc | 55 +++++++++----- JobConfig/beam/BeamResampler.fcl | 35 ++++----- JobConfig/beam/NeutralsResampler.fcl | 16 ++--- JobConfig/beam/epilog.fcl | 14 ++++ JobConfig/beam/prolog.fcl | 50 ++++++------- JobConfig/pileup/epilog.fcl | 3 +- MCDataProducts/inc/GenParticle.hh | 1 + MCDataProducts/inc/SimParticle.hh | 2 + MCDataProducts/inc/SimTimeOffset.hh | 15 ++++ MCDataProducts/inc/StepPointMC.hh | 1 + MCDataProducts/src/classes.h | 1 + MCDataProducts/src/classes_def.xml | 5 ++ Mu2eKinKal/src/LoopHelixFit_module.cc | 1 - Validation/src/ValStrawGasStep.cc | 4 +- 19 files changed, 294 insertions(+), 128 deletions(-) create mode 100644 CommonMC/src/ProtonTimeOffset_module.cc create mode 100644 MCDataProducts/inc/SimTimeOffset.hh diff --git a/CommonMC/fcl/prolog.fcl b/CommonMC/fcl/prolog.fcl index e1d893b0b8..15f93bc119 100644 --- a/CommonMC/fcl/prolog.fcl +++ b/CommonMC/fcl/prolog.fcl @@ -8,6 +8,8 @@ muLifeGenIds : [ "StoppedParticleReactionGun", "dioTail", "ExternalRMC", "Intern CommonMC: { producers: { # +# time offsets + protonTimeOffset : { module_type: ProtonTimeOffset } # time maps protonTimeMap: { module_type : GenerateProtonTimes # Exclude particles not generated from primary protons diff --git a/CommonMC/src/ProtonTimeOffset_module.cc b/CommonMC/src/ProtonTimeOffset_module.cc new file mode 100644 index 0000000000..73d8a47417 --- /dev/null +++ b/CommonMC/src/ProtonTimeOffset_module.cc @@ -0,0 +1,87 @@ +// +// generate a single time sample from the proton bunch distribution +// for proton beam reasampling +// + +#include +#include + +#include "fhiclcpp/types/OptionalTable.h" +#include "messagefacility/MessageLogger/MessageLogger.h" + +#include "CLHEP/Random/RandGaussQ.h" + +#include "canvas/Persistency/Common/Ptr.h" +#include "art/Framework/Core/EDProducer.h" +#include "art/Framework/Core/ModuleMacros.h" +#include "art/Framework/Principal/Event.h" +#include "art/Framework/Services/Optional/RandomNumberGenerator.h" + +#include "MCDataProducts/inc/SimTimeOffset.hh" +#include "SeedService/inc/SeedService.hh" +#include "Mu2eUtilities/inc/ProtonPulseRandPDF.hh" + +namespace mu2e { + + class ProtonTimeOffset : public art::EDProducer { + + public: + + struct Config { + using Name=fhicl::Name; + using Comment=fhicl::Comment; + + fhicl::OptionalTable randPDFparameters { Name("randPDFparameters") }; + fhicl::Atom verbosityLevel{ Name("verbosityLevel"), Comment("Levels 0, 1, >1"), 0 }; + }; + + using Parameters = art::EDProducer::Table; + explicit ProtonTimeOffset(const Parameters& conf); + + virtual void beginRun(art::Run& r) override; + virtual void produce (art::Event& e) override; + + private: + art::RandomNumberGenerator::base_engine_t& engine_; + ProtonPulseRandPDF::Config protonPulseConf_; + int verbosityLevel_; + std::unique_ptr protonPulse_; + }; + + //================================================================ + ProtonTimeOffset::ProtonTimeOffset(const Parameters& conf) + : EDProducer{conf} + , engine_(createEngine(art::ServiceHandle()->getSeed()) ) + , verbosityLevel_(conf().verbosityLevel()) + { + produces(); + conf().randPDFparameters(protonPulseConf_); + } + + //================================================================ + void ProtonTimeOffset::beginRun(art::Run& run) { + protonPulse_.reset( new ProtonPulseRandPDF( engine_, protonPulseConf_ ) ); + if ( verbosityLevel_ > 0 ) { + std::ostringstream timeSpectrum; + std::cout << " Size of proton pulse: " << protonPulse_->getTimes().size() << std::endl; + for ( std::size_t i(0) ; i < protonPulse_->getTimes().size(); i++ ) { + timeSpectrum << " POT time: " + << protonPulse_->getTimes().at(i) + << " " + << protonPulse_->getSpectrum().at(i) << "\n"; + } + mf::LogInfo("Info") << "Longitudinal POT time distribution\n" << timeSpectrum.str(); + } + } + + //================================================================ + void ProtonTimeOffset::produce(art::Event& event) { +// Generate and record offset + std::unique_ptr toff(new SimTimeOffset(protonPulse_->fire())); + if( verbosityLevel_ > 1) std::cout<<"ProtonTimeOffset "<< toff->timeOffset_ << std::endl; + event.put(std::move(toff)); + } + +} // end namespace mu2e + +DEFINE_ART_MODULE(mu2e::ProtonTimeOffset) diff --git a/EventMixing/inc/Mu2eProductMixer.hh b/EventMixing/inc/Mu2eProductMixer.hh index b7801960ae..850c4cb9c9 100644 --- a/EventMixing/inc/Mu2eProductMixer.hh +++ b/EventMixing/inc/Mu2eProductMixer.hh @@ -25,7 +25,8 @@ #include "fhiclcpp/types/OptionalTable.h" #include "fhiclcpp/types/TupleAs.h" #include "canvas/Utilities/InputTag.h" - +#include "art/Framework/Principal/Event.h" +#include "art/Framework/Principal/SubRun.h" #include "art/Framework/IO/ProductMix/MixHelper.h" #include "MCDataProducts/inc/GenParticleCollection.hh" @@ -38,6 +39,7 @@ #include "MCDataProducts/inc/ExtMonFNALSimHitCollection.hh" #include "MCDataProducts/inc/ProtonBunchIntensity.hh" #include "MCDataProducts/inc/SimParticleTimeMap.hh" +#include "MCDataProducts/inc/SimTimeOffset.hh" #include "MCDataProducts/inc/PhysicalVolumeInfoMultiCollection.hh" @@ -94,12 +96,13 @@ namespace mu2e { fhicl::Table protonBunchIntensityMixer { fhicl::Name("protonBunchIntensityMixer") }; fhicl::Table protonTimeMapMixer { fhicl::Name("protonTimeMapMixer") }; fhicl::Table eventIDMixer { fhicl::Name("eventIDMixer") }; - fhicl::OptionalTable volumeInfoMixer { fhicl::Name("volumeInfoMixer") }; + fhicl::Atom simTimeOffset { fhicl::Name("simTimeOffset"), fhicl::Comment("Simulation time offset to apply (optional)"), art::InputTag() }; }; Mu2eProductMixer(const Config& conf, art::MixHelper& helper); + void startEvent(art::Event const& e); void beginSubRun(const art::SubRun& sr); void endSubRun(art::SubRun& sr); @@ -176,6 +179,9 @@ namespace mu2e { art::InputTag volumesInput_; std::string subrunVolInstanceName_; std::optional evtVolInstanceName_; + bool applyTimeOffset_; + art::InputTag timeOffsetTag_; + SimTimeOffset stoff_; // time offset for SimParticles and StepPointMCs void addInfo(VolumeMap* map, const PhysicalVolumeInfoSingleStage::value_type& entry); diff --git a/EventMixing/src/Mu2eProductMixer.cc b/EventMixing/src/Mu2eProductMixer.cc index 0a8da7ab12..21b5c318d8 100644 --- a/EventMixing/src/Mu2eProductMixer.cc +++ b/EventMixing/src/Mu2eProductMixer.cc @@ -43,11 +43,14 @@ namespace mu2e { //---------------------------------------------------------------- Mu2eProductMixer::Mu2eProductMixer(const Config& conf, art::MixHelper& helper) : mixVolumes_(false) + , applyTimeOffset_{! conf.simTimeOffset().empty() } + , timeOffsetTag_{ conf.simTimeOffset() } + , stoff_(0.0) { for(const auto& e: conf.genParticleMixer().mixingMap()) { helper.declareMixOp - (e.inTag, e.resolvedInstanceName(), &Mu2eProductMixer::mixGenParticles, *this); + (e.inTag, e.resolvedInstanceName(), &Mu2eProductMixer::mixGenParticles, *this); } for(const auto& e: conf.simParticleMixer().mixingMap()) { @@ -126,6 +129,15 @@ namespace mu2e { //---------------------------------------------------------------- } + void Mu2eProductMixer::startEvent(art::Event const& e) { + if(applyTimeOffset_){ + // find the time offset in the event, and copy it locally + const auto& stoH = e.getValidHandle(timeOffsetTag_); + stoff_ = *stoH; + } + } + + //================================================================ void Mu2eProductMixer::beginSubRun(const art::SubRun&) { subrunVolumes_.clear(); @@ -151,6 +163,14 @@ namespace mu2e { art::PtrRemapper const& remap) { art::flattenCollections(in, out, genOffsets_); + if(applyTimeOffset_){ + for(auto& particle : out){ + particle.time() += stoff_.timeOffset_; + // proper times are WRT the particles own internal clock, can't shift them + } + } + + return true; } @@ -198,6 +218,12 @@ namespace mu2e { sim.genParticle() = remap( sim.genParticle(), genOffsets_[inputEventIndex]); } + if(applyTimeOffset_){ + sim.startGlobalTime() += stoff_.timeOffset_; + sim.endGlobalTime() += stoff_.timeOffset_; + // proper times are WRT the particles own internal clock, can't shift them + } + } //---------------------------------------------------------------- @@ -212,8 +238,10 @@ namespace mu2e { auto ie = getInputEventIndex(i, stepOffsets); auto& step = out[i]; step.simParticle() = remap(step.simParticle(), simOffsets_[ie]); + if(applyTimeOffset_){ + step.time() += stoff_.timeOffset_; + } } - return true; } @@ -223,22 +251,29 @@ namespace mu2e { art::PtrRemapper const& remap) { // flattenCollections() does not seem to preserve enough info to remap ptrs in the output map. - // Follow the pattern, including the nullptr checks, but add custom remapping code. - + // Follow the pattern, including the nullptr checks, but add custom remapping code + std::pair res; for(std::vector::size_type ieIndex = 0; ieIndex < in.size(); ++ieIndex) { if (in[ieIndex] != nullptr) { for(const auto & orig : *in[ieIndex]) { - auto res = out.insert(std::make_pair(remap(orig.first, simOffsets_[ieIndex]), - MCTrajectory(remap(orig.second.sim(), simOffsets_[ieIndex]), - orig.second.points()) - )); - - if(!res.second) { - throw cet::exception("BUG")<<"mixMCTrajectories(): failed to insert an entry, ieIndex="< nSecondaries { Name("nSecondaries"), - Comment("Number of secondary events per single primary, a positive integer."), - 1u }; - - fhicl::Atom writeEventIDs { Name("writeEventIDs"), - Comment("Write out IDs of events on the secondary input stream."), - true - }; + Comment("A table specifying products to be mixed. For each supported data type\n" + "there is a mixingMap sequence that defines mapping of inputs to outputs.\n" + "Each entry in the top-level mixingMap sequence is a sequence of two strings:\n" + " [ \"InputTag\", \"outputInstanceName\" ]\n" + "The output instance name colon \":\" is special: it means take instance name from the input tag.\n" + "For example, with this config:\n" + " mixingMap: [ [ \"detectorFilter:tracker\", \"tracker\" ], [ \"detectorFilter:virtualdetector\", \":\" ] ]\n" + "the outputs will be named \"tracker\" and \"virtualdetector\"\n" + ) + }; + + + fhicl::Atom nSecondaries { Name("nSecondaries"), + Comment("Number of secondary events per single primary, a positive integer."), + 1u }; + + fhicl::Atom writeEventIDs { Name("writeEventIDs"), + Comment("Write out IDs of events on the secondary input stream."), + true }; + }; - struct Config { - fhicl::Table mu2e { fhicl::Name("mu2e") }; + struct Config { + fhicl::Table mu2e { fhicl::Name("mu2e") }; }; using Parameters = art::MixFilterTable; @@ -67,8 +67,9 @@ namespace mu2e { size_t nSecondaries() const { return nSecondaries_; } void processEventIDs(const art::EventIDSequence& seq); - + void beginSubRun(const art::SubRun& sr); + void startEvent(art::Event const& e); void finalizeEvent(art::Event& e); void endSubRun(art::SubRun& sr); @@ -78,8 +79,8 @@ namespace mu2e { : spm_{ pars().mu2e().products(), helper } , nSecondaries_{ pars().mu2e().nSecondaries() } , writeEventIDs_{ pars().mu2e().writeEventIDs() } - { - if(writeEventIDs_) { + { + if(writeEventIDs_) { helper.produces(); } } @@ -94,6 +95,10 @@ namespace mu2e { spm_.beginSubRun(sr); } + void ResamplingMixerDetail::startEvent(art::Event const& e) { + spm_.startEvent(e); + } + void ResamplingMixerDetail::finalizeEvent(art::Event& e) { if(writeEventIDs_) { auto o = std::make_unique(); diff --git a/Filters/src/DetectorStepFilter_module.cc b/Filters/src/DetectorStepFilter_module.cc index e2b8226cb9..989130e98a 100644 --- a/Filters/src/DetectorStepFilter_module.cc +++ b/Filters/src/DetectorStepFilter_module.cc @@ -7,6 +7,9 @@ // art includes. #include "fhiclcpp/ParameterSet.h" +#include "fhiclcpp/types/Atom.h" +#include "fhiclcpp/types/Sequence.h" +#include "fhiclcpp/types/OptionalAtom.h" #include "cetlib_except/exception.h" #include "art/Framework/Core/EDFilter.h" #include "art/Framework/Principal/Event.h" @@ -25,6 +28,8 @@ namespace mu2e { class DetectorStepFilter : public art::EDFilter { public: + static constexpr double maxE_ = 1.0e6; // 1 TeV + static constexpr unsigned maxN_ = 1000000; struct Config { using Name=fhicl::Name; using Comment=fhicl::Comment; @@ -33,12 +38,12 @@ namespace mu2e { fhicl::Sequence caloSteps { Name("CaloShowerSteps"), Comment("CaloShowerStep collections") }; fhicl::Sequence crvSteps { Name("CrvSteps"), Comment("CrvStep collections") }; - fhicl::Atom minTrkStepEnergy { Name("MinimumTrkStepEnergy"), Comment("Minimum Trk step energy"), -std::numeric_limits::max() }; - fhicl::Atom minCaloStepEnergy { Name("MinimumCaloStepEnergy"), Comment("Minimum Calo step energy"), -std::numeric_limits::max() }; - fhicl::Atom minCrvStepEnergy { Name("MinimumCrvStepEnergy"), Comment("Minimum Crv step energy"), -std::numeric_limits::max() }; + fhicl::Atom minTrkStepEnergy { Name("MinimumTrkStepEnergy"), Comment("Minimum Trk step energy"), 0.0 }; + fhicl::Atom minCaloStepEnergy { Name("MinimumCaloStepEnergy"), Comment("Minimum Calo step energy"), 0.0 }; + fhicl::Atom minCrvStepEnergy { Name("MinimumCrvStepEnergy"), Comment("Minimum Crv step energy"), 0.0 }; - fhicl::Atom minPartMom { Name("MinimumPartMom"), Comment("Minimum particle momentum"), -std::numeric_limits::max() }; - fhicl::Atom maxPartMom { Name("MaximumPartMom"), Comment("Maximum particle momentum"), std::numeric_limits::max() }; + fhicl::Atom minPartMom { Name("MinimumPartMom"), Comment("Minimum particle momentum"), 0.0 }; + fhicl::Atom maxPartMom { Name("MaximumPartMom"), Comment("Maximum particle momentum"), maxE_ }; fhicl::Atom orRequirements { Name("ORRequirements"), Comment("Take the logical OR of requirements, otherwise take the AND"), true }; @@ -46,13 +51,15 @@ namespace mu2e { fhicl::Atom minSumCaloStepE { Name("MinimumSumCaloStepE"), Comment("Minimum E sum of good calorimeter steps (MeV) "), 50.0 }; fhicl::Atom minNCrvSteps { Name("MinimumCrvSteps"), Comment("Minimum number of good CRV steps"), 3 }; - fhicl::Atom maxNTrkSteps { Name("MaximumTrkSteps"), Comment("Maximum number of good tracker steps"), 1000000}; - fhicl::Atom maxSumCaloStepE { Name("MaximumSumCaloStepE"), Comment("Maximum E sum of good calorimeter steps (MeV) "), 1.0e8 }; - fhicl::Atom maxNCrvSteps { Name("MaximumCrvSteps"), Comment("Maximum number of good CRV steps"), 1000000 }; + fhicl::Atom maxNTrkSteps { Name("MaximumTrkSteps"), Comment("Maximum number of good tracker steps"), maxN_ }; + fhicl::Atom maxSumCaloStepE { Name("MaximumSumCaloStepE"), Comment("Maximum E sum of good calorimeter steps (MeV) "), maxE_ }; + fhicl::Atom maxNCrvSteps { Name("MaximumCrvSteps"), Comment("Maximum number of good CRV steps"), maxN_ }; fhicl::Sequence keepPDG { Name("KeepPDG"), Comment("PDG particle codes to keep") }; - fhicl::Atom minTime { Name("MinimumTime"), Comment("Minimum time for good step (ns since POT)"), -1.0}; + fhicl::Atom timeCut { Name("TimeCut"), Comment("Make time for good step"), false}; + fhicl::OptionalAtom maxTime { Name("MaximumTime"), Comment("Maximum time for good step (ns since POT)")}; + fhicl::OptionalAtom minTime { Name("MinimumTime"), Comment("Minimum time for good step (ns since POT)")}; fhicl::Sequence SPTO { Name("TimeOffsets"), Comment("Sim Particle Time Offset Maps"), std::vector () }; }; @@ -63,7 +70,8 @@ namespace mu2e { void endJob() override; private: - bool goodParticle(SimParticle const& simp) const; + bool goodParticle(SimParticle const& simp) const; // select particles whose steps to count + bool flashCut(double time) const; // cut particle time outside of flash double minTrkE_, minCaloE_, minCrvE_; double minPartM_, maxPartM_; bool or_; @@ -73,7 +81,8 @@ namespace mu2e { double minSumCaloE_; unsigned maxNTrk_, maxNCrv_; double maxSumCaloE_; - double minTime_; + bool timecut_; + double minTime_, maxTime_; SimParticleTimeOffset toff_; // time offsets unsigned nEvt_, nPassed_; }; @@ -93,7 +102,8 @@ namespace mu2e { , maxNTrk_(conf().maxNTrkSteps()) , maxNCrv_(conf().maxNCrvSteps()) , maxSumCaloE_(conf().maxSumCaloStepE()) - , minTime_(conf().minTime()) + , timecut_(conf().timeCut()) + , minTime_(0.0), maxTime_(0.0) , toff_(conf().SPTO()) , nEvt_(0) , nPassed_(0) @@ -103,12 +113,17 @@ namespace mu2e { for(const auto& calotag : conf().caloSteps()) { caloStepCols_.emplace_back(calotag); consumes(calotag); } for(const auto& crvtag : conf().crvSteps()) { crvStepCols_.emplace_back(crvtag); consumes(crvtag); } - if(minTime_ > -1.0 && conf().SPTO().size() ==0) - throw cet::exception("Filter")<<"mu2e::DetectorStepFilter: time cut requires time offsets" << std::endl; + if( timecut_){ + conf().minTime(minTime_); + conf().maxTime(maxTime_); + } } + // input must be a physical time! + bool DetectorStepFilter::flashCut(double ptime) const { return (!timecut_) || ptime > minTime_ || ptime < maxTime_; } + bool DetectorStepFilter::filter(art::Event& event) { - if(minTime_ > -1.0)toff_.updateMap(event); + if(timecut_)toff_.updateMap(event); bool selecttrk(false), selectcalo(false), selectcrv(false); ++nEvt_; @@ -119,10 +134,11 @@ namespace mu2e { auto sgscolH = event.getValidHandle(trkcoltag); for(const auto& sgs : *sgscolH ) { double mom = sgs.momentum().R(); + double ptime = sgs.time() + toff_.totalTimeOffset(sgs.simParticle()); if(sgs.ionizingEdep() > minTrkE_ && mom > minPartM_ && mom < maxPartM_ && goodParticle(*sgs.simParticle()) && - (minTime_ < 0.0 || sgs.time() + toff_.totalTimeOffset(sgs.simParticle()) > minTime_)) { + flashCut(ptime)) { auto ifnd = counttrk.find(sgs.simParticle().get()); if(ifnd == counttrk.end()) counttrk.insert(CT::value_type(sgs.simParticle().get(),1)); @@ -144,10 +160,11 @@ namespace mu2e { CES caloESum; auto csscolH = event.getValidHandle(calocoltag); for(const auto& css : *csscolH ) { + double ptime = css.time() + toff_.totalTimeOffset(css.simParticle()); if(css.energyDepBirks() > minCaloE_ && css.momentumIn() > minPartM_ && css.momentumIn() < maxPartM_ && goodParticle(*css.simParticle()) && - (minTime_ < 0.0 || css.time() + toff_.totalTimeOffset(css.simParticle()) > minTime_)) { + flashCut(ptime)) { auto ifnd = caloESum.find(css.simParticle().get()); if(ifnd == caloESum.end()) caloESum.insert(CES::value_type(css.simParticle().get(),css.energyDepBirks())); @@ -170,10 +187,11 @@ namespace mu2e { auto crvscolH = event.getValidHandle(crvcoltag); for(const auto& crvs : *crvscolH ) { double mom = crvs.startMom().R(); + double ptime = crvs.startTime() + toff_.totalTimeOffset(crvs.simParticle()); if(crvs.visibleEDep() > minCrvE_ && mom > minPartM_ && mom < maxPartM_ && goodParticle(*crvs.simParticle()) && - (minTime_ < 0.0 || crvs.startTime() + toff_.totalTimeOffset(crvs.simParticle()) > minTime_)) { + flashCut(ptime)) { auto ifnd = countcrv.find(crvs.simParticle().get()); if(ifnd == countcrv.end()) countcrv.insert(CC::value_type(crvs.simParticle().get(),1)); @@ -189,6 +207,7 @@ namespace mu2e { } if(selectcrv)break; } + // global selection bool retval =( (or_ && (selecttrk || selectcalo || selectcrv)) || ((!or_) && ( selecttrk && selectcalo && selectcrv)) ); if(retval)nPassed_++; diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index 8e1f946f58..eb9d68718d 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -37,18 +37,20 @@ physics: { @table::Common.analyzers } # setup paths - mustopPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, MuTargetStopFilter] - IPAStopPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter] - flashPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, - @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] - earlyFlashPath : [ genCounter, beamResampler, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, EarlyPrescaleFilter, + targetStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, TargetStopFilter] + IPAStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter] +# targetStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, TargetStopFilter, compressPVTargetStops] +# IPAStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter, compressPVIPAStops] + flashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, + @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] + earlyFlashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] - trigger_paths: [ flashPath, earlyFlashPath, mustopPath, IPAStopPath ] - outPath : [ FlashOutput, EarlyFlashOutput, MuTargetStopOutput, IPAStopOutput ] + trigger_paths: [ flashPath, earlyFlashPath, targetStopPath, IPAStopPath ] + outPath : [ FlashOutput, EarlyFlashOutput, TargetStopOutput, IPAStopOutput ] end_paths: [outPath] } outputs: { - MuTargetStopOutput : @local::Beam.outputs.MuTargetStopOutput + TargetStopOutput : @local::Beam.outputs.TargetStopOutput IPAStopOutput : @local::Beam.outputs.IPAStopOutput FlashOutput : { @table::Beam.outputs.FlashOutput @@ -86,22 +88,11 @@ physics.producers.g4run.Mu2eG4CommonCut:{ } #include "JobConfig/common/epilog.fcl" #include "JobConfig/pileup/epilog.fcl" -#everything below should be in prolog FIXME! -physics.producers.compressEarlyDetStepMCs.stepPointMCTags : [ ] -physics.producers.compressEarlyDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression -physics.producers.compressEarlyDetStepMCs.mcTrajectoryTag : "" -physics.producers.compressEarlyDetStepMCs.simParticleTag : "g4run" -# reconfigure StepPoint producers for this job; this avoids double-counting particles from the mustop filter deep copy +#include "JobConfig/beam/epilog.fcl" +# reconfigure StepPoint producers to avoid double-counting particles from the mustop filter deep copy physics.producers.StrawGasStepMaker.SkipTheseStepPoints : "g4run" physics.producers.StrawGasStepMaker.KeepDeltasModule : "" physics.producers.CaloShowerStepMaker.caloStepPointCollection : ["FlashFilter:calorimeter"] physics.producers.CrvSteps.stepPointsModuleLabels : [ "FlashFilter" ] -# tweak compression for this job -physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" -physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" -# time cut for the main flash stream -physics.filters.DetStepFilter.MinimumTime : 300 # select energy deposits after the peak of the flash has passed, to keep useless payload down -physics.filters.DetStepFilter.TimeOffsets : [ "protonTimeMap" ] # only proton time map is relevant to this job - # test -physics.filters.beamResampler.fileNames: [ "sim.owner.Beam.version.sequencer.art" ] +physics.filters.neutralsresampler.filenames: [ "sim.owner.Beam.version.sequencer.art" ] diff --git a/JobConfig/beam/NeutralsResampler.fcl b/JobConfig/beam/NeutralsResampler.fcl index d855a0f421..3f5d6156e4 100644 --- a/JobConfig/beam/NeutralsResampler.fcl +++ b/JobConfig/beam/NeutralsResampler.fcl @@ -36,8 +36,8 @@ physics: { @table::Common.analyzers } # setup paths - flashPath : [ genCounter, neutralsResampler, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, protonTimeMap, @sequence::Primary.DetStepFilterSequence ] - earlyFlashPath : [ genCounter, neutralsResampler, @sequence::Common.g4Sequence, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] + flashPath : [ @sequence::Beam.neutralsResamplerSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] + earlyFlashPath : [ @sequence::Beam.neutralsResamplerSequence, @sequence::Common.g4Sequence, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] trigger_paths: [ flashPath, earlyFlashPath ] outPath : [ FlashOutput, EarlyFlashOutput ] end_paths: [outPath] @@ -77,15 +77,7 @@ physics.producers.g4run.Mu2eG4CommonCut:{ } #include "JobConfig/common/epilog.fcl" #include "JobConfig/pileup/epilog.fcl" -#everything below should be in prolog FIXME! -physics.producers.compressEarlyDetStepMCs.stepPointMCTags : [ ] -physics.producers.compressEarlyDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression -physics.producers.compressEarlyDetStepMCs.mcTrajectoryTag : "" -physics.producers.StrawGasStepMaker.KeepDeltasModule : "" -# time cut for the main flash stream -physics.filters.DetStepFilter.MinimumTime : 300 # select energy deposits after the peak of the flash has passed, to keep useless payload down -physics.filters.DetStepFilter.TimeOffsets : [ "protonTimeMap" ] # only proton time map is relevant to this job - +#include "JobConfig/beam/epilog.fcl" # test -physics.filters.neutralsResampler.fileNames: [ "sim.owner.Neutrals.version.sequencer.art" ] +physics.filters.neutralsresampler.filenames: [ "sim.owner.Neutrals.version.sequencer.art" ] diff --git a/JobConfig/beam/epilog.fcl b/JobConfig/beam/epilog.fcl index a03f9a8a0e..2103c837f6 100644 --- a/JobConfig/beam/epilog.fcl +++ b/JobConfig/beam/epilog.fcl @@ -6,3 +6,17 @@ services.TFileService.fileName : null services.message.destinations.log.categories.ArtReport.reportEvery : 1 services.message.destinations.log.categories.ArtReport.limit : 1 services.message.destinations.log.categories.ArtReport.timespan : 300 +# time cut for the main flash stream +# these select energy deposits after the peak of the flash has passed, to keep useless payload down +# time cut for the main flash stream +physics.filters.DetStepFilter.TimeCut : true +physics.filters.DetStepFilter.MinimumTime : 300 # good hits are after this time +physics.filters.DetStepFilter.MaximumTime : 50 # not a type: good hits are before this time +# tweak detstep compression for resampling jobs +physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" +physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" +physics.producers.compressEarlyDetStepMCs.stepPointMCTags : [ ] +physics.producers.compressEarlyDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression +physics.producers.compressEarlyDetStepMCs.mcTrajectoryTag : "" +physics.producers.compressEarlyDetStepMCs.simParticleTag : "g4run" + diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index ffb5444124..bb16408e47 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -13,8 +13,6 @@ Beam: { genCounter: { module_type: GenEventCounter } g4run : @local::g4run - - compressPVBeam : { module_type: CompressPhysicalVolumes volumesInput : "g4run" @@ -43,25 +41,11 @@ Beam: { particleInputs : [ "extmonRegionFilter" ] } - compressPVDetector: { - module_type: CompressPhysicalVolumes - volumesInput: "g4run" - hitInputs: [] - particleInputs: [ "detectorFilter" ] - } - - compressPVNeutrals: { - module_type: CompressPhysicalVolumes - volumesInput: "g4run" - hitInputs: [] - particleInputs: [ "NeutralsFilter" ] - } - - compressPVFull : { + compressPVTargetStops: { module_type: CompressPhysicalVolumes volumesInput : "g4run" hitInputs : [] - particleInputs : [ "g4run" ] + particleInputs : [ "TargetStopFilter" ] } compressPVIPAStops: { @@ -132,6 +116,13 @@ Beam: { vetoDaughters: [] } + TargetStopFilter: { + module_type: FilterG4Out + mainHitInputs: [] + extraHitInputs: [ "g4run:virtualdetector" ] + mainSPPtrInputs: [ "stoppedMuonFinder" ] + } + IPAStopFilter: { module_type: FilterG4Out mainHitInputs: [] @@ -139,19 +130,14 @@ Beam: { mainSPPtrInputs: [ "IPAMuonFinder" ] } - FlashFilter: { module_type: FilterG4Out mainHitInputs: [ "g4run:tracker", "g4run:calorimeter", "g4run:CRV", "g4run:virtualdetector" ] vetoParticles: [ "stoppedMuonDaughters" ] } - MuTargetStopFilter: { - module_type: FilterG4Out - mainHitInputs: [] - extraHitInputs: [ "g4run:virtualdetector" ] - mainSPPtrInputs: [ "stoppedMuonFinder" ] - } + +# resamplers beamResampler: { module_type: ResamplingMixer @@ -167,7 +153,7 @@ Beam: { [ "BeamFilter:virtualdetector", ":" ], [ "BeamFilter:Beam", ":" ] ] } - + simTimeOffset : "protonTimeOffset" volumeInfoMixer: { srInput: "compressPVBeam" evtOutInstanceName: "eventlevel" @@ -271,17 +257,17 @@ Beam: { ] } - MuTargetStopOutput : { + TargetStopOutput : { module_type : RootOutput - SelectEvents: [mustopPath] + SelectEvents: [targetStopPath] outputCommands: [ "drop *_*_*_*", "keep art::EventIDs_*_*_*", "keep mu2e::GenParticles_*_*_*", "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", - "keep *_MuTargetStopFilter_*_*" + "keep *_TargetStopFilter_*_*" ] - fileName : "sim.owner.MuTargetStops.version.sequencer.art" + fileName : "sim.owner.TargetStops.version.sequencer.art" } IPAStopOutput : { @@ -420,6 +406,10 @@ Beam: { } ] } + + beamResamplerSequence : [genCounter, protonTimeOffset, beamResampler] + neutralsResamplerSequence : [genCounter, protonTimeOffset, neutralsResampler] + } END_PROLOG diff --git a/JobConfig/pileup/epilog.fcl b/JobConfig/pileup/epilog.fcl index 0dcddbdb41..b699c76a11 100644 --- a/JobConfig/pileup/epilog.fcl +++ b/JobConfig/pileup/epilog.fcl @@ -8,4 +8,5 @@ physics.producers.compressDetStepMCs.mcTrajectoryTag : "" physics.producers.g4run.TrajectoryControl.produce : false # only detector SDs physics.producers.g4run.SDConfig.enableSD: [@sequence::physics.producers.g4run.SDConfig.enableSD ] - +# no special deltas treatment for pileup +physics.producers.StrawGasStepMaker.KeepDeltasModule : "" diff --git a/MCDataProducts/inc/GenParticle.hh b/MCDataProducts/inc/GenParticle.hh index e5423e5ab1..54bcd62e5f 100644 --- a/MCDataProducts/inc/GenParticle.hh +++ b/MCDataProducts/inc/GenParticle.hh @@ -71,6 +71,7 @@ namespace mu2e { PDGCode::type pdgId() const { return _pdgId; } GenId generatorId() const { return _generatorId; } double time() const { return _time;} + double& time() { return _time;} // This is for multi-stage jobs, when we want to restart a // particle recorded in a previous job that already had non-zero diff --git a/MCDataProducts/inc/SimParticle.hh b/MCDataProducts/inc/SimParticle.hh index 8de6a044a1..74bacf8fe5 100644 --- a/MCDataProducts/inc/SimParticle.hh +++ b/MCDataProducts/inc/SimParticle.hh @@ -193,6 +193,7 @@ namespace mu2e { CLHEP::Hep3Vector const& startPosition() const { return _startPosition;} CLHEP::HepLorentzVector const& startMomentum() const { return _startMomentum;} double startGlobalTime() const { return _startGlobalTime;} + double& startGlobalTime() { return _startGlobalTime;} double startProperTime() const { return _startProperTime;} unsigned startVolumeIndex() const { return _startVolumeIndex;} unsigned startG4Status() const { return _startG4Status;} @@ -209,6 +210,7 @@ namespace mu2e { CLHEP::Hep3Vector const& endPosition() const { return _endPosition;} CLHEP::HepLorentzVector const& endMomentum() const { return _endMomentum;} double endGlobalTime() const { return _endGlobalTime; } + double& endGlobalTime() { return _endGlobalTime; } double endProperTime() const { return _endProperTime; } unsigned endVolumeIndex() const { return _endVolumeIndex;} unsigned endG4Status() const { return _endG4Status; } diff --git a/MCDataProducts/inc/SimTimeOffset.hh b/MCDataProducts/inc/SimTimeOffset.hh new file mode 100644 index 0000000000..07b77520af --- /dev/null +++ b/MCDataProducts/inc/SimTimeOffset.hh @@ -0,0 +1,15 @@ +#ifndef MCDataProducts_SimTimeOffset_hh +#define MCDataProducts_SimTimeOffset_hh +// +// Simple class to represent a global time offset, used in resampling mixing +// Original author: David Brown (LBNL) 4/15/2021 +// +#include +namespace mu2e { + struct SimTimeOffset { + SimTimeOffset(double toff=0.0) : timeOffset_(toff) {} + double timeOffset_; // global event time offset + }; + typedef std::vector SimTimeOffsetCollection; +} +#endif diff --git a/MCDataProducts/inc/StepPointMC.hh b/MCDataProducts/inc/StepPointMC.hh index 4c2f1d2f62..d33c2cf1a3 100644 --- a/MCDataProducts/inc/StepPointMC.hh +++ b/MCDataProducts/inc/StepPointMC.hh @@ -174,6 +174,7 @@ namespace mu2e { CLHEP::Hep3Vector const& momentum() const { return _momentum; } CLHEP::Hep3Vector const& postMomentum() const { return _postMomentum; } double time() const { return _time; } + double& time() { return _time; } double properTime() const { return _proper; } double stepLength() const { return _stepLength;} ProcessCode endProcessCode() const { return _endProcessCode;} diff --git a/MCDataProducts/src/classes.h b/MCDataProducts/src/classes.h index 82bc9a5220..49b39d9a5d 100644 --- a/MCDataProducts/src/classes.h +++ b/MCDataProducts/src/classes.h @@ -32,6 +32,7 @@ #include "MCDataProducts/inc/SimParticleRemapping.hh" #include "MCDataProducts/inc/VisibleGenElTrackCollection.hh" #include "MCDataProducts/inc/CosmicLivetime.hh" +#include "MCDataProducts/inc/SimTimeOffset.hh" // simulation bookeeping #include "MCDataProducts/inc/PhysicalVolumeInfo.hh" diff --git a/MCDataProducts/src/classes_def.xml b/MCDataProducts/src/classes_def.xml index 3429ee278c..b85143fc8b 100644 --- a/MCDataProducts/src/classes_def.xml +++ b/MCDataProducts/src/classes_def.xml @@ -87,6 +87,11 @@ + + + + + diff --git a/Mu2eKinKal/src/LoopHelixFit_module.cc b/Mu2eKinKal/src/LoopHelixFit_module.cc index 2976b35792..530fe99aa4 100644 --- a/Mu2eKinKal/src/LoopHelixFit_module.cc +++ b/Mu2eKinKal/src/LoopHelixFit_module.cc @@ -10,7 +10,6 @@ #include "fhiclcpp/types/Tuple.h" #include "art/Framework/Core/EDProducer.h" #include "art/Framework/Core/ModuleMacros.h" -#include "art/Framework/Principal/Event.h" #include "art_root_io/TFileService.h" #include "art/Framework/Principal/Event.h" #include "art/Framework/Principal/Run.h" diff --git a/Validation/src/ValStrawGasStep.cc b/Validation/src/ValStrawGasStep.cc index 240f12c978..283424648d 100644 --- a/Validation/src/ValStrawGasStep.cc +++ b/Validation/src/ValStrawGasStep.cc @@ -11,7 +11,7 @@ int mu2e::ValStrawGasStep::declare(art::TFileDirectory tfs) { _hE = tfs.make( "E", "Energy",50, 0.0, 0.01); _hlen = tfs.make( "Length", "steplength",100, 0.0, 10.0); _hz = tfs.make( "Z", "Z",100, -1600.0, 1600.0); - _hSI = tfs.make( "Straw", "Straw Index",100, -0.5, StrawId::_nustraws-0.5); + _hSI = tfs.make( "Straw", "Unique Straw",100, -0.5, StrawId::_nustraws-0.5); return 0; } @@ -21,7 +21,7 @@ int mu2e::ValStrawGasStep::fill(const mu2e::StrawGasStepCollection & coll, // increment this by 1 any time the defnitions of the histograms or the // histogram contents change, and will not match previous versions - _hVer->Fill(0.0); + _hVer->Fill(1.0); _hN->Fill(coll.size()); _hN2->Fill(coll.size()); From cd2f9a6523040ca202f895f3fe999c3d2d9c796c Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Mon, 17 May 2021 22:12:12 -0500 Subject: [PATCH 15/40] Bug fix --- JobConfig/beam/BeamResampler.fcl | 3 +++ JobConfig/beam/epilog.fcl | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index eb9d68718d..235856ffc8 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -94,5 +94,8 @@ physics.producers.StrawGasStepMaker.SkipTheseStepPoints : "g4run" physics.producers.StrawGasStepMaker.KeepDeltasModule : "" physics.producers.CaloShowerStepMaker.caloStepPointCollection : ["FlashFilter:calorimeter"] physics.producers.CrvSteps.stepPointsModuleLabels : [ "FlashFilter" ] +# tweak compression to use the FlashFilter deep copy too +physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" +physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" # test physics.filters.neutralsresampler.filenames: [ "sim.owner.Beam.version.sequencer.art" ] diff --git a/JobConfig/beam/epilog.fcl b/JobConfig/beam/epilog.fcl index 2103c837f6..7774607995 100644 --- a/JobConfig/beam/epilog.fcl +++ b/JobConfig/beam/epilog.fcl @@ -13,8 +13,6 @@ physics.filters.DetStepFilter.TimeCut : true physics.filters.DetStepFilter.MinimumTime : 300 # good hits are after this time physics.filters.DetStepFilter.MaximumTime : 50 # not a type: good hits are before this time # tweak detstep compression for resampling jobs -physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" -physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" physics.producers.compressEarlyDetStepMCs.stepPointMCTags : [ ] physics.producers.compressEarlyDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression physics.producers.compressEarlyDetStepMCs.mcTrajectoryTag : "" From de9bc1bb9be622cf613794f75f67c40614213904 Mon Sep 17 00:00:00 2001 From: Andrei Gaponenko Date: Tue, 18 May 2021 01:08:43 -0500 Subject: [PATCH 16/40] CompressPhysicalVolumes_module update for the resampling use case. We do not need to compress event level volume infos, but need to handle cases where input volume info product is not available until endSubRun. It turns out we don't even need a special option for that. --- Filters/src/CompressPhysicalVolumes_module.cc | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Filters/src/CompressPhysicalVolumes_module.cc b/Filters/src/CompressPhysicalVolumes_module.cc index 0e294c1618..9d07171b6a 100644 --- a/Filters/src/CompressPhysicalVolumes_module.cc +++ b/Filters/src/CompressPhysicalVolumes_module.cc @@ -35,8 +35,6 @@ namespace mu2e { typedef std::vector > UsedKeys; UsedKeys used_; - PhysicalVolumeInfoMultiCollection const* incoll_{nullptr}; - void produce(art::Event& event) override; void beginSubRun(art::SubRun& sr) override; void endSubRun(art::SubRun& sr) override; @@ -85,10 +83,7 @@ namespace mu2e { //================================================================ void CompressPhysicalVolumes::beginSubRun(art::SubRun& sr) { - auto const& ih = sr.getValidHandle(volumesToken_); - incoll_ = &*ih; used_.clear(); - used_.resize(incoll_->size()); } //================================================================ @@ -102,6 +97,9 @@ namespace mu2e { for(const auto& hit : *ih) { const SimParticle& p = *hit.simParticle(); const PhysicalVolumeInfoMultiCollection::size_type stage = p.simStage(); + if(used_.size() < 1 + stage) { + used_.resize(1 + stage); + } used_[stage].insert(key_type(hit.simParticle()->startVolumeIndex())); used_[stage].insert(key_type(hit.simParticle()->endVolumeIndex())); } @@ -112,6 +110,9 @@ namespace mu2e { for(const auto& spe : *ih) { const SimParticle& p = spe.second; const PhysicalVolumeInfoMultiCollection::size_type stage = p.simStage(); + if(used_.size() < 1 + stage) { + used_.resize(1 + stage); + } used_[stage].insert(key_type(p.startVolumeIndex())); used_[stage].insert(key_type(p.endVolumeIndex())); } @@ -121,16 +122,18 @@ namespace mu2e { //================================================================ void CompressPhysicalVolumes::endSubRun(art::SubRun& sr) { + const PhysicalVolumeInfoMultiCollection& incoll = *sr.getValidHandle(volumesToken_); + auto out = std::make_unique(); - out->resize(incoll_->size()); + out->resize(incoll.size()); unsigned totalCount(0), passedCount(0); - for(unsigned stage = 0; stage < incoll_->size(); ++stage) { + for(unsigned stage = 0; stage < incoll.size(); ++stage) { (*out)[stage] = PhysicalVolumeInfoSingleStage(); - const auto& ss = (*incoll_)[stage]; + const auto& ss = incoll[stage]; totalCount += ss.size(); for(const auto& in : ss) { - if(used_[stage].find(in.first) != used_[stage].end()) { + if((stage < used_.size()) && (used_[stage].find(in.first) != used_[stage].end())) { ++passedCount; (*out)[stage][in.first] = in.second; } From 797c8d94a17db69b2b87cc3175cfa91009d9316c Mon Sep 17 00:00:00 2001 From: Andrei Gaponenko Date: Tue, 18 May 2021 01:27:24 -0500 Subject: [PATCH 17/40] Update BeamResampler config to keep PV info --- JobConfig/beam/BeamResampler.fcl | 6 ++---- JobConfig/beam/prolog.fcl | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index 235856ffc8..6dd605cd87 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -37,10 +37,8 @@ physics: { @table::Common.analyzers } # setup paths - targetStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, TargetStopFilter] - IPAStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter] -# targetStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, TargetStopFilter, compressPVTargetStops] -# IPAStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter, compressPVIPAStops] + targetStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, TargetStopFilter, compressPVTargetStops] + IPAStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter, compressPVIPAStops] flashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] earlyFlashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, EarlyPrescaleFilter, diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index bb16408e47..23b9de0b1b 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -265,7 +265,8 @@ Beam: { "keep mu2e::GenParticles_*_*_*", "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", - "keep *_TargetStopFilter_*_*" + "keep *_TargetStopFilter_*_*", + "keep *_compressPVTargetStops_*_*" ] fileName : "sim.owner.TargetStops.version.sequencer.art" } From 62f9867c0e4d470ef43b09bef4efb17d2efd8c94 Mon Sep 17 00:00:00 2001 From: Andrei Gaponenko Date: Tue, 18 May 2021 01:33:24 -0500 Subject: [PATCH 18/40] Untabify and delete trailing whitespace. --- JobConfig/beam/BeamResampler.fcl | 8 +- JobConfig/beam/NeutralsResampler.fcl | 3 +- JobConfig/beam/POT.fcl | 2 - JobConfig/beam/POT_MT.fcl | 3 +- JobConfig/beam/POT_extmon.fcl | 4 +- JobConfig/beam/prolog.fcl | 127 +++++++++++++-------------- 6 files changed, 70 insertions(+), 77 deletions(-) diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index 6dd605cd87..2d3b1dfb05 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -21,7 +21,7 @@ source : { } services : @local::Services.Sim -physics: { +physics: { producers : { @table::CommonMC.producers @table::Beam.producers @@ -40,9 +40,9 @@ physics: { targetStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, TargetStopFilter, compressPVTargetStops] IPAStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter, compressPVIPAStops] flashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, - @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] + @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] earlyFlashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, EarlyPrescaleFilter, - @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] + @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] trigger_paths: [ flashPath, earlyFlashPath, targetStopPath, IPAStopPath ] outPath : [ FlashOutput, EarlyFlashOutput, TargetStopOutput, IPAStopOutput ] end_paths: [outPath] @@ -73,7 +73,7 @@ physics.producers.g4run.inputs: { outInstance: "eventlevel" } } -# copy over VD hits +# copy over VD hits physics.producers.g4run.SDConfig.preSimulatedHits: ["beamResampler:virtualdetector"] # Kill stuck e+/e- physics.producers.g4run.Mu2eG4CommonCut:{ diff --git a/JobConfig/beam/NeutralsResampler.fcl b/JobConfig/beam/NeutralsResampler.fcl index 3f5d6156e4..52bdf7688a 100644 --- a/JobConfig/beam/NeutralsResampler.fcl +++ b/JobConfig/beam/NeutralsResampler.fcl @@ -20,7 +20,7 @@ source : { } services : @local::Services.Sim -physics: { +physics: { producers : { @table::CommonMC.producers @table::Beam.producers @@ -80,4 +80,3 @@ physics.producers.g4run.Mu2eG4CommonCut:{ #include "JobConfig/beam/epilog.fcl" # test physics.filters.neutralsresampler.filenames: [ "sim.owner.Neutrals.version.sequencer.art" ] - diff --git a/JobConfig/beam/POT.fcl b/JobConfig/beam/POT.fcl index 25c1f3e7f8..b5962e5d01 100644 --- a/JobConfig/beam/POT.fcl +++ b/JobConfig/beam/POT.fcl @@ -52,5 +52,3 @@ physics.producers.g4run.physics.minRangeCut : 1. # mm coarse range for this sta #include "JobConfig/common/epilog.fcl" # # Output file names are defined in prolog - - diff --git a/JobConfig/beam/POT_MT.fcl b/JobConfig/beam/POT_MT.fcl index b40009ac34..e3f65cb7c8 100644 --- a/JobConfig/beam/POT_MT.fcl +++ b/JobConfig/beam/POT_MT.fcl @@ -1,4 +1,3 @@ -# MT version of ProtonsOnTarget +# MT version of ProtonsOnTarget #include "JobConfig/beam/ProtonsOnTarget.fcl" #include "JobConfig/common/epilog_MT.fcl" - diff --git a/JobConfig/beam/POT_extmon.fcl b/JobConfig/beam/POT_extmon.fcl index 55345ebeb4..3cf6315cec 100644 --- a/JobConfig/beam/POT_extmon.fcl +++ b/JobConfig/beam/POT_extmon.fcl @@ -1,6 +1,6 @@ # # Script to shoot beam protons onto the production target. Daughter particles are filtered and collected at: -# 1) extmon beam +# 1) extmon beam # 2) extmon region # #include "fcl/minimalMessageService.fcl" @@ -41,5 +41,3 @@ physics.producers.g4run.physics.minRangeCut : 1. # mm coarse range for this sta #include "JobConfig/beam/epilog.fcl" # # Output file names are defined in prolog - - diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index 23b9de0b1b..7a755b5c74 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -76,7 +76,7 @@ Beam: { particleTypes : [ 13, -13 ] verbosityLevel: 1 } - + stoppedMuonDaughters: { module_type: SimParticleDaughterSelector particleInput: "stoppedMuonFinder" @@ -135,7 +135,7 @@ Beam: { mainHitInputs: [ "g4run:tracker", "g4run:calorimeter", "g4run:CRV", "g4run:virtualdetector" ] vetoParticles: [ "stoppedMuonDaughters" ] } - + # resamplers @@ -145,7 +145,7 @@ Beam: { readMode: "sequential" wrapFiles: true mu2e: { - writeEventIDs : true + writeEventIDs : true products: { genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } simParticleMixer: { mixingMap: [ [ "BeamFilter", "" ] ] } @@ -153,7 +153,7 @@ Beam: { [ "BeamFilter:virtualdetector", ":" ], [ "BeamFilter:Beam", ":" ] ] } - simTimeOffset : "protonTimeOffset" + simTimeOffset : "protonTimeOffset" volumeInfoMixer: { srInput: "compressPVBeam" evtOutInstanceName: "eventlevel" @@ -168,14 +168,14 @@ Beam: { readMode: "sequential" wrapFiles: true mu2e: { - writeEventIDs : true + writeEventIDs : true products: { genParticleMixer: { mixingMap: [ [ "generate", "" ] ] } simParticleMixer: { mixingMap: [ [ "NeutralsFilter", "" ] ] } stepPointMCMixer: { mixingMap: [ [ "NeutralsFilter:Neutrals", ":" ] ] } - + volumeInfoMixer: { srInput: "compressPVNeutrals" evtOutInstanceName: "eventlevel" @@ -186,14 +186,14 @@ Beam: { EarlyPrescaleFilter : { module_type : PrescaleEvent - nPrescale : 100 # test value FIXME - triggerPath : "earlyFlashPath" - triggerFlag : ["PrescaleRandom"] + nPrescale : 100 # test value FIXME + triggerPath : "earlyFlashPath" + triggerFlag : ["PrescaleRandom"] } } outputs: { - + BeamOutput : { module_type : RootOutput SelectEvents: ["BeamPath"] @@ -206,7 +206,7 @@ Beam: { ] fileName : "sim.owner.Beam.version.sequencer.art" } - + NeutralsOutput : { module_type : RootOutput SelectEvents: ["NeutralsPath"] @@ -219,7 +219,7 @@ Beam: { ] fileName : "sim.owner.Neutrals.version.sequencer.art" } - + extmonbeamOutput : { module_type : RootOutput SelectEvents: ["ExtMonBeamPath"] @@ -231,7 +231,7 @@ Beam: { "keep *_compressPVextmonBeam_*_*" ] } - + extmonregionOutput : { module_type : RootOutput SelectEvents: ["ExtMonRegionPath"] @@ -243,7 +243,7 @@ Beam: { "keep *_compressPVextmonRegion_*_*" ] } - + TruncatedOutput : { module_type : RootOutput SelectEvents: ["g4StatusFilter"] @@ -261,9 +261,9 @@ Beam: { module_type : RootOutput SelectEvents: [targetStopPath] outputCommands: [ "drop *_*_*_*", - "keep art::EventIDs_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", + "keep art::EventIDs_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", "keep *_TargetStopFilter_*_*", "keep *_compressPVTargetStops_*_*" @@ -293,7 +293,7 @@ Beam: { "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", "keep mu2e::SimParticleart::Ptrdoublestd::map_*_*_*", - @sequence::Pileup.KeptProducts + @sequence::Pileup.KeptProducts ] } @@ -307,20 +307,20 @@ Beam: { "keep art::EventIDs_*_*_*", "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", - "keep mu2e::StrawGasSteps_compressEarlyDetStepMCs_*_*", - "keep mu2e::CaloShowerSteps_compressEarlyDetStepMCs_*_*", - "keep mu2e::CrvSteps_compressEarlyDetStepMCs_*_*", - "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_virtualdetector_*", - "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_protonabsorber_*", - "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_stoppingtarget_*", - "keep mu2e::StatusG4_*_*_*", - "keep mu2e::SimParticlemv_compressEarlyDetStepMCs_*_*", - "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_compressEarlyDetStepMCs_*_*", - "keep mu2e::GenParticles_compressEarlyDetStepMCs_*_*", - "keep mu2e::PrimaryParticle_*_*_*", + "keep mu2e::StrawGasSteps_compressEarlyDetStepMCs_*_*", + "keep mu2e::CaloShowerSteps_compressEarlyDetStepMCs_*_*", + "keep mu2e::CrvSteps_compressEarlyDetStepMCs_*_*", + "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_virtualdetector_*", + "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_protonabsorber_*", + "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_stoppingtarget_*", + "keep mu2e::StatusG4_*_*_*", + "keep mu2e::SimParticlemv_compressEarlyDetStepMCs_*_*", + "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_compressEarlyDetStepMCs_*_*", + "keep mu2e::GenParticles_compressEarlyDetStepMCs_*_*", + "keep mu2e::PrimaryParticle_*_*_*", "keep mu2e::CosmicLivetime_*_*_*", - "keep art::TriggerResults_*_*_*", - "keep mu2e::GenEventCount_*_*_*" + "keep art::TriggerResults_*_*_*", + "keep mu2e::GenEventCount_*_*_*" ] } } @@ -328,7 +328,7 @@ Beam: { # define some paths; these can be mixed and matches as art guarantees no duplicate running g4StatusPath : [generate, genCounter, g4run, "!g4statusFilter", compressPVFull ] -# define regions where particles may eventually interact with the detectors (CRV or trracker/calo), See doc 26541 for a graphical description +# define regions where particles may eventually interact with the detectors (CRV or trracker/calo), See doc 26541 for a graphical description # Mu2eG4 cuts are evaluated in the listed order. # The first match wins. For the "intersection" # type, the first false stops the evaluation. @@ -339,26 +339,26 @@ Beam: { pars: [ // Plane on the west side, outside of the wall { type: plane normal: [ 0, 0, 1 ] point : [ 0, 0, -4851 ] }, - + // Yuri's e-mail 2015-04-10: x=1612. from CRV considerations. // This is also large enought to enclose TS3 (its half length is 975 mm). // Yuri: Moved the plane to cover all the shielding from stage 1. { type: plane normal: [ -1, 0, 0 ] point : [ 2800., 0, 0 ] }, - + // Make sure the charged particle beam reaches our DS2Vacuum stopping volume {type: notInVolume pars:[TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, Coll31, Coll32, Coll51, TS2InnerCryoShell, TS3InnerCryoShell, TS4InnerCryoShell, TS2CryoInsVac, TS3CryoInsVac, PbarAbsDisk, PbarAbsWedge, VirtualDetector_Coll31_In, VirtualDetector_Coll32_In, VirtualDetector_Coll31_Out, VirtualDetector_Coll32_Out, Coll31OutRecord, Coll32InRecord, Coll31OutRecord, VirtualDetector_TS4_Bend, VirtualDetector_Coll5_In, VirtualDetector_Coll5_Out, VirtualDetector_Coll5_OutSurf]}, - + // This union splits the output of the above cuts // into two exclusive streams; Beam (charged particles entering the DS) and Neutrals ((mostly)neutral particles approaching the CRV { type: union pars: [ - { - type: intersection - pars: [ - { type: inVolume pars: [DS2Vacuum] }, - { type: isCharged } - ] - write: Beam - }, + { + type: intersection + pars: [ + { type: inVolume pars: [DS2Vacuum] }, + { type: isCharged } + ] + write: Beam + }, { type: constant value: true write: Neutrals @@ -368,7 +368,7 @@ Beam: { ] } -# define extinction monitor region +# define extinction monitor region extMonRegionCuts: { type: intersection pars: [ @@ -376,32 +376,32 @@ Beam: { type: plane normal: @local::mu2eg4BeamDumpNormal // Dump core center: (661.90, 527.40, -19428.2) - // A plane 950 mm beyond the core center as measured along - // the "beam" direction normal to the dump face. - // DeltaZ = L/cos(13.72 degrees) + // A plane 950 mm beyond the core center as measured along + // the "beam" direction normal to the dump face. + // DeltaZ = L/cos(13.72 degrees) point: [ 661.90, 527.40, -20406.10 ] }, - + // Split the output of the "plane" cut above into two exclusive streams { type: union pars: [ - + { type: intersection - pars: [ - { - type: inVolume - pars: - [ collimator1Channel, - HallAir, - ExtMonFNALfilterMagnetAperture, - ExtMonFNALfilterMagnetApertureMarginUp, - ExtMonFNALfilterMagnetApertureMarginDn - ] - }, - { type: isCharged } - ] + pars: [ + { + type: inVolume + pars: + [ collimator1Channel, + HallAir, + ExtMonFNALfilterMagnetAperture, + ExtMonFNALfilterMagnetApertureMarginUp, + ExtMonFNALfilterMagnetApertureMarginDn + ] + }, + { type: isCharged } + ] write: extmonbeam }, - + { type: constant value: true write: extmonregion } ] } @@ -413,4 +413,3 @@ Beam: { } END_PROLOG - From 6156cde27b837925092469810962dccdabb79fdf Mon Sep 17 00:00:00 2001 From: Andrei Gaponenko Date: Tue, 18 May 2021 01:34:24 -0500 Subject: [PATCH 19/40] Re-indent prolog and fix a bug made obvious in the process. --- JobConfig/beam/prolog.fcl | 233 +++++++++++++++++++------------------- 1 file changed, 117 insertions(+), 116 deletions(-) diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index 7a755b5c74..fd833f85a2 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -137,7 +137,7 @@ Beam: { } -# resamplers + # resamplers beamResampler: { module_type: ResamplingMixer @@ -185,39 +185,39 @@ Beam: { } EarlyPrescaleFilter : { - module_type : PrescaleEvent - nPrescale : 100 # test value FIXME - triggerPath : "earlyFlashPath" - triggerFlag : ["PrescaleRandom"] + module_type : PrescaleEvent + nPrescale : 100 # test value FIXME + triggerPath : "earlyFlashPath" + triggerFlag : ["PrescaleRandom"] } } outputs: { BeamOutput : { - module_type : RootOutput - SelectEvents: ["BeamPath"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_BeamFilter_*_*", - "keep *_compressPVBeam_*_*" - ] - fileName : "sim.owner.Beam.version.sequencer.art" + module_type : RootOutput + SelectEvents: ["BeamPath"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_BeamFilter_*_*", + "keep *_compressPVBeam_*_*" + ] + fileName : "sim.owner.Beam.version.sequencer.art" } NeutralsOutput : { - module_type : RootOutput - SelectEvents: ["NeutralsPath"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_NeutralsFilter_*_*", - "keep *_compressPVNeutrals_*_*" - ] - fileName : "sim.owner.Neutrals.version.sequencer.art" + module_type : RootOutput + SelectEvents: ["NeutralsPath"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_NeutralsFilter_*_*", + "keep *_compressPVNeutrals_*_*" + ] + fileName : "sim.owner.Neutrals.version.sequencer.art" } extmonbeamOutput : { @@ -258,17 +258,17 @@ Beam: { } TargetStopOutput : { - module_type : RootOutput - SelectEvents: [targetStopPath] - outputCommands: [ "drop *_*_*_*", - "keep art::EventIDs_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_TargetStopFilter_*_*", - "keep *_compressPVTargetStops_*_*" - ] - fileName : "sim.owner.TargetStops.version.sequencer.art" + module_type : RootOutput + SelectEvents: [targetStopPath] + outputCommands: [ "drop *_*_*_*", + "keep art::EventIDs_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_TargetStopFilter_*_*", + "keep *_compressPVTargetStops_*_*" + ] + fileName : "sim.owner.TargetStops.version.sequencer.art" } IPAStopOutput : { @@ -297,9 +297,9 @@ Beam: { ] } -# Sadly, I have to replicate the content of Pileup.KeptProducts below, since FCL is not a language and won't allow me to define a variable. -# This will be a source of extra maintenance and likely an error sounce in the future. -# + # Sadly, I have to replicate the content of Pileup.KeptProducts below, since FCL is not a language and won't allow me to define a variable. + # This will be a source of extra maintenance and likely an error sounce in the future. + # EarlyFlashOutput : { module_type: RootOutput SelectEvents: [earlyFlashPath] @@ -325,91 +325,92 @@ Beam: { } } -# define some paths; these can be mixed and matches as art guarantees no duplicate running + # define some paths; these can be mixed and matches as art guarantees no duplicate running g4StatusPath : [generate, genCounter, g4run, "!g4statusFilter", compressPVFull ] -# define regions where particles may eventually interact with the detectors (CRV or trracker/calo), See doc 26541 for a graphical description -# Mu2eG4 cuts are evaluated in the listed order. -# The first match wins. For the "intersection" -# type, the first false stops the evaluation. -# For the "union" type the first true stops the evaluation. - - DetectorRegionCuts: { - type: intersection - pars: [ - // Plane on the west side, outside of the wall - { type: plane normal: [ 0, 0, 1 ] point : [ 0, 0, -4851 ] }, - - // Yuri's e-mail 2015-04-10: x=1612. from CRV considerations. - // This is also large enought to enclose TS3 (its half length is 975 mm). - // Yuri: Moved the plane to cover all the shielding from stage 1. - { type: plane normal: [ -1, 0, 0 ] point : [ 2800., 0, 0 ] }, - - // Make sure the charged particle beam reaches our DS2Vacuum stopping volume - {type: notInVolume pars:[TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, Coll31, Coll32, Coll51, TS2InnerCryoShell, TS3InnerCryoShell, TS4InnerCryoShell, TS2CryoInsVac, TS3CryoInsVac, PbarAbsDisk, PbarAbsWedge, VirtualDetector_Coll31_In, VirtualDetector_Coll32_In, VirtualDetector_Coll31_Out, VirtualDetector_Coll32_Out, Coll31OutRecord, Coll32InRecord, Coll31OutRecord, VirtualDetector_TS4_Bend, VirtualDetector_Coll5_In, VirtualDetector_Coll5_Out, VirtualDetector_Coll5_OutSurf]}, - - // This union splits the output of the above cuts - // into two exclusive streams; Beam (charged particles entering the DS) and Neutrals ((mostly)neutral particles approaching the CRV - { type: union pars: [ + # define regions where particles may eventually interact with the detectors (CRV or trracker/calo), See doc 26541 for a graphical description + # Mu2eG4 cuts are evaluated in the listed order. + # The first match wins. For the "intersection" + # type, the first false stops the evaluation. + # For the "union" type the first true stops the evaluation. + + DetectorRegionCuts: { + type: intersection + pars: [ + // Plane on the west side, outside of the wall + { type: plane normal: [ 0, 0, 1 ] point : [ 0, 0, -4851 ] }, + + // Yuri's e-mail 2015-04-10: x=1612. from CRV considerations. + // This is also large enought to enclose TS3 (its half length is 975 mm). + // Yuri: Moved the plane to cover all the shielding from stage 1. + { type: plane normal: [ -1, 0, 0 ] point : [ 2800., 0, 0 ] }, + + // Make sure the charged particle beam reaches our DS2Vacuum stopping volume + {type: notInVolume pars:[TS2Vacuum, TS3Vacuum, TS4Vacuum, TS5Vacuum, Coll31, Coll32, Coll51, TS2InnerCryoShell, TS3InnerCryoShell, TS4InnerCryoShell, TS2CryoInsVac, TS3CryoInsVac, PbarAbsDisk, PbarAbsWedge, VirtualDetector_Coll31_In, VirtualDetector_Coll32_In, VirtualDetector_Coll31_Out, VirtualDetector_Coll32_Out, Coll31OutRecord, Coll32InRecord, Coll31OutRecord, VirtualDetector_TS4_Bend, VirtualDetector_Coll5_In, VirtualDetector_Coll5_Out, VirtualDetector_Coll5_OutSurf]}, + + // This union splits the output of the above cuts + // into two exclusive streams; Beam (charged particles entering the DS) and Neutrals ((mostly)neutral particles approaching the CRV + { type: union pars: [ + { + type: intersection + pars: [ + { type: inVolume pars: [DS2Vacuum] }, + { type: isCharged } + ] + write: Beam + }, + { type: constant + value: true + write: Neutrals + } + ] + } + ] + } + + # define extinction monitor region + extMonRegionCuts: { + type: intersection + pars: [ { - type: intersection - pars: [ - { type: inVolume pars: [DS2Vacuum] }, - { type: isCharged } - ] - write: Beam + type: plane + normal: @local::mu2eg4BeamDumpNormal + // Dump core center: (661.90, 527.40, -19428.2) + // A plane 950 mm beyond the core center as measured along + // the "beam" direction normal to the dump face. + // DeltaZ = L/cos(13.72 degrees) + point: [ 661.90, 527.40, -20406.10 ] }, - { type: constant - value: true - write: Neutrals - } - ] - } - ] - } - -# define extinction monitor region - extMonRegionCuts: { - type: intersection - pars: [ - { - type: plane - normal: @local::mu2eg4BeamDumpNormal - // Dump core center: (661.90, 527.40, -19428.2) - // A plane 950 mm beyond the core center as measured along - // the "beam" direction normal to the dump face. - // DeltaZ = L/cos(13.72 degrees) - point: [ 661.90, 527.40, -20406.10 ] - }, - - // Split the output of the "plane" cut above into two exclusive streams - { type: union pars: [ - - { type: intersection - pars: [ - { - type: inVolume - pars: - [ collimator1Channel, - HallAir, - ExtMonFNALfilterMagnetAperture, - ExtMonFNALfilterMagnetApertureMarginUp, - ExtMonFNALfilterMagnetApertureMarginDn + + // Split the output of the "plane" cut above into two exclusive streams + { type: union pars: [ + + { type: intersection + pars: [ + { + type: inVolume + pars: + [ collimator1Channel, + HallAir, + ExtMonFNALfilterMagnetAperture, + ExtMonFNALfilterMagnetApertureMarginUp, + ExtMonFNALfilterMagnetApertureMarginDn + ] + }, + { type: isCharged } ] + write: extmonbeam }, - { type: isCharged } - ] - write: extmonbeam - }, - { type: constant value: true write: extmonregion } - ] - } - ] - } + { type: constant value: true write: extmonregion } + ] + } + ] + } - beamResamplerSequence : [genCounter, protonTimeOffset, beamResampler] - neutralsResamplerSequence : [genCounter, protonTimeOffset, neutralsResampler] + beamResamplerSequence : [genCounter, protonTimeOffset, beamResampler] + neutralsResamplerSequence : [genCounter, protonTimeOffset, neutralsResampler] + } } END_PROLOG From 6982f184bdf80eef00af49f52b5b92f01f5e3a5e Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Tue, 18 May 2021 10:36:11 -0500 Subject: [PATCH 20/40] Bug fixes --- JobConfig/beam/BeamResampler.fcl | 2 -- JobConfig/beam/prolog.fcl | 27 +++++++-------------------- MCDataProducts/src/classes_def.xml | 1 + 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index 235856ffc8..f603cd70da 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -39,8 +39,6 @@ physics: { # setup paths targetStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, TargetStopFilter] IPAStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter] -# targetStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, TargetStopFilter, compressPVTargetStops] -# IPAStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter, compressPVIPAStops] flashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] earlyFlashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, stoppedMuonFinder, stoppedMuonDaughters, FlashFilter, EarlyPrescaleFilter, diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index bb16408e47..159682e58d 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -186,7 +186,8 @@ Beam: { EarlyPrescaleFilter : { module_type : PrescaleEvent - nPrescale : 100 # test value FIXME + nPrescale : 100 + nPrescale : 1 # test value FIXME triggerPath : "earlyFlashPath" triggerFlag : ["PrescaleRandom"] } @@ -286,19 +287,16 @@ Beam: { FlashOutput : { module_type: RootOutput SelectEvents: [flashPath] - outputCommands: [ "keep *_*_*_*"] outputCommands: [ "drop *_*_*_*", "keep art::EventIDs_*_*_*", "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", - "keep mu2e::SimParticleart::Ptrdoublestd::map_*_*_*", + "keep mu2e::SimTimeOffset_*_*_*", + "keep art::TriggerResults_*_*_*", @sequence::Pileup.KeptProducts ] } -# Sadly, I have to replicate the content of Pileup.KeptProducts below, since FCL is not a language and won't allow me to define a variable. -# This will be a source of extra maintenance and likely an error sounce in the future. -# EarlyFlashOutput : { module_type: RootOutput SelectEvents: [earlyFlashPath] @@ -306,22 +304,11 @@ Beam: { "keep art::EventIDs_*_*_*", "keep mu2e::GenEventCount_*_*_*", "keep mu2e::StatusG4_*_*_*", - "keep mu2e::StrawGasSteps_compressEarlyDetStepMCs_*_*", - "keep mu2e::CaloShowerSteps_compressEarlyDetStepMCs_*_*", - "keep mu2e::CrvSteps_compressEarlyDetStepMCs_*_*", - "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_virtualdetector_*", - "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_protonabsorber_*", - "keep mu2e::StepPointMCs_compressEarlyDetStepMCs_stoppingtarget_*", - "keep mu2e::StatusG4_*_*_*", - "keep mu2e::SimParticlemv_compressEarlyDetStepMCs_*_*", - "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_compressEarlyDetStepMCs_*_*", - "keep mu2e::GenParticles_compressEarlyDetStepMCs_*_*", - "keep mu2e::PrimaryParticle_*_*_*", - "keep mu2e::CosmicLivetime_*_*_*", + "keep mu2e::SimTimeOffset_*_*_*", "keep art::TriggerResults_*_*_*", - "keep mu2e::GenEventCount_*_*_*" + @sequence::Pileup.KeptProducts ] - } + } } # define some paths; these can be mixed and matches as art guarantees no duplicate running diff --git a/MCDataProducts/src/classes_def.xml b/MCDataProducts/src/classes_def.xml index b85143fc8b..074baadfd4 100644 --- a/MCDataProducts/src/classes_def.xml +++ b/MCDataProducts/src/classes_def.xml @@ -89,6 +89,7 @@ + From d190be6e96b26b7671587af2f0d66e9a2112548c Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Tue, 18 May 2021 14:57:39 -0500 Subject: [PATCH 21/40] Small fixes --- JobConfig/beam/POT_MCTrajectory.fcl | 9 +++++---- JobConfig/beam/POT_extmon.fcl | 8 ++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/JobConfig/beam/POT_MCTrajectory.fcl b/JobConfig/beam/POT_MCTrajectory.fcl index b00799f058..2c4f5e4177 100644 --- a/JobConfig/beam/POT_MCTrajectory.fcl +++ b/JobConfig/beam/POT_MCTrajectory.fcl @@ -3,13 +3,14 @@ # #include "JobConfig/beam/POT.fcl" -physics.producers.g4run.TrajectoryControl: @local::mu2eg4DefaultTrajectories physics.producers.g4run.TrajectoryControl: @local::mu2eg4DefaultTrajectories outputs.BeamOutput.outputCommands: [ @sequence::outputs.BeamOutput.outputCommands, -"keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] + " keep mu2e::SimParticlemv_*_*_*", + "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] outputs.NeutralsOutput.outputCommands: [ -@sequence::outputs.NeutralsOutput.outputCommands, -"keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] + @sequence::outputs.NeutralsOutput.outputCommands, + " keep mu2e::SimParticlemv_*_*_*", + "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] diff --git a/JobConfig/beam/POT_extmon.fcl b/JobConfig/beam/POT_extmon.fcl index 174a9fa3f9..43dfc473fa 100644 --- a/JobConfig/beam/POT_extmon.fcl +++ b/JobConfig/beam/POT_extmon.fcl @@ -62,6 +62,14 @@ outputs: { fileName : "sim.owner.extmonRegion.version.sequencer.art" } } +# setup Mu2eG4 selection +physics.producers.g4run.Mu2eG4CommonCut: { + type: union + pars: [ + @local::mu2eg4CutDeltaElectrons, # 8% speed up from killing electrons with Ek<1 MeV + @local::Beam.extMonRegionCuts # defines ExtMon beam and region + ] +} # tweak Mu2eG4 settings physics.producers.g4run.SDConfig.enableSD: [ virtualdetector ] # only VDs are active physics.producers.g4run.physics.minRangeCut : 1. # mm coarse range for this stage From 15c31d03000fb137e6128d8cfb2b32efc0bd0924 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Tue, 18 May 2021 15:18:05 -0500 Subject: [PATCH 22/40] Make inclusion more specific --- JobConfig/beam/POT_MCTrajectory.fcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JobConfig/beam/POT_MCTrajectory.fcl b/JobConfig/beam/POT_MCTrajectory.fcl index 2c4f5e4177..0f57faeff5 100644 --- a/JobConfig/beam/POT_MCTrajectory.fcl +++ b/JobConfig/beam/POT_MCTrajectory.fcl @@ -7,10 +7,10 @@ physics.producers.g4run.TrajectoryControl: @local::mu2eg4DefaultTrajectories outputs.BeamOutput.outputCommands: [ @sequence::outputs.BeamOutput.outputCommands, - " keep mu2e::SimParticlemv_*_*_*", + " keep mu2e::SimParticlemv_g4run_*_*", "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] outputs.NeutralsOutput.outputCommands: [ @sequence::outputs.NeutralsOutput.outputCommands, - " keep mu2e::SimParticlemv_*_*_*", + " keep mu2e::SimParticlemv_g4run_*_*", "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] From 2d241b64e3b5c84bdd99b6566d843e8573095ce1 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Tue, 18 May 2021 15:52:26 -0500 Subject: [PATCH 23/40] Fix stupid typo --- JobConfig/beam/BeamResampler.fcl | 2 +- JobConfig/beam/NeutralsResampler.fcl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index c3d5a1a494..b96ac38034 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -141,4 +141,4 @@ physics.producers.CrvSteps.stepPointsModuleLabels : [ "FlashFilter" ] physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" physics.producers.compressDetStepMCs.simParticleTag : "FlashFilter" # test -physics.filters.beamResampler.filenames: [ "sim.owner.Beam.version.sequencer.art" ] +physics.filters.beamResampler.fileNames: [ "sim.owner.Beam.version.sequencer.art" ] diff --git a/JobConfig/beam/NeutralsResampler.fcl b/JobConfig/beam/NeutralsResampler.fcl index 3f16ba3361..9c5a12a033 100644 --- a/JobConfig/beam/NeutralsResampler.fcl +++ b/JobConfig/beam/NeutralsResampler.fcl @@ -95,4 +95,4 @@ physics.producers.g4run.Mu2eG4CommonCut:{ #include "JobConfig/pileup/epilog.fcl" #include "JobConfig/beam/epilog.fcl" # test -physics.filters.neutralsResampler.filenames: [ "sim.owner.Neutrals.version.sequencer.art" ] +physics.filters.neutralsResampler.fileNames: [ "sim.owner.Neutrals.version.sequencer.art" ] From 1153f639c4f0d1f81a9b428666fe5c705cd6e2b0 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Tue, 18 May 2021 23:10:17 -0500 Subject: [PATCH 24/40] replace test value --- JobConfig/beam/prolog.fcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index d8f3e899be..9d73e83b99 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -190,7 +190,7 @@ Beam: { EarlyPrescaleFilter : { module_type : PrescaleEvent nPrescale : 100 - nPrescale : 1 # test value FIXME + nPrescale : 100 triggerPath : "earlyFlashPath" triggerFlag : ["PrescaleRandom"] } From e4122500b5e7eabfc703752c8ca3af12294a2ffd Mon Sep 17 00:00:00 2001 From: Richard Bonventre Date: Wed, 19 May 2021 15:09:20 -0500 Subject: [PATCH 25/40] Was missing digit in maxTDC that would cause offspill to be cut short --- TrackerConditions/fcl/prolog.fcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TrackerConditions/fcl/prolog.fcl b/TrackerConditions/fcl/prolog.fcl index 32445e99d8..10bd80aaee 100644 --- a/TrackerConditions/fcl/prolog.fcl +++ b/TrackerConditions/fcl/prolog.fcl @@ -110,7 +110,7 @@ StrawElectronics : { maxThreshTimeSeparation : 2 tCoince : 0 TDCLSB : 0.01953125 - maxTDC : 1677215 + maxTDC : 16777215 TOTLSB : 5.0 maxTOT : 15 TDCResolution : 0.1 From 9d58bd59e07705ff9363a719cf165c2a59cf8d1d Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Wed, 19 May 2021 23:34:09 -0500 Subject: [PATCH 26/40] Move modules used in production out of Analyses. Clarify some beam config and tweak some numbers. Adjust validation to cover non-zero time gen particles. --- {Analyses => CommonMC}/src/GenEventCountReader_module.cc | 0 .../src/SimParticleDaughterSelector_module.cc | 0 JobConfig/beam/BeamResampler.fcl | 2 +- JobConfig/beam/NeutralsResampler.fcl | 2 +- JobConfig/beam/prolog.fcl | 3 +-- Validation/inc/ValGenParticle.hh | 1 + Validation/src/ValGenParticle.cc | 4 +++- Validation/src/ValStrawGasStep.cc | 4 ++-- 8 files changed, 9 insertions(+), 7 deletions(-) rename {Analyses => CommonMC}/src/GenEventCountReader_module.cc (100%) rename {Analyses => CommonMC}/src/SimParticleDaughterSelector_module.cc (100%) diff --git a/Analyses/src/GenEventCountReader_module.cc b/CommonMC/src/GenEventCountReader_module.cc similarity index 100% rename from Analyses/src/GenEventCountReader_module.cc rename to CommonMC/src/GenEventCountReader_module.cc diff --git a/Analyses/src/SimParticleDaughterSelector_module.cc b/CommonMC/src/SimParticleDaughterSelector_module.cc similarity index 100% rename from Analyses/src/SimParticleDaughterSelector_module.cc rename to CommonMC/src/SimParticleDaughterSelector_module.cc diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index b96ac38034..ebb04e1e67 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -53,7 +53,7 @@ physics: { targetStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, TargetMuonFinder, TargetStopFilter, compressPVTargetStops] IPAStopPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, IPAMuonFinder, IPAStopFilter, compressPVIPAStops] flashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, TargetMuonFinder, stoppedMuonDaughters, FlashFilter, - @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] + @sequence::Primary.DetStepSequence, DetStepFilter, compressDetStepMCs ] earlyFlashPath : [ @sequence::Beam.beamResamplerSequence, @sequence::Common.g4Sequence, TargetMuonFinder, stoppedMuonDaughters, FlashFilter, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] trigger_paths: [ flashPath, earlyFlashPath, targetStopPath, IPAStopPath ] diff --git a/JobConfig/beam/NeutralsResampler.fcl b/JobConfig/beam/NeutralsResampler.fcl index 9c5a12a033..c6e60ad5ec 100644 --- a/JobConfig/beam/NeutralsResampler.fcl +++ b/JobConfig/beam/NeutralsResampler.fcl @@ -41,7 +41,7 @@ physics: { @table::Common.analyzers } # setup paths - flashPath : [ @sequence::Beam.neutralsResamplerSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] + flashPath : [ @sequence::Beam.neutralsResamplerSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, DetStepFilter, compressDetStepMCs ] earlyFlashPath : [ @sequence::Beam.neutralsResamplerSequence, @sequence::Common.g4Sequence, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] trigger_paths: [ flashPath, earlyFlashPath ] outPath : [ FlashOutput, EarlyFlashOutput ] diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index 9d73e83b99..e2e8cc580c 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -137,7 +137,7 @@ Beam: { DetStepFilter : { TimeCut : true MinimumTime : 300 # good hits are after this time - MaximumTime : 50 # not a type: good hits are before this time + MaximumTime : 10 # not a typo: good hits are before this time } # resamplers @@ -189,7 +189,6 @@ Beam: { EarlyPrescaleFilter : { module_type : PrescaleEvent - nPrescale : 100 nPrescale : 100 triggerPath : "earlyFlashPath" triggerFlag : ["PrescaleRandom"] diff --git a/Validation/inc/ValGenParticle.hh b/Validation/inc/ValGenParticle.hh index 75b60b7ad4..c6a951cc12 100644 --- a/Validation/inc/ValGenParticle.hh +++ b/Validation/inc/ValGenParticle.hh @@ -33,6 +33,7 @@ namespace mu2e { TH1D* _hyt; TH1D* _hz; TH1D* _hzt; + TH1D* _t; }; } diff --git a/Validation/src/ValGenParticle.cc b/Validation/src/ValGenParticle.cc index 0dd8f10cb7..9e61164d7b 100644 --- a/Validation/src/ValGenParticle.cc +++ b/Validation/src/ValGenParticle.cc @@ -14,6 +14,7 @@ int mu2e::ValGenParticle::declare(art::TFileDirectory tfs) { _hyt = tfs.make( "Ytgt", "Y stopping target", 100, -120.0, 120.0); _hz = tfs.make( "Z", "Z", 100, -20000.0, 25000.0); _hzt = tfs.make( "Ztgt", "Z stopping target", 100, 5400, 6350); + _t = tfs.make( "t", "t", 100, -300.0, 300.0); return 0; } @@ -22,7 +23,7 @@ int mu2e::ValGenParticle::fill(const mu2e::GenParticleCollection & coll, // increment this by 1 any time the defnitions of the histograms or the // histogram contents change, and will not match previous versions - _hVer->Fill(1.0); + _hVer->Fill(2.0); _hN->Fill(coll.size()); for(auto const& sp : coll) { @@ -36,6 +37,7 @@ int mu2e::ValGenParticle::fill(const mu2e::GenParticleCollection & coll, _hyt->Fill(sp.position().y()); _hz->Fill(sp.position().z()); _hzt->Fill(sp.position().z()); + _t->Fill(sp.time()); } return 0; diff --git a/Validation/src/ValStrawGasStep.cc b/Validation/src/ValStrawGasStep.cc index 283424648d..da4901952d 100644 --- a/Validation/src/ValStrawGasStep.cc +++ b/Validation/src/ValStrawGasStep.cc @@ -7,7 +7,7 @@ int mu2e::ValStrawGasStep::declare(art::TFileDirectory tfs) { _hVer = tfs.make( "Ver", "Version Number", 101, -0.5, 100.0); _hN = tfs.make( "NHit", "N Straw Hits", 101, -0.5, 100.0); _hN2 = tfs.make( "NHit2", "N Straw Hits", 100, -0.5, 9999.5); - _ht = tfs.make( "t", "time", 100, 0.0, 2000.0); + _ht = tfs.make( "t", "time", 100, -100.0, 2000.0); _hE = tfs.make( "E", "Energy",50, 0.0, 0.01); _hlen = tfs.make( "Length", "steplength",100, 0.0, 10.0); _hz = tfs.make( "Z", "Z",100, -1600.0, 1600.0); @@ -21,7 +21,7 @@ int mu2e::ValStrawGasStep::fill(const mu2e::StrawGasStepCollection & coll, // increment this by 1 any time the defnitions of the histograms or the // histogram contents change, and will not match previous versions - _hVer->Fill(1.0); + _hVer->Fill(2.0); _hN->Fill(coll.size()); _hN2->Fill(coll.size()); From 20088abef7da809723a8f61e979d3bd27ae2ec7b Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Thu, 20 May 2021 13:31:28 -0500 Subject: [PATCH 27/40] Remove time cut on neutrals flash, it is ineffective. Improve MCTrajectory version of POT. Add validation version of POT with all volumes turned on. Add plot to validation --- JobConfig/beam/NeutralsResampler.fcl | 23 +---- JobConfig/beam/POT_MCTrajectory.fcl | 11 +-- JobConfig/beam/POT_validation.fcl | 123 +++++++++++++++++++++++++++ JobConfig/beam/prolog.fcl | 28 ++---- Validation/inc/ValCrvStep.hh | 1 + Validation/src/ValCrvStep.cc | 4 +- 6 files changed, 140 insertions(+), 50 deletions(-) create mode 100644 JobConfig/beam/POT_validation.fcl diff --git a/JobConfig/beam/NeutralsResampler.fcl b/JobConfig/beam/NeutralsResampler.fcl index c6e60ad5ec..2cc20b9af9 100644 --- a/JobConfig/beam/NeutralsResampler.fcl +++ b/JobConfig/beam/NeutralsResampler.fcl @@ -30,21 +30,16 @@ physics: { @table::Common.filters EarlyPrescaleFilter : @local::Beam.filters.EarlyPrescaleFilter neutralsResampler : @local::Beam.filters.neutralsResampler - DetStepFilter : { - @table::Pileup.filters.DetStepFilter - @table::Beam.filters.DetStepFilter - } -# instance to select flash without time cuts (prescaled) - EarlyDetStepFilter : @local::Pileup.filters.DetStepFilter +# Time cuts are ineffective against neutrals; don't apply them + DetStepFilter : @local::Pileup.filters.DetStepFilter } analyzers : { @table::Common.analyzers } # setup paths flashPath : [ @sequence::Beam.neutralsResamplerSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, DetStepFilter, compressDetStepMCs ] - earlyFlashPath : [ @sequence::Beam.neutralsResamplerSequence, @sequence::Common.g4Sequence, EarlyPrescaleFilter, @sequence::Primary.DetStepSequence, EarlyDetStepFilter, compressDetStepMCs ] - trigger_paths: [ flashPath, earlyFlashPath ] - outPath : [ FlashOutput, EarlyFlashOutput ] + trigger_paths: [ flashPath ] + outPath : [ FlashOutput ] end_paths: [outPath] } outputs: { @@ -57,16 +52,6 @@ outputs: { SelectEvents: [flashPath] fileName: "dts.owner.NeutralsFlash.version.sequencer.art" } - - EarlyFlashOutput : { - module_type: RootOutput - outputCommands: [ "drop *_*_*_*", - @sequence::Beam.DtsKeptProducts, - @sequence::Pileup.KeptProducts - ] - SelectEvents: [earlyFlashPath] - fileName: "dts.owner.EarlyNeutralsFlash.version.sequencer.art" - } } # Point Mu2eG4 to the pre-simulated data diff --git a/JobConfig/beam/POT_MCTrajectory.fcl b/JobConfig/beam/POT_MCTrajectory.fcl index 0f57faeff5..4b8a8def17 100644 --- a/JobConfig/beam/POT_MCTrajectory.fcl +++ b/JobConfig/beam/POT_MCTrajectory.fcl @@ -5,12 +5,5 @@ physics.producers.g4run.TrajectoryControl: @local::mu2eg4DefaultTrajectories -outputs.BeamOutput.outputCommands: [ - @sequence::outputs.BeamOutput.outputCommands, - " keep mu2e::SimParticlemv_g4run_*_*", - "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] - -outputs.NeutralsOutput.outputCommands: [ - @sequence::outputs.NeutralsOutput.outputCommands, - " keep mu2e::SimParticlemv_g4run_*_*", - "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_*_*_*" ] +physics.filters.BeamFilter.mcTrajectoryInputs : ["g4run"] +physics.filters.NeutralsFilter.mcTrajectoryInputs : ["g4run"] diff --git a/JobConfig/beam/POT_validation.fcl b/JobConfig/beam/POT_validation.fcl new file mode 100644 index 0000000000..6a6fa1cdf0 --- /dev/null +++ b/JobConfig/beam/POT_validation.fcl @@ -0,0 +1,123 @@ +# +# Script to shoot beam protons onto the production target for validation. Daughter particles are filtered and collected at: +# 1) Charged particles at the entrance to the DS at the beamline +# 2) (mostly) neutral particles that exit the TS or otherwise reach the inside of the shielding before the CRV +# 3) extmon beam +# 4) extmon region +# In addition, the G4 'truncated' stream is saved +# +#include "fcl/standardServices.fcl" +#include "EventGenerator/fcl/prolog.fcl" +#include "JobConfig/common/prolog.fcl" +#include "JobConfig/beam/prolog.fcl" + +process_name : POT + +source : { + module_type : EmptyEvent + maxEvents : @nil +} + +services : @local::Services.Sim + +physics : { + # setup the modules + producers: { + @table::Common.producers + generate: @local::PrimaryProtonGun + compressPVBeam : @local::Beam.producers.compressPVBeam + compressPVNeutrals : @local::Beam.producers.compressPVNeutrals + compressPVextmonBeam : @local::Beam.producers.compressPVextmonBeam + compressPVextmonRegion : @local::Beam.producers.compressPVextmonRegion + compressPVFull : @local::Beam.producers.compressPVFull + } + filters: { + @table::Common.filters + BeamFilter : @local::Beam.filters.BeamFilter + NeutralsFilter : @local::Beam.filters.NeutralsFilter + extmonBeamFilter : @local::Beam.filters.extmonBeamFilter + extmonRegionFilter : @local::Beam.filters.extmonRegionFilter + } + analyzers : @local::Common.analyzers + # setup the paths + BeamPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, BeamFilter, compressPVBeam] + NeutralsPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, NeutralsFilter, compressPVNeutrals] + extmonBeamPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, extmonBeamFilter, compressPVextmonBeam] + extmonRegionPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, extmonRegionFilter, compressPVextmonRegion] + truncatedPath : [ @sequence::Common.generateSequence, g4run, "!g4consistentFilter", compressPVFull] + trigger_paths : [BeamPath, NeutralsPath, extmonBeamPath, extmonRegionPath, truncatedPath ] + LogPath : [ genCountLogger ] + OutputPath : [BeamOutput, NeutralsOutput, extmonBeamOutput, extmonRegionOutput, truncatedOutput ] + end_paths: [OutputPath, LogPath ] +} +# setup outputs +outputs: { + BeamOutput : { + module_type: RootOutput + SelectEvents: ["BeamPath"] + outputCommands: [ "drop *_*_*_*", + @sequence::Beam.SimKeptProducts, + "keep *_BeamFilter_*_*", + "keep *_compressPVBeam_*_*" + ] + fileName : "sim.owner.Beam.version.sequencer.art" + } + NeutralsOutput : { + module_type: RootOutput + SelectEvents: ["NeutralsPath"] + outputCommands: [ "drop *_*_*_*", + @sequence::Beam.SimKeptProducts, + "keep *_NeutralsFilter_*_*", + "keep *_compressPVNeutrals_*_*" + ] + fileName : "sim.owner.Neutrals.version.sequencer.art" + } + extmonBeamOutput : { + module_type: RootOutput + SelectEvents: ["extmonBeamPath"] + outputCommands: [ "drop *_*_*_*", + @sequence::Beam.SimKeptProducts, + "keep *_extmonBeamFilter_*_*", + "keep *_compressPVextmonBeam_*_*" + ] + fileName : "sim.owner.extmonBeam.version.sequencer.art" + } + extmonRegionOutput : { + module_type: RootOutput + SelectEvents: ["extmonRegionPath"] + outputCommands: [ "drop *_*_*_*", + @sequence::Beam.SimKeptProducts, + "keep *_extmonRegionFilter_*_*", + "keep *_compressPVextmonRegion_*_*" + ] + fileName : "sim.owner.extmonRegion.version.sequencer.art" + } + truncatedOutput : { + module_type : RootOutput + SelectEvents: ["truncatedPath"] + outputCommands: [ "drop *_*_*_*", + "keep mu2e::GenParticles_*_*_*", + "keep mu2e::GenEventCount_*_*_*", + "keep mu2e::StatusG4_*_*_*", + "keep *_g4run_*_*", + "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_g4run_*_*", + "keep *_compressPVFull_*_*" + ] + fileName : "sim.owner.truncated.version.sequencer.art" + } + +} +# setup Mu2eG4 selection +physics.producers.g4run.Mu2eG4CommonCut: { + type: union + pars: [ + @local::mu2eg4CutDeltaElectrons, # 8% speed up from killing electrons with Ek<1 MeV + @local::Beam.DetectorRegionCuts, # defines Beam and Neutrals regions + @local::Beam.extMonRegionCuts # defines ExtMon beam and region + ] +} +# tweak Mu2eG4 settings +physics.producers.g4run.SDConfig.enableSD: [ virtualdetector ] # only VDs are active +physics.producers.g4run.physics.minRangeCut : 1. # mm coarse range for this stage +#include "JobConfig/beam/epilog.fcl" +#include "JobConfig/common/epilog.fcl" diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index e2e8cc580c..db196fe858 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -35,6 +35,13 @@ Beam: { particleInputs : [ "extmonRegionFilter" ] } + compressPVFull : { + module_type: CompressPhysicalVolumes + volumesInput : "g4run" + hitInputs : [] + particleInputs : [ "g4run" ] + } + compressPVTargetStops: { module_type: CompressPhysicalVolumes volumesInput : "g4run" @@ -195,23 +202,6 @@ Beam: { } } - - outputs: { - - TruncatedOutput : { - module_type : RootOutput - SelectEvents: ["g4StatusFilter"] - outputCommands: [ "drop *_*_*_*", - "keep mu2e::GenParticles_*_*_*", - "keep mu2e::GenEventCount_*_*_*", - "keep mu2e::StatusG4_*_*_*", - "keep *_g4run_*_*", - "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_g4run_*_*", - "keep *_compressPVFull_*_*" - ] - } - - } # define regions where particles may eventually interact with the detectors (CRV or trracker/calo), See doc 26541 for a graphical description # Mu2eG4 cuts are evaluated in the listed order. # The first match wins. For the "intersection" @@ -291,10 +281,6 @@ Beam: { } ] } - - - # define some paths; these can be mixed and matches as art guarantees no duplicate running - g4StatusPath : [generate, genCounter, g4run, "!g4statusFilter", compressPVFull ] # # define products that need to be kept # diff --git a/Validation/inc/ValCrvStep.hh b/Validation/inc/ValCrvStep.hh index 2f189f9a28..45aa99ac0a 100644 --- a/Validation/inc/ValCrvStep.hh +++ b/Validation/inc/ValCrvStep.hh @@ -25,6 +25,7 @@ namespace mu2e { TH1D* _hN; TH1D* _hb; TH1D* _ht; + TH1D* _hlt; TH1D* _hE; TH1D* _hposx; TH1D* _hposy; diff --git a/Validation/src/ValCrvStep.cc b/Validation/src/ValCrvStep.cc index 8f668a6db8..10c54ab43a 100644 --- a/Validation/src/ValCrvStep.cc +++ b/Validation/src/ValCrvStep.cc @@ -7,6 +7,7 @@ int mu2e::ValCrvStep::declare(art::TFileDirectory tfs) { _hN = tfs.make( "NStep", "N Steps", 101, -9.5, 1000.5); _hb = tfs.make( "bar", "bar number", 100, -0.5, 5503.5); _ht = tfs.make( "t", "time", 100, 0.0, 2000.0); + _hlt = tfs.make( "lt", "log_{10} time;log_{10} time (ns)", 100, 0.0, 10.0); _hE = tfs.make( "E", "Energy",100, 0.0, 30.0); _hposx = tfs.make( "posx", "Start position X",100, -7500.0, 0.0); _hposy = tfs.make( "posy", "Start position Y",100, -2000.0, 3000.0); @@ -22,12 +23,13 @@ int mu2e::ValCrvStep::fill(const mu2e::CrvStepCollection & coll, // increment this by 1 any time the defnitions of the histograms or the // histogram contents change, and will not match previous versions - _hVer->Fill(0.0); + _hVer->Fill(1.0); _hN->Fill(coll.size()); for(auto cs : coll) { _hb->Fill(cs.barIndex().asInt()); _ht->Fill(cs.startTime()); + _hlt->Fill(log10(std::max(cs.startTime(),1e-5))); _hE->Fill(cs.visibleEDep()); _hposx->Fill(cs.startPosition().x()); _hposy->Fill(cs.startPosition().y()); From 339a662f2e131204123caba26762cb58ebb6ae03 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Thu, 20 May 2021 13:54:44 -0500 Subject: [PATCH 28/40] Make output names consistent --- JobConfig/beam/POT_validation.fcl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/JobConfig/beam/POT_validation.fcl b/JobConfig/beam/POT_validation.fcl index 6a6fa1cdf0..966f4dd045 100644 --- a/JobConfig/beam/POT_validation.fcl +++ b/JobConfig/beam/POT_validation.fcl @@ -80,7 +80,7 @@ outputs: { "keep *_extmonBeamFilter_*_*", "keep *_compressPVextmonBeam_*_*" ] - fileName : "sim.owner.extmonBeam.version.sequencer.art" + fileName : "sim.owner.ExtMonBeam.version.sequencer.art" } extmonRegionOutput : { module_type: RootOutput @@ -90,7 +90,7 @@ outputs: { "keep *_extmonRegionFilter_*_*", "keep *_compressPVextmonRegion_*_*" ] - fileName : "sim.owner.extmonRegion.version.sequencer.art" + fileName : "sim.owner.ExtmMonRegion.version.sequencer.art" } truncatedOutput : { module_type : RootOutput @@ -103,7 +103,7 @@ outputs: { "drop uintmu2e::PhysicalVolumeInfomvstd::pairs_g4run_*_*", "keep *_compressPVFull_*_*" ] - fileName : "sim.owner.truncated.version.sequencer.art" + fileName : "sim.owner.Truncated.version.sequencer.art" } } From 33b25ad1a2511af7303b7d1410d7a707764249b6 Mon Sep 17 00:00:00 2001 From: Richard Bonventre Date: Thu, 20 May 2021 15:33:51 -0500 Subject: [PATCH 29/40] MaxLSB now set by number of bits --- TrackerConditions/fcl/prolog.fcl | 2 +- TrackerConditions/inc/StrawElectronics.hh | 4 +++- TrackerConditions/src/StrawElectronicsMaker.cc | 4 +++- TrackerConfig/inc/StrawElectronicsConfig.hh | 4 ++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/TrackerConditions/fcl/prolog.fcl b/TrackerConditions/fcl/prolog.fcl index 10bd80aaee..a1940dc445 100644 --- a/TrackerConditions/fcl/prolog.fcl +++ b/TrackerConditions/fcl/prolog.fcl @@ -110,7 +110,7 @@ StrawElectronics : { maxThreshTimeSeparation : 2 tCoince : 0 TDCLSB : 0.01953125 - maxTDC : 16777215 + numTDCbits : 24 TOTLSB : 5.0 maxTOT : 15 TDCResolution : 0.1 diff --git a/TrackerConditions/inc/StrawElectronics.hh b/TrackerConditions/inc/StrawElectronics.hh index 8441df0602..a07111070e 100644 --- a/TrackerConditions/inc/StrawElectronics.hh +++ b/TrackerConditions/inc/StrawElectronics.hh @@ -107,7 +107,9 @@ namespace mu2e { _clusterLookbackTime(clusterLookbackTime), _timeOffsetPanel(timeOffsetPanel), _timeOffsetStrawHV(timeOffsetStrawHV), - _timeOffsetStrawCal(timeOffsetStrawCal) {} + _timeOffsetStrawCal(timeOffsetStrawCal) { + std::cout << "MAXIMUM TDC IS " << _maxTDC << std::endl; + } virtual ~StrawElectronics() {} diff --git a/TrackerConditions/src/StrawElectronicsMaker.cc b/TrackerConditions/src/StrawElectronicsMaker.cc index 3910048d0e..4f35032dd1 100644 --- a/TrackerConditions/src/StrawElectronicsMaker.cc +++ b/TrackerConditions/src/StrawElectronicsMaker.cc @@ -16,6 +16,8 @@ namespace mu2e { StrawElectronics::ptr_t StrawElectronicsMaker::fromFcl(EventTiming::cptr_t eventTiming) { + unsigned maxTDC = pow(2,_config.numTDCbits()); + // creat this at the beginning since it must be used, // partially constructed, to complete the construction auto ptr = std::make_shared(_config.deadTimeAnalog(), @@ -23,7 +25,7 @@ namespace mu2e { _config.ADCLSB(), _config.maxADC(), _config.nADCPackets(), _config.nADCPresamples(), _config.ADCPeriod(), _config.ADCOffset(), _config.maxThreshTimeSeparation(), _config.tCoince(), - _config.TDCLSB(), _config.maxTDC(), _config.TOTLSB(), + _config.TDCLSB(), maxTDC, _config.TOTLSB(), _config.maxTOT(), _config.TDCResolution(), _config.electronicsTimeDelay(), _config.eventWindowMarkerROCJitter(), _config.digitizationStart(), diff --git a/TrackerConfig/inc/StrawElectronicsConfig.hh b/TrackerConfig/inc/StrawElectronicsConfig.hh index 05c5feb1d5..362bf9995c 100644 --- a/TrackerConfig/inc/StrawElectronicsConfig.hh +++ b/TrackerConfig/inc/StrawElectronicsConfig.hh @@ -60,8 +60,8 @@ namespace mu2e { Name("tCoince"), Comment("maxing threshold xing pair time separation to create a digi, in number of ADC clock cycles")}; fhicl::Atom TDCLSB { Name("TDCLSB"), Comment("nsec, least-significant bit of TDC")}; - fhicl::Atom maxTDC { - Name("maxTDC"), Comment("16 bits, maximum TDC value")}; + fhicl::Atom numTDCbits { + Name("numTDCbits"), Comment("Number of TDC bits, defining maximum TDC value")}; fhicl::Atom TOTLSB { Name("TOTLSB"), Comment("ns, least-significant bit of TOT")}; fhicl::Atom maxTOT { From f82d25cc1e54d0b04fc264ed9af79d9574d7d732 Mon Sep 17 00:00:00 2001 From: Richard Bonventre Date: Thu, 20 May 2021 15:35:11 -0500 Subject: [PATCH 30/40] remove printout --- TrackerConditions/inc/StrawElectronics.hh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/TrackerConditions/inc/StrawElectronics.hh b/TrackerConditions/inc/StrawElectronics.hh index a07111070e..8441df0602 100644 --- a/TrackerConditions/inc/StrawElectronics.hh +++ b/TrackerConditions/inc/StrawElectronics.hh @@ -107,9 +107,7 @@ namespace mu2e { _clusterLookbackTime(clusterLookbackTime), _timeOffsetPanel(timeOffsetPanel), _timeOffsetStrawHV(timeOffsetStrawHV), - _timeOffsetStrawCal(timeOffsetStrawCal) { - std::cout << "MAXIMUM TDC IS " << _maxTDC << std::endl; - } + _timeOffsetStrawCal(timeOffsetStrawCal) {} virtual ~StrawElectronics() {} From f5e730d1aa619154cf91c1e5e0afc5e15825948d Mon Sep 17 00:00:00 2001 From: Richard Bonventre Date: Thu, 20 May 2021 16:41:52 -0500 Subject: [PATCH 31/40] No rounding --- TrackerConditions/src/StrawElectronicsMaker.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TrackerConditions/src/StrawElectronicsMaker.cc b/TrackerConditions/src/StrawElectronicsMaker.cc index 4f35032dd1..c6598fa472 100644 --- a/TrackerConditions/src/StrawElectronicsMaker.cc +++ b/TrackerConditions/src/StrawElectronicsMaker.cc @@ -16,7 +16,7 @@ namespace mu2e { StrawElectronics::ptr_t StrawElectronicsMaker::fromFcl(EventTiming::cptr_t eventTiming) { - unsigned maxTDC = pow(2,_config.numTDCbits()); + unsigned maxTDC = (0x1<<_config.numTDCbits())-1; // creat this at the beginning since it must be used, // partially constructed, to complete the construction From 95eb80fd1eb081d8072fc99c0e36e9d417513692 Mon Sep 17 00:00:00 2001 From: Ray Culbertson Date: Mon, 24 May 2021 14:53:11 -0500 Subject: [PATCH 32/40] limit fraction prob to greater than zero --- Validation/root/TValHistH.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/Validation/root/TValHistH.cc b/Validation/root/TValHistH.cc index cc224dc0e7..794807f2d4 100644 --- a/Validation/root/TValHistH.cc +++ b/Validation/root/TValHistH.cc @@ -92,6 +92,7 @@ Int_t TValHistH::Analyze(Option_t* Opt) { if (TMath::Abs(s1-s2) > maxDiff) maxDiff = TMath::Abs(s1-s2); } fFrProb = 1.0 - maxDiff/s1; // 1 is the standard + if(fFrProb<0.0) fFrProb = 0.0; TString qual; if(fPar.GetUnder()==0) qual.Append("U"); From d1cdcf5d89c8e0871bb47943256fe45bfd6af711 Mon Sep 17 00:00:00 2001 From: Ray Culbertson Date: Mon, 24 May 2021 14:54:36 -0500 Subject: [PATCH 33/40] if given only one file, plot them up nicely, useful for presenting all plots on a web page or pdf file --- Validation/inc/TValCompare.hh | 8 +- Validation/root/TValCompare.cc | 244 ++++++++++++++++++++++++++++-- Validation/src/valCompare_main.cc | 42 +++-- 3 files changed, 267 insertions(+), 27 deletions(-) diff --git a/Validation/inc/TValCompare.hh b/Validation/inc/TValCompare.hh index 2dd5f49e6c..ba45dbbe36 100644 --- a/Validation/inc/TValCompare.hh +++ b/Validation/inc/TValCompare.hh @@ -36,6 +36,9 @@ public: void SetFile1(TString x) { fFileN1 = x; } void SetFile2(TString x) { fFileN2 = x; } + // open and traverse the first file + virtual Int_t GetDirs(); + virtual Int_t OneFile(Option_t* Opt=""); virtual Int_t Analyze(Option_t* Opt=""); // get a histogram based on searching name, path and title TValHist* GetHist(TString str); @@ -43,8 +46,8 @@ public: virtual void Summary(Option_t* Opt=""); virtual void Display(Option_t* Opt=""); virtual void SaveAs(const char *filename="",Option_t *option="") const; - //Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0); - //Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0) const; + // save for one file option + virtual void SaveAs1(const char *filename="",Option_t *option="") const; virtual void Delete(Option_t* Opt=""); void SetVerbose(Int_t x) { fVerbose = x; } @@ -59,6 +62,7 @@ protected: TValPar fPar; TObjArray fList; // list of histogram objects being compared + TObjArray fDirs; // list of directories to analyze Int_t fVerbose; Int_t fMinStat; diff --git a/Validation/root/TValCompare.cc b/Validation/root/TValCompare.cc index 83ced3a4fc..a1bcf6c1b2 100644 --- a/Validation/root/TValCompare.cc +++ b/Validation/root/TValCompare.cc @@ -24,41 +24,52 @@ void TValCompare::Delete(Option_t* Opt) { } //fPar.Clear(); fList.Delete(); + fDirs.Delete(); } //_____________________________________________________________________________ -Int_t TValCompare::Analyze(Option_t* Opt) { +Int_t TValCompare::GetDirs() { + - Delete(); // remove any previous analysis - fFile1 = TFile::Open(fFileN1.Data()); - fFile2 = TFile::Open(fFileN2.Data()); - if( !( fFile1 && fFile2 ) ) { - printf("Error opening one of the files\n"); + fFile1 = TFile::Open(fFileN1.Data(),"READ"); + if( !fFile1 ) { + printf("Error opening one file 1\n"); return 1; } - if( !( fFile1->IsOpen() && fFile2->IsOpen() ) ) { - printf("Error opening one of the files\n"); + if( !fFile1->IsOpen() ) { + printf("Error opening file 1\n"); return 1; } + if(fFileN2.Length()>0) { + fFile2 = TFile::Open(fFileN2.Data(),"READ"); + if( !fFile2 ) { + printf("Error opening file 2\n"); + return 1; + } + if( !fFile2->IsOpen() ) { + printf("Error opening file 2\n"); + return 1; + } + } + // don't create objects in the file gROOT->cd(); // scan the first file, make a list of directories - TObjArray dirs; // list of pointers to TDirectory TObjArray todo; // temp list of directotires to check for subdirectories todo.Add(fFile1); // prime with the top of file1 int itodo = 0; - TObject *oo,*o1,*o2; + TObject *oo; TKey* kk; while(itodo < todo.GetEntries()) { TDirectory* dd = (TDirectory*) todo[itodo]; if(fVerbose>9) printf("scanning %s\n",dd->GetName()); - dirs.AddLast((TObject*)dd); + fDirs.AddLast((TObject*)dd); // look in this directory for subdirectories TIter it(dd->GetListOfKeys()); @@ -73,19 +84,83 @@ Int_t TValCompare::Analyze(Option_t* Opt) { } // List the directories, if requested - TDirectory *di,*dj; - TIter itd = TIter(&dirs); + TIter itd = TIter(&fDirs); if( fVerbose > 5 ) { - printf("List of %d directories in file 1:\n",dirs.GetEntries()); - itd = TIter(&dirs); + printf("List of %d directories in file 1:\n",fDirs.GetEntries()); + itd = TIter(&fDirs); TDirectory* di; while ( (di = (TDirectoryFile*) itd.Next()) ) { printf("%s\n",di->GetPath()); } } + return 0; +} + + +//_____________________________________________________________________________ +Int_t TValCompare::OneFile(Option_t* Opt) { + + Delete(); // remove any previous analysis + + // traverse the first file and get subdirectories + int rc = GetDirs(); + if(rc!=0) return rc; + + // now process all objects in the list of directories + TDirectory *di; + TObject *hh; + TKey* kk; + TString path,combo; + + TIter itd = TIter(&fDirs); + while ( (di = (TDirectory*) itd.Next()) ) { + path = di->GetPath(); + int ind = path.Index(":"); // strip leading file name + path = path(ind+2,path.Length()); + if(fVerbose > 1) printf("Processing %s\n",path.Data()); + + // look in this directory for histograms + TIter ith(di->GetListOfKeys()); + while ( (kk = (TKey*) ith.Next()) ) { + hh = di->Get(kk->GetName()); + + if(hh->ClassName() == TString("TH1F") || + hh->ClassName() == TString("TH1D") || + hh->ClassName() == TString("TProfile") || + hh->ClassName() == TString("TEfficiency") ) { + // have to pack path and name together + combo=path+"/"+TString(hh->GetName()); + ((TNamed*)hh)->SetName(combo); + fList.Add(hh); + } + } + + + } // end loop over list of directories in file 1 + + + + + return 0; + +} + +//_____________________________________________________________________________ +Int_t TValCompare::Analyze(Option_t* Opt) { + + Delete(); // remove any previous analysis + + // traverse the first file and get subdirectories + int rc = GetDirs(); + if(rc!=0) return rc; + // now process all objects in the list of directories - itd = TIter(&dirs); + TDirectory *di,*dj; + TObject *o1,*o2; + TKey* kk; + + TIter itd = TIter(&fDirs); while ( (di = (TDirectory*) itd.Next()) ) { TString path = di->GetPath(); int ind = path.Index(":"); // strip leading file name @@ -454,6 +529,143 @@ void TValCompare::SaveAs(const char *filename, Option_t *option) const { } +//_____________________________________________________________________________ +void TValCompare::SaveAs1(const char *filename, Option_t *option) const { + + TString file(filename); + TString opt(option); + opt.ToUpper(); + + bool qPDF = file.EndsWith("pdf"); + bool qWeb = file.EndsWith("html"); + if( !(qPDF || qWeb) ) { + printf("ERRR - SaveAs1 file does not end with pdf or html"); + return; + } + + + /* only in ValHist + TH1* hh; + TIter it(&fList); + while ( (hh = (TH1*) it.Next()) ) hh->SetFontScale(sf); + */ + + TCanvas* ccc = nullptr; + + Bool_t qBatch = gROOT->IsBatch(); + gROOT->SetBatch(kTRUE); + + + + if(qPDF) { + + bool q12 = opt.Contains("1X2"); + bool q22 = opt.Contains("2X2"); + + int cx = 700; // canvas size + int cy = 500; + + int clim = 1; // plots per page + if(qPDF && !q22) q12 = true; + if(q12) clim = 2; + if(q22) clim = 4; + + if(q12) { + cy = (11.0/8.5)*cx; + } else if(q22) { + cx = 800; + cy = cx; + } + + TH1* hh; + + ccc = new TCanvas("ccc-p","TValCompare-pdf",cx,cy); + TPDF* pdf =new TPDF(file); + TIter it(&fList); + int ind = 0; + while ( (hh = (TH1*) it.Next()) ) { + if((ind%clim)==0) { + ccc->Clear(); + if(q12) ccc->Divide(1,2); + if(q22) ccc->Divide(2,2); + } + ccc->cd(ind%clim+1); + ccc->Update(); + hh->Draw(); + ind++; + } + //ccc->Destructor(); + delete ccc; + ccc = nullptr; + pdf->Close(); + } + + + if(qWeb) { + std::ofstream inf; + inf.open(file); + if(!inf.is_open()) { + printf("ERROR - could not open web file %s\n",file.Data()); + return; + } + TString dir("./"); + int c = int(file.Last('/')); + if(c>=0) dir = file(0,c+1); + + inf <<"\n\n "; + inf <<"valCompare one file\n"; + inf << "

\n"; + inf <<"

"<< fFileN1 << "   


"; + + inf << "\n"; + inf << "\n"; + inf << "\n"; + inf << "\n"; + + ccc = new TCanvas("ccc-w","TValCompare",700,500); + TIter it(&fList); + TString color; + TString gifFile,gifName; + TString gifFileLog,gifNameLog; + TH1* hh; + while ( (hh = (TH1*) it.Next()) ) { + // TEfficiency does not handle log scale well + bool qDoLog = (hh->ClassName()!=TString("TEfficiency")); + hh->Draw(); + //gifName = hh->GetTag()+"/"+hh->GetName(); + gifName = hh->GetName(); + gifName.ReplaceAll("/","_"); + gifNameLog = gifName; + gifName.Append(".gif"); + gifNameLog.Append("_log.gif"); + gifFile = dir+gifName; + gifFileLog = dir+gifNameLog; + ccc->SaveAs(gifFile); + if(qDoLog) { + gPad->SetLogy(1); + ccc->SaveAs(gifFileLog); + gPad->SetLogy(0); + } + + inf << "\n"; + + } // hist loop + delete ccc; + ccc = nullptr; + } + + gROOT->SetBatch(qBatch); + +} + //_____________________________________________________________________________ TValHist* TValCompare::GetHist(TString str) { diff --git a/Validation/src/valCompare_main.cc b/Validation/src/valCompare_main.cc index 1eefb7cce4..d93fc23baa 100644 --- a/Validation/src/valCompare_main.cc +++ b/Validation/src/valCompare_main.cc @@ -40,6 +40,9 @@ void valCompare_usage() { " - put all comparisons into a pdf file with 2x2 on a page\n" " valCompare -2 -p result.pdf FILE1 FILE2\n" " \n" +" The command can also be run with one file on the command line.\n" +" In this case, the web output switch must be on, and simple plots will be made. \n" +" \n" " -h print help\n" " -v INT verbose level (default=1)\n" " -l INT select plots to show - lower limit to status (0-11)\n" @@ -60,7 +63,8 @@ void valCompare_usage() { " -u ignore underflows in comparison\n" " -o ignore overflows in comparison\n" " -p FILE PDF file output like dir/results.pdf\n" -" -w FILE web page output like dir/dir/results.html\n" +" -w FILE web page output like dir/dir/result.html\n" +" if only one file is given on the command line, make histgram plots\n" << std::endl; return; } @@ -163,11 +167,37 @@ int main (int argc, char **argv) return 1; } - if( optind >= argc ) { - printf("ERROR - need two histogram file names on the command line\n"); + std::string opt; + if(q12) { + opt.append("1X2"); + } else if (q22) { + opt.append("2X2"); + } + + int nFile = argc-optind; + + if( nFile <= 0 ) { + printf("ERROR - no histogram files on the command line\n"); valCompare_usage(); return 1; + } else if( nFile == 1 ) { + if(!webPage && !pdfFile) { + printf("ERROR - one histogram file specified, but no output requested\n"); + valCompare_usage(); + return 1; + } + + TValCompare pp; + pp.SetVerbose(verbose); + pp.SetFile1(argv[optind]); + pp.OneFile(); + if(pdfFile) pp.SaveAs(pdfFile,opt.c_str()); + if(webPage) pp.SaveAs1(webPage); + return 0; } + + // 2-file comparison mode + TValCompare pp; pp.SetVerbose(verbose); pp.SetFile1(argv[optind]); @@ -190,12 +220,6 @@ int main (int argc, char **argv) pp.Analyze(); if(qReport) pp.Report(); if(qSummary) pp.Summary(); - std::string opt; - if(q12) { - opt.append("1X2"); - } else if (q22) { - opt.append("2X2"); - } if(qBrowse) pp.Display(opt.c_str()); if(pdfFile) pp.SaveAs(pdfFile,opt.c_str()); if(webPage) pp.SaveAs(webPage,opt.c_str()); From 92034c43141b467fb94d6c8d2b7eb3dbaf8fff59 Mon Sep 17 00:00:00 2001 From: Ray Culbertson Date: Mon, 24 May 2021 16:09:37 -0500 Subject: [PATCH 34/40] move test fcl to test dir, delete code moved to CRVStandalone repo --- CRVResponse/standalone/wls-build/build.sh | 6 - .../standalone/wls-build/photonMap.root | Bin 7713 -> 0 bytes .../standalone/wls-build/singlePEWaveform.txt | 4831 ----------------- .../wls-build/singlePEWaveform_v2.txt | 297 - .../wls-build/singlePEWaveform_v3.txt | 383 -- CRVResponse/standalone/wls-build/vis.mac | 44 - .../wls-build/visibleEnergyAdjustment.txt | 190 - .../standalone/wls-build/wls.doProduction | 38 - .../standalone/wls-build/wls.mergeProduction | 59 - .../standalone/wls-build/wls.submitProduction | 58 - CRVResponse/standalone/wls/CMakeLists.txt | 60 - CRVResponse/standalone/wls/GNUmakefile | 22 - .../standalone/wls/include/G4CerenkovNew.hh | 235 - .../standalone/wls/include/G4OpWLSPOPOP.hh | 133 - .../standalone/wls/include/G4OpWLSPSPPO.hh | 133 - .../standalone/wls/include/G4OpWLSY11.hh | 134 - .../wls/include/WLSDetectorConstruction.hh | 97 - .../standalone/wls/include/WLSEventAction.hh | 63 - .../standalone/wls/include/WLSExtraPhysics.hh | 55 - .../standalone/wls/include/WLSMaterials.hh | 41 - .../wls/include/WLSOpticalPhysics.hh | 91 - .../standalone/wls/include/WLSPhysicsList.hh | 95 - .../wls/include/WLSPrimaryGeneratorAction.hh | 53 - .../standalone/wls/include/WLSRunAction.hh | 22 - .../wls/include/WLSStackingAction.hh | 62 - .../standalone/wls/include/WLSStepMax.hh | 82 - .../wls/include/WLSSteppingAction.hh | 66 - .../standalone/wls/src/G4CerekovNew.cc | 765 --- .../standalone/wls/src/G4OpWLSPOPOP.cc | 401 -- .../standalone/wls/src/G4OpWLSPSPPO.cc | 401 -- CRVResponse/standalone/wls/src/G4OpWLSY11.cc | 402 -- .../wls/src/WLSDetectorConstruction.cc | 591 -- .../standalone/wls/src/WLSEventAction.cc | 687 --- .../standalone/wls/src/WLSExtraPhysics.cc | 85 - .../standalone/wls/src/WLSMaterials.cc | 619 --- .../standalone/wls/src/WLSOpticalPhysics.cc | 160 - .../standalone/wls/src/WLSPhysicsList.cc | 303 -- .../wls/src/WLSPrimaryGeneratorAction.cc | 500 -- .../standalone/wls/src/WLSRunAction.cc | 35 - .../standalone/wls/src/WLSStackingAction.cc | 4 - CRVResponse/standalone/wls/src/WLSStepMax.cc | 82 - .../standalone/wls/src/WLSSteppingAction.cc | 258 - CRVResponse/standalone/wls/wls.cc | 327 -- .../efficiencyCheck/CRV_Efficiency_check.fcl | 0 .../CRV_Efficiency_check_count.sh | 0 .../CRV_Efficiency_check_submit.sh | 0 .../efficiencyCheck/genconfig_D.txt | 0 .../efficiencyCheck/genconfig_E.txt | 0 .../efficiencyCheck/genconfig_L.txt | 0 .../efficiencyCheck/genconfig_L_teststand.txt | 0 .../efficiencyCheck/genconfig_R.txt | 0 .../efficiencyCheck/genconfig_T.txt | 0 .../efficiencyCheck/genconfig_T4.txt | 0 .../efficiencyCheck/genconfig_TS.txt | 0 .../efficiencyCheck/genconfig_U.txt | 0 .../{ => test}/efficiencyCheck/geom_D.txt | 0 .../{ => test}/efficiencyCheck/geom_E.txt | 0 .../{ => test}/efficiencyCheck/geom_L.txt | 0 .../efficiencyCheck/geom_L_teststand.txt | 0 .../{ => test}/efficiencyCheck/geom_R.txt | 0 .../{ => test}/efficiencyCheck/geom_T.txt | 0 .../{ => test}/efficiencyCheck/geom_TS.txt | 0 .../{ => test}/efficiencyCheck/geom_U.txt | 0 .../singleCounter/dicounter_across.fcl | 0 .../{ => test}/singleCounter/genconfig.txt | 0 .../singleCounter/genconfig_across.txt | 0 .../genconfig_dicounter_across.txt | 0 .../singleCounter/genconfig_point.txt | 0 CRVResponse/{ => test}/singleCounter/geom.txt | 0 .../singleCounter/geom_dicounter.txt | 0 .../singleCounter/singleCounter.fcl | 0 .../singleCounter/singleCounter_across.fcl | 0 .../singleCounter/singleCounter_darkNoise.fcl | 0 .../singleCounter/singleCounter_point.fcl | 0 .../{ => test}/singleModule/genconfig.txt | 0 CRVResponse/{ => test}/singleModule/geom.txt | 0 .../{ => test}/singleModule/singleModule.fcl | 0 77 files changed, 12970 deletions(-) delete mode 100755 CRVResponse/standalone/wls-build/build.sh delete mode 100644 CRVResponse/standalone/wls-build/photonMap.root delete mode 100644 CRVResponse/standalone/wls-build/singlePEWaveform.txt delete mode 100644 CRVResponse/standalone/wls-build/singlePEWaveform_v2.txt delete mode 100644 CRVResponse/standalone/wls-build/singlePEWaveform_v3.txt delete mode 100644 CRVResponse/standalone/wls-build/vis.mac delete mode 100644 CRVResponse/standalone/wls-build/visibleEnergyAdjustment.txt delete mode 100755 CRVResponse/standalone/wls-build/wls.doProduction delete mode 100755 CRVResponse/standalone/wls-build/wls.mergeProduction delete mode 100755 CRVResponse/standalone/wls-build/wls.submitProduction delete mode 100644 CRVResponse/standalone/wls/CMakeLists.txt delete mode 100644 CRVResponse/standalone/wls/GNUmakefile delete mode 100644 CRVResponse/standalone/wls/include/G4CerenkovNew.hh delete mode 100644 CRVResponse/standalone/wls/include/G4OpWLSPOPOP.hh delete mode 100644 CRVResponse/standalone/wls/include/G4OpWLSPSPPO.hh delete mode 100644 CRVResponse/standalone/wls/include/G4OpWLSY11.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSDetectorConstruction.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSEventAction.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSExtraPhysics.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSMaterials.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSOpticalPhysics.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSPhysicsList.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSPrimaryGeneratorAction.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSRunAction.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSStackingAction.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSStepMax.hh delete mode 100644 CRVResponse/standalone/wls/include/WLSSteppingAction.hh delete mode 100644 CRVResponse/standalone/wls/src/G4CerekovNew.cc delete mode 100644 CRVResponse/standalone/wls/src/G4OpWLSPOPOP.cc delete mode 100644 CRVResponse/standalone/wls/src/G4OpWLSPSPPO.cc delete mode 100644 CRVResponse/standalone/wls/src/G4OpWLSY11.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSDetectorConstruction.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSEventAction.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSExtraPhysics.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSMaterials.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSOpticalPhysics.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSPhysicsList.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSPrimaryGeneratorAction.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSRunAction.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSStackingAction.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSStepMax.cc delete mode 100644 CRVResponse/standalone/wls/src/WLSSteppingAction.cc delete mode 100644 CRVResponse/standalone/wls/wls.cc rename CRVResponse/{ => test}/efficiencyCheck/CRV_Efficiency_check.fcl (100%) rename CRVResponse/{ => test}/efficiencyCheck/CRV_Efficiency_check_count.sh (100%) rename CRVResponse/{ => test}/efficiencyCheck/CRV_Efficiency_check_submit.sh (100%) rename CRVResponse/{ => test}/efficiencyCheck/genconfig_D.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/genconfig_E.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/genconfig_L.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/genconfig_L_teststand.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/genconfig_R.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/genconfig_T.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/genconfig_T4.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/genconfig_TS.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/genconfig_U.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/geom_D.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/geom_E.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/geom_L.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/geom_L_teststand.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/geom_R.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/geom_T.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/geom_TS.txt (100%) rename CRVResponse/{ => test}/efficiencyCheck/geom_U.txt (100%) rename CRVResponse/{ => test}/singleCounter/dicounter_across.fcl (100%) rename CRVResponse/{ => test}/singleCounter/genconfig.txt (100%) rename CRVResponse/{ => test}/singleCounter/genconfig_across.txt (100%) rename CRVResponse/{ => test}/singleCounter/genconfig_dicounter_across.txt (100%) rename CRVResponse/{ => test}/singleCounter/genconfig_point.txt (100%) rename CRVResponse/{ => test}/singleCounter/geom.txt (100%) rename CRVResponse/{ => test}/singleCounter/geom_dicounter.txt (100%) rename CRVResponse/{ => test}/singleCounter/singleCounter.fcl (100%) rename CRVResponse/{ => test}/singleCounter/singleCounter_across.fcl (100%) rename CRVResponse/{ => test}/singleCounter/singleCounter_darkNoise.fcl (100%) rename CRVResponse/{ => test}/singleCounter/singleCounter_point.fcl (100%) rename CRVResponse/{ => test}/singleModule/genconfig.txt (100%) rename CRVResponse/{ => test}/singleModule/geom.txt (100%) rename CRVResponse/{ => test}/singleModule/singleModule.fcl (100%) diff --git a/CRVResponse/standalone/wls-build/build.sh b/CRVResponse/standalone/wls-build/build.sh deleted file mode 100755 index dc545edcc1..0000000000 --- a/CRVResponse/standalone/wls-build/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -/cvmfs/mu2e.opensciencegrid.org/artexternals/cmake/v3_17_3/Linux64bit+3.10-2.17/bin/cmake -DGeant4_DIR=/cvmfs/mu2e.opensciencegrid.org/artexternals/geant4/v4_10_6_p02b/Linux64bit+3.10-2.17-e19-mt-prof/lib64/Geant4-10.6.2/ ../wls - -# echo "CXX_DEFINES += " $1 >> CMakeFiles/wls.dir/flags.make - -make - diff --git a/CRVResponse/standalone/wls-build/photonMap.root b/CRVResponse/standalone/wls-build/photonMap.root deleted file mode 100644 index cb45a3f2c21e389dbde5ac092bb972008b50815b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7713 zcmb_>RZv|~knP3YgS!WJcMA~Q-QC?Cf?IHxK+s?b?(TkZclV3?kW9^d%$utBKHjP7 zI=#=X)vJH@KC5~;J27f z&VSqapKAcrU)(<|0O0!p6aI*Q_>XRF{%=je68+^SZ}^9o`p3Qb7Z0f_#rg&Azp05l znV1=wIp|oKc|V&Q8M}P;qG4cRqxr9o+On|YFn|VffG5~lT7c#30pTF=1-e|N;&TW? zK+~;oXsrupCR?k0q*up+3v`TLI#!X~*0yt5!!*%8mBldef^lWt4>t);3{%rGsn7N? zRWYs%d$7vOi78~tqu&#SPNjaGm>M1to2;C?u3pDxN{6mfCMPO*`sH2RKi+x;2u@!6 zbzs}1c3KzA&(3Ax*s0QT3x9rHhM*w=Xl{> zpQ*29@;97AS>UXKr^D5>AWH~mPk#=j>VeF2ZcOJp){chO@eIloFlSldt9CN6M$ijg z^9wu1EFMUQdUuMwf7#u0iPo_{(Vg=(dy$aK_t8FQ8R+ZIkPG+VVmyl_Bx))Xlhcq0 zS6H9jih*6jlM+8M)9V~5P;mzpoG{lSs#l%*xvNY=`s8XS%TN>1y_V11B8=LYx6`#X z-iG`k#lPQc>G(o#l=S8$HtbeUW6*h}h;mnIcYT(nAZHj*kMiJ8m{)Ez^tO7x@pR$* z9OA!vSG4!&{&0oD!1V01IC(9Vl-0R9JXZY!9FG?HZ{ zk`$?JlIyX+dFSHwiM-6L5yaoFV-vP&Z?>@PDqA^Y&IN20yWK0Fm(du2+1B`4S&f4H zR`%OT<>Wv>pwrS;cg5Svczdn8dt)k^;ndg5Z$RAr{FlV)8@&orW~eTgZzzHI>R7rF z4VWRr=p+MYp*|9i%I_9a8+y1|}4y2op}M6>ggl)_EhZyfDu2G-gK(=n9}8p)&S(tmCNSC$xC3opE4W z_pW|N+9u>#@ObXGI9I+(29}%GHxwV+sSzGXG^V?Z}=~!Fp(3GiQnNF4(Fm}Dk z9j{X=X|_nuIePSn4`3}5WWVv6jL(8q(8)fy&^vf+U|6bZ{|z2zc7k`v8SalVbiwQA zR=(rW8ShaY$!ruJ&E>Aw=3zVTF$i3G-TR(3PqDDhbx@@@+hi}L-d*pcUfXW|n%P&# zA*WlK?jKs^uM?aSIfTu$#`WnG_wl8-4f!Uw+CU5XTSOyH+{0p7rLVz zcatmX_q-o&r;^B54Q6v$YYvJZ*bUvJ$3lT*Q<9w*`^&p*Lq8~?UxH=)U@bP8E;}q% zg?ZE)p$P~{pt;JfT@;K>e0)Ww_3KE}YYa%mH5IN2^8 z61fMtcEHPZf^`@oVjw$w{k09xEqXR||3HA#GD5A9JUK>deG1cKN{9a<6tJ%|t%_bb z3f!_f_gl$p?H%+ZQnC4go{P;Zi{KkTQUtHQV={?EzYyx3#D@)*c z5}mtOg6$sY3cEH)vXiHw81{6&t#1O~G5d59t9qEV-8++hgu=6UCq!CWkZgRs{xdW+VLT+f_v(5K;y&5EA5;t1#p4$w{VJezd_s>%62lbUtp22%fjd zBRa4a3Fq*xez{1dIhnDt7yj_R)Slo_qwFYat0RT_byf1SN8nw^%UqB%wH(k&09YyT zLs0s=VE=cB36I9flu0(!YE{bT;vxQntUfB^>`tz6f@kzh$%8&Gcpc!Zu18oE9@fHmof}d)S$>(I2)e2oJj^H_m zRbkDy&%r#HogF#2Q!UYo)pd0tpkLfS)x31iMk$J(%JnQ>m=ATSQmwT}0wkIswcnNA zR~2yg8N1tW%BqhqFSfP5l>Ls9KB?kH>B$S?w?4PlE)VnC2tg6n-fP4F<`Y<zUallY|B2Z0nt1UhH7e1_Nm9MtJQ5!Huec^lj zc)|wax!Iz*K&oCj3@qvVRj>Y$;bX^3DsmftdAhGv%MC z`A`SaTmRI7@LzTCSLy&vp;Tq9TwD=VT%FB~?97~{?adv~#U0#?ZM{frt?X^gOg~;O zt{9P-+#}*zEMNN}Nb6%UScdr=rX0#L*A$yUC6) ztqn3Z&+jqTw`x!j@^ye^OD13)B3K4LNlw2VO_E3`K_D%Ek)9!@(I$b7g0{r}#9+w& z8U3f_D_!Vw4qL5{M|JA1zP9s80r}~PvwH`R#Y8qwyq1>hK5?nIz&GPdIJ4D)+{O(t znn}qZJ+0p%Y`Hra{;vXfe>5ntY?oT173Eiuk2B*+o>*ct2PJ$wSRMVpIF7N)cdED-h6$7hk@@E{G7F1OVlWgOIMtgr z-BFF3G#Mi&nj^3Vp?C4w26kEF4Vp|7WLshgGJndS$RyAmh_MpzDc&AU{y zpRv_GbI{0nP5e2>nmz6PZG~&+{iAhv$!+GAEZVY2Vt}=Z6PLS_z6rx>HPK}xwx?Z< zifFo*jas_7FuVE0 zjqwbX5~b%B(Dgv?hTJ>OXj|aBoJ;~JO>~5bqK2dhB6Zun0$*fCs#$Jo?M$au8L2Q| zIeLtiszb|0wTF4_{^6}T;B8&!O2EJ*)0>4~pmRp~&s&!0Oc1-Al_oGY@I+wLGj#7& z`G6z{rKf~awaMI%#Cyn&#!rzHB5*RApIAPEL@MPl$B!sE{)o@KE;|+c#SdCiX>aFb zxK=z&LKUqB=8xg^`LBi}4vlj6E=TuX{h(q5mS^Q27%B6))az30>y$x@!lHqLsF=wP zNF*f0REvVcij$=q9fky-kow(RX(CvN?bvNY(LfB^?OQmL&9|0XMip0fPKf(&-KpDegjtRO6L#!} z?ZonL&|EfXuXRN?3w$}N7A;dGOPSA1i9sa?;@{3ko%2>conLJ8)q-Of!-y%ON`;X? z&F*nC$9GIA^Ly)g)(Me9qw|iTKdDkS#kjp)>KQz8p)=l&?I5L2D|k3ZT0ps!RW&C! zP_c%Ml@@Aa3dWW{6Ec@E$JNjb93@KTmy{nhOF`$3upZ-{Sc=c|9-D|KVQlB-cRAXY z(R`Kft*)ucuVui6%S=hITwyS@u@yzT6^EHBFhX0KQ|@VLbit8=w{DBYWBzt{0^B4V zp1SK2q!ChrOEY_Y`!$*Kh}9VsWnf)KwQ*>R?jQvPgIT2|&ZNXN5ruJ2b*5~KvC4VE z^(z*scFQ}>sFi(Dc8F%#S?UeF+LrRB=pZ*Wan$MP#SRX(1*qX~>>bx}61i`G~2m3 z{5%f!DnS9K5}8K9QoiCxcPa7HpO~ zHG7bpEXI+3fy#iDDpXobIA3!g>xcAL*-_DRI#OY3e|=u{)!m*z(R^IKQ4|GR$8p=Y zNeMgak^+S&HFM2Dym6PJ=z?Sda*C!JA`HzVma;k7sAhyACb%>_ zrRHrttavhY#jo`OMdl$ZRoO*Gjgq*5rq%6ri}fU`hOH%%W0T=qOfu8-uSr^)a((Hl zNVi3sufMmEznno+Y3uJ5cg2$|w!G(mWJv8HLeQ78!Ouy>v2N|lEf>Eu|1~}|kyEjp z+KN030Gh?BVi;qGF2>-%qh}%cEI0JdJ1%<;hx$nLszKR{Y_blxS^I5NYE)KE*P(rn zzRSdVjzEka!eB3TdJ#M7XW7jDwG{isGhn5oszslhg~R6|f+m24y4V6G>t4v`I83($bAzS*h#Tz-C}C{EONktqOyVPk!Rx*ag2Rz9jXbGVnRp+LS%eK zE--8(I2+a?PXD1t|K&$m3%z24<4rfax=m_dp5@PT62wnwtoL&gLhq}C^zujZk#t5GIBy1oe z)3Wh`##`{KIBD@OsrFD5MK#W#WiAT2?{*gJER%fa$y$~R_}=g|;t{jcpdNOtHvM6! zwwG@NB5&i4Mv^E!)?GsoDJj4}b?77MeGn6mYWr8`4O!cxD6%_+i^4@R7-bd_eWoGu zRnJ$;XU13~o^sroEP1*th*UJHF;XwmIP8KW&_UM?fhhXFx#w;>#I3pn}f~e!8D+opzbHq4egy6!BN*O^E!jcPv%It*0r?SKHmQ z?WE>y2P$mr}o`!s9O7Yo(8sLI=p_$-r#65vNR|5XG%HlcBZ=D^7Ew7N|FVRpV)D^ zIT=i(%~>b#e6>QhjnUd^^Yi4Z2?~eKsupXlgK|ObJC20LSUqIH&v6v-nqRXW;mBLT zVK%m0V+fl#a#0(%Py^5xR)HF~uVE6iz|liqTu=C)Ot==V;!muD>N2hywv>NR;CPJ@ z9=0N^s`JxGPDI1kghBA^&d4W~a1DWdZQi=PTT8%xG};B{!O{4=&aSCE%#dQ6blv1*;d zHDRUT>3;Q$V1G-I1hU0w!7Yo=J19^HhN$ZvUmK%lWXBiBK)v0GAA5j*(bVpkLQh#N z1eWf=sVPPl?jcASizf*5T050qq-}f?zuC?yxk8>bp3IQ1AEHHwMW^J zhBSUHfRxn0l=wX_)>dahwq}0d7x3t`Pmii^NrTcT3!OUwCwJD)-3Qw?XB%Oa_*uw5 zvs-DX8fxY%?~#GB^gFUfs1D^gU~1+5f}x)EwaEo`I|Xhnh4k|%DnHFyJKOm84iHU% zAMD^hpXaH=cmVh(3d(Uu#NT6Z;fT?PiFJ8b9B9S4yj(s{6QMLNDQhkb_E#|gmw4PGur^^MQ;jt@%qm*z`rXhmHj&^&mjRc;;YdmObjGoi{O!<@kv(BTUz}9R z$@noOKGu^C3l9_4O6!8O;hGvb(QjNBdSAdb*b@#xSK@`W({)i9o(82Hn5GS%yQ^)+ ziVdHFGlp^2x3ljcCXsW?X4lLglx_{7L4EX9SN43G_PpB4aMr>X#&2yEn2RpJppqg8 zTuj{X!!U`^{uMd+6Xuislc9A3t6}T8=VF{o!YsP{QK?__r9M9AY2u-_ zgjoeXlP}rIl=^<2hah7WT&?r|W44B_88djna(ZFQ^5`XHfRU56?bSXRy(}GGG1^I! zH2X*59^3`t)Io`nNR$S*v>v)p=&@CnP~u5{HK6ASF_Xx-_Qo;PfOKbt_@=ph`d}+E z#^U{Oz0oHA5CvA>5wdLQaM@Cc=c5?Zswwf&wf-kGHK(!opAyOUAwGADF`#fUpUC?O zW%&#O-}~;H$=~9lE1ypulzT_@Z{$^6^w)v1FAqxN%lm zuHOMkt9>ja!H8P6PQy%RyW$sX40|i57_}wjZ@pOXR?iUoVOMObVRI%gHYF}>UEK5U zN(cMz?Xg)$lP}fxoH4jk0{jp=q#0xj2N#QfsO)o&|l)&Qtx%K7kZ^~w{62YBb`ag=@r7>`455nATMfq?qt zPp=lalOw;G)-yi=72ZBSps=rob9IDsX~uP|(MZ0Q22vf3r-E1v$nT)k*56#cA;T!P zy4!?$V10WdQ6lTg#$fKAp%yRuc(j%}@tiP6XdL`H?|vQSnJ~@P2&>BsU-MthsATm$ z?5|pCN}@T*^jA({yIoIyy*?;s+0J-KI6*yAxQVjc9ZtrxmJvH- zGvpubN=3PofW(bmQ??X+_iO`;QrnGTgi%C;-v4UE%0Pg=(8tk;c>Eq>lxWcTzHRhZ{A?%G1}739XG@&Oes?_^4K; z1`;KJ+S2N}N_e8p$uDWT4&RzbeV`oU@1mJBF&RKd0)Gf~5SBLAhLH;!MC?xOXlObm zezuXvd1Ap0xjh{vlnBM;;$z*mg)F09~ z4tFqetLWnW-(X(6NTNd??#*Z^cNo=_z%l~yhH#1 diff --git a/CRVResponse/standalone/wls-build/singlePEWaveform.txt b/CRVResponse/standalone/wls-build/singlePEWaveform.txt deleted file mode 100644 index 508d182e27..0000000000 --- a/CRVResponse/standalone/wls-build/singlePEWaveform.txt +++ /dev/null @@ -1,4831 +0,0 @@ -0.0000 9.5533E-23 -1.0000 1.1322E-22 -1.0010 1.1324E-22 -2.0820 1.3269E-22 -2.0830 1.3271E-22 -2.0832 1.3271E-22 -3.0830 1.5065E-22 -3.0840 1.5067E-22 -4.1620 1.6961E-22 -4.1630 1.6963E-22 -5.1630 1.8655E-22 -5.1640 1.8657E-22 -6.2490 2.0397E-22 -6.2500 2.0398E-22 -7.2500 2.1893E-22 -7.2510 2.1894E-22 -8.3320 2.3377E-22 -8.3330 2.3378E-22 -8.4968 2.3589E-22 -9.3330 2.4615E-22 -9.3340 2.4617E-22 -9.5820 2.4903E-22 -9.5820 7.0223E-22 -9.5820 7.2735E-21 -9.5822 -1.1758E-16 -9.5823 2.2274E-16 -9.5824 1.0210E-15 -9.5826 2.2771E-15 -9.5827 3.9911E-15 -9.5829 6.1631E-15 -9.5830 8.7929E-15 -9.5830 9.0700E-15 -9.5830 9.6451E-15 -9.6029 -3.1609E-09 -9.6227 1.6828E-09 -9.6426 1.4531E-08 -9.6624 3.5384E-08 -9.6822 6.4241E-08 -9.7021 1.0110E-07 -9.7219 1.4597E-07 -9.8609 8.9122E-07 -10.0556 3.0188E-06 -10.1751 5.0160E-06 -10.2089 5.8341E-06 -10.2428 6.7376E-06 -10.2766 7.7266E-06 -10.3105 8.8009E-06 -10.3443 9.9605E-06 -10.3782 1.1206E-05 -10.4120 1.2536E-05 -10.4123 1.2548E-05 -10.4127 1.2565E-05 -10.4130 1.2577E-05 -10.4137 1.2607E-05 -10.4144 1.2636E-05 -10.4152 1.2666E-05 -10.4159 1.2695E-05 -10.4166 1.2725E-05 -10.4173 1.2755E-05 -10.4180 1.2785E-05 -10.4232 1.2999E-05 -10.4334 1.3435E-05 -10.4539 1.4339E-05 -10.4948 1.6262E-05 -10.5546 1.9385E-05 -10.6741 2.6895E-05 -10.9132 4.4403E-05 -10.9349 4.6211E-05 -10.9781 5.0250E-05 -11.0647 5.9067E-05 -11.2408 7.8462E-05 -11.2688 8.1932E-05 -11.2894 8.4527E-05 -11.3100 8.7169E-05 -11.3306 8.9860E-05 -11.3512 9.2598E-05 -11.3718 9.5384E-05 -11.3924 9.8218E-05 -11.4130 1.0110E-04 -11.4133 1.0114E-04 -11.4137 1.0120E-04 -11.4140 1.0124E-04 -11.4608 1.0800E-04 -11.5076 1.1509E-04 -11.5544 1.2249E-04 -11.6012 1.3022E-04 -11.6480 1.3826E-04 -11.6948 1.4663E-04 -11.7416 1.5532E-04 -11.8066 1.6664E-04 -11.8715 1.7860E-04 -11.9365 1.9120E-04 -12.0014 2.0444E-04 -12.0664 2.1831E-04 -12.1313 2.3283E-04 -12.1963 2.4798E-04 -12.2395 2.5814E-04 -12.2828 2.6855E-04 -12.3260 2.7921E-04 -12.3693 2.9012E-04 -12.4125 3.0128E-04 -12.4558 3.1269E-04 -12.4990 3.2435E-04 -12.4993 3.2443E-04 -12.4997 3.2454E-04 -12.5000 3.2462E-04 -12.5007 3.2481E-04 -12.5014 3.2501E-04 -12.5022 3.2521E-04 -12.5029 3.2540E-04 -12.5036 3.2560E-04 -12.5043 3.2579E-04 -12.5050 3.2599E-04 -12.5102 3.2739E-04 -12.5185 3.2969E-04 -12.5268 3.3196E-04 -12.5380 3.3504E-04 -12.5510 3.3865E-04 -12.5720 3.4454E-04 -12.6016 3.5295E-04 -12.7299 3.9059E-04 -12.8583 4.3024E-04 -12.9866 4.7192E-04 -13.1150 5.1562E-04 -13.2433 5.6135E-04 -13.3717 6.0910E-04 -13.5000 6.5887E-04 -13.5003 6.5899E-04 -13.5007 6.5915E-04 -13.5010 6.5927E-04 -13.6473 7.1875E-04 -13.7936 7.8067E-04 -13.9399 8.4504E-04 -14.0861 9.1186E-04 -14.2324 9.8113E-04 -14.3787 1.0529E-03 -14.5250 1.1270E-03 -14.5330 1.1311E-03 -14.5820 1.1566E-03 -14.5821 1.1566E-03 -14.5823 1.1567E-03 -14.5827 1.1569E-03 -14.5830 1.1571E-03 -14.5839 1.1575E-03 -14.5847 1.1580E-03 -14.5856 1.1584E-03 -14.5864 1.1589E-03 -14.5873 1.1593E-03 -14.5881 1.1598E-03 -14.5890 1.1602E-03 -14.5936 1.1627E-03 -14.5986 1.1653E-03 -14.6044 1.1683E-03 -14.6109 1.1717E-03 -14.6192 1.1761E-03 -14.6294 1.1814E-03 -14.6431 1.1887E-03 -14.6617 1.1985E-03 -14.6910 1.2141E-03 -14.8184 1.2832E-03 -14.9459 1.3538E-03 -15.0733 1.4260E-03 -15.2007 1.4998E-03 -15.3281 1.5752E-03 -15.4556 1.6521E-03 -15.5830 1.7306E-03 -15.5831 1.7306E-03 -15.5833 1.7307E-03 -15.5837 1.7310E-03 -15.5840 1.7312E-03 -15.7380 1.8284E-03 -15.8920 1.9274E-03 -16.0460 2.0283E-03 -16.2000 2.1310E-03 -16.3540 2.2356E-03 -16.5080 2.3420E-03 -16.6620 2.4502E-03 -16.6621 2.4503E-03 -16.6623 2.4504E-03 -16.6626 2.4506E-03 -16.6629 2.4509E-03 -16.6630 2.4509E-03 -16.6636 2.4513E-03 -16.6641 2.4517E-03 -16.6647 2.4521E-03 -16.6653 2.4525E-03 -16.6659 2.4529E-03 -16.6664 2.4533E-03 -16.6670 2.4537E-03 -16.6711 2.4566E-03 -16.6750 2.4594E-03 -16.6805 2.4633E-03 -16.6860 2.4672E-03 -16.6936 2.4726E-03 -16.7019 2.4785E-03 -16.7137 2.4869E-03 -16.7278 2.4969E-03 -16.7500 2.5128E-03 -16.7826 2.5360E-03 -16.8476 2.5828E-03 -16.9641 2.6671E-03 -17.0806 2.7522E-03 -17.1971 2.8379E-03 -17.3136 2.9244E-03 -17.4300 3.0116E-03 -17.5465 3.0995E-03 -17.6630 3.1881E-03 -17.6631 3.1882E-03 -17.6633 3.1884E-03 -17.6637 3.1887E-03 -17.6640 3.1889E-03 -17.8190 3.3080E-03 -17.9740 3.4277E-03 -18.1290 3.5481E-03 -18.2840 3.6692E-03 -18.4390 3.7910E-03 -18.5940 3.9135E-03 -18.7490 4.0367E-03 -18.7493 4.0369E-03 -18.7497 4.0372E-03 -18.7500 4.0375E-03 -18.7504 4.0378E-03 -18.7509 4.0381E-03 -18.7513 4.0385E-03 -18.7517 4.0388E-03 -18.7522 4.0392E-03 -18.7526 4.0395E-03 -18.7531 4.0399E-03 -18.7562 4.0424E-03 -18.7600 4.0454E-03 -18.7647 4.0491E-03 -18.7699 4.0533E-03 -18.7765 4.0585E-03 -18.7841 4.0646E-03 -18.7939 4.0724E-03 -18.8062 4.0821E-03 -18.8234 4.0958E-03 -18.8483 4.1157E-03 -18.8920 4.1506E-03 -18.9795 4.2204E-03 -19.1545 4.3603E-03 -19.2396 4.4284E-03 -19.3246 4.4965E-03 -19.4097 4.5646E-03 -19.4948 4.6327E-03 -19.5799 4.7008E-03 -19.6649 4.7689E-03 -19.7500 4.8370E-03 -19.7503 4.8373E-03 -19.7507 4.8376E-03 -19.7510 4.8378E-03 -19.8468 4.9144E-03 -19.9425 4.9908E-03 -20.0383 5.0671E-03 -20.1340 5.1433E-03 -20.2298 5.2195E-03 -20.3255 5.2955E-03 -20.4213 5.3714E-03 -20.4373 5.3840E-03 -20.8320 5.6940E-03 -20.8323 5.6943E-03 -20.8327 5.6946E-03 -20.8330 5.6948E-03 -20.8336 5.6953E-03 -20.8342 5.6958E-03 -20.8349 5.6963E-03 -20.8355 5.6967E-03 -20.8361 5.6972E-03 -20.8367 5.6977E-03 -20.8374 5.6982E-03 -20.8412 5.7012E-03 -20.8452 5.7043E-03 -20.8504 5.7084E-03 -20.8560 5.7128E-03 -20.8634 5.7185E-03 -20.8717 5.7250E-03 -20.8830 5.7338E-03 -20.8971 5.7447E-03 -20.9182 5.7611E-03 -20.9499 5.7858E-03 -21.0134 5.8349E-03 -21.1305 5.9254E-03 -21.2476 6.0154E-03 -21.3646 6.1047E-03 -21.4817 6.1935E-03 -21.5988 6.2818E-03 -21.7159 6.3694E-03 -21.8330 6.4565E-03 -21.8333 6.4567E-03 -21.8337 6.4570E-03 -21.8340 6.4572E-03 -21.9880 6.5708E-03 -22.1420 6.6830E-03 -22.2960 6.7938E-03 -22.4500 6.9033E-03 -22.6040 7.0113E-03 -22.7580 7.1181E-03 -22.9120 7.2234E-03 -22.9123 7.2236E-03 -22.9127 7.2239E-03 -22.9130 7.2241E-03 -22.9130 7.2241E-03 -22.9135 7.2244E-03 -22.9140 7.2247E-03 -22.9145 7.2251E-03 -22.9150 7.2254E-03 -22.9155 7.2258E-03 -22.9160 7.2261E-03 -22.9165 7.2264E-03 -22.9199 7.2288E-03 -22.9238 7.2314E-03 -22.9288 7.2348E-03 -22.9342 7.2384E-03 -22.9411 7.2431E-03 -22.9490 7.2484E-03 -22.9595 7.2556E-03 -22.9725 7.2643E-03 -22.9915 7.2771E-03 -23.0190 7.2955E-03 -23.0708 7.3301E-03 -23.1911 7.4100E-03 -23.3114 7.4888E-03 -23.4317 7.5665E-03 -23.5520 7.6432E-03 -23.6724 7.7189E-03 -23.7927 7.7934E-03 -23.9130 7.8670E-03 -23.9133 7.8671E-03 -23.9137 7.8674E-03 -23.9140 7.8676E-03 -24.0690 7.9605E-03 -24.2240 8.0515E-03 -24.3790 8.1404E-03 -24.5340 8.2274E-03 -24.6890 8.3123E-03 -24.8440 8.3952E-03 -24.9990 8.4762E-03 -24.9993 8.4763E-03 -24.9997 8.4765E-03 -25.0000 8.4767E-03 -25.0000 8.4767E-03 -25.0005 8.4769E-03 -25.0009 8.4772E-03 -25.0014 8.4774E-03 -25.0019 8.4777E-03 -25.0024 8.4779E-03 -25.0028 8.4782E-03 -25.0033 8.4784E-03 -25.0067 8.4801E-03 -25.0108 8.4822E-03 -25.0158 8.4848E-03 -25.0214 8.4877E-03 -25.0284 8.4913E-03 -25.0367 8.4955E-03 -25.0474 8.5010E-03 -25.0610 8.5079E-03 -25.0807 8.5179E-03 -25.1105 8.5329E-03 -25.1665 8.5610E-03 -25.5518 8.7468E-03 -26.0000 8.9457E-03 -26.0003 8.9459E-03 -26.0007 8.9460E-03 -26.0010 8.9462E-03 -26.0022 8.9467E-03 -26.1565 9.0107E-03 -26.3107 9.0724E-03 -26.4650 9.1318E-03 -26.6192 9.1890E-03 -26.7735 9.2439E-03 -26.9277 9.2965E-03 -27.0820 9.3469E-03 -27.0823 9.3470E-03 -27.0827 9.3471E-03 -27.0830 9.3472E-03 -27.0834 9.3474E-03 -27.0839 9.3475E-03 -27.0843 9.3476E-03 -27.0848 9.3478E-03 -27.0852 9.3479E-03 -27.0856 9.3481E-03 -27.0861 9.3482E-03 -27.0892 9.3492E-03 -27.0938 9.3507E-03 -27.0989 9.3523E-03 -27.1050 9.3542E-03 -27.1120 9.3564E-03 -27.1211 9.3593E-03 -27.1321 9.3627E-03 -27.1474 9.3675E-03 -27.1685 9.3740E-03 -27.2035 9.3848E-03 -27.2697 9.4047E-03 -27.6742 9.5182E-03 -28.0830 9.6164E-03 -28.0833 9.6164E-03 -28.0837 9.6165E-03 -28.0840 9.6166E-03 -28.2380 9.6492E-03 -28.3920 9.6796E-03 -28.5460 9.7076E-03 -28.7000 9.7334E-03 -28.8540 9.7570E-03 -29.0080 9.7782E-03 -29.1620 9.7972E-03 -29.1623 9.7973E-03 -29.1627 9.7973E-03 -29.1630 9.7973E-03 -29.1637 9.7974E-03 -29.1644 9.7975E-03 -29.1652 9.7976E-03 -29.1659 9.7977E-03 -29.1666 9.7977E-03 -29.1673 9.7978E-03 -29.1680 9.7979E-03 -29.1732 9.7985E-03 -29.1782 9.7991E-03 -29.1850 9.7999E-03 -29.1920 9.8006E-03 -29.2020 9.8018E-03 -29.2134 9.8030E-03 -29.2306 9.8049E-03 -29.2533 9.8073E-03 -29.2954 9.8117E-03 -29.3749 9.8193E-03 -29.8532 9.8545E-03 -29.8592 9.8548E-03 -29.8832 9.8559E-03 -30.1630 9.8656E-03 -30.1633 9.8657E-03 -30.1637 9.8657E-03 -30.1640 9.8657E-03 -30.3190 9.8678E-03 -30.4740 9.8679E-03 -30.6290 9.8659E-03 -30.7840 9.8618E-03 -30.9390 9.8556E-03 -31.0940 9.8473E-03 -31.2490 9.8370E-03 -31.2493 9.8369E-03 -31.2497 9.8369E-03 -31.2500 9.8369E-03 -31.2507 9.8368E-03 -31.2514 9.8368E-03 -31.2522 9.8367E-03 -31.2529 9.8367E-03 -31.2536 9.8366E-03 -31.2543 9.8366E-03 -31.2550 9.8365E-03 -31.2602 9.8361E-03 -31.2662 9.8357E-03 -31.2736 9.8351E-03 -31.2818 9.8345E-03 -31.2928 9.8336E-03 -31.3069 9.8325E-03 -31.3276 9.8309E-03 -31.3588 9.8283E-03 -31.4198 9.8230E-03 -31.7888 9.7851E-03 -31.8270 9.7805E-03 -31.8651 9.7757E-03 -31.9033 9.7709E-03 -31.9414 9.7660E-03 -31.9795 9.7610E-03 -32.0177 9.7559E-03 -32.0558 9.7507E-03 -32.2500 9.7221E-03 -32.2503 9.7221E-03 -32.2507 9.7220E-03 -32.2510 9.7220E-03 -32.4054 9.6970E-03 -32.5599 9.6703E-03 -32.7143 9.6420E-03 -32.8687 9.6119E-03 -33.0231 9.5801E-03 -33.1776 9.5466E-03 -33.3320 9.5114E-03 -33.3323 9.5114E-03 -33.3327 9.5113E-03 -33.3330 9.5112E-03 -33.3337 9.5110E-03 -33.3344 9.5109E-03 -33.3352 9.5107E-03 -33.3359 9.5105E-03 -33.3366 9.5104E-03 -33.3373 9.5102E-03 -33.3380 9.5100E-03 -33.3432 9.5088E-03 -33.3511 9.5070E-03 -33.3593 9.5050E-03 -33.3702 9.5025E-03 -33.3832 9.4994E-03 -33.4033 9.4946E-03 -33.4325 9.4876E-03 -33.6037 9.4452E-03 -34.3330 9.2454E-03 -34.3333 9.2454E-03 -34.3337 9.2452E-03 -34.3340 9.2451E-03 -34.4880 9.1986E-03 -34.6420 9.1508E-03 -34.7960 9.1017E-03 -34.9500 9.0514E-03 -35.1040 8.9998E-03 -35.2580 8.9469E-03 -35.4120 8.8929E-03 -35.4123 8.8927E-03 -35.4127 8.8926E-03 -35.4130 8.8925E-03 -35.4137 8.8922E-03 -35.4144 8.8920E-03 -35.4152 8.8917E-03 -35.4159 8.8915E-03 -35.4166 8.8912E-03 -35.4173 8.8910E-03 -35.4180 8.8907E-03 -35.4232 8.8889E-03 -35.4334 8.8852E-03 -35.4459 8.8808E-03 -35.4623 8.8749E-03 -35.4839 8.8672E-03 -35.5231 8.8531E-03 -35.6014 8.8246E-03 -35.7174 8.7820E-03 -35.8333 8.7389E-03 -35.9493 8.6952E-03 -36.0652 8.6509E-03 -36.1811 8.6061E-03 -36.2971 8.5606E-03 -36.4130 8.5146E-03 -36.4131 8.5146E-03 -36.4133 8.5145E-03 -36.4137 8.5143E-03 -36.4140 8.5142E-03 -37.4990 8.0597E-03 -37.4993 8.0596E-03 -37.4997 8.0594E-03 -37.5000 8.0593E-03 -37.5007 8.0590E-03 -37.5014 8.0587E-03 -37.5022 8.0583E-03 -37.5029 8.0580E-03 -37.5036 8.0577E-03 -37.5043 8.0574E-03 -37.5050 8.0571E-03 -37.5102 8.0548E-03 -37.5204 8.0504E-03 -37.5336 8.0446E-03 -37.5503 8.0373E-03 -37.5730 8.0273E-03 -37.6133 8.0096E-03 -37.6939 7.9740E-03 -37.8091 7.9228E-03 -37.9242 7.8714E-03 -38.0394 7.8196E-03 -38.1545 7.7675E-03 -38.2697 7.7151E-03 -38.3848 7.6623E-03 -38.5000 7.6093E-03 -38.5003 7.6092E-03 -38.5007 7.6090E-03 -38.5010 7.6088E-03 -38.6554 7.5372E-03 -38.8099 7.4651E-03 -38.9643 7.3927E-03 -39.1187 7.3199E-03 -39.2731 7.2467E-03 -39.4276 7.1731E-03 -39.5820 7.0992E-03 -39.5823 7.0991E-03 -39.5827 7.0989E-03 -39.5830 7.0987E-03 -39.5837 7.0984E-03 -39.5844 7.0980E-03 -39.5852 7.0977E-03 -39.5859 7.0973E-03 -39.5866 7.0970E-03 -39.5873 7.0967E-03 -39.5880 7.0963E-03 -39.5932 7.0939E-03 -39.6020 7.0896E-03 -39.6101 7.0857E-03 -39.6213 7.0804E-03 -39.6338 7.0744E-03 -39.6547 7.0643E-03 -39.6832 7.0506E-03 -39.7403 7.0232E-03 -39.8607 6.9651E-03 -39.9811 6.9069E-03 -40.1014 6.8487E-03 -40.2218 6.7903E-03 -40.3422 6.7318E-03 -40.4626 6.6733E-03 -40.5830 6.6146E-03 -40.5833 6.6144E-03 -40.5837 6.6143E-03 -40.5840 6.6141E-03 -40.7380 6.5389E-03 -40.8920 6.4637E-03 -41.0460 6.3884E-03 -41.2000 6.3132E-03 -41.3540 6.2379E-03 -41.5080 6.1627E-03 -41.6620 6.0874E-03 -41.6623 6.0873E-03 -41.6627 6.0871E-03 -41.6630 6.0869E-03 -41.6637 6.0866E-03 -41.6644 6.0862E-03 -41.6652 6.0859E-03 -41.6659 6.0855E-03 -41.6666 6.0852E-03 -41.6673 6.0848E-03 -41.6680 6.0845E-03 -41.6732 6.0820E-03 -41.6802 6.0785E-03 -41.6874 6.0750E-03 -41.6959 6.0708E-03 -41.7061 6.0659E-03 -41.7203 6.0590E-03 -41.7394 6.0496E-03 -41.7702 6.0346E-03 -41.8241 6.0083E-03 -42.2318 5.8098E-03 -42.6630 5.6010E-03 -42.6633 5.6009E-03 -42.6637 5.6007E-03 -42.6640 5.6006E-03 -42.8190 5.5258E-03 -42.9740 5.4514E-03 -43.1290 5.3772E-03 -43.2840 5.3033E-03 -43.4390 5.2297E-03 -43.5940 5.1564E-03 -43.7490 5.0833E-03 -43.7493 5.0832E-03 -43.7497 5.0830E-03 -43.7500 5.0829E-03 -43.7507 5.0825E-03 -43.7514 5.0822E-03 -43.7522 5.0819E-03 -43.7529 5.0815E-03 -43.7536 5.0812E-03 -43.7543 5.0808E-03 -43.7550 5.0805E-03 -43.7602 5.0781E-03 -43.7663 5.0752E-03 -43.7729 5.0721E-03 -43.7802 5.0687E-03 -43.7890 5.0645E-03 -43.8003 5.0592E-03 -43.8155 5.0521E-03 -43.8370 5.0421E-03 -43.8716 5.0258E-03 -43.9393 4.9942E-03 -44.0551 4.9402E-03 -44.1709 4.8864E-03 -44.2867 4.8328E-03 -44.4025 4.7794E-03 -44.5184 4.7263E-03 -44.6342 4.6734E-03 -44.7500 4.6207E-03 -44.7503 4.6206E-03 -44.7507 4.6204E-03 -44.7510 4.6203E-03 -44.7612 4.6157E-03 -44.9141 4.5465E-03 -45.0671 4.4778E-03 -45.2201 4.4096E-03 -45.3731 4.3418E-03 -45.5260 4.2745E-03 -45.6790 4.2077E-03 -45.8320 4.1413E-03 -45.8323 4.1412E-03 -45.8327 4.1410E-03 -45.8330 4.1409E-03 -45.8337 4.1406E-03 -45.8344 4.1403E-03 -45.8352 4.1400E-03 -45.8359 4.1397E-03 -45.8366 4.1393E-03 -45.8373 4.1390E-03 -45.8380 4.1387E-03 -45.8432 4.1365E-03 -45.8488 4.1341E-03 -45.8550 4.1314E-03 -45.8614 4.1286E-03 -45.8695 4.1252E-03 -45.8791 4.1210E-03 -45.8919 4.1155E-03 -45.9088 4.1082E-03 -45.9347 4.0971E-03 -45.9780 4.0785E-03 -46.0644 4.0416E-03 -46.4902 3.8619E-03 -46.5230 3.8483E-03 -46.5559 3.8346E-03 -46.5887 3.8210E-03 -46.6215 3.8074E-03 -46.6543 3.7939E-03 -46.6872 3.7803E-03 -46.7200 3.7668E-03 -46.8330 3.7204E-03 -46.8333 3.7203E-03 -46.8337 3.7202E-03 -46.8340 3.7200E-03 -46.9880 3.6574E-03 -47.1420 3.5953E-03 -47.2960 3.5339E-03 -47.4500 3.4730E-03 -47.6040 3.4128E-03 -47.7580 3.3531E-03 -47.9120 3.2941E-03 -47.9123 3.2940E-03 -47.9127 3.2938E-03 -47.9130 3.2937E-03 -47.9137 3.2934E-03 -47.9144 3.2931E-03 -47.9152 3.2929E-03 -47.9159 3.2926E-03 -47.9166 3.2923E-03 -47.9173 3.2920E-03 -47.9180 3.2918E-03 -47.9232 3.2898E-03 -47.9284 3.2878E-03 -47.9343 3.2856E-03 -47.9402 3.2833E-03 -47.9477 3.2805E-03 -47.9561 3.2773E-03 -47.9674 3.2730E-03 -47.9815 3.2676E-03 -48.0025 3.2597E-03 -48.0341 3.2477E-03 -48.0971 3.2240E-03 -48.4823 3.0809E-03 -48.5438 3.0584E-03 -48.6054 3.0361E-03 -48.6669 3.0138E-03 -48.7284 2.9916E-03 -48.7899 2.9696E-03 -48.8515 2.9476E-03 -48.9130 2.9257E-03 -48.9131 2.9257E-03 -48.9133 2.9256E-03 -48.9137 2.9255E-03 -48.9140 2.9254E-03 -49.0690 2.8708E-03 -49.2240 2.8168E-03 -49.3790 2.7636E-03 -49.5340 2.7109E-03 -49.6890 2.6590E-03 -49.8440 2.6076E-03 -49.9990 2.5570E-03 -49.9993 2.5569E-03 -49.9997 2.5568E-03 -50.0000 2.5567E-03 -50.0007 2.5564E-03 -50.0014 2.5562E-03 -50.0022 2.5560E-03 -50.0029 2.5557E-03 -50.0036 2.5555E-03 -50.0043 2.5553E-03 -50.0050 2.5550E-03 -50.0102 2.5534E-03 -50.0152 2.5517E-03 -50.0208 2.5499E-03 -50.0263 2.5481E-03 -50.0333 2.5459E-03 -50.0410 2.5434E-03 -50.0511 2.5401E-03 -50.0633 2.5362E-03 -50.0810 2.5305E-03 -50.1059 2.5225E-03 -50.1513 2.5079E-03 -50.2421 2.4790E-03 -50.4236 2.4220E-03 -50.6379 2.3553E-03 -50.6519 2.3510E-03 -50.6999 2.3364E-03 -50.9980 2.2466E-03 -51.0000 2.2461E-03 -51.0003 2.2460E-03 -51.0007 2.2458E-03 -51.0010 2.2458E-03 -51.1554 2.2003E-03 -51.3099 2.1555E-03 -51.4643 2.1113E-03 -51.6187 2.0678E-03 -51.7731 2.0249E-03 -51.9276 1.9827E-03 -52.0820 1.9411E-03 -52.0823 1.9410E-03 -52.0827 1.9409E-03 -52.0830 1.9408E-03 -52.0837 1.9406E-03 -52.0844 1.9404E-03 -52.0852 1.9402E-03 -52.0859 1.9400E-03 -52.0866 1.9399E-03 -52.0873 1.9397E-03 -52.0880 1.9395E-03 -52.0932 1.9381E-03 -52.0979 1.9368E-03 -52.1034 1.9354E-03 -52.1086 1.9340E-03 -52.1152 1.9322E-03 -52.1223 1.9304E-03 -52.1316 1.9279E-03 -52.1424 1.9250E-03 -52.1577 1.9209E-03 -52.1783 1.9155E-03 -52.2136 1.9062E-03 -52.2776 1.8894E-03 -52.3926 1.8595E-03 -52.5077 1.8299E-03 -52.6228 1.8006E-03 -52.7378 1.7717E-03 -52.8529 1.7432E-03 -52.9679 1.7150E-03 -53.0830 1.6872E-03 -53.0833 1.6871E-03 -53.0837 1.6870E-03 -53.0840 1.6869E-03 -53.2380 1.6502E-03 -53.3920 1.6142E-03 -53.5460 1.5787E-03 -53.7000 1.5438E-03 -53.8540 1.5095E-03 -54.0080 1.4758E-03 -54.1620 1.4427E-03 -54.1623 1.4427E-03 -54.1627 1.4426E-03 -54.1630 1.4425E-03 -54.1637 1.4424E-03 -54.1644 1.4422E-03 -54.1652 1.4421E-03 -54.1659 1.4419E-03 -54.1666 1.4418E-03 -54.1673 1.4416E-03 -54.1680 1.4414E-03 -54.1732 1.4404E-03 -54.1778 1.4394E-03 -54.1831 1.4382E-03 -54.1880 1.4372E-03 -54.1943 1.4359E-03 -54.2009 1.4345E-03 -54.2095 1.4326E-03 -54.2193 1.4306E-03 -54.2329 1.4277E-03 -54.2505 1.4240E-03 -54.2792 1.4180E-03 -54.3267 1.4080E-03 -54.4217 1.3884E-03 -55.1630 1.2418E-03 -55.1633 1.2418E-03 -55.1637 1.2417E-03 -55.1640 1.2416E-03 -55.3190 1.2127E-03 -55.4740 1.1843E-03 -55.6290 1.1564E-03 -55.7840 1.1291E-03 -55.9390 1.1023E-03 -56.0940 1.0760E-03 -56.2490 1.0503E-03 -56.2493 1.0502E-03 -56.2497 1.0501E-03 -56.2500 1.0501E-03 -56.2507 1.0500E-03 -56.2514 1.0499E-03 -56.2522 1.0497E-03 -56.2529 1.0496E-03 -56.2536 1.0495E-03 -56.2543 1.0494E-03 -56.2550 1.0493E-03 -56.2595 1.0485E-03 -56.2643 1.0477E-03 -56.2692 1.0469E-03 -56.2742 1.0461E-03 -56.2799 1.0452E-03 -56.2862 1.0442E-03 -56.2939 1.0429E-03 -56.3029 1.0414E-03 -56.3146 1.0395E-03 -56.3299 1.0370E-03 -56.3524 1.0334E-03 -56.3885 1.0276E-03 -56.4608 1.0160E-03 -56.5642 9.9957E-04 -56.6677 9.8337E-04 -56.7712 9.6738E-04 -56.8746 9.5162E-04 -56.9781 9.3608E-04 -57.0815 9.2076E-04 -57.1850 9.0565E-04 -57.1860 9.0551E-04 -57.2500 8.9628E-04 -57.2503 8.9623E-04 -57.2507 8.9618E-04 -57.2510 8.9613E-04 -57.4054 8.7423E-04 -57.5599 8.5278E-04 -57.7143 8.3176E-04 -57.8687 8.1119E-04 -58.0231 7.9107E-04 -58.1776 7.7138E-04 -58.3320 7.5214E-04 -58.3323 7.5211E-04 -58.3327 7.5206E-04 -58.3330 7.5202E-04 -58.3337 7.5193E-04 -58.3344 7.5184E-04 -58.3352 7.5175E-04 -58.3359 7.5167E-04 -58.3366 7.5158E-04 -58.3373 7.5149E-04 -58.3380 7.5140E-04 -58.3424 7.5086E-04 -58.3472 7.5028E-04 -58.3519 7.4969E-04 -58.3568 7.4910E-04 -58.3622 7.4843E-04 -58.3683 7.4768E-04 -58.3758 7.4676E-04 -58.3849 7.4566E-04 -58.3966 7.4422E-04 -58.4121 7.4234E-04 -58.4349 7.3957E-04 -58.4715 7.3514E-04 -58.5449 7.2637E-04 -58.6099 7.1872E-04 -58.6749 7.1112E-04 -58.7399 7.0356E-04 -58.8049 6.9605E-04 -58.8699 6.8858E-04 -58.9349 6.8116E-04 -58.9999 6.7378E-04 -59.3330 6.3753E-04 -59.3333 6.3750E-04 -59.3337 6.3746E-04 -59.3340 6.3742E-04 -59.4880 6.2131E-04 -59.6420 6.0554E-04 -59.7960 5.9013E-04 -59.9500 5.7507E-04 -60.1040 5.6037E-04 -60.2580 5.4602E-04 -60.4120 5.3203E-04 -60.4123 5.3200E-04 -60.4127 5.3196E-04 -60.4130 5.3194E-04 -60.4137 5.3187E-04 -60.4144 5.3181E-04 -60.4152 5.3174E-04 -60.4159 5.3168E-04 -60.4166 5.3161E-04 -60.4173 5.3155E-04 -60.4180 5.3148E-04 -60.4223 5.3110E-04 -60.4271 5.3068E-04 -60.4317 5.3026E-04 -60.4365 5.2984E-04 -60.4420 5.2934E-04 -60.4486 5.2875E-04 -60.4566 5.2804E-04 -60.4665 5.2716E-04 -60.4793 5.2602E-04 -60.4967 5.2448E-04 -60.5231 5.2215E-04 -60.5686 5.1816E-04 -60.6595 5.1030E-04 -61.0563 4.7707E-04 -61.4130 4.4901E-04 -61.4133 4.4899E-04 -61.4137 4.4896E-04 -61.4140 4.4894E-04 -61.5690 4.3728E-04 -61.7240 4.2589E-04 -61.8790 4.1478E-04 -62.0340 4.0395E-04 -62.1890 3.9339E-04 -62.3440 3.8311E-04 -62.4990 3.7310E-04 -62.4993 3.7308E-04 -62.4997 3.7305E-04 -62.5000 3.7304E-04 -62.5007 3.7299E-04 -62.5014 3.7294E-04 -62.5022 3.7290E-04 -62.5029 3.7285E-04 -62.5036 3.7281E-04 -62.5043 3.7276E-04 -62.5050 3.7271E-04 -62.5093 3.7244E-04 -62.5140 3.7215E-04 -62.5185 3.7186E-04 -62.5237 3.7153E-04 -62.5297 3.7115E-04 -62.5370 3.7069E-04 -62.5457 3.7013E-04 -62.5569 3.6943E-04 -62.5716 3.6850E-04 -62.5928 3.6717E-04 -62.6264 3.6507E-04 -62.6918 3.6103E-04 -63.0852 3.3754E-04 -63.5000 3.1445E-04 -63.5003 3.1443E-04 -63.5007 3.1441E-04 -63.5010 3.1439E-04 -64.5820 2.6148E-04 -64.5823 2.6147E-04 -64.5827 2.6145E-04 -64.5830 2.6144E-04 -64.5837 2.6141E-04 -64.5844 2.6138E-04 -64.5852 2.6134E-04 -64.5859 2.6131E-04 -64.5866 2.6128E-04 -64.5873 2.6125E-04 -64.5880 2.6122E-04 -64.5922 2.6103E-04 -64.5969 2.6082E-04 -64.6019 2.6060E-04 -64.6075 2.6035E-04 -64.6143 2.6006E-04 -64.6224 2.5970E-04 -64.6325 2.5925E-04 -64.6456 2.5867E-04 -64.6637 2.5788E-04 -64.6912 2.5668E-04 -64.7400 2.5457E-04 -64.8375 2.5041E-04 -65.5830 2.2067E-04 -65.5833 2.2066E-04 -65.5837 2.2065E-04 -65.5840 2.2064E-04 -66.6620 1.8403E-04 -66.6623 1.8402E-04 -66.6627 1.8400E-04 -66.6630 1.8399E-04 -66.6637 1.8397E-04 -66.6644 1.8395E-04 -66.6652 1.8393E-04 -66.6659 1.8391E-04 -66.6666 1.8388E-04 -66.6673 1.8386E-04 -66.6680 1.8384E-04 -66.6732 1.8368E-04 -66.6778 1.8354E-04 -66.6840 1.8335E-04 -66.6899 1.8317E-04 -66.6984 1.8291E-04 -66.7075 1.8263E-04 -66.7209 1.8222E-04 -66.7371 1.8172E-04 -66.7643 1.8090E-04 -66.8061 1.7964E-04 -66.8896 1.7716E-04 -67.3319 1.6451E-04 -67.3599 1.6374E-04 -67.6630 1.5566E-04 -67.6633 1.5565E-04 -67.6637 1.5564E-04 -67.6640 1.5564E-04 -68.7490 1.2986E-04 -68.7493 1.2986E-04 -68.7497 1.2985E-04 -68.7500 1.2984E-04 -68.7507 1.2983E-04 -68.7514 1.2981E-04 -68.7522 1.2979E-04 -68.7529 1.2978E-04 -68.7536 1.2976E-04 -68.7543 1.2975E-04 -68.7550 1.2973E-04 -68.7602 1.2962E-04 -68.7656 1.2950E-04 -68.7722 1.2936E-04 -68.7793 1.2921E-04 -68.7887 1.2900E-04 -68.7999 1.2876E-04 -68.8160 1.2842E-04 -68.8379 1.2795E-04 -68.8759 1.2714E-04 -68.9476 1.2563E-04 -69.3852 1.1673E-04 -69.7500 1.0977E-04 -69.7503 1.0976E-04 -69.7507 1.0976E-04 -69.7510 1.0975E-04 -70.8320 9.1183E-05 -70.8323 9.1178E-05 -70.8327 9.1172E-05 -70.8330 9.1167E-05 -70.8337 9.1156E-05 -70.8344 9.1144E-05 -70.8352 9.1133E-05 -70.8359 9.1121E-05 -70.8366 9.1110E-05 -70.8373 9.1098E-05 -70.8380 9.1087E-05 -70.8432 9.1006E-05 -70.8496 9.0904E-05 -70.8568 9.0789E-05 -70.8652 9.0656E-05 -70.8758 9.0488E-05 -70.8899 9.0265E-05 -70.9099 8.9950E-05 -70.9410 8.9463E-05 -71.8330 7.6251E-05 -71.8331 7.6250E-05 -71.8333 7.6247E-05 -71.8337 7.6241E-05 -71.8340 7.6237E-05 -72.9120 6.2019E-05 -72.9123 6.2015E-05 -72.9127 6.2010E-05 -72.9130 6.2007E-05 -72.9137 6.1998E-05 -72.9144 6.1989E-05 -72.9152 6.1980E-05 -72.9159 6.1971E-05 -72.9166 6.1962E-05 -72.9173 6.1953E-05 -72.9180 6.1944E-05 -72.9232 6.1880E-05 -72.9308 6.1785E-05 -72.9387 6.1688E-05 -72.9488 6.1562E-05 -72.9609 6.1413E-05 -72.9790 6.1188E-05 -73.0046 6.0872E-05 -73.0518 6.0293E-05 -73.1461 5.9145E-05 -73.5428 5.4403E-05 -73.9130 5.0135E-05 -73.9133 5.0132E-05 -73.9137 5.0127E-05 -73.9140 5.0124E-05 -74.9990 3.8321E-05 -74.9993 3.8318E-05 -74.9997 3.8314E-05 -75.0000 3.8311E-05 -75.0012 3.8298E-05 -75.0025 3.8285E-05 -75.0050 3.8258E-05 -75.0102 3.8204E-05 -75.0192 3.8110E-05 -75.0278 3.8020E-05 -75.0399 3.7894E-05 -75.0538 3.7750E-05 -75.0776 3.7502E-05 -75.1113 3.7152E-05 -75.1787 3.6455E-05 -75.5864 3.2299E-05 -75.6144 3.2018E-05 -76.0000 2.8189E-05 -76.0001 2.8188E-05 -76.0003 2.8186E-05 -76.0007 2.8182E-05 -76.0010 2.8179E-05 -77.0820 1.7867E-05 -77.0823 1.7865E-05 -77.0827 1.7861E-05 -77.0830 1.7858E-05 -77.0837 1.7851E-05 -77.0844 1.7845E-05 -77.0852 1.7838E-05 -77.0859 1.7831E-05 -77.0866 1.7825E-05 -77.0873 1.7818E-05 -77.0880 1.7811E-05 -77.0932 1.7764E-05 -77.1034 1.7669E-05 -77.1129 1.7581E-05 -77.1270 1.7450E-05 -77.1429 1.7303E-05 -77.1733 1.7023E-05 -77.2181 1.6609E-05 -77.3078 1.5785E-05 -77.4872 1.4148E-05 -77.7272 1.1971E-05 -77.7552 1.1719E-05 -78.0830 8.7929E-06 -78.0833 8.7902E-06 -78.0837 8.7867E-06 -78.0840 8.7840E-06 -79.1620 -5.4708E-07 -79.1623 -5.4962E-07 -79.1627 -5.5300E-07 -79.1630 -5.5554E-07 -79.1637 -5.6163E-07 -79.1644 -5.6771E-07 -79.1652 -5.7380E-07 -79.1659 -5.7989E-07 -79.1666 -5.8597E-07 -79.1673 -5.9206E-07 -79.1680 -5.9814E-07 -79.1732 -6.4141E-07 -79.1834 -7.2793E-07 -79.1942 -8.1929E-07 -79.2094 -9.4719E-07 -79.2277 -1.1018E-06 -79.2618 -1.3891E-06 -79.3195 -1.8737E-06 -79.7015 -5.0549E-06 -80.1630 -8.8269E-06 -80.1633 -8.8294E-06 -80.1637 -8.8326E-06 -80.1640 -8.8350E-06 -81.2490 -1.7387E-05 -81.2493 -1.7390E-05 -81.2497 -1.7393E-05 -81.2500 -1.7395E-05 -81.2501 -1.7396E-05 -81.2512 -1.7404E-05 -81.2525 -1.7414E-05 -81.2550 -1.7434E-05 -81.2602 -1.7473E-05 -81.2704 -1.7551E-05 -81.2824 -1.7643E-05 -81.2984 -1.7766E-05 -81.3190 -1.7924E-05 -81.3566 -1.8210E-05 -81.5719 -1.9840E-05 -82.2500 -2.4865E-05 -82.2503 -2.4867E-05 -82.2507 -2.4870E-05 -82.2510 -2.4872E-05 -83.3320 -3.2461E-05 -83.3323 -3.2463E-05 -83.3327 -3.2466E-05 -83.3330 -3.2468E-05 -83.3337 -3.2473E-05 -83.3344 -3.2478E-05 -83.3352 -3.2483E-05 -83.3359 -3.2487E-05 -83.3366 -3.2492E-05 -83.3373 -3.2497E-05 -83.3380 -3.2502E-05 -83.3432 -3.2537E-05 -83.3534 -3.2606E-05 -83.3664 -3.2694E-05 -83.3831 -3.2807E-05 -83.4057 -3.2959E-05 -83.4461 -3.3231E-05 -83.5270 -3.3771E-05 -84.0194 -3.7002E-05 -84.3330 -3.8996E-05 -84.3333 -3.8998E-05 -84.3337 -3.9001E-05 -84.3340 -3.9002E-05 -85.4120 -4.5460E-05 -85.4123 -4.5461E-05 -85.4127 -4.5464E-05 -85.4130 -4.5465E-05 -85.4137 -4.5469E-05 -85.4144 -4.5474E-05 -85.4152 -4.5478E-05 -85.4159 -4.5482E-05 -85.4166 -4.5486E-05 -85.4173 -4.5490E-05 -85.4180 -4.5494E-05 -85.4232 -4.5523E-05 -85.4334 -4.5581E-05 -85.4472 -4.5660E-05 -85.4646 -4.5759E-05 -85.4889 -4.5896E-05 -85.5320 -4.6138E-05 -85.6182 -4.6620E-05 -86.0753 -4.9112E-05 -86.4130 -5.0874E-05 -86.4133 -5.0875E-05 -86.4137 -5.0877E-05 -86.4140 -5.0879E-05 -87.4990 -5.6070E-05 -87.4993 -5.6072E-05 -87.4997 -5.6073E-05 -87.5000 -5.6075E-05 -87.5004 -5.6076E-05 -87.5007 -5.6078E-05 -87.5011 -5.6079E-05 -87.5014 -5.6081E-05 -87.5018 -5.6083E-05 -87.5021 -5.6084E-05 -87.5025 -5.6086E-05 -87.5050 -5.6097E-05 -87.5102 -5.6120E-05 -87.5204 -5.6165E-05 -87.5351 -5.6231E-05 -87.5532 -5.6310E-05 -87.5793 -5.6425E-05 -87.6252 -5.6626E-05 -87.7170 -5.7023E-05 -88.1397 -5.8790E-05 -88.5000 -6.0204E-05 -88.5003 -6.0206E-05 -88.5007 -6.0207E-05 -88.5010 -6.0208E-05 -89.5820 -6.3941E-05 -89.5823 -6.3941E-05 -89.5827 -6.3943E-05 -89.5830 -6.3944E-05 -89.5837 -6.3946E-05 -89.5844 -6.3948E-05 -89.5852 -6.3950E-05 -89.5859 -6.3953E-05 -89.5866 -6.3955E-05 -89.5873 -6.3957E-05 -89.5880 -6.3959E-05 -89.5932 -6.3975E-05 -89.6034 -6.4007E-05 -89.6193 -6.4055E-05 -89.6381 -6.4113E-05 -89.6665 -6.4200E-05 -89.7161 -6.4349E-05 -90.5830 -6.6706E-05 -90.5833 -6.6707E-05 -90.5837 -6.6708E-05 -90.5840 -6.6708E-05 -91.6620 -6.8939E-05 -91.6623 -6.8940E-05 -91.6627 -6.8940E-05 -91.6630 -6.8941E-05 -91.6637 -6.8942E-05 -91.6644 -6.8943E-05 -91.6652 -6.8945E-05 -91.6659 -6.8946E-05 -91.6666 -6.8947E-05 -91.6673 -6.8948E-05 -91.6680 -6.8950E-05 -91.6732 -6.8958E-05 -91.6834 -6.8976E-05 -91.7008 -6.9005E-05 -91.7208 -6.9039E-05 -91.7526 -6.9091E-05 -92.6630 -7.0324E-05 -92.6633 -7.0324E-05 -92.6637 -7.0325E-05 -92.6640 -7.0325E-05 -93.7490 -7.1096E-05 -93.7493 -7.1096E-05 -93.7497 -7.1096E-05 -93.7500 -7.1096E-05 -93.7507 -7.1097E-05 -93.7514 -7.1097E-05 -93.7522 -7.1097E-05 -93.7529 -7.1097E-05 -93.7536 -7.1098E-05 -93.7543 -7.1098E-05 -93.7550 -7.1098E-05 -93.7602 -7.1100E-05 -93.7704 -7.1104E-05 -93.7903 -7.1111E-05 -93.8119 -7.1118E-05 -93.8492 -7.1129E-05 -94.4200 -7.1203E-05 -94.7500 -7.1158E-05 -94.7510 -7.1158E-05 -95.8320 -7.0560E-05 -95.8323 -7.0560E-05 -95.8327 -7.0559E-05 -95.8330 -7.0559E-05 -95.8337 -7.0559E-05 -95.8344 -7.0558E-05 -95.8352 -7.0557E-05 -95.8359 -7.0557E-05 -95.8366 -7.0556E-05 -95.8373 -7.0555E-05 -95.8380 -7.0555E-05 -95.8432 -7.0550E-05 -95.8534 -7.0541E-05 -95.8739 -7.0523E-05 -95.8998 -7.0500E-05 -95.9426 -7.0461E-05 -96.1830 -7.0218E-05 -96.8330 -6.9429E-05 -96.8333 -6.9428E-05 -96.8337 -6.9428E-05 -96.8340 -6.9427E-05 -97.9120 -6.7635E-05 -97.9123 -6.7634E-05 -97.9127 -6.7634E-05 -97.9130 -6.7633E-05 -97.9137 -6.7632E-05 -97.9144 -6.7630E-05 -97.9152 -6.7629E-05 -97.9159 -6.7627E-05 -97.9166 -6.7626E-05 -97.9173 -6.7625E-05 -97.9180 -6.7623E-05 -97.9232 -6.7613E-05 -97.9334 -6.7594E-05 -97.9539 -6.7554E-05 -97.9894 -6.7484E-05 -98.0424 -6.7380E-05 -98.1668 -6.7129E-05 -98.2911 -6.6871E-05 -98.4155 -6.6607E-05 -98.5399 -6.6337E-05 -98.6643 -6.6059E-05 -98.7886 -6.5775E-05 -98.9130 -6.5484E-05 -98.9133 -6.5483E-05 -98.9137 -6.5482E-05 -98.9140 -6.5482E-05 -99.9990 -6.2676E-05 -99.9993 -6.2675E-05 -99.9997 -6.2674E-05 -100.0000 -6.2673E-05 -100.0007 -6.2671E-05 -100.0014 -6.2669E-05 -100.0022 -6.2667E-05 -100.0029 -6.2665E-05 -100.0036 -6.2663E-05 -100.0043 -6.2661E-05 -100.0050 -6.2659E-05 -100.0102 -6.2645E-05 -100.0204 -6.2616E-05 -100.0409 -6.2559E-05 -100.0818 -6.2443E-05 -100.8870 -6.0055E-05 -101.0000 -5.9702E-05 -101.0003 -5.9701E-05 -101.0007 -5.9700E-05 -101.0010 -5.9699E-05 -102.0820 -5.6127E-05 -102.0823 -5.6126E-05 -102.0827 -5.6125E-05 -102.0830 -5.6124E-05 -102.0837 -5.6121E-05 -102.0844 -5.6119E-05 -102.0852 -5.6116E-05 -102.0859 -5.6114E-05 -102.0866 -5.6111E-05 -102.0873 -5.6109E-05 -102.0880 -5.6106E-05 -102.0932 -5.6089E-05 -102.1034 -5.6053E-05 -102.1239 -5.5982E-05 -102.1648 -5.5840E-05 -102.2291 -5.5615E-05 -102.3488 -5.5194E-05 -102.4685 -5.4770E-05 -102.5882 -5.4343E-05 -102.7079 -5.3912E-05 -102.8276 -5.3477E-05 -102.9473 -5.3039E-05 -103.0670 -5.2597E-05 -103.0830 -5.2538E-05 -103.0833 -5.2537E-05 -103.0837 -5.2535E-05 -103.0840 -5.2534E-05 -104.1620 -4.8420E-05 -104.1623 -4.8419E-05 -104.1627 -4.8418E-05 -104.1630 -4.8416E-05 -104.1637 -4.8414E-05 -104.1644 -4.8411E-05 -104.1652 -4.8408E-05 -104.1659 -4.8405E-05 -104.1666 -4.8402E-05 -104.1673 -4.8399E-05 -104.1680 -4.8397E-05 -104.1732 -4.8377E-05 -104.1834 -4.8336E-05 -104.2039 -4.8256E-05 -104.2350 -4.8133E-05 -104.2835 -4.7943E-05 -104.5739 -4.6790E-05 -104.6580 -4.6454E-05 -104.7422 -4.6118E-05 -104.8264 -4.5780E-05 -104.9105 -4.5441E-05 -104.9947 -4.5100E-05 -105.0788 -4.4759E-05 -105.1630 -4.4416E-05 -105.1633 -4.4415E-05 -105.1637 -4.4413E-05 -105.1640 -4.4412E-05 -106.2490 -3.9922E-05 -106.2493 -3.9921E-05 -106.2497 -3.9919E-05 -106.2500 -3.9918E-05 -106.2507 -3.9915E-05 -106.2514 -3.9912E-05 -106.2522 -3.9909E-05 -106.2529 -3.9906E-05 -106.2536 -3.9903E-05 -106.2543 -3.9900E-05 -106.2550 -3.9897E-05 -106.2602 -3.9875E-05 -106.2704 -3.9832E-05 -106.2909 -3.9746E-05 -106.3170 -3.9637E-05 -106.3600 -3.9456E-05 -106.6024 -3.8433E-05 -107.1850 -3.5961E-05 -107.2500 -3.5683E-05 -107.2503 -3.5682E-05 -107.2507 -3.5680E-05 -107.2510 -3.5679E-05 -108.3320 -3.1039E-05 -108.3323 -3.1038E-05 -108.3327 -3.1036E-05 -108.3330 -3.1035E-05 -108.3337 -3.1032E-05 -108.3344 -3.1029E-05 -108.3352 -3.1025E-05 -108.3359 -3.1022E-05 -108.3366 -3.1019E-05 -108.3373 -3.1016E-05 -108.3380 -3.1013E-05 -108.3432 -3.0991E-05 -108.3534 -3.0947E-05 -108.3739 -3.0859E-05 -108.3974 -3.0757E-05 -108.4376 -3.0584E-05 -109.3330 -2.6719E-05 -109.3333 -2.6718E-05 -109.3337 -2.6716E-05 -109.3340 -2.6715E-05 -110.4120 -2.2072E-05 -110.4123 -2.2071E-05 -110.4127 -2.2069E-05 -110.4130 -2.2068E-05 -110.4137 -2.2065E-05 -110.4144 -2.2062E-05 -110.4152 -2.2059E-05 -110.4159 -2.2056E-05 -110.4166 -2.2053E-05 -110.4173 -2.2049E-05 -110.4180 -2.2046E-05 -110.4232 -2.2024E-05 -110.4334 -2.1980E-05 -110.4539 -2.1893E-05 -110.4760 -2.1798E-05 -110.5147 -2.1632E-05 -111.4130 -1.7796E-05 -111.4133 -1.7795E-05 -111.4137 -1.7793E-05 -111.4140 -1.7792E-05 -112.4990 -1.3221E-05 -112.4993 -1.3220E-05 -112.4997 -1.3218E-05 -112.5000 -1.3217E-05 -112.5007 -1.3214E-05 -112.5014 -1.3211E-05 -112.5022 -1.3208E-05 -112.5029 -1.3205E-05 -112.5036 -1.3202E-05 -112.5043 -1.3199E-05 -112.5050 -1.3196E-05 -112.5102 -1.3174E-05 -112.5204 -1.3131E-05 -112.5402 -1.3049E-05 -112.5619 -1.2958E-05 -112.5990 -1.2804E-05 -113.4268 -9.3816E-06 -113.5000 -9.0819E-06 -113.5003 -9.0806E-06 -113.5007 -9.0790E-06 -113.5010 -9.0778E-06 -114.5820 -4.7103E-06 -114.5823 -4.7091E-06 -114.5827 -4.7075E-06 -114.5830 -4.7063E-06 -114.5837 -4.7034E-06 -114.5844 -4.7006E-06 -114.5852 -4.6977E-06 -114.5859 -4.6948E-06 -114.5866 -4.6919E-06 -114.5873 -4.6891E-06 -114.5880 -4.6862E-06 -114.5932 -4.6658E-06 -114.6034 -4.6250E-06 -114.6230 -4.5471E-06 -114.6444 -4.4618E-06 -114.6809 -4.3165E-06 -115.5830 -7.7329E-07 -115.5833 -7.7213E-07 -115.5837 -7.7057E-07 -115.5840 -7.6941E-07 -116.6620 3.3441E-06 -116.6623 3.3453E-06 -116.6627 3.3468E-06 -116.6630 3.3479E-06 -116.6637 3.3506E-06 -116.6644 3.3533E-06 -116.6652 3.3560E-06 -116.6659 3.3587E-06 -116.6666 3.3614E-06 -116.6673 3.3641E-06 -116.6680 3.3668E-06 -116.6732 3.3860E-06 -116.6834 3.4244E-06 -116.7030 3.4978E-06 -116.7244 3.5781E-06 -116.7610 3.7148E-06 -117.6630 7.0396E-06 -117.6633 7.0407E-06 -117.6637 7.0421E-06 -117.6640 7.0432E-06 -118.7490 1.0908E-05 -118.7493 1.0909E-05 -118.7497 1.0911E-05 -118.7500 1.0912E-05 -118.7507 1.0914E-05 -118.7514 1.0917E-05 -118.7522 1.0919E-05 -118.7529 1.0922E-05 -118.7536 1.0924E-05 -118.7543 1.0927E-05 -118.7550 1.0929E-05 -118.7602 1.0947E-05 -118.7704 1.0983E-05 -118.7902 1.1052E-05 -118.8118 1.1128E-05 -118.8489 1.1257E-05 -119.5770 1.3758E-05 -119.7500 1.4342E-05 -119.7503 1.4343E-05 -119.7507 1.4344E-05 -119.7510 1.4345E-05 -120.8320 1.7910E-05 -120.8323 1.7911E-05 -120.8327 1.7912E-05 -120.8330 1.7913E-05 -120.8337 1.7915E-05 -120.8344 1.7918E-05 -120.8352 1.7920E-05 -120.8359 1.7922E-05 -120.8366 1.7925E-05 -120.8373 1.7927E-05 -120.8380 1.7929E-05 -120.8432 1.7946E-05 -120.8534 1.7979E-05 -120.8736 1.8044E-05 -120.8955 1.8115E-05 -120.9336 1.8237E-05 -121.8330 2.1078E-05 -121.8333 2.1079E-05 -121.8337 2.1081E-05 -121.8340 2.1082E-05 -122.9120 2.4354E-05 -122.9123 2.4355E-05 -122.9127 2.4356E-05 -122.9130 2.4357E-05 -122.9137 2.4359E-05 -122.9144 2.4361E-05 -122.9152 2.4363E-05 -122.9159 2.4365E-05 -122.9166 2.4367E-05 -122.9173 2.4370E-05 -122.9180 2.4372E-05 -122.9232 2.4387E-05 -122.9334 2.4417E-05 -122.9539 2.4478E-05 -122.9763 2.4544E-05 -123.0154 2.4660E-05 -123.9130 2.7265E-05 -123.9133 2.7266E-05 -123.9137 2.7267E-05 -123.9140 2.7268E-05 -124.9990 3.0289E-05 -124.9993 3.0290E-05 -124.9997 3.0291E-05 -125.0000 3.0292E-05 -125.0007 3.0294E-05 -125.0014 3.0296E-05 -125.0022 3.0298E-05 -125.0029 3.0300E-05 -125.0036 3.0302E-05 -125.0043 3.0304E-05 -125.0050 3.0306E-05 -125.0102 3.0320E-05 -125.0204 3.0348E-05 -125.0409 3.0403E-05 -125.0641 3.0466E-05 -125.1040 3.0574E-05 -125.8550 3.2578E-05 -126.0000 3.2957E-05 -126.0003 3.2958E-05 -126.0007 3.2959E-05 -126.0010 3.2960E-05 -127.0820 3.5717E-05 -127.0823 3.5718E-05 -127.0827 3.5719E-05 -127.0830 3.5720E-05 -127.0837 3.5721E-05 -127.0844 3.5723E-05 -127.0852 3.5725E-05 -127.0859 3.5727E-05 -127.0866 3.5729E-05 -127.0873 3.5730E-05 -127.0880 3.5732E-05 -127.0932 3.5745E-05 -127.1034 3.5771E-05 -127.1239 3.5822E-05 -127.1480 3.5881E-05 -127.1889 3.5983E-05 -128.0830 3.8161E-05 -128.0833 3.8161E-05 -128.0837 3.8162E-05 -128.0840 3.8163E-05 -129.1620 4.0682E-05 -129.1623 4.0683E-05 -129.1627 4.0683E-05 -129.1630 4.0684E-05 -129.1637 4.0686E-05 -129.1644 4.0687E-05 -129.1652 4.0689E-05 -129.1659 4.0691E-05 -129.1666 4.0692E-05 -129.1673 4.0694E-05 -129.1680 4.0696E-05 -129.1732 4.0707E-05 -129.1834 4.0731E-05 -129.2039 4.0777E-05 -129.2290 4.0835E-05 -129.2709 4.0930E-05 -129.5022 4.1452E-05 -130.1630 4.2921E-05 -130.1633 4.2922E-05 -130.1637 4.2923E-05 -130.1640 4.2923E-05 -131.2490 4.5247E-05 -131.2493 4.5248E-05 -131.2497 4.5249E-05 -131.2500 4.5249E-05 -131.2507 4.5251E-05 -131.2514 4.5252E-05 -131.2522 4.5254E-05 -131.2529 4.5255E-05 -131.2536 4.5257E-05 -131.2543 4.5258E-05 -131.2550 4.5260E-05 -131.2602 4.5271E-05 -131.2704 4.5292E-05 -131.2909 4.5335E-05 -131.3171 4.5390E-05 -131.3602 4.5479E-05 -131.6041 4.5984E-05 -132.1920 4.7184E-05 -132.2500 4.7301E-05 -132.2503 4.7301E-05 -132.2507 4.7302E-05 -132.2510 4.7303E-05 -133.3320 4.9428E-05 -133.3323 4.9428E-05 -133.3327 4.9429E-05 -133.3330 4.9430E-05 -133.3337 4.9431E-05 -133.3344 4.9433E-05 -133.3352 4.9434E-05 -133.3359 4.9435E-05 -133.3366 4.9437E-05 -133.3373 4.9438E-05 -133.3380 4.9439E-05 -133.3432 4.9449E-05 -133.3534 4.9469E-05 -133.3739 4.9508E-05 -133.4012 4.9561E-05 -133.4456 4.9646E-05 -133.7032 5.0135E-05 -134.3330 5.1314E-05 -134.3333 5.1315E-05 -134.3337 5.1315E-05 -134.3340 5.1316E-05 -135.4120 5.3264E-05 -135.4123 5.3264E-05 -135.4127 5.3265E-05 -135.4130 5.3265E-05 -135.4137 5.3267E-05 -135.4144 5.3268E-05 -135.4152 5.3269E-05 -135.4159 5.3271E-05 -135.4166 5.3272E-05 -135.4173 5.3273E-05 -135.4180 5.3274E-05 -135.4232 5.3283E-05 -135.4334 5.3301E-05 -135.4539 5.3338E-05 -135.4825 5.3388E-05 -135.5281 5.3468E-05 -135.8002 5.3944E-05 -136.4130 5.4998E-05 -136.4133 5.4999E-05 -136.4137 5.5000E-05 -136.4140 5.5000E-05 -137.4990 5.6804E-05 -137.4993 5.6804E-05 -137.4997 5.6805E-05 -137.5000 5.6805E-05 -137.5007 5.6806E-05 -137.5014 5.6807E-05 -137.5022 5.6809E-05 -137.5029 5.6810E-05 -137.5036 5.6811E-05 -137.5043 5.6812E-05 -137.5050 5.6813E-05 -137.5102 5.6822E-05 -137.5204 5.6838E-05 -137.5409 5.6872E-05 -137.5707 5.6920E-05 -137.6177 5.6996E-05 -137.8997 5.7449E-05 -137.9826 5.7582E-05 -138.0655 5.7714E-05 -138.1484 5.7846E-05 -138.2313 5.7977E-05 -138.3142 5.8108E-05 -138.3971 5.8239E-05 -138.4800 5.8368E-05 -138.4880 5.8381E-05 -138.5000 5.8400E-05 -138.5003 5.8400E-05 -138.5007 5.8401E-05 -138.5010 5.8401E-05 -139.5820 6.0055E-05 -139.5823 6.0055E-05 -139.5827 6.0056E-05 -139.5830 6.0056E-05 -139.5837 6.0057E-05 -139.5844 6.0058E-05 -139.5852 6.0059E-05 -139.5859 6.0061E-05 -139.5866 6.0062E-05 -139.5873 6.0063E-05 -139.5880 6.0064E-05 -139.5932 6.0071E-05 -139.6034 6.0087E-05 -139.6239 6.0117E-05 -139.6550 6.0164E-05 -139.7034 6.0236E-05 -139.9937 6.0665E-05 -140.0779 6.0789E-05 -140.1620 6.0913E-05 -140.2462 6.1036E-05 -140.3304 6.1159E-05 -140.4146 6.1281E-05 -140.4988 6.1402E-05 -140.5830 6.1524E-05 -140.5833 6.1524E-05 -140.5837 6.1525E-05 -140.5840 6.1525E-05 -141.6620 6.3043E-05 -141.6623 6.3043E-05 -141.6627 6.3043E-05 -141.6630 6.3044E-05 -141.6637 6.3045E-05 -141.6644 6.3046E-05 -141.6652 6.3047E-05 -141.6659 6.3048E-05 -141.6666 6.3049E-05 -141.6673 6.3050E-05 -141.6680 6.3051E-05 -141.6732 6.3058E-05 -141.6834 6.3072E-05 -141.7039 6.3100E-05 -141.7364 6.3145E-05 -141.7862 6.3213E-05 -142.0849 6.3620E-05 -142.6630 6.4394E-05 -142.6633 6.4394E-05 -142.6637 6.4395E-05 -142.6640 6.4395E-05 -143.7490 6.5799E-05 -143.7493 6.5800E-05 -143.7497 6.5800E-05 -143.7500 6.5800E-05 -143.7507 6.5801E-05 -143.7514 6.5802E-05 -143.7522 6.5803E-05 -143.7529 6.5804E-05 -143.7536 6.5805E-05 -143.7543 6.5806E-05 -143.7550 6.5807E-05 -143.7602 6.5813E-05 -143.7704 6.5826E-05 -143.7909 6.5852E-05 -143.8248 6.5895E-05 -143.8760 6.5959E-05 -144.1836 6.6344E-05 -144.7500 6.7040E-05 -144.7503 6.7041E-05 -144.7507 6.7041E-05 -144.7510 6.7042E-05 -144.7535 6.7045E-05 -145.8320 6.8325E-05 -145.8323 6.8326E-05 -145.8327 6.8326E-05 -145.8330 6.8326E-05 -145.8337 6.8327E-05 -145.8344 6.8328E-05 -145.8352 6.8329E-05 -145.8359 6.8330E-05 -145.8366 6.8331E-05 -145.8373 6.8331E-05 -145.8380 6.8332E-05 -145.8432 6.8338E-05 -145.8534 6.8350E-05 -145.8739 6.8374E-05 -145.9092 6.8415E-05 -145.9620 6.8476E-05 -146.0864 6.8619E-05 -146.2108 6.8762E-05 -146.3353 6.8903E-05 -146.4597 6.9044E-05 -146.5841 6.9185E-05 -146.7086 6.9324E-05 -146.8330 6.9463E-05 -146.8333 6.9464E-05 -146.8337 6.9464E-05 -146.8340 6.9464E-05 -147.9120 7.0637E-05 -147.9123 7.0637E-05 -147.9127 7.0638E-05 -147.9130 7.0638E-05 -147.9137 7.0639E-05 -147.9144 7.0640E-05 -147.9152 7.0640E-05 -147.9159 7.0641E-05 -147.9166 7.0642E-05 -147.9173 7.0643E-05 -147.9180 7.0643E-05 -147.9232 7.0649E-05 -147.9334 7.0660E-05 -147.9539 7.0681E-05 -147.9907 7.0721E-05 -148.0451 7.0778E-05 -148.1691 7.0909E-05 -148.2931 7.1039E-05 -148.4170 7.1168E-05 -148.5410 7.1296E-05 -148.6650 7.1424E-05 -148.7890 7.1552E-05 -148.9130 7.1678E-05 -148.9133 7.1678E-05 -148.9137 7.1679E-05 -148.9140 7.1679E-05 -149.9990 7.2757E-05 -149.9993 7.2757E-05 -149.9997 7.2758E-05 -150.0000 7.2758E-05 -150.0007 7.2759E-05 -150.0014 7.2759E-05 -150.0022 7.2760E-05 -150.0029 7.2761E-05 -150.0036 7.2762E-05 -150.0043 7.2762E-05 -150.0050 7.2763E-05 -150.0102 7.2768E-05 -150.0204 7.2778E-05 -150.0409 7.2798E-05 -150.0793 7.2835E-05 -150.1354 7.2889E-05 -150.2589 7.3008E-05 -150.3824 7.3126E-05 -150.5059 7.3243E-05 -150.6294 7.3360E-05 -150.7530 7.3476E-05 -150.8765 7.3592E-05 -151.0000 7.3707E-05 -151.0003 7.3707E-05 -151.0007 7.3707E-05 -151.0010 7.3708E-05 -151.6593 7.4309E-05 -152.0820 7.4686E-05 -152.0823 7.4686E-05 -152.0827 7.4686E-05 -152.0830 7.4687E-05 -152.0837 7.4687E-05 -152.0844 7.4688E-05 -152.0852 7.4688E-05 -152.0859 7.4689E-05 -152.0866 7.4690E-05 -152.0873 7.4690E-05 -152.0880 7.4691E-05 -152.0932 7.4695E-05 -152.1034 7.4705E-05 -152.1239 7.4723E-05 -152.1640 7.4758E-05 -152.2218 7.4809E-05 -153.0830 7.5549E-05 -153.0833 7.5549E-05 -153.0837 7.5550E-05 -153.0840 7.5550E-05 -154.1620 7.6436E-05 -154.1623 7.6436E-05 -154.1627 7.6436E-05 -154.1630 7.6436E-05 -154.1637 7.6437E-05 -154.1644 7.6437E-05 -154.1652 7.6438E-05 -154.1659 7.6439E-05 -154.1666 7.6439E-05 -154.1673 7.6440E-05 -154.1680 7.6440E-05 -154.1732 7.6444E-05 -154.1834 7.6453E-05 -154.2039 7.6469E-05 -154.2448 7.6502E-05 -154.3049 7.6550E-05 -154.4275 7.6647E-05 -154.5501 7.6743E-05 -154.6727 7.6840E-05 -154.7953 7.6935E-05 -154.9178 7.7030E-05 -155.0404 7.7124E-05 -155.1630 7.7218E-05 -155.1637 7.7219E-05 -155.1640 7.7219E-05 -156.2490 7.8026E-05 -156.2493 7.8026E-05 -156.2497 7.8026E-05 -156.2500 7.8027E-05 -156.2507 7.8027E-05 -156.2514 7.8028E-05 -156.2522 7.8028E-05 -156.2529 7.8029E-05 -156.2536 7.8029E-05 -156.2543 7.8030E-05 -156.2550 7.8030E-05 -156.2602 7.8034E-05 -156.2704 7.8041E-05 -156.2909 7.8056E-05 -156.3318 7.8086E-05 -156.3948 7.8131E-05 -156.5054 7.8210E-05 -156.6160 7.8289E-05 -156.7267 7.8368E-05 -156.8373 7.8446E-05 -156.9480 7.8523E-05 -157.0586 7.8600E-05 -157.1692 7.8677E-05 -157.2500 7.8733E-05 -157.2503 7.8733E-05 -157.2510 7.8734E-05 -157.9213 7.9188E-05 -158.3320 7.9459E-05 -158.3323 7.9459E-05 -158.3327 7.9459E-05 -158.3330 7.9459E-05 -158.3337 7.9460E-05 -158.3344 7.9460E-05 -158.3352 7.9461E-05 -158.3359 7.9461E-05 -158.3366 7.9462E-05 -158.3373 7.9462E-05 -158.3380 7.9463E-05 -158.3432 7.9466E-05 -158.3534 7.9473E-05 -158.3739 7.9486E-05 -158.4148 7.9513E-05 -158.4808 7.9555E-05 -158.5980 7.9631E-05 -158.7151 7.9706E-05 -158.8323 7.9781E-05 -158.9495 7.9855E-05 -159.0667 7.9929E-05 -159.1838 8.0003E-05 -159.3010 8.0076E-05 -159.3330 8.0096E-05 -159.3337 8.0096E-05 -159.3340 8.0096E-05 -160.4120 8.0747E-05 -160.4123 8.0747E-05 -160.4127 8.0747E-05 -160.4130 8.0747E-05 -160.4137 8.0748E-05 -160.4144 8.0748E-05 -160.4152 8.0748E-05 -160.4159 8.0749E-05 -160.4166 8.0749E-05 -160.4173 8.0750E-05 -160.4180 8.0750E-05 -160.4232 8.0753E-05 -160.4334 8.0759E-05 -160.4539 8.0771E-05 -160.4948 8.0795E-05 -160.5641 8.0835E-05 -160.6854 8.0906E-05 -160.8066 8.0976E-05 -160.9279 8.1045E-05 -161.0492 8.1114E-05 -161.1705 8.1183E-05 -161.2917 8.1251E-05 -161.4130 8.1319E-05 -161.4137 8.1319E-05 -161.4140 8.1319E-05 -162.4990 8.1906E-05 -162.4993 8.1906E-05 -162.4997 8.1906E-05 -162.5000 8.1907E-05 -162.5007 8.1907E-05 -162.5014 8.1907E-05 -162.5022 8.1908E-05 -162.5029 8.1908E-05 -162.5036 8.1909E-05 -162.5043 8.1909E-05 -162.5050 8.1909E-05 -162.5102 8.1912E-05 -162.5204 8.1917E-05 -162.5409 8.1928E-05 -162.5818 8.1950E-05 -162.6547 8.1988E-05 -162.7754 8.2050E-05 -162.8962 8.2113E-05 -163.0169 8.2175E-05 -163.1377 8.2236E-05 -163.2585 8.2297E-05 -163.3792 8.2358E-05 -163.5000 8.2418E-05 -163.5007 8.2419E-05 -163.5010 8.2419E-05 -164.4113 8.2861E-05 -164.5820 8.2942E-05 -164.5823 8.2942E-05 -164.5827 8.2942E-05 -164.5830 8.2942E-05 -164.5837 8.2942E-05 -164.5844 8.2943E-05 -164.5852 8.2943E-05 -164.5859 8.2943E-05 -164.5866 8.2944E-05 -164.5873 8.2944E-05 -164.5880 8.2944E-05 -164.5932 8.2947E-05 -164.6034 8.2952E-05 -164.6239 8.2961E-05 -164.6648 8.2980E-05 -164.7415 8.3016E-05 -164.8617 8.3072E-05 -164.9820 8.3127E-05 -165.1022 8.3182E-05 -165.2224 8.3237E-05 -165.3426 8.3291E-05 -165.4628 8.3345E-05 -165.5830 8.3399E-05 -165.5837 8.3399E-05 -165.5840 8.3399E-05 -166.6620 8.3864E-05 -166.6623 8.3865E-05 -166.6627 8.3865E-05 -166.6630 8.3865E-05 -166.6637 8.3865E-05 -166.6644 8.3865E-05 -166.6652 8.3866E-05 -166.6659 8.3866E-05 -166.6666 8.3866E-05 -166.6673 8.3867E-05 -166.6680 8.3867E-05 -166.6732 8.3869E-05 -166.6834 8.3873E-05 -166.7039 8.3882E-05 -166.7448 8.3899E-05 -166.8257 8.3933E-05 -166.9453 8.3982E-05 -167.0649 8.4031E-05 -167.1846 8.4080E-05 -167.3042 8.4128E-05 -167.4238 8.4177E-05 -167.5434 8.4224E-05 -167.6630 8.4272E-05 -167.6637 8.4272E-05 -167.6640 8.4272E-05 -168.7490 8.4689E-05 -168.7493 8.4689E-05 -168.7497 8.4689E-05 -168.7500 8.4689E-05 -168.7507 8.4689E-05 -168.7514 8.4690E-05 -168.7522 8.4690E-05 -168.7529 8.4690E-05 -168.7536 8.4690E-05 -168.7543 8.4691E-05 -168.7550 8.4691E-05 -168.7602 8.4693E-05 -168.7704 8.4697E-05 -168.7909 8.4704E-05 -168.8318 8.4719E-05 -168.9138 8.4750E-05 -169.0332 8.4793E-05 -169.1527 8.4837E-05 -169.2721 8.4880E-05 -169.3916 8.4923E-05 -169.5111 8.4966E-05 -169.6305 8.5008E-05 -169.7500 8.5051E-05 -169.7507 8.5051E-05 -169.7510 8.5051E-05 -170.7690 8.5398E-05 -170.8320 8.5419E-05 -170.8323 8.5419E-05 -170.8327 8.5419E-05 -170.8330 8.5419E-05 -170.8337 8.5420E-05 -170.8344 8.5420E-05 -170.8352 8.5420E-05 -170.8359 8.5420E-05 -170.8366 8.5421E-05 -170.8373 8.5421E-05 -170.8380 8.5421E-05 -170.8432 8.5423E-05 -170.8534 8.5426E-05 -170.8739 8.5433E-05 -170.9148 8.5446E-05 -170.9968 8.5473E-05 -171.1162 8.5512E-05 -171.2357 8.5551E-05 -171.3551 8.5589E-05 -171.4746 8.5627E-05 -171.5941 8.5665E-05 -171.7135 8.5702E-05 -171.8330 8.5740E-05 -171.8337 8.5740E-05 -171.8340 8.5740E-05 -172.9120 8.6065E-05 -172.9123 8.6065E-05 -172.9127 8.6065E-05 -172.9130 8.6065E-05 -172.9137 8.6066E-05 -172.9144 8.6066E-05 -172.9152 8.6066E-05 -172.9159 8.6066E-05 -172.9166 8.6066E-05 -172.9173 8.6067E-05 -172.9180 8.6067E-05 -172.9232 8.6068E-05 -172.9334 8.6071E-05 -172.9539 8.6077E-05 -172.9948 8.6089E-05 -173.0768 8.6113E-05 -173.9130 8.6349E-05 -173.9137 8.6349E-05 -173.9140 8.6349E-05 -174.9990 8.6638E-05 -174.9993 8.6638E-05 -174.9997 8.6638E-05 -175.0000 8.6638E-05 -175.0007 8.6638E-05 -175.0014 8.6638E-05 -175.0022 8.6639E-05 -175.0029 8.6639E-05 -175.0036 8.6639E-05 -175.0043 8.6639E-05 -175.0050 8.6639E-05 -175.0102 8.6641E-05 -175.0204 8.6643E-05 -175.0409 8.6648E-05 -175.0818 8.6659E-05 -175.3276 8.6721E-05 -176.0000 8.6888E-05 -176.0010 8.6888E-05 -177.0660 8.7138E-05 -177.0820 8.7141E-05 -177.0823 8.7141E-05 -177.0827 8.7141E-05 -177.0830 8.7141E-05 -177.0837 8.7142E-05 -177.0844 8.7142E-05 -177.0852 8.7142E-05 -177.0859 8.7142E-05 -177.0866 8.7142E-05 -177.0873 8.7142E-05 -177.0880 8.7143E-05 -177.0932 8.7144E-05 -177.1034 8.7146E-05 -177.1239 8.7151E-05 -177.1648 8.7160E-05 -177.4106 8.7215E-05 -178.0830 8.7361E-05 -178.0840 8.7361E-05 -179.1620 8.7583E-05 -179.1623 8.7583E-05 -179.1627 8.7583E-05 -179.1630 8.7583E-05 -179.1637 8.7583E-05 -179.1644 8.7583E-05 -179.1652 8.7583E-05 -179.1659 8.7583E-05 -179.1666 8.7584E-05 -179.1673 8.7584E-05 -179.1680 8.7584E-05 -179.1732 8.7585E-05 -179.1834 8.7587E-05 -179.2039 8.7591E-05 -179.2448 8.7599E-05 -180.1630 8.7775E-05 -180.1640 8.7775E-05 -181.2490 8.7970E-05 -181.2493 8.7970E-05 -181.2497 8.7970E-05 -181.2500 8.7971E-05 -181.2507 8.7971E-05 -181.2514 8.7971E-05 -181.2522 8.7971E-05 -181.2529 8.7971E-05 -181.2536 8.7971E-05 -181.2543 8.7971E-05 -181.2550 8.7971E-05 -181.2602 8.7972E-05 -181.2704 8.7974E-05 -181.2909 8.7978E-05 -181.3318 8.7985E-05 -182.2500 8.8138E-05 -182.2510 8.8138E-05 -183.3320 8.8307E-05 -183.3321 8.8307E-05 -183.3323 8.8307E-05 -183.3327 8.8307E-05 -183.3330 8.8308E-05 -183.3337 8.8308E-05 -183.3344 8.8308E-05 -183.3352 8.8308E-05 -183.3359 8.8308E-05 -183.3366 8.8308E-05 -183.3373 8.8308E-05 -183.3380 8.8308E-05 -183.3432 8.8309E-05 -183.3534 8.8311E-05 -183.3739 8.8314E-05 -183.4148 8.8320E-05 -184.3330 8.8453E-05 -184.3340 8.8453E-05 -185.4120 8.8599E-05 -185.4123 8.8599E-05 -185.4127 8.8599E-05 -185.4130 8.8599E-05 -185.4137 8.8599E-05 -185.4144 8.8599E-05 -185.4152 8.8599E-05 -185.4159 8.8600E-05 -185.4166 8.8600E-05 -185.4173 8.8600E-05 -185.4180 8.8600E-05 -185.4232 8.8600E-05 -185.4334 8.8602E-05 -185.4539 8.8604E-05 -185.4948 8.8610E-05 -186.4130 8.8725E-05 -186.4140 8.8725E-05 -187.4990 8.8851E-05 -187.4993 8.8851E-05 -187.4997 8.8851E-05 -187.5000 8.8851E-05 -187.5007 8.8851E-05 -187.5014 8.8851E-05 -187.5022 8.8851E-05 -187.5029 8.8851E-05 -187.5036 8.8852E-05 -187.5043 8.8852E-05 -187.5050 8.8852E-05 -187.5102 8.8852E-05 -187.5204 8.8853E-05 -187.5409 8.8856E-05 -187.5818 8.8860E-05 -188.5000 8.8959E-05 -188.5010 8.8959E-05 -189.5820 8.9066E-05 -189.5823 8.9066E-05 -189.5827 8.9066E-05 -189.5830 8.9066E-05 -189.5834 8.9066E-05 -189.5837 8.9066E-05 -189.5841 8.9066E-05 -189.5844 8.9066E-05 -189.5848 8.9066E-05 -189.5851 8.9066E-05 -189.5855 8.9066E-05 -189.5880 8.9066E-05 -189.5932 8.9067E-05 -189.6034 8.9068E-05 -189.6239 8.9070E-05 -189.6648 8.9074E-05 -190.5830 8.9157E-05 -190.5840 8.9157E-05 -191.6620 8.9247E-05 -191.6623 8.9247E-05 -191.6627 8.9247E-05 -191.6630 8.9248E-05 -191.6637 8.9248E-05 -191.6644 8.9248E-05 -191.6652 8.9248E-05 -191.6659 8.9248E-05 -191.6666 8.9248E-05 -191.6673 8.9248E-05 -191.6680 8.9248E-05 -191.6732 8.9248E-05 -191.6834 8.9249E-05 -191.7039 8.9251E-05 -191.7448 8.9254E-05 -192.6630 8.9324E-05 -192.6640 8.9324E-05 -193.7490 8.9400E-05 -193.7493 8.9400E-05 -193.7497 8.9400E-05 -193.7500 8.9400E-05 -193.7507 8.9400E-05 -193.7514 8.9400E-05 -193.7522 8.9400E-05 -193.7529 8.9400E-05 -193.7536 8.9400E-05 -193.7543 8.9400E-05 -193.7550 8.9400E-05 -193.7602 8.9400E-05 -193.7704 8.9401E-05 -193.7909 8.9402E-05 -193.8318 8.9405E-05 -194.7500 8.9463E-05 -194.7510 8.9463E-05 -195.8320 8.9524E-05 -195.8323 8.9524E-05 -195.8327 8.9524E-05 -195.8330 8.9524E-05 -195.8337 8.9524E-05 -195.8344 8.9524E-05 -195.8352 8.9525E-05 -195.8359 8.9525E-05 -195.8366 8.9525E-05 -195.8373 8.9525E-05 -195.8380 8.9525E-05 -195.8432 8.9525E-05 -195.8534 8.9525E-05 -195.8739 8.9527E-05 -195.9148 8.9529E-05 -196.4913 8.9559E-05 -196.8330 8.9575E-05 -196.8340 8.9576E-05 -197.9120 8.9625E-05 -197.9123 8.9625E-05 -197.9127 8.9625E-05 -197.9130 8.9625E-05 -197.9137 8.9625E-05 -197.9144 8.9625E-05 -197.9152 8.9625E-05 -197.9159 8.9625E-05 -197.9166 8.9625E-05 -197.9173 8.9625E-05 -197.9180 8.9625E-05 -197.9232 8.9625E-05 -197.9334 8.9625E-05 -197.9539 8.9626E-05 -197.9948 8.9628E-05 -198.9130 8.9665E-05 -198.9140 8.9665E-05 -199.9990 8.9703E-05 -199.9993 8.9703E-05 -199.9997 8.9703E-05 -200.0000 8.9703E-05 -200.0007 8.9703E-05 -200.0014 8.9703E-05 -200.0022 8.9703E-05 -200.0029 8.9703E-05 -200.0036 8.9703E-05 -200.0043 8.9703E-05 -200.0050 8.9703E-05 -200.0102 8.9703E-05 -200.0204 8.9704E-05 -200.0409 8.9704E-05 -200.0818 8.9706E-05 -201.0000 8.9733E-05 -201.0010 8.9733E-05 -202.0820 8.9761E-05 -202.0823 8.9761E-05 -202.0827 8.9761E-05 -202.0830 8.9761E-05 -202.0837 8.9761E-05 -202.0844 8.9761E-05 -202.0852 8.9761E-05 -202.0859 8.9761E-05 -202.0866 8.9761E-05 -202.0873 8.9761E-05 -202.0880 8.9761E-05 -202.0932 8.9762E-05 -202.1034 8.9762E-05 -202.1239 8.9762E-05 -202.1648 8.9763E-05 -202.9620 8.9780E-05 -203.0830 8.9783E-05 -203.0840 8.9783E-05 -204.1620 8.9802E-05 -204.1623 8.9802E-05 -204.1627 8.9802E-05 -204.1630 8.9802E-05 -204.1637 8.9802E-05 -204.1644 8.9802E-05 -204.1652 8.9802E-05 -204.1659 8.9802E-05 -204.1666 8.9802E-05 -204.1673 8.9802E-05 -204.1680 8.9802E-05 -204.1732 8.9802E-05 -204.1834 8.9802E-05 -204.2039 8.9802E-05 -204.2448 8.9803E-05 -205.1630 8.9815E-05 -205.1640 8.9815E-05 -206.2490 8.9826E-05 -206.2493 8.9826E-05 -206.2497 8.9826E-05 -206.2500 8.9826E-05 -206.2507 8.9826E-05 -206.2514 8.9826E-05 -206.2522 8.9826E-05 -206.2529 8.9826E-05 -206.2536 8.9826E-05 -206.2543 8.9826E-05 -206.2550 8.9826E-05 -206.2602 8.9826E-05 -206.2704 8.9826E-05 -206.2909 8.9826E-05 -206.3318 8.9827E-05 -207.2500 8.9832E-05 -207.2510 8.9832E-05 -208.3320 8.9835E-05 -208.3323 8.9835E-05 -208.3327 8.9835E-05 -208.3330 8.9835E-05 -208.3345 8.9835E-05 -208.3359 8.9835E-05 -208.3374 8.9835E-05 -208.3388 8.9835E-05 -208.3403 8.9835E-05 -208.3417 8.9835E-05 -208.3432 8.9835E-05 -208.3534 8.9836E-05 -208.3739 8.9836E-05 -208.4148 8.9836E-05 -209.3010 8.9835E-05 -209.3330 8.9835E-05 -209.3340 8.9835E-05 -210.4120 8.9832E-05 -210.4123 8.9832E-05 -210.4127 8.9832E-05 -210.4130 8.9832E-05 -210.4145 8.9832E-05 -210.4159 8.9832E-05 -210.4174 8.9832E-05 -210.4188 8.9832E-05 -210.4203 8.9832E-05 -210.4217 8.9832E-05 -210.4232 8.9832E-05 -210.4334 8.9832E-05 -210.4539 8.9832E-05 -210.4948 8.9832E-05 -211.4130 8.9826E-05 -211.4140 8.9826E-05 -212.4990 8.9817E-05 -212.4993 8.9817E-05 -212.4997 8.9817E-05 -212.5000 8.9817E-05 -212.5015 8.9817E-05 -212.5029 8.9817E-05 -212.5044 8.9817E-05 -212.5058 8.9817E-05 -212.5073 8.9817E-05 -212.5087 8.9817E-05 -212.5102 8.9817E-05 -212.5204 8.9816E-05 -212.5409 8.9816E-05 -212.5818 8.9816E-05 -213.5000 8.9806E-05 -213.5010 8.9806E-05 -214.5820 8.9791E-05 -214.5827 8.9791E-05 -214.5830 8.9791E-05 -214.5888 8.9791E-05 -214.5947 8.9791E-05 -214.6005 8.9791E-05 -214.6064 8.9791E-05 -214.6122 8.9790E-05 -214.6180 8.9790E-05 -214.6239 8.9790E-05 -215.5820 8.9775E-05 -215.5830 8.9775E-05 -215.5840 8.9775E-05 -216.6620 8.9756E-05 -216.6623 8.9756E-05 -216.6627 8.9756E-05 -216.6630 8.9756E-05 -216.6645 8.9756E-05 -216.6659 8.9756E-05 -216.6674 8.9756E-05 -216.6688 8.9756E-05 -216.6703 8.9756E-05 -216.6717 8.9755E-05 -216.6732 8.9755E-05 -216.6834 8.9755E-05 -216.7039 8.9755E-05 -216.7448 8.9754E-05 -217.6630 8.9736E-05 -217.6640 8.9736E-05 -218.7490 8.9712E-05 -218.7493 8.9712E-05 -218.7497 8.9712E-05 -218.7500 8.9712E-05 -218.7515 8.9712E-05 -218.7529 8.9712E-05 -218.7544 8.9712E-05 -218.7558 8.9712E-05 -218.7573 8.9712E-05 -218.7587 8.9712E-05 -218.7602 8.9712E-05 -218.7704 8.9711E-05 -218.7909 8.9711E-05 -218.8318 8.9710E-05 -219.7500 8.9688E-05 -219.7510 8.9688E-05 -220.8320 8.9660E-05 -220.8323 8.9660E-05 -220.8327 8.9660E-05 -220.8330 8.9660E-05 -220.8345 8.9660E-05 -220.8359 8.9660E-05 -220.8374 8.9660E-05 -220.8388 8.9660E-05 -220.8403 8.9660E-05 -220.8417 8.9660E-05 -220.8432 8.9660E-05 -220.8534 8.9660E-05 -220.8739 8.9659E-05 -220.9148 8.9658E-05 -221.8330 8.9633E-05 -221.8340 8.9633E-05 -221.8352 8.9633E-05 -222.9120 8.9602E-05 -222.9123 8.9602E-05 -222.9127 8.9602E-05 -222.9130 8.9602E-05 -222.9145 8.9602E-05 -222.9159 8.9602E-05 -222.9174 8.9602E-05 -222.9188 8.9602E-05 -222.9203 8.9602E-05 -222.9217 8.9602E-05 -222.9232 8.9602E-05 -222.9334 8.9602E-05 -222.9539 8.9601E-05 -222.9948 8.9600E-05 -223.9130 8.9572E-05 -223.9140 8.9572E-05 -224.9990 8.9538E-05 -224.9993 8.9538E-05 -224.9997 8.9538E-05 -225.0000 8.9538E-05 -225.0007 8.9538E-05 -225.0014 8.9538E-05 -225.0022 8.9538E-05 -225.0029 8.9538E-05 -225.0036 8.9538E-05 -225.0043 8.9538E-05 -225.0050 8.9538E-05 -225.0102 8.9538E-05 -225.0204 8.9537E-05 -225.0409 8.9537E-05 -225.0818 8.9535E-05 -226.0000 8.9505E-05 -226.0010 8.9505E-05 -227.0820 8.9469E-05 -227.0823 8.9469E-05 -227.0827 8.9469E-05 -227.0830 8.9468E-05 -227.0837 8.9468E-05 -227.0844 8.9468E-05 -227.0852 8.9468E-05 -227.0859 8.9468E-05 -227.0866 8.9468E-05 -227.0873 8.9468E-05 -227.0880 8.9468E-05 -227.0932 8.9468E-05 -227.1034 8.9468E-05 -227.1239 8.9467E-05 -227.1648 8.9466E-05 -228.0830 8.9433E-05 -228.0840 8.9433E-05 -228.7393 8.9410E-05 -229.1620 8.9394E-05 -229.1623 8.9394E-05 -229.1627 8.9394E-05 -229.1630 8.9394E-05 -229.1637 8.9394E-05 -229.1644 8.9394E-05 -229.1652 8.9394E-05 -229.1659 8.9394E-05 -229.1666 8.9394E-05 -229.1673 8.9394E-05 -229.1680 8.9394E-05 -229.1732 8.9394E-05 -229.1834 8.9393E-05 -229.2039 8.9393E-05 -229.2448 8.9391E-05 -230.1630 8.9357E-05 -230.1640 8.9357E-05 -231.2490 8.9315E-05 -231.2493 8.9315E-05 -231.2497 8.9315E-05 -231.2500 8.9315E-05 -231.2507 8.9315E-05 -231.2514 8.9315E-05 -231.2522 8.9315E-05 -231.2529 8.9315E-05 -231.2536 8.9315E-05 -231.2543 8.9315E-05 -231.2550 8.9315E-05 -231.2602 8.9315E-05 -231.2704 8.9314E-05 -231.2909 8.9314E-05 -231.3318 8.9312E-05 -232.2500 8.9276E-05 -232.2510 8.9276E-05 -233.3320 8.9233E-05 -233.3323 8.9233E-05 -233.3327 8.9233E-05 -233.3330 8.9233E-05 -233.3337 8.9233E-05 -233.3344 8.9232E-05 -233.3352 8.9232E-05 -233.3359 8.9232E-05 -233.3366 8.9232E-05 -233.3373 8.9232E-05 -233.3380 8.9232E-05 -233.3432 8.9232E-05 -233.3534 8.9232E-05 -233.3739 8.9231E-05 -233.4148 8.9229E-05 -234.3330 8.9192E-05 -234.3340 8.9192E-05 -235.2453 8.9154E-05 -235.4120 8.9147E-05 -235.4123 8.9147E-05 -235.4127 8.9147E-05 -235.4130 8.9147E-05 -235.4137 8.9147E-05 -235.4144 8.9147E-05 -235.4152 8.9146E-05 -235.4159 8.9146E-05 -235.4166 8.9146E-05 -235.4173 8.9146E-05 -235.4180 8.9146E-05 -235.4232 8.9146E-05 -235.4334 8.9146E-05 -235.4539 8.9145E-05 -235.4948 8.9143E-05 -236.4130 8.9104E-05 -236.4140 8.9104E-05 -237.4990 8.9057E-05 -237.4993 8.9057E-05 -237.4997 8.9057E-05 -237.5000 8.9057E-05 -237.5007 8.9057E-05 -237.5014 8.9057E-05 -237.5022 8.9057E-05 -237.5029 8.9057E-05 -237.5036 8.9057E-05 -237.5043 8.9057E-05 -237.5050 8.9057E-05 -237.5102 8.9057E-05 -237.5204 8.9056E-05 -237.5409 8.9055E-05 -237.5818 8.9054E-05 -238.5000 8.9013E-05 -238.5010 8.9013E-05 -239.5820 8.8965E-05 -239.5823 8.8965E-05 -239.5827 8.8965E-05 -239.5830 8.8965E-05 -239.5837 8.8965E-05 -239.5844 8.8965E-05 -239.5852 8.8965E-05 -239.5859 8.8965E-05 -239.5866 8.8965E-05 -239.5873 8.8965E-05 -239.5880 8.8965E-05 -239.5932 8.8965E-05 -239.6034 8.8964E-05 -239.6239 8.8963E-05 -239.6648 8.8962E-05 -240.5830 8.8920E-05 -240.5840 8.8920E-05 -241.6050 8.8874E-05 -241.6620 8.8871E-05 -241.6623 8.8871E-05 -241.6627 8.8871E-05 -241.6630 8.8871E-05 -241.6637 8.8871E-05 -241.6644 8.8871E-05 -241.6652 8.8871E-05 -241.6659 8.8871E-05 -241.6666 8.8871E-05 -241.6673 8.8871E-05 -241.6680 8.8871E-05 -241.6732 8.8871E-05 -241.6834 8.8870E-05 -241.7039 8.8869E-05 -241.7448 8.8867E-05 -242.6630 8.8825E-05 -242.6640 8.8825E-05 -243.7490 8.8774E-05 -243.7493 8.8774E-05 -243.7497 8.8774E-05 -243.7500 8.8774E-05 -243.7507 8.8774E-05 -243.7514 8.8774E-05 -243.7522 8.8774E-05 -243.7529 8.8774E-05 -243.7536 8.8774E-05 -243.7543 8.8774E-05 -243.7550 8.8774E-05 -243.7602 8.8774E-05 -243.7704 8.8773E-05 -243.7909 8.8772E-05 -243.8318 8.8771E-05 -244.7500 8.8727E-05 -244.7510 8.8727E-05 -245.8320 8.8676E-05 -245.8323 8.8676E-05 -245.8327 8.8676E-05 -245.8330 8.8676E-05 -245.8337 8.8676E-05 -245.8344 8.8676E-05 -245.8352 8.8676E-05 -245.8359 8.8676E-05 -245.8366 8.8676E-05 -245.8373 8.8676E-05 -245.8380 8.8676E-05 -245.8432 8.8675E-05 -245.8534 8.8675E-05 -245.8739 8.8674E-05 -245.9148 8.8672E-05 -246.8330 8.8628E-05 -246.8340 8.8628E-05 -247.9040 8.8576E-05 -247.9120 8.8576E-05 -247.9123 8.8576E-05 -247.9127 8.8576E-05 -247.9130 8.8576E-05 -247.9137 8.8576E-05 -247.9144 8.8576E-05 -247.9152 8.8576E-05 -247.9159 8.8576E-05 -247.9166 8.8576E-05 -247.9173 8.8576E-05 -247.9180 8.8576E-05 -247.9232 8.8575E-05 -247.9334 8.8575E-05 -247.9539 8.8574E-05 -247.9948 8.8572E-05 -248.9130 8.8527E-05 -248.9140 8.8527E-05 -249.9990 8.8474E-05 -249.9993 8.8474E-05 -249.9997 8.8474E-05 -250.0000 8.8474E-05 -250.0007 8.8474E-05 -250.0014 8.8474E-05 -250.0022 8.8474E-05 -250.0029 8.8474E-05 -250.0036 8.8474E-05 -250.0043 8.8474E-05 -250.0050 8.8474E-05 -250.0102 8.8473E-05 -250.0204 8.8473E-05 -250.0409 8.8472E-05 -250.0818 8.8470E-05 -251.0000 8.8425E-05 -251.0010 8.8425E-05 -252.0820 8.8371E-05 -252.0823 8.8371E-05 -252.0827 8.8371E-05 -252.0830 8.8371E-05 -252.0837 8.8371E-05 -252.0844 8.8371E-05 -252.0852 8.8371E-05 -252.0859 8.8371E-05 -252.0866 8.8371E-05 -252.0873 8.8371E-05 -252.0880 8.8371E-05 -252.0932 8.8370E-05 -252.1034 8.8370E-05 -252.1239 8.8369E-05 -252.1648 8.8367E-05 -253.0830 8.8321E-05 -253.0840 8.8321E-05 -254.1620 8.8267E-05 -254.1623 8.8267E-05 -254.1627 8.8267E-05 -254.1630 8.8267E-05 -254.1637 8.8267E-05 -254.1644 8.8267E-05 -254.1652 8.8267E-05 -254.1659 8.8267E-05 -254.1666 8.8267E-05 -254.1673 8.8267E-05 -254.1680 8.8267E-05 -254.1732 8.8266E-05 -254.1834 8.8266E-05 -254.2039 8.8265E-05 -254.2448 8.8263E-05 -255.1630 8.8216E-05 -255.1640 8.8216E-05 -256.2490 8.8161E-05 -256.2493 8.8161E-05 -256.2497 8.8161E-05 -256.2500 8.8161E-05 -256.2507 8.8161E-05 -256.2514 8.8161E-05 -256.2522 8.8161E-05 -256.2529 8.8161E-05 -256.2536 8.8161E-05 -256.2543 8.8161E-05 -256.2550 8.8161E-05 -256.2602 8.8161E-05 -256.2704 8.8160E-05 -256.2909 8.8159E-05 -256.3318 8.8157E-05 -257.2500 8.8110E-05 -257.2510 8.8110E-05 -258.3320 8.8055E-05 -258.3323 8.8055E-05 -258.3327 8.8055E-05 -258.3330 8.8055E-05 -258.3337 8.8055E-05 -258.3344 8.8055E-05 -258.3352 8.8055E-05 -258.3359 8.8055E-05 -258.3366 8.8055E-05 -258.3373 8.8055E-05 -258.3380 8.8055E-05 -258.3432 8.8055E-05 -258.3534 8.8054E-05 -258.3739 8.8053E-05 -258.4148 8.8051E-05 -259.3330 8.8004E-05 -259.3340 8.8004E-05 -260.4120 8.7948E-05 -260.4123 8.7948E-05 -260.4127 8.7948E-05 -260.4130 8.7948E-05 -260.4137 8.7948E-05 -260.4144 8.7948E-05 -260.4152 8.7948E-05 -260.4159 8.7948E-05 -260.4166 8.7948E-05 -260.4173 8.7948E-05 -260.4180 8.7948E-05 -260.4232 8.7948E-05 -260.4334 8.7947E-05 -260.4539 8.7946E-05 -260.4948 8.7944E-05 -261.4130 8.7897E-05 -261.4140 8.7896E-05 -262.4990 8.7840E-05 -262.4993 8.7840E-05 -262.4997 8.7840E-05 -262.5000 8.7840E-05 -262.5007 8.7840E-05 -262.5014 8.7840E-05 -262.5022 8.7840E-05 -262.5029 8.7840E-05 -262.5036 8.7840E-05 -262.5043 8.7840E-05 -262.5050 8.7840E-05 -262.5102 8.7840E-05 -262.5204 8.7839E-05 -262.5409 8.7838E-05 -262.5818 8.7836E-05 -263.5000 8.7788E-05 -263.5010 8.7788E-05 -264.5820 8.7732E-05 -264.5823 8.7732E-05 -264.5827 8.7732E-05 -264.5830 8.7732E-05 -264.5837 8.7732E-05 -264.5844 8.7732E-05 -264.5852 8.7732E-05 -264.5859 8.7732E-05 -264.5866 8.7732E-05 -264.5873 8.7732E-05 -264.5880 8.7732E-05 -264.5932 8.7731E-05 -264.6034 8.7731E-05 -264.6239 8.7730E-05 -264.6648 8.7728E-05 -265.5830 8.7680E-05 -265.5840 8.7680E-05 -266.6620 8.7623E-05 -266.6623 8.7623E-05 -266.6627 8.7623E-05 -266.6630 8.7623E-05 -266.6637 8.7623E-05 -266.6644 8.7623E-05 -266.6652 8.7623E-05 -266.6659 8.7623E-05 -266.6666 8.7623E-05 -266.6673 8.7623E-05 -266.6680 8.7623E-05 -266.6732 8.7623E-05 -266.6834 8.7622E-05 -266.7039 8.7621E-05 -266.7448 8.7619E-05 -267.3333 8.7588E-05 -267.6630 8.7571E-05 -267.6640 8.7571E-05 -268.7490 8.7514E-05 -268.7493 8.7513E-05 -268.7497 8.7513E-05 -268.7500 8.7513E-05 -268.7507 8.7513E-05 -268.7514 8.7513E-05 -268.7522 8.7513E-05 -268.7529 8.7513E-05 -268.7536 8.7513E-05 -268.7543 8.7513E-05 -268.7550 8.7513E-05 -268.7602 8.7513E-05 -268.7704 8.7512E-05 -268.7909 8.7511E-05 -268.8318 8.7509E-05 -269.7500 8.7461E-05 -269.7510 8.7461E-05 -270.8320 8.7404E-05 -270.8323 8.7404E-05 -270.8327 8.7404E-05 -270.8330 8.7404E-05 -270.8337 8.7404E-05 -270.8344 8.7404E-05 -270.8352 8.7404E-05 -270.8359 8.7404E-05 -270.8366 8.7403E-05 -270.8373 8.7403E-05 -270.8380 8.7403E-05 -270.8432 8.7403E-05 -270.8534 8.7403E-05 -270.8739 8.7402E-05 -270.9148 8.7399E-05 -271.8330 8.7351E-05 -271.8340 8.7351E-05 -272.9120 8.7294E-05 -272.9123 8.7294E-05 -272.9127 8.7294E-05 -272.9130 8.7294E-05 -272.9137 8.7294E-05 -272.9144 8.7294E-05 -272.9152 8.7294E-05 -272.9159 8.7294E-05 -272.9166 8.7293E-05 -272.9173 8.7293E-05 -272.9180 8.7293E-05 -272.9232 8.7293E-05 -272.9334 8.7293E-05 -272.9539 8.7292E-05 -272.9948 8.7289E-05 -273.8160 8.7246E-05 -273.9130 8.7241E-05 -273.9140 8.7241E-05 -274.9990 8.7183E-05 -274.9993 8.7183E-05 -274.9997 8.7183E-05 -275.0000 8.7183E-05 -275.0007 8.7183E-05 -275.0014 8.7183E-05 -275.0022 8.7183E-05 -275.0029 8.7183E-05 -275.0036 8.7183E-05 -275.0043 8.7183E-05 -275.0050 8.7183E-05 -275.0102 8.7182E-05 -275.0204 8.7182E-05 -275.0409 8.7181E-05 -275.0818 8.7179E-05 -276.0000 8.7130E-05 -276.0010 8.7130E-05 -277.0820 8.7072E-05 -277.0823 8.7072E-05 -277.0827 8.7072E-05 -277.0830 8.7072E-05 -277.0837 8.7072E-05 -277.0844 8.7072E-05 -277.0852 8.7072E-05 -277.0859 8.7072E-05 -277.0866 8.7072E-05 -277.0873 8.7072E-05 -277.0880 8.7072E-05 -277.0932 8.7072E-05 -277.1034 8.7071E-05 -277.1239 8.7070E-05 -277.1648 8.7068E-05 -278.0830 8.7019E-05 -278.0840 8.7019E-05 -279.1620 8.6962E-05 -279.1623 8.6962E-05 -279.1627 8.6962E-05 -279.1630 8.6962E-05 -279.1637 8.6962E-05 -279.1644 8.6962E-05 -279.1652 8.6961E-05 -279.1659 8.6961E-05 -279.1666 8.6961E-05 -279.1673 8.6961E-05 -279.1680 8.6961E-05 -279.1732 8.6961E-05 -279.1834 8.6961E-05 -279.2039 8.6959E-05 -279.2448 8.6957E-05 -280.1430 8.6909E-05 -280.1630 8.6908E-05 -280.1640 8.6908E-05 -281.2490 8.6850E-05 -281.2493 8.6850E-05 -281.2497 8.6850E-05 -281.2500 8.6850E-05 -281.2507 8.6850E-05 -281.2514 8.6850E-05 -281.2522 8.6850E-05 -281.2529 8.6850E-05 -281.2536 8.6850E-05 -281.2543 8.6850E-05 -281.2550 8.6850E-05 -281.2602 8.6850E-05 -281.2704 8.6849E-05 -281.2909 8.6848E-05 -281.3318 8.6846E-05 -282.2500 8.6797E-05 -282.2510 8.6797E-05 -283.3320 8.6739E-05 -283.3323 8.6739E-05 -283.3327 8.6739E-05 -283.3330 8.6739E-05 -283.3337 8.6739E-05 -283.3344 8.6739E-05 -283.3352 8.6739E-05 -283.3359 8.6739E-05 -283.3366 8.6739E-05 -283.3373 8.6739E-05 -283.3380 8.6739E-05 -283.3432 8.6739E-05 -283.3534 8.6738E-05 -283.3739 8.6737E-05 -283.4148 8.6735E-05 -284.3330 8.6686E-05 -284.3340 8.6686E-05 -285.4120 8.6628E-05 -285.4123 8.6628E-05 -285.4127 8.6628E-05 -285.4130 8.6628E-05 -285.4137 8.6628E-05 -285.4144 8.6628E-05 -285.4152 8.6628E-05 -285.4159 8.6628E-05 -285.4166 8.6628E-05 -285.4173 8.6628E-05 -285.4180 8.6628E-05 -285.4232 8.6627E-05 -285.4334 8.6627E-05 -285.4539 8.6626E-05 -285.4948 8.6624E-05 -286.4130 8.6574E-05 -286.4131 8.6574E-05 -286.4140 8.6574E-05 -287.4990 8.6516E-05 -287.4993 8.6516E-05 -287.4997 8.6516E-05 -287.5000 8.6516E-05 -287.5007 8.6516E-05 -287.5014 8.6516E-05 -287.5022 8.6516E-05 -287.5029 8.6516E-05 -287.5036 8.6516E-05 -287.5043 8.6516E-05 -287.5050 8.6516E-05 -287.5102 8.6516E-05 -287.5204 8.6515E-05 -287.5409 8.6514E-05 -287.5818 8.6512E-05 -288.5000 8.6463E-05 -288.5010 8.6463E-05 -289.5820 8.6405E-05 -289.5823 8.6405E-05 -289.5827 8.6405E-05 -289.5830 8.6405E-05 -289.5837 8.6405E-05 -289.5844 8.6405E-05 -289.5852 8.6405E-05 -289.5859 8.6405E-05 -289.5866 8.6405E-05 -289.5873 8.6405E-05 -289.5880 8.6405E-05 -289.5932 8.6404E-05 -289.6034 8.6404E-05 -289.6239 8.6403E-05 -289.6648 8.6400E-05 -290.5830 8.6351E-05 -290.5840 8.6351E-05 -291.6620 8.6294E-05 -291.6623 8.6294E-05 -291.6627 8.6294E-05 -291.6630 8.6294E-05 -291.6637 8.6293E-05 -291.6644 8.6293E-05 -291.6652 8.6293E-05 -291.6659 8.6293E-05 -291.6666 8.6293E-05 -291.6673 8.6293E-05 -291.6680 8.6293E-05 -291.6732 8.6293E-05 -291.6834 8.6292E-05 -291.7039 8.6291E-05 -291.7448 8.6289E-05 -292.6630 8.6240E-05 -292.6640 8.6240E-05 -292.6690 8.6240E-05 -293.7490 8.6182E-05 -293.7493 8.6182E-05 -293.7497 8.6182E-05 -293.7500 8.6182E-05 -293.7507 8.6182E-05 -293.7514 8.6182E-05 -293.7522 8.6182E-05 -293.7529 8.6182E-05 -293.7536 8.6182E-05 -293.7543 8.6182E-05 -293.7550 8.6182E-05 -293.7602 8.6181E-05 -293.7704 8.6181E-05 -293.7909 8.6180E-05 -293.8318 8.6177E-05 -294.7500 8.6128E-05 -294.7510 8.6128E-05 -295.8320 8.6070E-05 -295.8323 8.6070E-05 -295.8327 8.6070E-05 -295.8330 8.6070E-05 -295.8337 8.6070E-05 -295.8344 8.6070E-05 -295.8352 8.6070E-05 -295.8359 8.6070E-05 -295.8366 8.6070E-05 -295.8373 8.6070E-05 -295.8380 8.6070E-05 -295.8432 8.6070E-05 -295.8534 8.6069E-05 -295.8739 8.6068E-05 -295.9148 8.6066E-05 -296.8330 8.6017E-05 -296.8340 8.6017E-05 -297.9120 8.5959E-05 -297.9123 8.5959E-05 -297.9127 8.5959E-05 -297.9130 8.5959E-05 -297.9137 8.5959E-05 -297.9144 8.5959E-05 -297.9152 8.5959E-05 -297.9159 8.5959E-05 -297.9166 8.5959E-05 -297.9173 8.5959E-05 -297.9180 8.5959E-05 -297.9232 8.5958E-05 -297.9334 8.5958E-05 -297.9539 8.5957E-05 -297.9948 8.5954E-05 -298.9130 8.5905E-05 -298.9140 8.5905E-05 -299.5723 8.5870E-05 -299.9990 8.5847E-05 -299.9993 8.5847E-05 -299.9997 8.5847E-05 -300.0000 8.5847E-05 -300.0007 8.5847E-05 -300.0014 8.5847E-05 -300.0022 8.5847E-05 -300.0029 8.5847E-05 -300.0036 8.5847E-05 -300.0043 8.5847E-05 -300.0050 8.5847E-05 -300.0102 8.5847E-05 -300.0204 8.5846E-05 -300.0409 8.5845E-05 -300.0818 8.5843E-05 -301.0000 8.5794E-05 -301.0010 8.5794E-05 -302.0820 8.5736E-05 -302.0823 8.5736E-05 -302.0827 8.5736E-05 -302.0830 8.5736E-05 -302.0837 8.5736E-05 -302.0844 8.5736E-05 -302.0852 8.5736E-05 -302.0859 8.5736E-05 -302.0866 8.5735E-05 -302.0873 8.5735E-05 -302.0880 8.5735E-05 -302.0932 8.5735E-05 -302.1034 8.5735E-05 -302.1239 8.5734E-05 -302.1648 8.5731E-05 -303.0830 8.5682E-05 -303.0840 8.5682E-05 -304.1620 8.5624E-05 -304.1623 8.5624E-05 -304.1627 8.5624E-05 -304.1630 8.5624E-05 -304.1637 8.5624E-05 -304.1644 8.5624E-05 -304.1652 8.5624E-05 -304.1659 8.5624E-05 -304.1666 8.5624E-05 -304.1673 8.5624E-05 -304.1680 8.5624E-05 -304.1732 8.5624E-05 -304.1834 8.5623E-05 -304.2039 8.5622E-05 -304.2448 8.5620E-05 -305.1630 8.5571E-05 -305.1640 8.5571E-05 -306.0813 8.5522E-05 -306.2490 8.5513E-05 -306.2493 8.5513E-05 -306.2497 8.5513E-05 -306.2500 8.5513E-05 -306.2507 8.5513E-05 -306.2514 8.5513E-05 -306.2522 8.5513E-05 -306.2529 8.5513E-05 -306.2536 8.5513E-05 -306.2543 8.5513E-05 -306.2550 8.5513E-05 -306.2602 8.5512E-05 -306.2704 8.5512E-05 -306.2909 8.5511E-05 -306.3318 8.5508E-05 -307.2500 8.5459E-05 -307.2510 8.5459E-05 -308.3320 8.5402E-05 -308.3323 8.5402E-05 -308.3327 8.5402E-05 -308.3330 8.5402E-05 -308.3337 8.5401E-05 -308.3344 8.5401E-05 -308.3352 8.5401E-05 -308.3359 8.5401E-05 -308.3366 8.5401E-05 -308.3373 8.5401E-05 -308.3380 8.5401E-05 -308.3432 8.5401E-05 -308.3534 8.5400E-05 -308.3739 8.5399E-05 -308.4148 8.5397E-05 -309.3330 8.5348E-05 -309.3340 8.5348E-05 -310.4120 8.5291E-05 -310.4123 8.5290E-05 -310.4127 8.5290E-05 -310.4130 8.5290E-05 -310.4137 8.5290E-05 -310.4144 8.5290E-05 -310.4152 8.5290E-05 -310.4159 8.5290E-05 -310.4166 8.5290E-05 -310.4173 8.5290E-05 -310.4180 8.5290E-05 -310.4232 8.5290E-05 -310.4334 8.5289E-05 -310.4539 8.5288E-05 -310.4948 8.5286E-05 -311.4130 8.5237E-05 -311.4140 8.5237E-05 -312.4660 8.5181E-05 -312.4990 8.5179E-05 -312.4993 8.5179E-05 -312.4997 8.5179E-05 -312.5000 8.5179E-05 -312.5007 8.5179E-05 -312.5014 8.5179E-05 -312.5022 8.5179E-05 -312.5029 8.5179E-05 -312.5036 8.5179E-05 -312.5043 8.5179E-05 -312.5050 8.5179E-05 -312.5102 8.5179E-05 -312.5204 8.5178E-05 -312.5409 8.5177E-05 -312.5818 8.5175E-05 -313.5000 8.5126E-05 -313.5010 8.5126E-05 -314.5820 8.5068E-05 -314.5823 8.5068E-05 -314.5827 8.5068E-05 -314.5830 8.5068E-05 -314.5837 8.5068E-05 -314.5844 8.5068E-05 -314.5852 8.5068E-05 -314.5859 8.5068E-05 -314.5866 8.5068E-05 -314.5873 8.5068E-05 -314.5880 8.5068E-05 -314.5932 8.5067E-05 -314.6034 8.5067E-05 -314.6239 8.5066E-05 -314.6648 8.5064E-05 -315.5830 8.5015E-05 -315.5840 8.5015E-05 -316.6620 8.4957E-05 -316.6623 8.4957E-05 -316.6627 8.4957E-05 -316.6630 8.4957E-05 -316.6637 8.4957E-05 -316.6644 8.4957E-05 -316.6652 8.4957E-05 -316.6659 8.4957E-05 -316.6666 8.4957E-05 -316.6673 8.4957E-05 -316.6680 8.4957E-05 -316.6732 8.4957E-05 -316.6834 8.4956E-05 -316.7039 8.4955E-05 -316.7448 8.4953E-05 -317.6630 8.4904E-05 -317.6640 8.4904E-05 -318.7440 8.4846E-05 -318.7490 8.4846E-05 -318.7493 8.4846E-05 -318.7497 8.4846E-05 -318.7500 8.4846E-05 -318.7507 8.4846E-05 -318.7514 8.4846E-05 -318.7522 8.4846E-05 -318.7529 8.4846E-05 -318.7536 8.4846E-05 -318.7543 8.4846E-05 -318.7550 8.4846E-05 -318.7602 8.4846E-05 -318.7704 8.4845E-05 -318.7909 8.4844E-05 -318.8318 8.4842E-05 -319.7500 8.4793E-05 -319.7510 8.4793E-05 -320.8320 8.4735E-05 -320.8323 8.4735E-05 -320.8327 8.4735E-05 -320.8330 8.4735E-05 -320.8337 8.4735E-05 -320.8344 8.4735E-05 -320.8352 8.4735E-05 -320.8359 8.4735E-05 -320.8366 8.4735E-05 -320.8373 8.4735E-05 -320.8380 8.4735E-05 -320.8432 8.4735E-05 -320.8534 8.4734E-05 -320.8739 8.4733E-05 -320.9148 8.4731E-05 -321.8330 8.4682E-05 -321.8340 8.4682E-05 -322.9120 8.4625E-05 -322.9123 8.4625E-05 -322.9127 8.4625E-05 -322.9130 8.4625E-05 -322.9137 8.4625E-05 -322.9144 8.4625E-05 -322.9152 8.4625E-05 -322.9159 8.4625E-05 -322.9166 8.4625E-05 -322.9173 8.4625E-05 -322.9180 8.4624E-05 -322.9232 8.4624E-05 -322.9334 8.4624E-05 -322.9539 8.4623E-05 -322.9948 8.4620E-05 -323.9130 8.4572E-05 -323.9140 8.4572E-05 -324.9990 8.4514E-05 -324.9993 8.4514E-05 -324.9997 8.4514E-05 -325.0000 8.4514E-05 -325.0001 8.4514E-05 -325.0012 8.4514E-05 -325.0025 8.4514E-05 -325.0050 8.4514E-05 -325.0102 8.4513E-05 -325.0204 8.4513E-05 -325.0409 8.4512E-05 -325.0818 8.4510E-05 -326.0000 8.4461E-05 -326.0010 8.4461E-05 -327.0820 8.4403E-05 -327.0823 8.4403E-05 -327.0827 8.4403E-05 -327.0830 8.4403E-05 -327.0837 8.4403E-05 -327.0844 8.4403E-05 -327.0852 8.4403E-05 -327.0859 8.4403E-05 -327.0866 8.4403E-05 -327.0873 8.4403E-05 -327.0880 8.4403E-05 -327.0932 8.4403E-05 -327.1034 8.4402E-05 -327.1239 8.4401E-05 -327.1648 8.4399E-05 -328.0830 8.4350E-05 -328.0840 8.4350E-05 -329.1620 8.4293E-05 -329.1623 8.4293E-05 -329.1627 8.4293E-05 -329.1630 8.4293E-05 -329.1637 8.4293E-05 -329.1644 8.4293E-05 -329.1652 8.4293E-05 -329.1659 8.4293E-05 -329.1666 8.4293E-05 -329.1673 8.4293E-05 -329.1680 8.4293E-05 -329.1732 8.4293E-05 -329.1834 8.4292E-05 -329.2039 8.4291E-05 -329.2448 8.4289E-05 -330.1630 8.4240E-05 -330.1640 8.4240E-05 -331.2490 8.4183E-05 -331.2493 8.4183E-05 -331.2497 8.4183E-05 -331.2500 8.4183E-05 -331.2507 8.4183E-05 -331.2514 8.4183E-05 -331.2522 8.4183E-05 -331.2529 8.4183E-05 -331.2536 8.4183E-05 -331.2543 8.4182E-05 -331.2550 8.4182E-05 -331.2602 8.4182E-05 -331.2704 8.4182E-05 -331.2909 8.4181E-05 -331.3318 8.4178E-05 -332.2500 8.4130E-05 -332.2510 8.4130E-05 -333.3320 8.4073E-05 -333.3323 8.4073E-05 -333.3327 8.4073E-05 -333.3330 8.4073E-05 -333.3337 8.4073E-05 -333.3344 8.4072E-05 -333.3352 8.4072E-05 -333.3359 8.4072E-05 -333.3366 8.4072E-05 -333.3373 8.4072E-05 -333.3380 8.4072E-05 -333.3432 8.4072E-05 -333.3534 8.4071E-05 -333.3739 8.4070E-05 -333.4148 8.4068E-05 -334.3330 8.4020E-05 -334.3340 8.4020E-05 -335.4120 8.3963E-05 -335.4123 8.3963E-05 -335.4127 8.3963E-05 -335.4130 8.3963E-05 -335.4137 8.3963E-05 -335.4144 8.3963E-05 -335.4152 8.3963E-05 -335.4159 8.3963E-05 -335.4166 8.3962E-05 -335.4173 8.3962E-05 -335.4180 8.3962E-05 -335.4232 8.3962E-05 -335.4334 8.3962E-05 -335.4539 8.3961E-05 -335.4948 8.3958E-05 -336.4130 8.3910E-05 -336.4140 8.3910E-05 -337.4990 8.3853E-05 -337.4993 8.3853E-05 -337.4997 8.3853E-05 -337.5000 8.3853E-05 -337.5007 8.3853E-05 -337.5014 8.3852E-05 -337.5022 8.3852E-05 -337.5029 8.3852E-05 -337.5036 8.3852E-05 -337.5043 8.3852E-05 -337.5050 8.3852E-05 -337.5102 8.3852E-05 -337.5204 8.3851E-05 -337.5409 8.3850E-05 -337.5818 8.3848E-05 -338.2183 8.3815E-05 -338.5000 8.3800E-05 -338.5010 8.3800E-05 -339.5820 8.3743E-05 -339.5823 8.3743E-05 -339.5827 8.3743E-05 -339.5830 8.3743E-05 -339.5837 8.3743E-05 -339.5844 8.3743E-05 -339.5852 8.3743E-05 -339.5859 8.3743E-05 -339.5866 8.3743E-05 -339.5873 8.3743E-05 -339.5880 8.3742E-05 -339.5932 8.3742E-05 -339.6034 8.3742E-05 -339.6239 8.3741E-05 -339.6648 8.3738E-05 -340.5830 8.3690E-05 -340.5840 8.3690E-05 -341.6620 8.3633E-05 -341.6623 8.3633E-05 -341.6627 8.3633E-05 -341.6630 8.3633E-05 -341.6637 8.3633E-05 -341.6644 8.3633E-05 -341.6652 8.3633E-05 -341.6659 8.3633E-05 -341.6666 8.3633E-05 -341.6673 8.3633E-05 -341.6680 8.3633E-05 -341.6732 8.3633E-05 -341.6834 8.3632E-05 -341.7039 8.3631E-05 -341.7448 8.3629E-05 -342.6630 8.3581E-05 -342.6640 8.3581E-05 -343.7490 8.3523E-05 -343.7493 8.3523E-05 -343.7497 8.3523E-05 -343.7500 8.3523E-05 -343.7507 8.3523E-05 -343.7514 8.3523E-05 -343.7522 8.3523E-05 -343.7529 8.3523E-05 -343.7536 8.3523E-05 -343.7543 8.3523E-05 -343.7550 8.3523E-05 -343.7602 8.3523E-05 -343.7704 8.3522E-05 -343.7909 8.3521E-05 -343.8318 8.3519E-05 -344.6860 8.3474E-05 -344.7500 8.3471E-05 -344.7510 8.3471E-05 -345.8320 8.3414E-05 -345.8323 8.3414E-05 -345.8327 8.3414E-05 -345.8330 8.3414E-05 -345.8337 8.3414E-05 -345.8344 8.3414E-05 -345.8352 8.3414E-05 -345.8359 8.3414E-05 -345.8366 8.3414E-05 -345.8373 8.3414E-05 -345.8380 8.3414E-05 -345.8432 8.3413E-05 -345.8534 8.3413E-05 -345.8739 8.3412E-05 -345.9148 8.3410E-05 -346.8330 8.3361E-05 -346.8340 8.3361E-05 -347.9120 8.3305E-05 -347.9123 8.3305E-05 -347.9127 8.3305E-05 -347.9130 8.3305E-05 -347.9137 8.3305E-05 -347.9144 8.3305E-05 -347.9152 8.3305E-05 -347.9159 8.3305E-05 -347.9166 8.3305E-05 -347.9173 8.3305E-05 -347.9180 8.3305E-05 -347.9232 8.3304E-05 -347.9334 8.3304E-05 -347.9539 8.3303E-05 -347.9948 8.3301E-05 -348.9130 8.3252E-05 -348.9140 8.3252E-05 -349.9990 8.3195E-05 -349.9993 8.3195E-05 -349.9997 8.3195E-05 -350.0000 8.3195E-05 -350.0007 8.3195E-05 -350.0014 8.3195E-05 -350.0022 8.3195E-05 -350.0029 8.3195E-05 -350.0036 8.3195E-05 -350.0043 8.3195E-05 -350.0050 8.3195E-05 -350.0102 8.3195E-05 -350.0204 8.3194E-05 -350.0409 8.3193E-05 -350.0818 8.3191E-05 -350.9920 8.3143E-05 -351.0000 8.3143E-05 -351.0010 8.3143E-05 -352.0820 8.3086E-05 -352.0823 8.3086E-05 -352.0827 8.3086E-05 -352.0830 8.3086E-05 -352.0837 8.3086E-05 -352.0844 8.3086E-05 -352.0852 8.3086E-05 -352.0859 8.3086E-05 -352.0866 8.3086E-05 -352.0873 8.3086E-05 -352.0880 8.3086E-05 -352.0932 8.3086E-05 -352.1034 8.3085E-05 -352.1239 8.3084E-05 -352.1648 8.3082E-05 -353.0830 8.3034E-05 -353.0840 8.3034E-05 -354.1620 8.2978E-05 -354.1623 8.2978E-05 -354.1627 8.2978E-05 -354.1630 8.2978E-05 -354.1637 8.2977E-05 -354.1644 8.2977E-05 -354.1652 8.2977E-05 -354.1659 8.2977E-05 -354.1666 8.2977E-05 -354.1673 8.2977E-05 -354.1680 8.2977E-05 -354.1732 8.2977E-05 -354.1834 8.2976E-05 -354.2039 8.2975E-05 -354.2448 8.2973E-05 -355.1630 8.2925E-05 -355.1640 8.2925E-05 -356.2490 8.2869E-05 -356.2493 8.2869E-05 -356.2497 8.2868E-05 -356.2500 8.2868E-05 -356.2507 8.2868E-05 -356.2514 8.2868E-05 -356.2522 8.2868E-05 -356.2529 8.2868E-05 -356.2536 8.2868E-05 -356.2543 8.2868E-05 -356.2550 8.2868E-05 -356.2602 8.2868E-05 -356.2704 8.2867E-05 -356.2909 8.2866E-05 -356.3318 8.2864E-05 -357.2500 8.2816E-05 -357.2507 8.2816E-05 -357.2510 8.2816E-05 -358.3320 8.2760E-05 -358.3323 8.2760E-05 -358.3327 8.2760E-05 -358.3330 8.2760E-05 -358.3337 8.2760E-05 -358.3344 8.2760E-05 -358.3352 8.2760E-05 -358.3359 8.2760E-05 -358.3366 8.2760E-05 -358.3373 8.2760E-05 -358.3380 8.2759E-05 -358.3432 8.2759E-05 -358.3534 8.2759E-05 -358.3739 8.2758E-05 -358.4148 8.2755E-05 -359.3330 8.2708E-05 -359.3340 8.2708E-05 -360.4120 8.2651E-05 -360.4123 8.2651E-05 -360.4127 8.2651E-05 -360.4130 8.2651E-05 -360.4137 8.2651E-05 -360.4144 8.2651E-05 -360.4152 8.2651E-05 -360.4159 8.2651E-05 -360.4166 8.2651E-05 -360.4173 8.2651E-05 -360.4180 8.2651E-05 -360.4232 8.2651E-05 -360.4334 8.2650E-05 -360.4539 8.2649E-05 -360.4948 8.2647E-05 -361.4130 8.2599E-05 -361.4140 8.2599E-05 -362.4990 8.2543E-05 -362.4993 8.2543E-05 -362.4997 8.2543E-05 -362.5000 8.2543E-05 -362.5007 8.2543E-05 -362.5014 8.2543E-05 -362.5022 8.2543E-05 -362.5029 8.2543E-05 -362.5036 8.2542E-05 -362.5043 8.2542E-05 -362.5050 8.2542E-05 -362.5102 8.2542E-05 -362.5204 8.2542E-05 -362.5409 8.2541E-05 -362.5818 8.2538E-05 -363.5000 8.2491E-05 -363.5010 8.2491E-05 -363.5214 8.2490E-05 -364.5820 8.2434E-05 -364.5823 8.2434E-05 -364.5827 8.2434E-05 -364.5830 8.2434E-05 -364.5837 8.2434E-05 -364.5844 8.2434E-05 -364.5852 8.2434E-05 -364.5859 8.2434E-05 -364.5866 8.2434E-05 -364.5873 8.2434E-05 -364.5880 8.2434E-05 -364.5932 8.2434E-05 -364.6034 8.2433E-05 -364.6239 8.2432E-05 -364.6648 8.2430E-05 -365.5830 8.2382E-05 -365.5840 8.2382E-05 -366.6620 8.2326E-05 -366.6623 8.2326E-05 -366.6627 8.2326E-05 -366.6630 8.2326E-05 -366.6637 8.2326E-05 -366.6644 8.2326E-05 -366.6652 8.2326E-05 -366.6659 8.2326E-05 -366.6666 8.2326E-05 -366.6673 8.2326E-05 -366.6680 8.2326E-05 -366.6732 8.2326E-05 -366.6834 8.2325E-05 -366.7039 8.2324E-05 -366.7448 8.2322E-05 -367.6630 8.2274E-05 -367.6640 8.2274E-05 -368.7490 8.2218E-05 -368.7493 8.2218E-05 -368.7497 8.2218E-05 -368.7500 8.2218E-05 -368.7507 8.2218E-05 -368.7514 8.2218E-05 -368.7522 8.2218E-05 -368.7529 8.2218E-05 -368.7536 8.2218E-05 -368.7543 8.2218E-05 -368.7550 8.2218E-05 -368.7602 8.2217E-05 -368.7704 8.2217E-05 -368.7909 8.2216E-05 -368.8318 8.2214E-05 -369.7500 8.2166E-05 -369.7510 8.2166E-05 -370.4213 8.2131E-05 -370.8320 8.2110E-05 -370.8323 8.2110E-05 -370.8327 8.2110E-05 -370.8330 8.2110E-05 -370.8337 8.2110E-05 -370.8344 8.2110E-05 -370.8352 8.2110E-05 -370.8359 8.2110E-05 -370.8366 8.2110E-05 -370.8373 8.2110E-05 -370.8380 8.2110E-05 -370.8432 8.2110E-05 -370.8534 8.2109E-05 -370.8739 8.2108E-05 -370.9148 8.2106E-05 -371.8330 8.2058E-05 -371.8340 8.2058E-05 -372.9120 8.2002E-05 -372.9123 8.2002E-05 -372.9127 8.2002E-05 -372.9130 8.2002E-05 -372.9137 8.2002E-05 -372.9144 8.2002E-05 -372.9152 8.2002E-05 -372.9159 8.2002E-05 -372.9166 8.2002E-05 -372.9173 8.2002E-05 -372.9180 8.2002E-05 -372.9232 8.2002E-05 -372.9334 8.2001E-05 -372.9539 8.2000E-05 -372.9948 8.1998E-05 -373.9130 8.1951E-05 -373.9140 8.1951E-05 -374.9990 8.1894E-05 -374.9993 8.1894E-05 -374.9997 8.1894E-05 -375.0000 8.1894E-05 -375.0007 8.1894E-05 -375.0014 8.1894E-05 -375.0022 8.1894E-05 -375.0029 8.1894E-05 -375.0036 8.1894E-05 -375.0043 8.1894E-05 -375.0050 8.1894E-05 -375.0102 8.1894E-05 -375.0204 8.1893E-05 -375.0409 8.1892E-05 -375.0818 8.1890E-05 -376.0000 8.1843E-05 -376.0010 8.1843E-05 -376.9423 8.1794E-05 -377.0820 8.1787E-05 -377.0823 8.1787E-05 -377.0827 8.1787E-05 -377.0830 8.1787E-05 -377.0837 8.1787E-05 -377.0844 8.1787E-05 -377.0852 8.1787E-05 -377.0859 8.1787E-05 -377.0866 8.1787E-05 -377.0873 8.1787E-05 -377.0880 8.1787E-05 -377.0932 8.1786E-05 -377.1034 8.1786E-05 -377.1239 8.1785E-05 -377.1648 8.1783E-05 -378.0830 8.1735E-05 -378.0840 8.1735E-05 -379.1620 8.1680E-05 -379.1623 8.1680E-05 -379.1627 8.1680E-05 -379.1630 8.1680E-05 -379.1637 8.1680E-05 -379.1644 8.1679E-05 -379.1652 8.1679E-05 -379.1659 8.1679E-05 -379.1666 8.1679E-05 -379.1673 8.1679E-05 -379.1680 8.1679E-05 -379.1732 8.1679E-05 -379.1834 8.1679E-05 -379.2039 8.1677E-05 -379.2448 8.1675E-05 -380.1630 8.1628E-05 -380.1640 8.1628E-05 -381.2490 8.1572E-05 -381.2493 8.1572E-05 -381.2497 8.1572E-05 -381.2500 8.1572E-05 -381.2507 8.1572E-05 -381.2514 8.1572E-05 -381.2522 8.1572E-05 -381.2529 8.1572E-05 -381.2536 8.1572E-05 -381.2543 8.1572E-05 -381.2550 8.1572E-05 -381.2602 8.1572E-05 -381.2704 8.1571E-05 -381.2909 8.1570E-05 -381.3318 8.1568E-05 -382.2500 8.1521E-05 -382.2510 8.1521E-05 -383.3020 8.1466E-05 -383.3320 8.1465E-05 -383.3323 8.1465E-05 -383.3327 8.1465E-05 -383.3330 8.1465E-05 -383.3337 8.1465E-05 -383.3344 8.1465E-05 -383.3352 8.1465E-05 -383.3359 8.1465E-05 -383.3366 8.1465E-05 -383.3373 8.1465E-05 -383.3380 8.1465E-05 -383.3432 8.1464E-05 -383.3534 8.1464E-05 -383.3739 8.1463E-05 -383.4148 8.1461E-05 -384.3330 8.1413E-05 -384.3340 8.1413E-05 -385.4120 8.1358E-05 -385.4123 8.1358E-05 -385.4127 8.1358E-05 -385.4130 8.1358E-05 -385.4137 8.1358E-05 -385.4144 8.1358E-05 -385.4152 8.1358E-05 -385.4159 8.1358E-05 -385.4166 8.1358E-05 -385.4173 8.1358E-05 -385.4180 8.1358E-05 -385.4232 8.1357E-05 -385.4334 8.1357E-05 -385.4539 8.1356E-05 -385.4948 8.1354E-05 -386.4130 8.1307E-05 -386.4140 8.1307E-05 -387.4990 8.1251E-05 -387.4993 8.1251E-05 -387.4997 8.1251E-05 -387.5000 8.1251E-05 -387.5007 8.1251E-05 -387.5014 8.1251E-05 -387.5022 8.1251E-05 -387.5029 8.1251E-05 -387.5036 8.1251E-05 -387.5043 8.1251E-05 -387.5050 8.1251E-05 -387.5102 8.1250E-05 -387.5204 8.1250E-05 -387.5409 8.1249E-05 -387.5818 8.1247E-05 -388.5000 8.1199E-05 -388.5010 8.1199E-05 -389.5800 8.1144E-05 -389.5820 8.1144E-05 -389.5823 8.1144E-05 -389.5827 8.1144E-05 -389.5830 8.1144E-05 -389.5837 8.1144E-05 -389.5844 8.1144E-05 -389.5852 8.1144E-05 -389.5859 8.1144E-05 -389.5866 8.1144E-05 -389.5873 8.1144E-05 -389.5880 8.1144E-05 -389.5932 8.1143E-05 -389.6034 8.1143E-05 -389.6239 8.1142E-05 -389.6648 8.1140E-05 -390.5830 8.1093E-05 -390.5840 8.1093E-05 -391.6620 8.1037E-05 -391.6623 8.1037E-05 -391.6627 8.1037E-05 -391.6630 8.1037E-05 -391.6637 8.1037E-05 -391.6644 8.1037E-05 -391.6652 8.1037E-05 -391.6659 8.1037E-05 -391.6666 8.1037E-05 -391.6673 8.1037E-05 -391.6680 8.1037E-05 -391.6732 8.1037E-05 -391.6834 8.1036E-05 -391.7039 8.1035E-05 -391.7448 8.1033E-05 -392.6630 8.0986E-05 -392.6640 8.0986E-05 -393.7490 8.0931E-05 -393.7493 8.0931E-05 -393.7497 8.0931E-05 -393.7500 8.0931E-05 -393.7507 8.0931E-05 -393.7514 8.0931E-05 -393.7522 8.0931E-05 -393.7529 8.0930E-05 -393.7536 8.0930E-05 -393.7543 8.0930E-05 -393.7550 8.0930E-05 -393.7602 8.0930E-05 -393.7704 8.0930E-05 -393.7909 8.0929E-05 -393.8318 8.0926E-05 -394.7500 8.0880E-05 -394.7510 8.0879E-05 -395.8320 8.0824E-05 -395.8323 8.0824E-05 -395.8327 8.0824E-05 -395.8330 8.0824E-05 -395.8336 8.0824E-05 -395.8342 8.0824E-05 -395.8355 8.0824E-05 -395.8380 8.0824E-05 -395.8432 8.0824E-05 -395.8534 8.0823E-05 -395.8739 8.0822E-05 -395.9148 8.0820E-05 -396.8330 8.0773E-05 -396.8340 8.0773E-05 -397.9120 8.0718E-05 -397.9123 8.0718E-05 -397.9127 8.0718E-05 -397.9130 8.0718E-05 -397.9137 8.0718E-05 -397.9144 8.0718E-05 -397.9152 8.0718E-05 -397.9159 8.0718E-05 -397.9166 8.0718E-05 -397.9173 8.0718E-05 -397.9180 8.0718E-05 -397.9232 8.0717E-05 -397.9334 8.0717E-05 -397.9539 8.0716E-05 -397.9948 8.0714E-05 -398.9130 8.0667E-05 -398.9140 8.0667E-05 -399.9990 8.0612E-05 -399.9993 8.0612E-05 -399.9997 8.0612E-05 -400.0000 8.0612E-05 -400.0007 8.0612E-05 -400.0014 8.0612E-05 -400.0022 8.0611E-05 -400.0029 8.0611E-05 -400.0036 8.0611E-05 -400.0043 8.0611E-05 -400.0050 8.0611E-05 -400.0102 8.0611E-05 -400.0204 8.0611E-05 -400.0409 8.0610E-05 -400.0818 8.0607E-05 -401.0000 8.0561E-05 -401.0010 8.0561E-05 -402.0820 8.0506E-05 -402.0823 8.0506E-05 -402.0827 8.0506E-05 -402.0830 8.0506E-05 -402.0837 8.0506E-05 -402.0844 8.0505E-05 -402.0852 8.0505E-05 -402.0859 8.0505E-05 -402.0866 8.0505E-05 -402.0873 8.0505E-05 -402.0880 8.0505E-05 -402.0932 8.0505E-05 -402.1034 8.0505E-05 -402.1239 8.0503E-05 -402.1648 8.0501E-05 -402.4106 8.0489E-05 -403.0830 8.0455E-05 -403.0840 8.0455E-05 -404.1620 8.0400E-05 -404.1623 8.0400E-05 -404.1627 8.0400E-05 -404.1630 8.0400E-05 -404.1637 8.0400E-05 -404.1644 8.0400E-05 -404.1652 8.0400E-05 -404.1659 8.0400E-05 -404.1666 8.0400E-05 -404.1673 8.0400E-05 -404.1680 8.0399E-05 -404.1732 8.0399E-05 -404.1834 8.0399E-05 -404.2039 8.0398E-05 -404.2448 8.0396E-05 -405.1630 8.0349E-05 -405.1640 8.0349E-05 -406.2490 8.0294E-05 -406.2493 8.0294E-05 -406.2497 8.0294E-05 -406.2500 8.0294E-05 -406.2507 8.0294E-05 -406.2514 8.0294E-05 -406.2522 8.0294E-05 -406.2529 8.0294E-05 -406.2536 8.0294E-05 -406.2543 8.0294E-05 -406.2550 8.0293E-05 -406.2602 8.0293E-05 -406.2704 8.0293E-05 -406.2909 8.0292E-05 -406.3318 8.0290E-05 -407.2500 8.0243E-05 -407.2510 8.0243E-05 -408.3320 8.0188E-05 -408.3323 8.0188E-05 -408.3327 8.0188E-05 -408.3330 8.0188E-05 -408.3337 8.0188E-05 -408.3344 8.0188E-05 -408.3352 8.0188E-05 -408.3359 8.0188E-05 -408.3366 8.0188E-05 -408.3373 8.0188E-05 -408.3380 8.0188E-05 -408.3432 8.0188E-05 -408.3534 8.0187E-05 -408.3739 8.0186E-05 -408.4148 8.0184E-05 -409.2050 8.0144E-05 -409.3330 8.0137E-05 -409.3340 8.0137E-05 -410.4120 8.0083E-05 -410.4123 8.0083E-05 -410.4127 8.0083E-05 -410.4130 8.0083E-05 -410.4137 8.0083E-05 -410.4144 8.0083E-05 -410.4152 8.0083E-05 -410.4159 8.0082E-05 -410.4166 8.0082E-05 -410.4173 8.0082E-05 -410.4180 8.0082E-05 -410.4232 8.0082E-05 -410.4334 8.0082E-05 -410.4539 8.0081E-05 -410.4948 8.0078E-05 -411.4130 8.0032E-05 -411.4140 8.0032E-05 -412.4990 7.9977E-05 -412.4993 7.9977E-05 -412.4997 7.9977E-05 -412.5000 7.9977E-05 -412.5007 7.9977E-05 -412.5014 7.9977E-05 -412.5022 7.9977E-05 -412.5029 7.9977E-05 -412.5036 7.9977E-05 -412.5043 7.9977E-05 -412.5050 7.9977E-05 -412.5102 7.9976E-05 -412.5204 7.9976E-05 -412.5409 7.9975E-05 -412.5818 7.9973E-05 -413.5000 7.9926E-05 -413.5010 7.9926E-05 -414.5820 7.9872E-05 -414.5823 7.9872E-05 -414.5827 7.9872E-05 -414.5830 7.9872E-05 -414.5837 7.9872E-05 -414.5844 7.9872E-05 -414.5852 7.9872E-05 -414.5859 7.9872E-05 -414.5866 7.9871E-05 -414.5873 7.9871E-05 -414.5880 7.9871E-05 -414.5932 7.9871E-05 -414.6034 7.9871E-05 -414.6239 7.9870E-05 -414.6648 7.9868E-05 -415.5250 7.9824E-05 -415.5830 7.9821E-05 -415.5840 7.9821E-05 -416.6620 7.9767E-05 -416.6623 7.9767E-05 -416.6627 7.9767E-05 -416.6630 7.9767E-05 -416.6637 7.9767E-05 -416.6644 7.9767E-05 -416.6652 7.9767E-05 -416.6659 7.9766E-05 -416.6666 7.9766E-05 -416.6673 7.9766E-05 -416.6680 7.9766E-05 -416.6732 7.9766E-05 -416.6834 7.9766E-05 -416.7039 7.9765E-05 -416.7448 7.9762E-05 -417.6630 7.9716E-05 -417.6640 7.9716E-05 -418.7490 7.9661E-05 -418.7493 7.9661E-05 -418.7497 7.9661E-05 -418.7500 7.9661E-05 -418.7507 7.9661E-05 -418.7514 7.9661E-05 -418.7522 7.9661E-05 -418.7529 7.9661E-05 -418.7536 7.9661E-05 -418.7543 7.9661E-05 -418.7550 7.9661E-05 -418.7602 7.9661E-05 -418.7704 7.9660E-05 -418.7909 7.9659E-05 -418.8318 7.9657E-05 -419.7500 7.9611E-05 -419.7510 7.9611E-05 -420.8320 7.9556E-05 -420.8323 7.9556E-05 -420.8327 7.9556E-05 -420.8330 7.9556E-05 -420.8337 7.9556E-05 -420.8344 7.9556E-05 -420.8352 7.9556E-05 -420.8359 7.9556E-05 -420.8366 7.9556E-05 -420.8373 7.9556E-05 -420.8380 7.9556E-05 -420.8432 7.9556E-05 -420.8534 7.9555E-05 -420.8739 7.9554E-05 -420.9148 7.9552E-05 -421.8280 7.9506E-05 -421.8330 7.9506E-05 -421.8340 7.9506E-05 -422.9120 7.9452E-05 -422.9123 7.9452E-05 -422.9127 7.9452E-05 -422.9130 7.9452E-05 -422.9137 7.9452E-05 -422.9144 7.9452E-05 -422.9152 7.9452E-05 -422.9159 7.9452E-05 -422.9166 7.9452E-05 -422.9173 7.9452E-05 -422.9180 7.9451E-05 -422.9232 7.9451E-05 -422.9334 7.9451E-05 -422.9539 7.9450E-05 -422.9948 7.9448E-05 -423.9130 7.9401E-05 -423.9140 7.9401E-05 -424.9990 7.9347E-05 -424.9993 7.9347E-05 -424.9997 7.9347E-05 -425.0000 7.9347E-05 -425.0007 7.9347E-05 -425.0014 7.9347E-05 -425.0022 7.9347E-05 -425.0029 7.9347E-05 -425.0036 7.9347E-05 -425.0043 7.9347E-05 -425.0050 7.9347E-05 -425.0102 7.9346E-05 -425.0204 7.9346E-05 -425.0409 7.9345E-05 -425.0818 7.9343E-05 -426.0000 7.9297E-05 -426.0010 7.9297E-05 -427.0820 7.9242E-05 -427.0823 7.9242E-05 -427.0827 7.9242E-05 -427.0830 7.9242E-05 -427.0837 7.9242E-05 -427.0844 7.9242E-05 -427.0852 7.9242E-05 -427.0859 7.9242E-05 -427.0866 7.9242E-05 -427.0873 7.9242E-05 -427.0880 7.9242E-05 -427.0932 7.9242E-05 -427.1034 7.9241E-05 -427.1239 7.9240E-05 -427.1648 7.9238E-05 -428.0830 7.9192E-05 -428.0840 7.9192E-05 -428.0841 7.9192E-05 -429.1620 7.9138E-05 -429.1623 7.9138E-05 -429.1627 7.9138E-05 -429.1630 7.9138E-05 -429.1637 7.9138E-05 -429.1644 7.9138E-05 -429.1652 7.9138E-05 -429.1659 7.9138E-05 -429.1666 7.9138E-05 -429.1673 7.9138E-05 -429.1680 7.9138E-05 -429.1732 7.9137E-05 -429.1834 7.9137E-05 -429.2039 7.9136E-05 -429.2448 7.9134E-05 -430.1630 7.9088E-05 -430.1640 7.9088E-05 -431.2490 7.9033E-05 -431.2493 7.9033E-05 -431.2497 7.9033E-05 -431.2500 7.9033E-05 -431.2507 7.9033E-05 -431.2514 7.9033E-05 -431.2522 7.9033E-05 -431.2529 7.9033E-05 -431.2536 7.9033E-05 -431.2543 7.9033E-05 -431.2550 7.9033E-05 -431.2602 7.9033E-05 -431.2704 7.9032E-05 -431.2909 7.9031E-05 -431.3318 7.9029E-05 -432.2500 7.8983E-05 -432.2510 7.8983E-05 -433.3320 7.8929E-05 -433.3323 7.8929E-05 -433.3327 7.8929E-05 -433.3330 7.8929E-05 -433.3337 7.8929E-05 -433.3344 7.8929E-05 -433.3352 7.8929E-05 -433.3359 7.8929E-05 -433.3366 7.8929E-05 -433.3373 7.8929E-05 -433.3380 7.8929E-05 -433.3432 7.8929E-05 -433.3534 7.8928E-05 -433.3739 7.8927E-05 -433.4148 7.8925E-05 -434.3330 7.8879E-05 -434.3340 7.8879E-05 -434.4158 7.8875E-05 -435.4120 7.8825E-05 -435.4123 7.8825E-05 -435.4127 7.8825E-05 -435.4130 7.8825E-05 -435.4137 7.8825E-05 -435.4144 7.8825E-05 -435.4152 7.8825E-05 -435.4159 7.8825E-05 -435.4166 7.8825E-05 -435.4173 7.8825E-05 -435.4180 7.8825E-05 -435.4232 7.8825E-05 -435.4334 7.8824E-05 -435.4539 7.8823E-05 -435.4948 7.8821E-05 -436.4130 7.8775E-05 -436.4140 7.8775E-05 -437.4990 7.8721E-05 -437.4993 7.8721E-05 -437.4997 7.8721E-05 -437.5000 7.8721E-05 -437.5007 7.8721E-05 -437.5014 7.8721E-05 -437.5022 7.8721E-05 -437.5029 7.8721E-05 -437.5036 7.8721E-05 -437.5043 7.8721E-05 -437.5050 7.8721E-05 -437.5102 7.8721E-05 -437.5204 7.8720E-05 -437.5409 7.8719E-05 -437.5818 7.8717E-05 -438.5000 7.8671E-05 -438.5010 7.8671E-05 -439.5820 7.8617E-05 -439.5823 7.8617E-05 -439.5827 7.8617E-05 -439.5830 7.8617E-05 -439.5837 7.8617E-05 -439.5844 7.8617E-05 -439.5852 7.8617E-05 -439.5859 7.8617E-05 -439.5866 7.8617E-05 -439.5873 7.8617E-05 -439.5880 7.8617E-05 -439.5932 7.8617E-05 -439.6034 7.8616E-05 -439.6239 7.8615E-05 -439.6648 7.8613E-05 -440.5830 7.8567E-05 -440.5840 7.8567E-05 -441.3023 7.8532E-05 -441.6620 7.8514E-05 -441.6623 7.8514E-05 -441.6627 7.8514E-05 -441.6630 7.8514E-05 -441.6637 7.8514E-05 -441.6644 7.8514E-05 -441.6652 7.8514E-05 -441.6659 7.8514E-05 -441.6666 7.8514E-05 -441.6673 7.8514E-05 -441.6680 7.8513E-05 -441.6732 7.8513E-05 -441.6834 7.8513E-05 -441.7039 7.8512E-05 -441.7448 7.8510E-05 -442.6630 7.8464E-05 -442.6640 7.8464E-05 -443.7490 7.8410E-05 -443.7493 7.8410E-05 -443.7497 7.8410E-05 -443.7500 7.8410E-05 -443.7507 7.8410E-05 -443.7514 7.8410E-05 -443.7522 7.8410E-05 -443.7529 7.8410E-05 -443.7536 7.8410E-05 -443.7543 7.8410E-05 -443.7550 7.8410E-05 -443.7602 7.8409E-05 -443.7704 7.8409E-05 -443.7909 7.8408E-05 -443.8318 7.8406E-05 -444.7500 7.8360E-05 -444.7510 7.8360E-05 -445.8320 7.8307E-05 -445.8323 7.8307E-05 -445.8327 7.8307E-05 -445.8330 7.8306E-05 -445.8337 7.8306E-05 -445.8344 7.8306E-05 -445.8352 7.8306E-05 -445.8359 7.8306E-05 -445.8366 7.8306E-05 -445.8373 7.8306E-05 -445.8380 7.8306E-05 -445.8432 7.8306E-05 -445.8534 7.8305E-05 -445.8739 7.8304E-05 -445.9148 7.8302E-05 -446.8330 7.8257E-05 -446.8340 7.8257E-05 -447.8480 7.8207E-05 -447.9120 7.8203E-05 -447.9123 7.8203E-05 -447.9127 7.8203E-05 -447.9130 7.8203E-05 -447.9137 7.8203E-05 -447.9144 7.8203E-05 -447.9152 7.8203E-05 -447.9159 7.8203E-05 -447.9166 7.8203E-05 -447.9173 7.8203E-05 -447.9180 7.8203E-05 -447.9232 7.8203E-05 -447.9334 7.8202E-05 -447.9539 7.8201E-05 -447.9948 7.8199E-05 -448.9130 7.8154E-05 -448.9140 7.8154E-05 -449.9990 7.8100E-05 -449.9993 7.8100E-05 -449.9997 7.8100E-05 -450.0000 7.8100E-05 -450.0007 7.8100E-05 -450.0014 7.8100E-05 -450.0022 7.8100E-05 -450.0029 7.8100E-05 -450.0036 7.8100E-05 -450.0043 7.8100E-05 -450.0050 7.8100E-05 -450.0102 7.8099E-05 -450.0204 7.8099E-05 -450.0409 7.8098E-05 -450.0818 7.8096E-05 -451.0000 7.8050E-05 -451.0010 7.8050E-05 -452.0820 7.7997E-05 -452.0823 7.7997E-05 -452.0827 7.7997E-05 -452.0830 7.7997E-05 -452.0837 7.7997E-05 -452.0844 7.7997E-05 -452.0852 7.7997E-05 -452.0859 7.7997E-05 -452.0866 7.7997E-05 -452.0873 7.7997E-05 -452.0880 7.7997E-05 -452.0932 7.7996E-05 -452.1034 7.7996E-05 -452.1239 7.7995E-05 -452.1648 7.7993E-05 -453.0830 7.7947E-05 -453.0840 7.7947E-05 -454.1440 7.7895E-05 -454.1620 7.7894E-05 -454.1623 7.7894E-05 -454.1627 7.7894E-05 -454.1630 7.7894E-05 -454.1637 7.7894E-05 -454.1644 7.7894E-05 -454.1652 7.7894E-05 -454.1659 7.7894E-05 -454.1666 7.7894E-05 -454.1673 7.7894E-05 -454.1680 7.7894E-05 -454.1732 7.7893E-05 -454.1834 7.7893E-05 -454.2039 7.7892E-05 -454.2448 7.7890E-05 -455.1630 7.7845E-05 -455.1640 7.7845E-05 -456.2490 7.7791E-05 -456.2493 7.7791E-05 -456.2497 7.7791E-05 -456.2500 7.7791E-05 -456.2507 7.7791E-05 -456.2514 7.7791E-05 -456.2522 7.7791E-05 -456.2529 7.7791E-05 -456.2536 7.7791E-05 -456.2543 7.7791E-05 -456.2550 7.7791E-05 -456.2602 7.7790E-05 -456.2704 7.7790E-05 -456.2909 7.7789E-05 -456.3318 7.7787E-05 -457.2500 7.7742E-05 -457.2510 7.7742E-05 -458.3320 7.7688E-05 -458.3323 7.7688E-05 -458.3327 7.7688E-05 -458.3330 7.7688E-05 -458.3337 7.7688E-05 -458.3344 7.7688E-05 -458.3352 7.7688E-05 -458.3359 7.7688E-05 -458.3366 7.7688E-05 -458.3373 7.7688E-05 -458.3380 7.7688E-05 -458.3432 7.7688E-05 -458.3534 7.7687E-05 -458.3739 7.7686E-05 -458.4148 7.7684E-05 -459.3330 7.7639E-05 -459.3340 7.7639E-05 -460.4120 7.7586E-05 -460.4123 7.7586E-05 -460.4127 7.7586E-05 -460.4130 7.7586E-05 -460.4137 7.7586E-05 -460.4144 7.7586E-05 -460.4152 7.7586E-05 -460.4159 7.7586E-05 -460.4166 7.7586E-05 -460.4173 7.7586E-05 -460.4180 7.7585E-05 -460.4232 7.7585E-05 -460.4334 7.7585E-05 -460.4539 7.7584E-05 -460.4948 7.7582E-05 -461.4130 7.7536E-05 -461.4140 7.7536E-05 -462.4990 7.7483E-05 -462.4993 7.7483E-05 -462.4997 7.7483E-05 -462.5000 7.7483E-05 -462.5007 7.7483E-05 -462.5014 7.7483E-05 -462.5022 7.7483E-05 -462.5029 7.7483E-05 -462.5036 7.7483E-05 -462.5043 7.7483E-05 -462.5050 7.7483E-05 -462.5102 7.7483E-05 -462.5204 7.7482E-05 -462.5409 7.7481E-05 -462.5818 7.7479E-05 -463.5000 7.7434E-05 -463.5010 7.7434E-05 -464.5820 7.7381E-05 -464.5823 7.7381E-05 -464.5827 7.7381E-05 -464.5830 7.7381E-05 -464.5837 7.7381E-05 -464.5844 7.7381E-05 -464.5852 7.7381E-05 -464.5859 7.7381E-05 -464.5866 7.7380E-05 -464.5873 7.7380E-05 -464.5880 7.7380E-05 -464.5932 7.7380E-05 -464.6034 7.7380E-05 -464.6239 7.7379E-05 -464.6648 7.7377E-05 -465.5830 7.7332E-05 -465.5840 7.7332E-05 -466.6620 7.7279E-05 -466.6623 7.7279E-05 -466.6627 7.7279E-05 -466.6630 7.7279E-05 -466.6642 7.7279E-05 -466.6655 7.7278E-05 -466.6680 7.7278E-05 -466.6732 7.7278E-05 -466.6834 7.7278E-05 -466.7039 7.7277E-05 -466.7448 7.7275E-05 -467.6630 7.7230E-05 -467.6640 7.7229E-05 -468.7490 7.7176E-05 -468.7493 7.7176E-05 -468.7497 7.7176E-05 -468.7500 7.7176E-05 -468.7507 7.7176E-05 -468.7514 7.7176E-05 -468.7522 7.7176E-05 -468.7529 7.7176E-05 -468.7536 7.7176E-05 -468.7543 7.7176E-05 -468.7550 7.7176E-05 -468.7602 7.7176E-05 -468.7704 7.7175E-05 -468.7909 7.7174E-05 -468.8318 7.7172E-05 -469.7500 7.7127E-05 -469.7510 7.7127E-05 -470.8320 7.7074E-05 -470.8323 7.7074E-05 -470.8327 7.7074E-05 -470.8330 7.7074E-05 -470.8337 7.7074E-05 -470.8344 7.7074E-05 -470.8352 7.7074E-05 -470.8359 7.7074E-05 -470.8366 7.7074E-05 -470.8373 7.7074E-05 -470.8380 7.7074E-05 -470.8432 7.7074E-05 -470.8534 7.7073E-05 -470.8739 7.7072E-05 -470.9148 7.7070E-05 -471.8330 7.7025E-05 -471.8340 7.7025E-05 -472.9120 7.6973E-05 -472.9123 7.6973E-05 -472.9127 7.6973E-05 -472.9130 7.6973E-05 -472.9137 7.6972E-05 -472.9144 7.6972E-05 -472.9152 7.6972E-05 -472.9159 7.6972E-05 -472.9166 7.6972E-05 -472.9173 7.6972E-05 -472.9180 7.6972E-05 -472.9232 7.6972E-05 -472.9334 7.6972E-05 -472.9539 7.6971E-05 -472.9948 7.6969E-05 -473.5693 7.6940E-05 -473.9130 7.6924E-05 -473.9140 7.6924E-05 -474.9990 7.6871E-05 -474.9993 7.6871E-05 -474.9997 7.6871E-05 -475.0000 7.6871E-05 -475.0007 7.6871E-05 -475.0014 7.6870E-05 -475.0022 7.6870E-05 -475.0029 7.6870E-05 -475.0036 7.6870E-05 -475.0043 7.6870E-05 -475.0050 7.6870E-05 -475.0102 7.6870E-05 -475.0204 7.6870E-05 -475.0409 7.6869E-05 -475.0818 7.6867E-05 -476.0000 7.6822E-05 -476.0010 7.6822E-05 -477.0820 7.6769E-05 -477.0821 7.6769E-05 -477.0823 7.6769E-05 -477.0827 7.6769E-05 -477.0830 7.6769E-05 -477.0837 7.6769E-05 -477.0844 7.6769E-05 -477.0852 7.6769E-05 -477.0859 7.6769E-05 -477.0866 7.6769E-05 -477.0873 7.6769E-05 -477.0880 7.6769E-05 -477.0932 7.6768E-05 -477.1034 7.6768E-05 -477.1239 7.6767E-05 -477.1648 7.6765E-05 -478.0830 7.6720E-05 -478.0840 7.6720E-05 -479.1620 7.6668E-05 -479.1623 7.6668E-05 -479.1627 7.6668E-05 -479.1630 7.6668E-05 -479.1637 7.6667E-05 -479.1644 7.6667E-05 -479.1652 7.6667E-05 -479.1659 7.6667E-05 -479.1666 7.6667E-05 -479.1673 7.6667E-05 -479.1680 7.6667E-05 -479.1732 7.6667E-05 -479.1834 7.6667E-05 -479.2039 7.6666E-05 -479.2448 7.6664E-05 -480.0380 7.6625E-05 -480.1630 7.6619E-05 -480.1640 7.6619E-05 -481.2490 7.6566E-05 -481.2493 7.6566E-05 -481.2497 7.6566E-05 -481.2500 7.6566E-05 -481.2507 7.6566E-05 -481.2514 7.6566E-05 -481.2522 7.6566E-05 -481.2529 7.6566E-05 -481.2536 7.6566E-05 -481.2543 7.6566E-05 -481.2550 7.6566E-05 -481.2602 7.6565E-05 -481.2704 7.6565E-05 -481.2909 7.6564E-05 -481.3318 7.6562E-05 -482.2500 7.6517E-05 -482.2510 7.6517E-05 -483.3320 7.6465E-05 -483.3323 7.6465E-05 -483.3327 7.6465E-05 -483.3330 7.6465E-05 -483.3337 7.6465E-05 -483.3344 7.6465E-05 -483.3352 7.6465E-05 -483.3359 7.6465E-05 -483.3366 7.6464E-05 -483.3373 7.6464E-05 -483.3380 7.6464E-05 -483.3432 7.6464E-05 -483.3534 7.6464E-05 -483.3739 7.6463E-05 -483.4148 7.6461E-05 -484.3330 7.6416E-05 -484.3340 7.6416E-05 -485.4120 7.6364E-05 -485.4121 7.6364E-05 -485.4123 7.6364E-05 -485.4127 7.6364E-05 -485.4130 7.6364E-05 -485.4137 7.6364E-05 -485.4144 7.6364E-05 -485.4152 7.6364E-05 -485.4159 7.6363E-05 -485.4166 7.6363E-05 -485.4173 7.6363E-05 -485.4180 7.6363E-05 -485.4232 7.6363E-05 -485.4334 7.6363E-05 -485.4539 7.6362E-05 -485.4948 7.6360E-05 -486.3790 7.6317E-05 -486.4130 7.6315E-05 -486.4140 7.6315E-05 -487.4990 7.6262E-05 -487.4991 7.6262E-05 -487.4993 7.6262E-05 -487.4997 7.6262E-05 -487.5000 7.6262E-05 -487.5007 7.6262E-05 -487.5014 7.6262E-05 -487.5022 7.6262E-05 -487.5029 7.6262E-05 -487.5036 7.6262E-05 -487.5043 7.6262E-05 -487.5050 7.6262E-05 -487.5102 7.6262E-05 -487.5204 7.6261E-05 -487.5409 7.6260E-05 -487.5818 7.6258E-05 -488.5000 7.6214E-05 -488.5010 7.6214E-05 -489.5810 7.6162E-05 -489.5820 7.6162E-05 diff --git a/CRVResponse/standalone/wls-build/singlePEWaveform_v2.txt b/CRVResponse/standalone/wls-build/singlePEWaveform_v2.txt deleted file mode 100644 index c624b8f245..0000000000 --- a/CRVResponse/standalone/wls-build/singlePEWaveform_v2.txt +++ /dev/null @@ -1,297 +0,0 @@ -0.0000 0.00E+00 -0.1533 0.00E+00 -0.2353 1.00E-07 -0.4057 2.00E-07 -0.4673 3.00E-07 -0.5533 6.00E-07 -0.6225 9.00E-07 -0.7028 1.40E-06 -0.7970 2.20E-06 -0.9163 3.50E-06 -1.0603 5.70E-06 -1.2430 9.40E-06 -1.4338 1.48E-05 -1.7268 2.60E-05 -2.0390 4.35E-05 -2.6632 9.49E-05 -3.3679 1.76E-04 -3.9684 2.64E-04 -3.9834 2.66E-04 -4.1287 2.93E-04 -4.2739 3.21E-04 -4.4191 3.50E-04 -4.5643 3.81E-04 -4.7096 4.13E-04 -4.8548 4.46E-04 -5.0000 4.81E-04 -5.0114 4.84E-04 -5.0207 4.86E-04 -5.0301 4.88E-04 -5.0394 4.91E-04 -5.0488 4.93E-04 -5.0581 4.95E-04 -5.0675 4.97E-04 -5.1330 5.14E-04 -5.2641 5.48E-04 -5.4690 6.03E-04 -5.6787 6.61E-04 -5.7194 6.73E-04 -5.8007 6.97E-04 -5.8383 7.08E-04 -5.9135 7.30E-04 -6.0010 7.57E-04 -6.1892 8.16E-04 -6.3765 8.77E-04 -6.5637 9.40E-04 -6.7509 1.01E-03 -6.9382 1.08E-03 -7.1254 1.14E-03 -7.3126 1.22E-03 -8.6234 1.75E-03 -10.9499 2.75E-03 -13.4211 3.82E-03 -14.5023 4.26E-03 -15.3376 4.57E-03 -15.8294 4.73E-03 -16.5165 4.95E-03 -17.5000 5.22E-03 -17.5244 5.23E-03 -17.5595 5.24E-03 -17.6435 5.26E-03 -17.6997 5.27E-03 -17.7690 5.29E-03 -17.8500 5.30E-03 -17.9526 5.33E-03 -18.0704 5.35E-03 -18.2169 5.38E-03 -18.3271 5.41E-03 -18.3682 5.42E-03 -18.4299 5.43E-03 -18.4710 5.44E-03 -18.8766 5.51E-03 -19.2513 5.57E-03 -19.6259 5.62E-03 -20.0006 5.66E-03 -20.3752 5.69E-03 -20.7498 5.72E-03 -21.1245 5.74E-03 -23.0703 5.74E-03 -25.1347 5.58E-03 -25.6834 5.52E-03 -26.2322 5.45E-03 -26.7810 5.37E-03 -27.3297 5.28E-03 -27.8785 5.18E-03 -28.4272 5.06E-03 -28.9760 4.94E-03 -30.0000 4.70E-03 -30.0244 4.69E-03 -30.0711 4.68E-03 -30.3286 4.62E-03 -30.5018 4.58E-03 -30.7229 4.52E-03 -30.8054 4.50E-03 -30.8920 4.48E-03 -30.9232 4.47E-03 -30.9543 4.46E-03 -31.0010 4.45E-03 -31.3765 4.36E-03 -31.7510 4.26E-03 -32.1254 4.17E-03 -32.4999 4.07E-03 -32.8744 3.97E-03 -33.2489 3.88E-03 -33.6234 3.78E-03 -36.2448 3.12E-03 -36.7144 3.00E-03 -37.1840 2.88E-03 -37.6536 2.77E-03 -38.1232 2.66E-03 -38.5928 2.56E-03 -39.0624 2.45E-03 -39.5319 2.35E-03 -39.9560 2.26E-03 -40.3800 2.17E-03 -40.8040 2.09E-03 -41.2280 2.01E-03 -41.6520 1.93E-03 -42.0760 1.85E-03 -42.5000 1.78E-03 -42.5244 1.77E-03 -42.5828 1.76E-03 -42.6470 1.75E-03 -42.7203 1.74E-03 -42.7955 1.73E-03 -42.8799 1.71E-03 -42.9740 1.70E-03 -43.0843 1.68E-03 -43.2114 1.66E-03 -43.3481 1.64E-03 -43.3700 1.63E-03 -43.4355 1.62E-03 -43.4792 1.61E-03 -43.8765 1.55E-03 -44.2510 1.50E-03 -44.6254 1.44E-03 -44.9999 1.39E-03 -45.3744 1.34E-03 -45.7489 1.30E-03 -46.1234 1.25E-03 -48.7448 9.59E-04 -50.1172 8.35E-04 -50.7436 7.84E-04 -51.3700 7.36E-04 -51.9964 6.91E-04 -52.6228 6.50E-04 -53.2492 6.12E-04 -53.8756 5.77E-04 -54.5020 5.46E-04 -54.5180 5.45E-04 -55.0000 5.22E-04 -55.0127 5.21E-04 -55.0361 5.20E-04 -55.0595 5.19E-04 -55.0828 5.18E-04 -55.1648 5.14E-04 -55.2800 5.09E-04 -55.4068 5.03E-04 -55.5604 4.97E-04 -55.7439 4.89E-04 -55.7558 4.88E-04 -55.7797 4.87E-04 -55.8275 4.85E-04 -55.9085 4.81E-04 -55.9365 4.80E-04 -55.9549 4.79E-04 -55.9826 4.78E-04 -56.0020 4.77E-04 -56.9470 4.41E-04 -57.8921 4.07E-04 -58.8371 3.75E-04 -59.7821 3.46E-04 -60.7271 3.19E-04 -61.6722 2.94E-04 -62.6172 2.71E-04 -63.3147 2.55E-04 -64.0123 2.39E-04 -64.7098 2.24E-04 -65.4074 2.09E-04 -66.1049 1.95E-04 -66.8025 1.82E-04 -67.5000 1.69E-04 -67.5244 1.68E-04 -67.5828 1.67E-04 -67.6648 1.66E-04 -67.8286 1.63E-04 -68.0596 1.59E-04 -68.2292 1.56E-04 -68.2603 1.55E-04 -68.3225 1.54E-04 -68.3847 1.53E-04 -68.4158 1.52E-04 -68.5010 1.51E-04 -69.7706 1.29E-04 -71.0392 1.09E-04 -72.3078 8.98E-05 -73.5764 7.14E-05 -74.8450 5.39E-05 -76.1136 3.74E-05 -77.3822 2.20E-05 -80.0000 -5.60E-06 -80.0127 -5.70E-06 -80.0244 -5.80E-06 -80.0361 -5.90E-06 -80.0478 -6.00E-06 -80.0595 -6.20E-06 -80.0711 -6.30E-06 -80.0828 -6.40E-06 -80.1648 -7.20E-06 -80.3286 -8.70E-06 -80.6563 -1.17E-05 -80.6653 -1.18E-05 -80.6743 -1.19E-05 -80.6833 -1.20E-05 -80.7013 -1.21E-05 -80.7103 -1.22E-05 -80.7193 -1.23E-05 -80.7833 -1.29E-05 -80.8800 -1.37E-05 -80.8973 -1.39E-05 -80.9146 -1.40E-05 -80.9319 -1.42E-05 -80.9491 -1.43E-05 -80.9664 -1.45E-05 -80.9837 -1.47E-05 -81.0010 -1.48E-05 -82.6446 -2.78E-05 -84.2871 -3.93E-05 -85.9297 -4.92E-05 -87.5723 -5.76E-05 -89.2149 -6.44E-05 -90.8574 -6.97E-05 -92.5000 -7.37E-05 -93.1567 -7.47E-05 -95.1446 -7.67E-05 -96.7871 -7.77E-05 -98.4297 -7.87E-05 -103.3570 -7.77E-05 -105.0000 -7.67E-05 -105.0240 -7.57E-05 -107.3130 -7.37E-05 -108.7680 -7.25E-05 -110.2240 -7.09E-05 -111.6790 -6.93E-05 -113.1340 -6.76E-05 -114.5890 -6.58E-05 -116.0450 -6.41E-05 -117.5000 -6.23E-05 -117.5360 -6.22E-05 -117.6650 -6.21E-05 -117.8290 -6.19E-05 -118.1590 -6.15E-05 -118.2080 -6.14E-05 -118.2570 -6.13E-05 -118.3550 -6.12E-05 -118.4520 -6.11E-05 -118.5010 -6.10E-05 -120.1450 -5.90E-05 -121.7870 -5.69E-05 -123.4300 -5.49E-05 -125.0720 -5.29E-05 -126.7150 -5.08E-05 -128.3570 -4.88E-05 -130.0000 -4.68E-05 -130.0480 -4.67E-05 -130.1650 -4.66E-05 -130.3290 -4.64E-05 -130.6570 -4.60E-05 -130.7060 -4.59E-05 -130.8050 -4.58E-05 -130.9030 -4.57E-05 -130.9520 -4.56E-05 -142.2590 -3.27E-05 -142.5000 -3.24E-05 -142.5830 -3.23E-05 -142.8290 -3.21E-05 -143.1590 -3.17E-05 -143.2570 -3.16E-05 -143.3550 -3.15E-05 -143.4520 -3.14E-05 -155.0000 -2.04E-05 -155.0950 -2.03E-05 -155.3290 -2.01E-05 -155.6590 -1.99E-05 -155.7080 -1.98E-05 -155.8060 -1.97E-05 -155.9520 -1.96E-05 -167.5000 -1.10E-05 -167.5480 -1.09E-05 -167.8290 -1.08E-05 -168.1590 -1.05E-05 -168.3730 -1.04E-05 -168.5010 -1.03E-05 -180.0000 -3.60E-06 -180.3290 -3.50E-06 -180.6590 -3.30E-06 -181.0010 -3.10E-06 -200.0000 0.00E+00 diff --git a/CRVResponse/standalone/wls-build/singlePEWaveform_v3.txt b/CRVResponse/standalone/wls-build/singlePEWaveform_v3.txt deleted file mode 100644 index e9cb1e0d08..0000000000 --- a/CRVResponse/standalone/wls-build/singlePEWaveform_v3.txt +++ /dev/null @@ -1,383 +0,0 @@ -0.0000 -6.011E-13 -0.0002 -6.011E-13 -0.0006 -6.011E-13 -0.0012 -6.001E-13 -0.0025 -5.851E-13 -0.0050 -3.677E-13 -0.0102 1.372E-12 -0.0160 7.014E-12 -0.0215 1.956E-11 -0.0275 4.523E-11 -0.0331 8.598E-11 -0.0390 1.515E-10 -0.0446 2.423E-10 -0.0505 3.728E-10 -0.0569 5.681E-10 -0.0645 8.764E-10 -0.0731 1.354E-09 -0.0834 2.127E-09 -0.0957 3.396E-09 -0.1111 5.639E-09 -0.1312 9.862E-09 -0.1592 1.899E-08 -0.2018 4.300E-08 -0.2788 1.332E-07 -0.4328 5.239E-07 -0.6460 1.644E-06 -0.9078 4.367E-06 -1.2679 1.173E-05 -1.8615 3.579E-05 -2.8381 1.060E-04 -3.8012 2.068E-04 -4.0224 2.373E-04 -4.1619 2.584E-04 -4.3015 2.805E-04 -4.4410 3.038E-04 -4.5805 3.282E-04 -4.7200 3.537E-04 -4.8595 3.804E-04 -4.9990 4.082E-04 -4.9993 4.082E-04 -4.9997 4.083E-04 -5.0000 4.084E-04 -5.0002 4.084E-04 -5.0006 4.085E-04 -5.0010 4.086E-04 -5.0197 4.124E-04 -5.0384 4.162E-04 -5.0571 4.200E-04 -5.0759 4.239E-04 -5.0946 4.278E-04 -5.1133 4.317E-04 -5.1320 4.356E-04 -5.2631 4.637E-04 -5.3187 4.756E-04 -5.3743 4.877E-04 -5.4299 5.000E-04 -5.4854 5.125E-04 -5.5410 5.252E-04 -5.5966 5.380E-04 -5.6522 5.511E-04 -6.0000 6.356E-04 -6.0003 6.357E-04 -6.0007 6.358E-04 -6.0010 6.359E-04 -6.1882 6.843E-04 -6.3755 7.343E-04 -6.5627 7.860E-04 -6.7499 8.392E-04 -6.9372 8.941E-04 -7.1244 9.506E-04 -7.3116 1.009E-03 -8.2882 1.324E-03 -9.2648 1.663E-03 -10.2413 2.017E-03 -11.2179 2.379E-03 -12.1945 2.740E-03 -13.1710 3.091E-03 -14.1476 3.426E-03 -15.1241 3.737E-03 -16.1007 4.024E-03 -16.6555 4.175E-03 -16.7760 4.205E-03 -16.8965 4.235E-03 -17.0170 4.265E-03 -17.1375 4.293E-03 -17.2580 4.322E-03 -17.3785 4.350E-03 -17.4990 4.377E-03 -17.4993 4.377E-03 -17.4997 4.377E-03 -17.5000 4.377E-03 -17.6429 4.408E-03 -17.7857 4.439E-03 -17.9286 4.469E-03 -18.0714 4.498E-03 -18.2143 4.526E-03 -18.3571 4.554E-03 -18.5000 4.581E-03 -18.5003 4.581E-03 -18.5007 4.581E-03 -18.5010 4.581E-03 -18.8277 4.637E-03 -19.1545 4.689E-03 -19.4812 4.737E-03 -19.8080 4.781E-03 -20.1347 4.820E-03 -20.4615 4.855E-03 -20.7882 4.886E-03 -21.7648 4.956E-03 -22.7413 4.991E-03 -23.7179 4.990E-03 -24.6945 4.958E-03 -25.6710 4.897E-03 -26.6476 4.809E-03 -27.6241 4.698E-03 -29.0224 4.510E-03 -29.9990 4.356E-03 -29.9993 4.356E-03 -29.9997 4.356E-03 -30.0000 4.356E-03 -30.1429 4.332E-03 -30.2857 4.308E-03 -30.4286 4.284E-03 -30.5714 4.260E-03 -30.7143 4.235E-03 -30.8571 4.210E-03 -31.0000 4.186E-03 -31.0003 4.185E-03 -31.0007 4.185E-03 -31.0010 4.185E-03 -31.4673 4.102E-03 -31.9335 4.017E-03 -32.3998 3.932E-03 -32.8660 3.846E-03 -33.3323 3.759E-03 -33.7985 3.671E-03 -34.2648 3.582E-03 -35.2413 3.398E-03 -36.2179 3.215E-03 -37.1945 3.036E-03 -38.1710 2.861E-03 -39.1476 2.693E-03 -40.1241 2.531E-03 -41.1007 2.376E-03 -41.3005 2.345E-03 -41.5002 2.315E-03 -41.7000 2.285E-03 -41.8997 2.255E-03 -42.0995 2.226E-03 -42.2992 2.197E-03 -42.4990 2.169E-03 -42.4993 2.169E-03 -42.4997 2.169E-03 -42.5000 2.169E-03 -42.6429 2.149E-03 -42.7857 2.129E-03 -42.9286 2.109E-03 -43.0714 2.090E-03 -43.2143 2.070E-03 -43.3571 2.051E-03 -43.5000 2.032E-03 -43.5003 2.032E-03 -43.5007 2.032E-03 -43.5010 2.032E-03 -44.2463 1.937E-03 -44.9915 1.846E-03 -45.7368 1.760E-03 -46.4821 1.679E-03 -47.2274 1.602E-03 -47.9726 1.529E-03 -48.7179 1.461E-03 -50.6710 1.302E-03 -52.6241 1.166E-03 -54.9990 1.027E-03 -54.9993 1.027E-03 -54.9997 1.027E-03 -55.0000 1.027E-03 -55.1429 1.020E-03 -55.2857 1.012E-03 -55.4286 1.005E-03 -55.5714 9.977E-04 -55.7143 9.905E-04 -55.8571 9.834E-04 -56.0000 9.764E-04 -56.0003 9.764E-04 -56.0007 9.764E-04 -56.0010 9.764E-04 -56.0011 9.764E-04 -57.3044 9.174E-04 -58.6077 8.619E-04 -59.9110 8.099E-04 -61.2143 7.613E-04 -62.5176 7.163E-04 -63.8208 6.747E-04 -65.1241 6.366E-04 -65.4634 6.267E-04 -65.8027 6.169E-04 -66.1419 6.072E-04 -66.4812 5.976E-04 -66.8205 5.882E-04 -67.1597 5.789E-04 -67.4990 5.698E-04 -67.4993 5.698E-04 -67.4997 5.698E-04 -67.5000 5.698E-04 -67.6429 5.659E-04 -67.7857 5.621E-04 -67.9286 5.584E-04 -68.0714 5.546E-04 -68.2143 5.509E-04 -68.3571 5.471E-04 -68.5000 5.434E-04 -68.5003 5.434E-04 -68.5007 5.434E-04 -68.5010 5.434E-04 -69.9438 5.072E-04 -71.3866 4.727E-04 -72.8294 4.399E-04 -74.2723 4.087E-04 -75.7151 3.793E-04 -77.1579 3.516E-04 -78.6007 3.256E-04 -79.9990 3.020E-04 -79.9993 3.020E-04 -79.9997 3.020E-04 -80.0000 3.020E-04 -80.1429 2.997E-04 -80.2857 2.974E-04 -80.4286 2.951E-04 -80.5714 2.928E-04 -80.7143 2.906E-04 -80.8571 2.883E-04 -81.0000 2.861E-04 -81.0003 2.861E-04 -81.0007 2.861E-04 -81.0010 2.861E-04 -82.6436 2.621E-04 -84.2861 2.399E-04 -85.9287 2.194E-04 -87.5713 2.007E-04 -89.2139 1.838E-04 -90.8564 1.686E-04 -92.4990 1.552E-04 -92.4993 1.552E-04 -92.4997 1.552E-04 -92.5000 1.552E-04 -92.6380 1.542E-04 -92.7760 1.531E-04 -92.9140 1.520E-04 -93.0520 1.510E-04 -93.1900 1.499E-04 -93.3280 1.489E-04 -93.4660 1.479E-04 -93.4680 1.479E-04 -93.5000 1.476E-04 -93.5003 1.476E-04 -93.5007 1.476E-04 -93.5010 1.476E-04 -95.1436 1.365E-04 -96.7861 1.261E-04 -98.4287 1.166E-04 -100.0713 1.079E-04 -101.7139 1.001E-04 -103.3564 9.310E-05 -104.9990 8.693E-05 -104.9993 8.692E-05 -104.9997 8.692E-05 -105.0000 8.692E-05 -105.1429 8.639E-05 -105.2857 8.587E-05 -105.4286 8.535E-05 -105.5714 8.484E-05 -105.7143 8.433E-05 -105.8571 8.382E-05 -106.0000 8.332E-05 -106.0003 8.331E-05 -106.0007 8.331E-05 -106.0010 8.331E-05 -107.6436 7.790E-05 -109.2861 7.283E-05 -110.9287 6.810E-05 -112.5713 6.371E-05 -114.2139 5.967E-05 -115.8564 5.597E-05 -117.4990 5.261E-05 -117.4993 5.261E-05 -117.4997 5.261E-05 -117.5000 5.260E-05 -117.6429 5.232E-05 -117.7857 5.204E-05 -117.9286 5.176E-05 -118.0714 5.148E-05 -118.2143 5.120E-05 -118.3571 5.092E-05 -118.5000 5.065E-05 -118.5003 5.065E-05 -118.5007 5.065E-05 -118.5010 5.065E-05 -120.1436 4.767E-05 -121.7861 4.488E-05 -123.4287 4.228E-05 -125.0713 3.986E-05 -126.7139 3.762E-05 -128.3564 3.557E-05 -129.9990 3.370E-05 -129.9993 3.370E-05 -129.9997 3.370E-05 -130.0000 3.370E-05 -130.0958 3.359E-05 -130.1915 3.349E-05 -130.2873 3.338E-05 -130.3830 3.328E-05 -130.4788 3.318E-05 -130.5745 3.307E-05 -130.6703 3.297E-05 -130.6863 3.295E-05 -131.0000 3.262E-05 -131.0003 3.262E-05 -131.0007 3.262E-05 -131.0010 3.262E-05 -132.6436 3.098E-05 -134.2861 2.945E-05 -135.9287 2.801E-05 -137.5713 2.668E-05 -139.2139 2.544E-05 -140.8564 2.431E-05 -142.4990 2.328E-05 -142.4993 2.328E-05 -142.4997 2.328E-05 -142.5000 2.328E-05 -142.6429 2.319E-05 -142.7857 2.310E-05 -142.9286 2.301E-05 -143.0714 2.293E-05 -143.2143 2.284E-05 -143.3571 2.276E-05 -143.5000 2.267E-05 -143.5003 2.267E-05 -143.5007 2.267E-05 -143.5010 2.267E-05 -154.9990 1.732E-05 -154.9993 1.732E-05 -154.9997 1.732E-05 -155.0000 1.732E-05 -155.1429 1.727E-05 -155.2857 1.722E-05 -155.4286 1.717E-05 -155.5714 1.711E-05 -155.7143 1.706E-05 -155.8571 1.701E-05 -156.0000 1.696E-05 -156.0003 1.696E-05 -156.0007 1.696E-05 -156.0010 1.696E-05 -167.4990 1.369E-05 -167.4993 1.369E-05 -167.4997 1.369E-05 -167.5000 1.369E-05 -167.5006 1.369E-05 -167.6433 1.366E-05 -167.7861 1.363E-05 -167.9289 1.360E-05 -168.0717 1.356E-05 -168.2144 1.353E-05 -168.3572 1.350E-05 -168.5000 1.347E-05 -168.5003 1.347E-05 -168.5007 1.347E-05 -168.5010 1.347E-05 -179.9990 1.139E-05 -179.9993 1.139E-05 -179.9997 1.139E-05 -180.0000 1.139E-05 -180.1429 1.137E-05 -180.2857 1.135E-05 -180.4286 1.133E-05 -180.5714 1.131E-05 -180.7143 1.129E-05 -180.8571 1.127E-05 -181.0000 1.125E-05 -181.0003 1.125E-05 -181.0007 1.125E-05 -181.0010 1.125E-05 diff --git a/CRVResponse/standalone/wls-build/vis.mac b/CRVResponse/standalone/wls-build/vis.mac deleted file mode 100644 index 934fc8acce..0000000000 --- a/CRVResponse/standalone/wls-build/vis.mac +++ /dev/null @@ -1,44 +0,0 @@ -# -# Create a scene handler/viewer for a specific graphics system -# The compound command "/vis/open " -# is equivalent to the following set of commands: -# -# /vis/sceneHandler/create -# /vis/viewer/create -# -# Create a scene handler and a viewer for the OGLIXm driver -# -/vis/open OGL 600x600-0+0 -# -#/vis/viewer/set/style surface -/vis/viewer/set/style wireframe -# -# Set direction from target to camera. -/vis/viewer/set/viewpointThetaPhi 0 0 -/vis/viewer/zoom 100 -# -# The compound command "/vis/drawVolume" -# is equivalent to the following set of commands: -# -# /vis/scene/create -# /vis/scene/add/volume -# /vis/sceneHandler/attach -# Create an empty scene and add the detector geometry to it -/vis/drawVolume -# -/vis/scene/add/axes 0 0 0 0.5 cm -# -# Store particle trajectories for visualization -# (if too many tracks cause core dump => storeTrajectory 0) -/tracking/storeTrajectory 2 -# -# Add trajectories to the current scene -/vis/scene/add/trajectories smooth -# -# Requests viewer to accumulate hits, tracks, etc. at end of event. -# detector remains or is redrawn. -/vis/scene/endOfEventAction refresh -#/vis/scene/endOfEventAction accumulate -# -#/event/drawTracks charged -# diff --git a/CRVResponse/standalone/wls-build/visibleEnergyAdjustment.txt b/CRVResponse/standalone/wls-build/visibleEnergyAdjustment.txt deleted file mode 100644 index 120e114861..0000000000 --- a/CRVResponse/standalone/wls-build/visibleEnergyAdjustment.txt +++ /dev/null @@ -1,190 +0,0 @@ --20.723 0.0653 --20.541 0.0716 --20.359 0.0784 --20.176 0.0859 --19.994 0.0941 --19.812 0.1030 --19.629 0.1129 --19.447 0.1237 --19.265 0.1355 --19.082 0.1484 --18.900 0.1625 --18.718 0.1781 --18.535 0.1951 --18.353 0.2137 --18.171 0.2341 --17.988 0.2564 --17.806 0.2809 --17.624 0.3077 --17.441 0.3371 --17.259 0.3692 --17.077 0.4045 --16.895 0.4431 --16.712 0.4854 --16.530 0.5317 --16.348 0.5824 --16.165 0.6380 --15.983 0.6989 --15.801 0.7656 --15.618 0.8387 --15.436 0.9188 --15.254 1.0065 --15.071 1.1025 --14.889 1.2077 --14.707 1.3230 --14.524 1.4493 --14.342 1.5876 --14.160 1.7392 --13.977 1.9051 --13.795 2.0870 --13.613 2.2862 --13.430 2.5044 --13.248 2.7434 --13.066 3.0052 --12.883 3.2921 --12.701 3.6063 --12.519 3.9505 --12.336 4.3276 --12.154 4.7406 --11.972 5.1931 --11.790 5.6887 --11.607 6.2317 --11.425 6.8265 --11.243 7.4780 --11.060 8.1918 --10.878 8.9736 --10.696 9.8301 --10.513 10.7683 --10.331 11.7961 --10.149 12.9220 --9.966 14.1553 --9.784 15.5064 --9.602 16.9864 --9.419 18.6077 --9.237 20.3837 --9.055 22.1508 --8.872 23.8657 --8.690 25.1648 --8.508 26.1301 --8.325 26.5715 --8.143 26.5553 --7.961 26.1433 --7.778 25.3788 --7.596 24.3249 --7.414 23.0573 --7.231 21.6223 --7.049 20.0618 --6.867 18.4401 --6.685 16.8129 --6.502 15.2160 --6.320 13.6799 --6.138 12.2298 --5.955 10.8800 --5.773 9.6376 --5.591 8.5051 --5.408 7.4821 --5.226 6.5638 --5.044 5.7447 --4.861 5.0177 --4.679 4.3753 --4.497 3.8099 --4.314 3.3138 --4.132 2.8800 --3.950 2.5017 --3.767 2.1725 --3.585 1.8867 --3.403 1.6392 --3.220 1.4252 --3.038 1.2406 --2.856 1.0816 --2.673 0.9448 --2.491 0.8276 --2.309 0.7271 --2.126 0.6412 --1.944 0.5679 --1.762 0.5055 --1.580 0.4526 --1.397 0.4077 --1.215 0.3699 --1.033 0.3380 --0.850 0.3113 --0.668 0.2890 --0.486 0.2704 --0.303 0.2549 --0.121 0.2417 -0.061 0.2305 -0.244 0.2208 -0.426 0.2127 -0.608 0.2061 -0.791 0.2006 -0.973 0.1960 -1.155 0.1923 -1.338 0.1894 -1.520 0.1869 -1.702 0.1850 -1.885 0.1834 -2.067 0.1822 -2.249 0.1813 -2.432 0.1805 -2.614 0.1799 -2.796 0.1794 -2.979 0.1791 -3.161 0.1788 -3.343 0.1786 -3.526 0.1784 -3.708 0.1782 -3.890 0.1781 -4.072 0.1780 -4.255 0.1779 -4.437 0.1778 -4.619 0.1778 -4.802 0.1777 -4.984 0.1777 -5.166 0.1776 -5.349 0.1776 -5.531 0.1776 -5.713 0.1776 -5.896 0.1775 -6.078 0.1775 -6.260 0.1775 -6.443 0.1775 -6.625 0.1775 -6.807 0.1775 -6.990 0.1775 -7.172 0.1775 -7.354 0.1775 -7.537 0.1775 -7.719 0.1775 -7.901 0.1775 -8.084 0.1775 -8.266 0.1775 -8.448 0.1775 -8.631 0.1775 -8.813 0.1775 -8.995 0.1775 -9.177 0.1775 -9.360 0.1775 -9.542 0.1775 -9.724 0.1775 -9.907 0.1775 -10.089 0.1775 -10.271 0.1775 -10.454 0.1775 -10.636 0.1775 -10.818 0.1775 -11.001 0.1775 -11.183 0.1775 -11.365 0.1775 -11.548 0.1775 -11.730 0.1775 -11.912 0.1775 -12.095 0.1775 -12.277 0.1775 -12.459 0.1775 -12.642 0.1775 -12.824 0.1775 -13.006 0.1775 -13.189 0.1775 -13.371 0.1775 -13.553 0.1775 -13.736 0.1775 diff --git a/CRVResponse/standalone/wls-build/wls.doProduction b/CRVResponse/standalone/wls-build/wls.doProduction deleted file mode 100755 index 2e93687dc5..0000000000 --- a/CRVResponse/standalone/wls-build/wls.doProduction +++ /dev/null @@ -1,38 +0,0 @@ -#! /bin/bash - -hostname -printenv - -source /cvmfs/mu2e.opensciencegrid.org/setupmu2e-art.sh -source /cvmfs/mu2e.opensciencegrid.org/Offline/v6_5_2/SLF6/prof/Offline/setup.sh - -setup ifdhc - -# set variables -SIMTYPE=$(($PROCESS/2000)) -MINBIN=$(($PROCESS%2000*100)) -MAXBIN=$(($MINBIN+99)) -PHOTONS=500000 -if [ $SIMTYPE -ge 2 ]; then - PHOTONS=10000 -fi - -# copy and run executable -mv $CONDOR_DIR_INPUT/wlsProduction wlsProduction -mv $CONDOR_DIR_INPUT/singlePEWaveform_v3.txt singlePEWaveform_v3.txt -mv $CONDOR_DIR_INPUT/photonMap.root photonMap.root -mv $CONDOR_DIR_INPUT/visibleEnergyAdjustment.txt visibleEnergyAdjustment.txt -chmod 777 wlsProduction -./wlsProduction -c -l $LENGTH -R $REFLECTOR -t $SIMTYPE -m $MINBIN -M $MAXBIN -n $PHOTONS - -# copy lookup table -printf -v MINBINTMP "%06d\n" $MINBIN -OUTFILE=LookupTable'_'$SIMTYPE'_'$MINBINTMP -ifdh cp $OUTFILE /pnfs/mu2e/scratch/outstage/ehrlich/tables_6.5/$LENGTH'_'$REFLECTOR/$OUTFILE - -# create log file -#LOGFILE=`printf "log_%010d_%05d.log" $CLUSTER $PROCESS` -#cat jsb_tmp/JOBSUB_LOG_FILE >> $LOGFILE -#echo "=========== error log file ==========" >> $LOGFILE -#cat jsb_tmp/JOBSUB_ERR_FILE >> $LOGFILE -#ifdh cp $LOGFILE /pnfs/mu2e/scratch/outstage/ehrlich/tables_6.5/$LOGFILE diff --git a/CRVResponse/standalone/wls-build/wls.mergeProduction b/CRVResponse/standalone/wls-build/wls.mergeProduction deleted file mode 100755 index 1d625c4353..0000000000 --- a/CRVResponse/standalone/wls-build/wls.mergeProduction +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -for length in "900" "1045" "1550" "2100" "2370" "3040" "3200" "4550" "5000" "5700" "6000" "6900" -do - declare -a reflectors=("0") - if [ $length == "900" ]; then - reflectors[0]="1" - fi - if [ $length == "1045" ]; then - reflectors[0]="1" - fi - if [ $length == "1550" ]; then - reflectors[0]="1" - fi - if [ $length == "2100" ]; then - reflectors[0]="1" - fi - if [ $length == "2370" ]; then - reflectors[0]="1" - fi - if [ $length == "5000" ]; then - reflectors[0]="1" - fi - if [ $length == "6000" ]; then - reflectors[1]="1" - fi - if [ $length == "6900" ]; then - reflectors[0]="1" - fi - - for reflector in "${reflectors[@]}" - do - - echo "Length "$length" Reflector "$reflector - - S0=/pnfs/mu2e/scratch/outstage/ehrlich/tables_6.0/$length'_'$reflector/ - S1=LookupTable'_'$length'_'$reflector - - rm $S1 - - for PROCESS in {0..5999} #2000*3-1 - do - SIMTYPE=$(($PROCESS/2000)) - MINBIN=$(($PROCESS%2000*100)) - - printf -v MINBINTMP "%06d\n" $MINBIN - S2=$S0/LookupTable'_'$SIMTYPE'_'$MINBINTMP - - ls -l $S2 - - cat $S2 >> $S1 - done - - mv $S1 /pnfs/mu2e/scratch/outstage/ehrlich/LookupTables_v6.0/. - - done - -done -echo "DONE!" diff --git a/CRVResponse/standalone/wls-build/wls.submitProduction b/CRVResponse/standalone/wls-build/wls.submitProduction deleted file mode 100755 index 79a75de32c..0000000000 --- a/CRVResponse/standalone/wls-build/wls.submitProduction +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash - -echo "********************************************************************" -echo "* Did you copy the updated version of wls to wlsProduction? *" -echo "********************************************************************" - -for length in "900" "1045" "1550" "2100" "2370" "3040" "3200" "4550" "5000" "5700" "6000" "6900" -do - declare -a reflectors=("0") - if [ $length == "900" ]; then - reflectors[0]="1" - fi - if [ $length == "1045" ]; then - reflectors[0]="1" - fi - if [ $length == "1550" ]; then - reflectors[0]="1" - fi - if [ $length == "2100" ]; then - reflectors[0]="1" - fi - if [ $length == "2370" ]; then - reflectors[0]="1" - fi - if [ $length == "5000" ]; then - reflectors[0]="1" - fi - if [ $length == "6000" ]; then - reflectors[1]="1" - fi - if [ $length == "6900" ]; then - reflectors[0]="1" - fi - - for reflector in "${reflectors[@]}" - do - - echo "Length "$length" Reflector "$reflector - - mkdir /pnfs/mu2e/scratch/outstage/ehrlich/tables_6.5/$length'_'$reflector - - jobsub_submit \ - -N $((2000*3)) \ - -e LENGTH=$length \ - -e REFLECTOR=$reflector \ - --memory=500MB \ - --disk=10MB \ - --expected-lifetime=48h \ - --resource-provides usage_model=OPPORTUNISTIC,DEDICATED \ - --group=mu2e \ - -f dropbox:///mu2e/app/users/ehrlich/work_MDC2018/Offline/CRVResponse/standalone/wls-build/wlsProduction \ - -f dropbox:///mu2e/app/users/ehrlich/work_MDC2018/Offline/CRVResponse/standalone/wls-build/singlePEWaveform_v3.txt \ - -f dropbox:///mu2e/app/users/ehrlich/work_MDC2018/Offline/CRVResponse/standalone/wls-build/photonMap.root \ - -f dropbox:///mu2e/app/users/ehrlich/work_MDC2018/Offline/CRVResponse/standalone/wls-build/visibleEnergyAdjustment.txt \ - file:///mu2e/app/users/ehrlich/work_MDC2018/Offline/CRVResponse/standalone/wls-build/wls.doProduction - - done -done diff --git a/CRVResponse/standalone/wls/CMakeLists.txt b/CRVResponse/standalone/wls/CMakeLists.txt deleted file mode 100644 index 9300ea1ffd..0000000000 --- a/CRVResponse/standalone/wls/CMakeLists.txt +++ /dev/null @@ -1,60 +0,0 @@ -#---------------------------------------------------------------------------- -# Setup the project -cmake_minimum_required(VERSION 2.6 FATAL_ERROR) -project(wls) - -#---------------------------------------------------------------------------- -# Find Geant4 package, activating all available UI and Vis drivers by default -# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui -# to build a batch mode only executable -# -option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON) -if(WITH_GEANT4_UIVIS) - find_package(Geant4 REQUIRED ui_all vis_all) -else() - find_package(Geant4 REQUIRED) -endif() - -#---------------------------------------------------------------------------- -# Setup Geant4 include directories and compile definitions -# -include(${Geant4_USE_FILE}) - -#---------------------------------------------------------------------------- -# Find ROOT (required package) -# -find_package(ROOT REQUIRED) -if(NOT ROOT_FOUND) - message(STATUS "ROOT package not found.") - return() -endif() - -#---------------------------------------------------------------------------- -# Locate sources and headers for this project -# -include_directories(${PROJECT_SOURCE_DIR}/include - ${PROJECT_SOURCE_DIR}/../../inc - ${PROJECT_SOURCE_DIR}/../../../ - ${Geant4_INCLUDE_DIR} - ${ROOT_INCLUDE_DIRS}) -# ${ROOT_INCLUDE_DIR}) -file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc - ${PROJECT_SOURCE_DIR}/../../src/MakeCrvPhotons.cc - ${PROJECT_SOURCE_DIR}/../../src/MakeCrvSiPMCharges.cc - ${PROJECT_SOURCE_DIR}/../../src/MakeCrvWaveforms.cc - ${PROJECT_SOURCE_DIR}/../../src/MakeCrvDigis.cc - ${PROJECT_SOURCE_DIR}/../../src/MakeCrvRecoPulses.cc - ${PROJECT_SOURCE_DIR}/../../src/DrawLookupTableHistograms.cc) -file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh - ${PROJECT_SOURCE_DIR}/../../inc/MakeCrvPhotons.hh - ${PROJECT_SOURCE_DIR}/../../inc/MakeCrvSiPMCharges.hh - ${PROJECT_SOURCE_DIR}/../../inc/MakeCrvWaveforms.hh - ${PROJECT_SOURCE_DIR}/../../inc/MakeCrvDigis.hh - ${PROJECT_SOURCE_DIR}/../../inc/MakeCrvRecoPulses.hh) - -#---------------------------------------------------------------------------- -# Add the executable, and link it to the Geant4 libraries -# -add_executable(wls wls.cc ${sources} ${headers}) -target_link_libraries(wls ${Geant4_LIBRARIES} ${ROOT_LIBRARIES} ) - diff --git a/CRVResponse/standalone/wls/GNUmakefile b/CRVResponse/standalone/wls/GNUmakefile deleted file mode 100644 index 313671f7f9..0000000000 --- a/CRVResponse/standalone/wls/GNUmakefile +++ /dev/null @@ -1,22 +0,0 @@ -# -------------------------------------------------------------- -# GNUmakefile for WLS example. -# -------------------------------------------------------------- - -name := wls -G4TARGET := $(name) -G4EXLIB := true - -ifndef G4INSTALL - G4INSTALL = ../../../.. -endif - -.PHONY: all -all: lib bin - -# ROOT support -CPPFLAGS += -I$(shell root-config --incdir) -EXTRALIBS = $(shell root-config --glibs) - -include $(G4INSTALL)/config/architecture.gmk - -include $(G4INSTALL)/config/binmake.gmk diff --git a/CRVResponse/standalone/wls/include/G4CerenkovNew.hh b/CRVResponse/standalone/wls/include/G4CerenkovNew.hh deleted file mode 100644 index 704e8a425b..0000000000 --- a/CRVResponse/standalone/wls/include/G4CerenkovNew.hh +++ /dev/null @@ -1,235 +0,0 @@ -/* -Cerenkov process which doesn't assume that the the index of refraction increases with increasing energy. -In this more general case, the integrals, and cut-offs need to be treated differently. -*/ - -#ifndef G4Cerenkov_h -#define G4Cerenkov_h 1 - -///////////// -// Includes -///////////// - -#include - -#include "globals.hh" -#include "templates.hh" -#include "Randomize.hh" -#include "G4ThreeVector.hh" -#include "G4ParticleMomentum.hh" -#include "G4Step.hh" -#include "G4VProcess.hh" -#include "G4OpticalPhoton.hh" -#include "G4DynamicParticle.hh" -#include "G4Material.hh" -#include "G4PhysicsTable.hh" -#include "G4MaterialPropertyVector.hh" -#include "G4MaterialPropertiesTable.hh" -#include "G4PhysicsOrderedFreeVector.hh" - -#include - -// Class Description: -// Discrete Process -- Generation of Cerenkov Photons. -// Class inherits publicly from G4VDiscreteProcess. -// Class Description - End: - -///////////////////// -// Class Definition -///////////////////// - -class G4CerenkovNew : public G4VProcess -{ - -public: - - //////////////////////////////// - // Constructors and Destructor - //////////////////////////////// - - G4CerenkovNew(const G4String& processName = "CerenkovNew", - G4ProcessType type = fElectromagnetic); - ~G4CerenkovNew(); - - G4CerenkovNew(const G4CerenkovNew &right); - -private: - - ////////////// - // Operators - ////////////// - - G4CerenkovNew& operator=(const G4CerenkovNew &right); - -public: - - //////////// - // Methods - //////////// - - static G4CerenkovNew* Instance() {return _fgInstance;} - - G4bool IsApplicable(const G4ParticleDefinition& aParticleType); - // Returns true -> 'is applicable', for all charged particles - // except short-lived particles. - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - // Build table at a right time - - G4double GetMeanFreePath(const G4Track& aTrack, - G4double , - G4ForceCondition* ); - // Returns the discrete step limit and sets the 'StronglyForced' - // condition for the DoIt to be invoked at every step. - - G4double PostStepGetPhysicalInteractionLength(const G4Track& aTrack, - G4double , - G4ForceCondition* ); - // Returns the discrete step limit and sets the 'StronglyForced' - // condition for the DoIt to be invoked at every step. - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, - const G4Step& aStep); - // This is the method implementing the Cerenkov process. - - // no operation in AtRestDoIt and AlongStepDoIt - virtual G4double AlongStepGetPhysicalInteractionLength( - const G4Track&, - G4double , - G4double , - G4double& , - G4GPILSelection* - ) { return -1.0; }; - - virtual G4double AtRestGetPhysicalInteractionLength( - const G4Track& , - G4ForceCondition* - ) { return -1.0; }; - - // no operation in AtRestDoIt and AlongStepDoIt - virtual G4VParticleChange* AtRestDoIt( - const G4Track& , - const G4Step& - ) {return 0;}; - - virtual G4VParticleChange* AlongStepDoIt( - const G4Track& , - const G4Step& - ) {return 0;}; - - void SetTrackSecondariesFirst(const G4bool state); - // If set, the primary particle tracking is interrupted and any - // produced Cerenkov photons are tracked next. When all have - // been tracked, the tracking of the primary resumes. - - G4bool GetTrackSecondariesFirst() const; - // Returns the boolean flag for tracking secondaries first. - - void SetMaxBetaChangePerStep(const G4double d); - // Set the maximum allowed change in beta = v/c in % (perCent) - // per step. - - G4double GetMaxBetaChangePerStep() const; - // Returns the maximum allowed change in beta = v/c in % (perCent) - - void SetMaxNumPhotonsPerStep(const G4int NumPhotons); - // Set the maximum number of Cerenkov photons allowed to be - // generated during a tracking step. This is an average ONLY; - // the actual number will vary around this average. If invoked, - // the maximum photon stack will roughly be of the size set. - // If not called, the step is not limited by the number of - // photons generated. - - G4int GetMaxNumPhotonsPerStep() const; - // Returns the maximum number of Cerenkov photons allowed to be - // generated during a tracking step. - - G4PhysicsTable* GetPhysicsTable() const; - // Returns the address of the physics table. - - void DumpPhysicsTable() const; - // Prints the physics table. - - G4double GetAverageNumberOfPhotons(const G4double charge, - const G4double beta, - const G4Material *aMaterial, - G4MaterialPropertyVector* Rindex) const; - -private: - - void BuildThePhysicsTable(); - - ///////////////////// - // Helper Functions - ///////////////////// - - void GetMinMaxRindex(G4MaterialPropertyVector* Rindex, double &RImin, double &RImax) const; - - void GetEnergyIntervals(G4MaterialPropertyVector* Rindex, double BetaInverse, - std::vector > &energyIntervals) const; - - /////////////////////// - // Class Data Members - /////////////////////// - -protected: - - G4PhysicsTable* thePhysicsTable; - // A Physics Table can be either a cross-sections table or - // an energy table (or can be used for other specific - // purposes). - - std::map minRindex; - std::map maxRindex; - -private: - - static G4CerenkovNew* _fgInstance; - - G4bool fTrackSecondariesFirst; - G4double fMaxBetaChange; - G4int fMaxPhotons; -}; - -//////////////////// -// Inline methods -//////////////////// - -inline -G4bool G4CerenkovNew::GetTrackSecondariesFirst() const -{ - return fTrackSecondariesFirst; -} - -inline -G4double G4CerenkovNew::GetMaxBetaChangePerStep() const -{ - return fMaxBetaChange; -} - -inline -G4int G4CerenkovNew::GetMaxNumPhotonsPerStep() const -{ - return fMaxPhotons; -} - -inline -void G4CerenkovNew::DumpPhysicsTable() const -{ - G4int PhysicsTableSize = thePhysicsTable->entries(); - G4PhysicsOrderedFreeVector *v; - - for (G4int i = 0 ; i < PhysicsTableSize ; i++ ) - { - v = (G4PhysicsOrderedFreeVector*)(*thePhysicsTable)[i]; - v->DumpValues(); - } -} - -inline -G4PhysicsTable* G4CerenkovNew::GetPhysicsTable() const -{ - return thePhysicsTable; -} - -#endif /* G4CerenkovNew_h */ diff --git a/CRVResponse/standalone/wls/include/G4OpWLSPOPOP.hh b/CRVResponse/standalone/wls/include/G4OpWLSPOPOP.hh deleted file mode 100644 index fec3598ab5..0000000000 --- a/CRVResponse/standalone/wls/include/G4OpWLSPOPOP.hh +++ /dev/null @@ -1,133 +0,0 @@ -/* -GEANT doesn't provide a process which allows multiple absorption and emission spectra, and also uses a quantum yield. -Therefore, two process was developed based of G4OpWLS, one for polystyrene+PPO, and another one for POPOP. -They use different property table names. -*/ - - -#ifndef G4OpWLSPOPOP_h -#define G4OpWLSPOPOP_h 1 - -///////////// -// Includes -///////////// - -#include "globals.hh" -#include "templates.hh" -#include "Randomize.hh" -#include "G4Poisson.hh" -#include "G4ThreeVector.hh" -#include "G4ParticleMomentum.hh" -#include "G4Step.hh" -#include "G4VDiscreteProcess.hh" -#include "G4DynamicParticle.hh" -#include "G4Material.hh" -#include "G4OpticalPhoton.hh" -#include "G4PhysicsTable.hh" -#include "G4MaterialPropertiesTable.hh" -#include "G4PhysicsOrderedFreeVector.hh" -#include "G4VWLSTimeGeneratorProfile.hh" - -// Class Description: -// Discrete Process -- Bulk absorption of Optical Photons. -// Class inherits publicly from G4VDiscreteProcess -// Class Description - End: - -///////////////////// -// Class Definition -///////////////////// - -class G4VWLSTimeGeneratorProfile; - -class G4OpWLSPOPOP : public G4VDiscreteProcess -{ - -public: - - //////////////////////////////// - // Constructors and Destructor - //////////////////////////////// - - G4OpWLSPOPOP(const G4String& processName = "OpWLSPOPOP", - G4ProcessType type = fOptical); - ~G4OpWLSPOPOP(); - -private: - - G4OpWLSPOPOP(const G4OpWLSPOPOP &right); - - ////////////// - // Operators - ////////////// - - G4OpWLSPOPOP& operator=(const G4OpWLSPOPOP &right); - -public: - - //////////// - // Methods - //////////// - - G4bool IsApplicable(const G4ParticleDefinition& aParticleType); - // Returns true -> 'is applicable' only for an optical photon. - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - // Build the WLS integral table at the right time - - G4double GetMeanFreePath(const G4Track& aTrack, - G4double , - G4ForceCondition* ); - // Returns the absorption length for bulk absorption of optical - // photons in media with a specified attenuation length. - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, - const G4Step& aStep); - // This is the method implementing bulk absorption of optical - // photons. - - G4PhysicsTable* GetIntegralTable() const; - // Returns the address of the WLS integral table. - - void DumpPhysicsTable() const; - // Prints the WLS integral table. - - void UseTimeProfile(const G4String name); - // Selects the time profile generator - -protected: - - G4VWLSTimeGeneratorProfile* WLSTimeGeneratorProfile; - G4PhysicsTable* theIntegralTable; - -}; - -//////////////////// -// Inline methods -//////////////////// - -inline -G4bool G4OpWLSPOPOP::IsApplicable(const G4ParticleDefinition& aParticleType) -{ - return ( &aParticleType == G4OpticalPhoton::OpticalPhoton() ); -} - -inline -G4PhysicsTable* G4OpWLSPOPOP::GetIntegralTable() const -{ - return theIntegralTable; -} - -inline -void G4OpWLSPOPOP::DumpPhysicsTable() const -{ - G4int PhysicsTableSize = theIntegralTable->entries(); - G4PhysicsOrderedFreeVector *v; - - for (G4int i = 0 ; i < PhysicsTableSize ; i++ ) - { - v = (G4PhysicsOrderedFreeVector*)(*theIntegralTable)[i]; - v->DumpValues(); - } -} - -#endif /* G4OpWLSPOPOP_h */ diff --git a/CRVResponse/standalone/wls/include/G4OpWLSPSPPO.hh b/CRVResponse/standalone/wls/include/G4OpWLSPSPPO.hh deleted file mode 100644 index 6e8aca7ab0..0000000000 --- a/CRVResponse/standalone/wls/include/G4OpWLSPSPPO.hh +++ /dev/null @@ -1,133 +0,0 @@ -/* -GEANT doesn't provide a process which allows multiple absorption and emission spectra, and also uses a quantum yield. -Therefore, two process was developed based of G4OpWLS, one for polystyrene+PPO, and another one for POPOP. -They use different property table names. -*/ - - -#ifndef G4OpWLSPSPPO_h -#define G4OpWLSPSPPO_h 1 - -///////////// -// Includes -///////////// - -#include "globals.hh" -#include "templates.hh" -#include "Randomize.hh" -#include "G4Poisson.hh" -#include "G4ThreeVector.hh" -#include "G4ParticleMomentum.hh" -#include "G4Step.hh" -#include "G4VDiscreteProcess.hh" -#include "G4DynamicParticle.hh" -#include "G4Material.hh" -#include "G4OpticalPhoton.hh" -#include "G4PhysicsTable.hh" -#include "G4MaterialPropertiesTable.hh" -#include "G4PhysicsOrderedFreeVector.hh" -#include "G4VWLSTimeGeneratorProfile.hh" - -// Class Description: -// Discrete Process -- Bulk absorption of Optical Photons. -// Class inherits publicly from G4VDiscreteProcess -// Class Description - End: - -///////////////////// -// Class Definition -///////////////////// - -class G4VWLSTimeGeneratorProfile; - -class G4OpWLSPSPPO : public G4VDiscreteProcess -{ - -public: - - //////////////////////////////// - // Constructors and Destructor - //////////////////////////////// - - G4OpWLSPSPPO(const G4String& processName = "OpWLSPSPPO", - G4ProcessType type = fOptical); - ~G4OpWLSPSPPO(); - -private: - - G4OpWLSPSPPO(const G4OpWLSPSPPO &right); - - ////////////// - // Operators - ////////////// - - G4OpWLSPSPPO& operator=(const G4OpWLSPSPPO &right); - -public: - - //////////// - // Methods - //////////// - - G4bool IsApplicable(const G4ParticleDefinition& aParticleType); - // Returns true -> 'is applicable' only for an optical photon. - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - // Build the WLS integral table at the right time - - G4double GetMeanFreePath(const G4Track& aTrack, - G4double , - G4ForceCondition* ); - // Returns the absorption length for bulk absorption of optical - // photons in media with a specified attenuation length. - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, - const G4Step& aStep); - // This is the method implementing bulk absorption of optical - // photons. - - G4PhysicsTable* GetIntegralTable() const; - // Returns the address of the WLS integral table. - - void DumpPhysicsTable() const; - // Prints the WLS integral table. - - void UseTimeProfile(const G4String name); - // Selects the time profile generator - -protected: - - G4VWLSTimeGeneratorProfile* WLSTimeGeneratorProfile; - G4PhysicsTable* theIntegralTable; - -}; - -//////////////////// -// Inline methods -//////////////////// - -inline -G4bool G4OpWLSPSPPO::IsApplicable(const G4ParticleDefinition& aParticleType) -{ - return ( &aParticleType == G4OpticalPhoton::OpticalPhoton() ); -} - -inline -G4PhysicsTable* G4OpWLSPSPPO::GetIntegralTable() const -{ - return theIntegralTable; -} - -inline -void G4OpWLSPSPPO::DumpPhysicsTable() const -{ - G4int PhysicsTableSize = theIntegralTable->entries(); - G4PhysicsOrderedFreeVector *v; - - for (G4int i = 0 ; i < PhysicsTableSize ; i++ ) - { - v = (G4PhysicsOrderedFreeVector*)(*theIntegralTable)[i]; - v->DumpValues(); - } -} - -#endif /* G4OpWLSPSPPO_h */ diff --git a/CRVResponse/standalone/wls/include/G4OpWLSY11.hh b/CRVResponse/standalone/wls/include/G4OpWLSY11.hh deleted file mode 100644 index fc2f58cbb9..0000000000 --- a/CRVResponse/standalone/wls/include/G4OpWLSY11.hh +++ /dev/null @@ -1,134 +0,0 @@ -/* -GEANT doesn't provide a process which allows multiple absorption and emission spectra, and also uses a quantum yield. -Therefore, two process was developed based of G4OpWLS, one for polystyrene+PPO, and another one for POPOP. -They use different property table names. -The same mechanism was used for Y11 (fibers) -*/ - - -#ifndef G4OpWLSY11_h -#define G4OpWLSY11_h 1 - -///////////// -// Includes -///////////// - -#include "globals.hh" -#include "templates.hh" -#include "Randomize.hh" -#include "G4Poisson.hh" -#include "G4ThreeVector.hh" -#include "G4ParticleMomentum.hh" -#include "G4Step.hh" -#include "G4VDiscreteProcess.hh" -#include "G4DynamicParticle.hh" -#include "G4Material.hh" -#include "G4OpticalPhoton.hh" -#include "G4PhysicsTable.hh" -#include "G4MaterialPropertiesTable.hh" -#include "G4PhysicsOrderedFreeVector.hh" -#include "G4VWLSTimeGeneratorProfile.hh" - -// Class Description: -// Discrete Process -- Bulk absorption of Optical Photons. -// Class inherits publicly from G4VDiscreteProcess -// Class Description - End: - -///////////////////// -// Class Definition -///////////////////// - -class G4VWLSTimeGeneratorProfile; - -class G4OpWLSY11 : public G4VDiscreteProcess -{ - -public: - - //////////////////////////////// - // Constructors and Destructor - //////////////////////////////// - - G4OpWLSY11(const G4String& processName = "OpWLSY11", - G4ProcessType type = fOptical); - ~G4OpWLSY11(); - -private: - - G4OpWLSY11(const G4OpWLSY11 &right); - - ////////////// - // Operators - ////////////// - - G4OpWLSY11& operator=(const G4OpWLSY11 &right); - -public: - - //////////// - // Methods - //////////// - - G4bool IsApplicable(const G4ParticleDefinition& aParticleType); - // Returns true -> 'is applicable' only for an optical photon. - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - // Build the WLS integral table at the right time - - G4double GetMeanFreePath(const G4Track& aTrack, - G4double , - G4ForceCondition* ); - // Returns the absorption length for bulk absorption of optical - // photons in media with a specified attenuation length. - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, - const G4Step& aStep); - // This is the method implementing bulk absorption of optical - // photons. - - G4PhysicsTable* GetIntegralTable() const; - // Returns the address of the WLS integral table. - - void DumpPhysicsTable() const; - // Prints the WLS integral table. - - void UseTimeProfile(const G4String name); - // Selects the time profile generator - -protected: - - G4VWLSTimeGeneratorProfile* WLSTimeGeneratorProfile; - G4PhysicsTable* theIntegralTable; - -}; - -//////////////////// -// Inline methods -//////////////////// - -inline -G4bool G4OpWLSY11::IsApplicable(const G4ParticleDefinition& aParticleType) -{ - return ( &aParticleType == G4OpticalPhoton::OpticalPhoton() ); -} - -inline -G4PhysicsTable* G4OpWLSY11::GetIntegralTable() const -{ - return theIntegralTable; -} - -inline -void G4OpWLSY11::DumpPhysicsTable() const -{ - G4int PhysicsTableSize = theIntegralTable->entries(); - G4PhysicsOrderedFreeVector *v; - - for (G4int i = 0 ; i < PhysicsTableSize ; i++ ) - { - v = (G4PhysicsOrderedFreeVector*)(*theIntegralTable)[i]; - v->DumpValues(); - } -} - -#endif /* G4OpWLSY11_h */ diff --git a/CRVResponse/standalone/wls/include/WLSDetectorConstruction.hh b/CRVResponse/standalone/wls/include/WLSDetectorConstruction.hh deleted file mode 100644 index 99e7597339..0000000000 --- a/CRVResponse/standalone/wls/include/WLSDetectorConstruction.hh +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef WLSDetectorConstruction_h -#define WLSDetectorConstruction_h 1 - -//#define FIBERTEST - -#include "globals.hh" -#include "G4ios.hh" - -class G4Box; -class G4Tubs; - -class G4LogicalVolume; -class G4VPhysicalVolume; - -class WLSMaterials; -class WLSEventAction; -class G4Material; - -#include "G4VUserDetectorConstruction.hh" - -class WLSDetectorConstruction : public G4VUserDetectorConstruction -{ - WLSDetectorConstruction(); - - public: - - WLSDetectorConstruction(double lengthOption, int reflectorOption); - ~WLSDetectorConstruction(); - - G4VPhysicalVolume* Construct(); - G4VPhysicalVolume* ConstructDetector(); - - static WLSDetectorConstruction* Instance() {return _fgInstance;} - - void UpdateGeometry(); - - G4Material* FindMaterial(G4String); - G4VPhysicalVolume* GetScintillatorVolume() {return _physiScintillator;} - - double GetScintillatorHalfThickness() {return _barThickness/2.0-_coatingThickness;} - double GetScintillatorHalfWidth() {return _barWidth/2.0-_coatingThickness;} - double GetScintillatorHalfLength() {return _barLength/2.0;} - double GetScintillatorCornerRadius() {return _extrusionCornerRadius-_coatingThickness;} - double GetFiberSeparation() {return _fiberSeparation;} - double GetHoleRadiusX() {return _holeRadiusX;} - double GetHoleRadiusY() {return _holeRadiusY;} - double GetClad2Radius() {return _clad2Radius;} - - int GetReflectorOption() {return _reflectorOption;} - - std::vector GetXBins() {return _xbins;} - std::vector GetYBins() {return _ybins;} - std::vector GetZBins() {return _zbins;} - std::vector GetBetaBins() {return _betabins;} - std::vector GetThetaBins() {return _thetabins;} - std::vector GetPhiBins() {return _phibins;} - std::vector GetRBins() {return _rbins;} - - private: - - static WLSDetectorConstruction* _fgInstance; - - WLSMaterials* _materials; - - G4VPhysicalVolume *_physiWorld; - G4VPhysicalVolume *_physiScintillator; - - double _worldSizeX; - double _worldSizeY; - double _worldSizeZ; - - double _mppcReflectivity; - double _blacktapeReflectivity; - double _reflectorReflectivity; - double _fiberGuideBarReflectivity; - - double _barLength, _barWidth, _barThickness; - double _fiberSeparation; - double _coatingThickness; - double _extrusionCornerRadius; - double _holeRadiusX, _holeRadiusY; - double _fiberRadius, _clad1Radius, _clad2Radius; - double _sipmWidth, _sipmLength, _sipmWindowLength; - double _airGap; - double _fiberGuideBarLength; - - int _reflectorOption; - bool _reflectorAtPositiveSide; - bool _reflectorAtNegativeSide; - - std::vector _xbins, _ybins, _zbins; - std::vector _betabins, _thetabins, _phibins, _rbins; - - void UpdateGeometryParameters(); -}; - -#endif diff --git a/CRVResponse/standalone/wls/include/WLSEventAction.hh b/CRVResponse/standalone/wls/include/WLSEventAction.hh deleted file mode 100644 index e1ce583e93..0000000000 --- a/CRVResponse/standalone/wls/include/WLSEventAction.hh +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef WLSEventAction_h -#define WLSEventAction_h 1 - -#include "globals.hh" -#include "G4UserEventAction.hh" -#include "G4ThreeVector.hh" -#include - -#include "WLSSteppingAction.hh" - -class TH1D; -class TFile; -class TNtuple; - -class WLSEventAction : public G4UserEventAction -{ - WLSEventAction(); - - public: - - WLSEventAction(WLSSteppingAction::simulationMode mode, const std::string &singlePEWaveformFilename, const std::string &photonMapFilename, - int numberOfPhotons=-1, int simType=-1, unsigned int minBin=0, bool verbose=false); - //numberOfPhotons, simType, minBin, currentBin, verbose is only needed for simulationMode::CreateLookupTables - ~WLSEventAction(); - - public: - - void BeginOfEventAction(const G4Event*); - void EndOfEventAction(const G4Event*); - - static WLSEventAction* Instance() {return _fgInstance;} - void SetGeneratedOptPhotons(int n) {_generatedPhotons=n;} - void SetBinNumber(unsigned int n) {_currentBin=n;} - - private: - - static WLSEventAction* _fgInstance; - - WLSSteppingAction::simulationMode _mode; - - TH1D* _histP[2][4]; - TH1D* _histT[2][4]; - TH1D* _histPE[4]; - TNtuple* _ntuple; - int _numberOfPhotons, _simType; - unsigned int _minBin, _currentBin; - std::string _singlePEWaveformFilename; - std::string _photonMapFilename; - bool _verbose; - - int _generatedPhotons; //set by WLSPrimaryGeneratorAction - double _startZ; //set by WLSPrimaryGeneratorAction - - void Draw(const G4Event* evt); - - std::vector _PEs[4]; - std::vector _recoPEs[4]; - std::vector _pulseTimes[4]; - std::vector _LETimes[4]; - std::vector _pulseBetas[4]; -}; - -#endif diff --git a/CRVResponse/standalone/wls/include/WLSExtraPhysics.hh b/CRVResponse/standalone/wls/include/WLSExtraPhysics.hh deleted file mode 100644 index b911f8b86a..0000000000 --- a/CRVResponse/standalone/wls/include/WLSExtraPhysics.hh +++ /dev/null @@ -1,55 +0,0 @@ -// -// ******************************************************************** -// * License and Disclaimer * -// * * -// * The Geant4 software is copyright of the Copyright Holders of * -// * the Geant4 Collaboration. It is provided under the terms and * -// * conditions of the Geant4 Software License, included in the file * -// * LICENSE and available at http://cern.ch/geant4/license . These * -// * include a list of copyright holders. * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. Please see the license in the file LICENSE and URL above * -// * for the full disclaimer and the limitation of liability. * -// * * -// * This code implementation is the result of the scientific and * -// * technical work of the GEANT4 collaboration. * -// * By using, copying, modifying or distributing the software (or * -// * any work based on the software) you agree to acknowledge its * -// * use in resulting scientific publications, and indicate your * -// * acceptance of all terms of the Geant4 Software license. * -// ******************************************************************** -// -/// \file optical/wls/include/WLSExtraPhysics.hh -/// \brief Definition of the WLSExtraPhysics class -// -// -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef WLSExtraPhysics_h -#define WLSExtraPhysics_h 1 - -#include "globals.hh" - -#include "G4VPhysicsConstructor.hh" - -class WLSExtraPhysics : public G4VPhysicsConstructor -{ - public: - - WLSExtraPhysics(); - virtual ~WLSExtraPhysics(); - - virtual void ConstructParticle(); - virtual void ConstructProcess(); - -}; - -#endif diff --git a/CRVResponse/standalone/wls/include/WLSMaterials.hh b/CRVResponse/standalone/wls/include/WLSMaterials.hh deleted file mode 100644 index 46564c43d2..0000000000 --- a/CRVResponse/standalone/wls/include/WLSMaterials.hh +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef WLSMaterials_h -#define WLSMaterials_h 1 - -#include "globals.hh" -#include "G4Material.hh" -#include "G4NistManager.hh" - -class WLSMaterials -{ - public: - - ~WLSMaterials(); - - static WLSMaterials* GetInstance(); - - G4Material* GetMaterial(const G4String); - - private: - - WLSMaterials(); - - void CreateMaterials(); - - private: - - static WLSMaterials* instance; - - G4NistManager* nistMan; - - G4Material* Air; - G4Material* PVC; - - G4Material* PMMA; - G4Material* FPethylene; - G4Material* PolystyreneFiber; - G4Material* PolystyreneScint; - G4Material* Epoxy; - G4Material* Coating; -}; - -#endif /*WLSMaterials_h*/ diff --git a/CRVResponse/standalone/wls/include/WLSOpticalPhysics.hh b/CRVResponse/standalone/wls/include/WLSOpticalPhysics.hh deleted file mode 100644 index d513edb634..0000000000 --- a/CRVResponse/standalone/wls/include/WLSOpticalPhysics.hh +++ /dev/null @@ -1,91 +0,0 @@ -// -// ******************************************************************** -// * License and Disclaimer * -// * * -// * The Geant4 software is copyright of the Copyright Holders of * -// * the Geant4 Collaboration. It is provided under the terms and * -// * conditions of the Geant4 Software License, included in the file * -// * LICENSE and available at http://cern.ch/geant4/license . These * -// * include a list of copyright holders. * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. Please see the license in the file LICENSE and URL above * -// * for the full disclaimer and the limitation of liability. * -// * * -// * This code implementation is the result of the scientific and * -// * technical work of the GEANT4 collaboration. * -// * By using, copying, modifying or distributing the software (or * -// * any work based on the software) you agree to acknowledge its * -// * use in resulting scientific publications, and indicate your * -// * acceptance of all terms of the Geant4 Software license. * -// ******************************************************************** -// -/// \file optical/wls/include/WLSOpticalPhysics.hh -/// \brief Definition of the WLSOpticalPhysics class -// -// -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef WLSOpticalPhysics_h -#define WLSOpticalPhysics_h 1 - -#include "globals.hh" - -#include "G4OpWLSY11.hh" -#include "G4OpWLSPSPPO.hh" -#include "G4OpWLSPOPOP.hh" -#include "G4CerenkovNew.hh" -#include "G4Scintillation.hh" - -#include "G4OpMieHG.hh" -#include "G4OpRayleigh.hh" -#include "G4OpAbsorption.hh" -#include "G4OpBoundaryProcess.hh" - -#include "G4VPhysicsConstructor.hh" - -class WLSOpticalPhysics : public G4VPhysicsConstructor -{ - public: - - WLSOpticalPhysics(G4bool toggle=true); - virtual ~WLSOpticalPhysics(); - - virtual void ConstructParticle(); - virtual void ConstructProcess(); - - G4OpWLSY11* GetWLSY11Process() {return theWLSY11Process;} - G4OpWLSPSPPO* GetWLSPSPPOProcess() {return theWLSPSPPOProcess;} - G4OpWLSPOPOP* GetWLSPOPOPProcess() {return theWLSPOPOPProcess;} - G4CerenkovNew* GetCerenkovProcess() {return theCerenkovProcess;} - G4Scintillation* GetScintillationProcess() {return theScintProcess;} - G4OpAbsorption* GetAbsorptionProcess() {return theAbsorptionProcess;} - G4OpRayleigh* GetRayleighScatteringProcess() {return theRayleighScattering;} - G4OpMieHG* GetMieHGScatteringProcess() {return theMieHGScatteringProcess;} - G4OpBoundaryProcess* GetBoundaryProcess() { return theBoundaryProcess;} - - void SetNbOfPhotonsCerenkov(G4int); - -private: - - G4OpWLSY11* theWLSY11Process; - G4OpWLSPSPPO* theWLSPSPPOProcess; - G4OpWLSPOPOP* theWLSPOPOPProcess; - G4CerenkovNew* theCerenkovProcess; - G4Scintillation* theScintProcess; - G4OpAbsorption* theAbsorptionProcess; - G4OpRayleigh* theRayleighScattering; - G4OpMieHG* theMieHGScatteringProcess; - G4OpBoundaryProcess* theBoundaryProcess; - - G4bool AbsorptionOn; - -}; -#endif diff --git a/CRVResponse/standalone/wls/include/WLSPhysicsList.hh b/CRVResponse/standalone/wls/include/WLSPhysicsList.hh deleted file mode 100644 index 937a51545e..0000000000 --- a/CRVResponse/standalone/wls/include/WLSPhysicsList.hh +++ /dev/null @@ -1,95 +0,0 @@ -// -// ******************************************************************** -// * License and Disclaimer * -// * * -// * The Geant4 software is copyright of the Copyright Holders of * -// * the Geant4 Collaboration. It is provided under the terms and * -// * conditions of the Geant4 Software License, included in the file * -// * LICENSE and available at http://cern.ch/geant4/license . These * -// * include a list of copyright holders. * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. Please see the license in the file LICENSE and URL above * -// * for the full disclaimer and the limitation of liability. * -// * * -// * This code implementation is the result of the scientific and * -// * technical work of the GEANT4 collaboration. * -// * By using, copying, modifying or distributing the software (or * -// * any work based on the software) you agree to acknowledge its * -// * use in resulting scientific publications, and indicate your * -// * acceptance of all terms of the Geant4 Software license. * -// ******************************************************************** -// -/// \file optical/wls/include/WLSPhysicsList.hh -/// \brief Definition of the WLSPhysicsList class -// -// -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef WLSPhysicsList_h -#define WLSPhysicsList_h 1 - -#include "globals.hh" -#include "G4VModularPhysicsList.hh" - -class G4VPhysicsConstructor; - -class WLSStepMax; -class WLSOpticalPhysics; - -class WLSPhysicsList: public G4VModularPhysicsList -{ - public: - - WLSPhysicsList(); - virtual ~WLSPhysicsList(); - - void SetCuts(); - void SetCutForGamma(G4double); - void SetCutForElectron(G4double); - void SetCutForPositron(G4double); - - void SetStepMax(G4double); - WLSStepMax* GetStepMaxProcess(); - void AddStepMax(); - - /// Remove specific physics from physics list. - void RemoveFromPhysicsList(const G4String&); - - /// Make sure that the physics list is empty. - void ClearPhysics(); - - void ConstructParticle(); - void ConstructProcess(); - - // Turn on or off the absorption process - void SetAbsorption(G4bool); - - void SetNbOfPhotonsCerenkov(G4int); - - void SetVerbose(G4int); - -private: - - G4double fCutForGamma; - G4double fCutForElectron; - G4double fCutForPositron; - - G4double MaxChargedStep; - WLSStepMax* stepMaxProcess; - - WLSOpticalPhysics* opticalPhysics; - - G4bool AbsorptionOn; - - G4VMPLData::G4PhysConstVectorData* fPhysicsVector; -}; - -#endif diff --git a/CRVResponse/standalone/wls/include/WLSPrimaryGeneratorAction.hh b/CRVResponse/standalone/wls/include/WLSPrimaryGeneratorAction.hh deleted file mode 100644 index 3e8bb4546d..0000000000 --- a/CRVResponse/standalone/wls/include/WLSPrimaryGeneratorAction.hh +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef WLSPrimaryGeneratorAction_h -#define WLSPrimaryGeneratorAction_h 1 - -#include "globals.hh" -#include "G4VUserPrimaryGeneratorAction.hh" -#include "G4PhysicsOrderedFreeVector.hh" -#include "G4MaterialPropertyVector.hh" -#include "G4ThreeVector.hh" -#include "WLSSteppingAction.hh" - -class G4ParticleGun; -class G4Event; - -class WLSPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction -{ - WLSPrimaryGeneratorAction(); - - public: - - WLSPrimaryGeneratorAction(WLSSteppingAction::simulationMode mode, - int numberOfPhotons=-1, int simType=-1, int startBin=-1, bool verbose=false, double posY=0.0, double posZ=0.0); - ~WLSPrimaryGeneratorAction(); //posY and posZ only used for mode 0 and 1 - - void BuildEmissionSpectrum(); - bool SetNextBins(); - int GeneratePhotonsInScintillator(G4Event *anEvent, int generatedPhotons); - int GenerateCerenkovPhotonsInFiber(G4Event *anEvent, int generatedPhotons); - void GeneratePrimaries(G4Event*); - - private: - - CLHEP::HepRandomEngine* _randomEngine; - G4ParticleGun* _particleGun; - - WLSSteppingAction::simulationMode _mode; - - int _numberOfPhotons, _simType, _currentBin; - bool _verbose; - G4PhysicsOrderedFreeVector _emissionIntegral; - G4MaterialPropertyVector *_rindexScintillator, *_rindexFiber; - double _cerenkovEnergyMinScintillator, _cerenkovEnergyMaxScintillator; - double _cerenkovEnergyMinFiber, _cerenkovEnergyMaxFiber; - double _maxRIndexScintillator, _maxRIndexFiber; - double _scintillationRiseTime, _scintillationDecayTime; - bool _first; - - double _minBinX, _minBinY, _minBinZ, _minBinBeta, _minBinTheta, _minBinPhi, _minBinR; - double _maxBinX, _maxBinY, _maxBinZ, _maxBinBeta, _maxBinTheta, _maxBinPhi, _maxBinR; - - double _posY, _posZ; //only used for mode 0 and 1 -}; - -#endif diff --git a/CRVResponse/standalone/wls/include/WLSRunAction.hh b/CRVResponse/standalone/wls/include/WLSRunAction.hh deleted file mode 100644 index 2e592b8137..0000000000 --- a/CRVResponse/standalone/wls/include/WLSRunAction.hh +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef WLSRunAction_h -#define WLSRunAction_h 1 - -#include "globals.hh" - -#include "G4UserRunAction.hh" - -class G4Run; - -class WLSRunAction : public G4UserRunAction -{ - public: - - WLSRunAction(); - ~WLSRunAction(); - - void BeginOfRunAction(const G4Run*); - void EndOfRunAction(const G4Run*); - -}; - -#endif diff --git a/CRVResponse/standalone/wls/include/WLSStackingAction.hh b/CRVResponse/standalone/wls/include/WLSStackingAction.hh deleted file mode 100644 index 9e0a7ba11c..0000000000 --- a/CRVResponse/standalone/wls/include/WLSStackingAction.hh +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef WLSStackingAction_h -#define WLSStackingAction_h 1 - -#include "globals.hh" -#include "G4UserStackingAction.hh" -#include "G4Track.hh" -#include "G4VProcess.hh" -#include - -class WLSStackingAction : public G4UserStackingAction -{ - - private: - - static WLSStackingAction* _fgInstance; - int _scintillation, _cerenkovS, _cerenkovF; - int _totalScintillation, _totalCerenkov; - - public: - - WLSStackingAction() - { - _fgInstance = this; - _totalScintillation=0; - _totalCerenkov=0; - } - virtual ~WLSStackingAction() {} - - void PrepareNewEvent() - { - _scintillation=0; - _cerenkovS=0; - _cerenkovF=0; - } - - static WLSStackingAction* Instance() {return _fgInstance;} - virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* track) - { - if(track->GetDefinition()->GetPDGEncoding()==0 && track->GetVolume() && track->GetCreatorProcess()) - { - std::string v=track->GetVolume()->GetName(); - std::string p=track->GetCreatorProcess()->GetProcessName(); - if(v=="Scintillator" && p=="Scintillation") _scintillation++; - if(v=="Scintillator" && p=="CerenkovNew") _cerenkovS++; -// if(v=="Scintillator" && p=="Scintillation") {_scintillation++; return fKill;} -// if(v=="Scintillator" && p=="CerenkovNew") {_cerenkovS++; return fKill;} - if((v=="WLSFiber" || v.compare(0,4,"Clad")==0) && p=="CerenkovNew") _cerenkovF++; - } - return fUrgent; - } - - void PrintStatus() - { - std::cout<<"Full GEANT4: Scintillation Photons: "<<_scintillation<<" Cerenkov Photons (scintillator): "<<_cerenkovS<<" Cerenkov Photons (fiber): "<<_cerenkovF< -#include -#include - -#include "CLHEP/Random/Randomize.h" - -class TFile; -class TNtuple; - -namespace mu2eCrv -{ - class MakeCrvPhotons; -} - -class WLSSteppingAction : public G4UserSteppingAction -{ - public: - - enum simulationMode {CreateLookupTables, UseGeantOnly, UseGeantAndLookupTables, Undefined}; - - struct PhotonInfo - { - double _arrivalTime; - int _fiberEmissions; - PhotonInfo(double arrivalTime, int fiberEmissions) : _arrivalTime(arrivalTime), _fiberEmissions(fiberEmissions) {} - }; - - WLSSteppingAction(simulationMode mode, const std::string &lookupFileName = ""); //lookupFileName and visibleEnergyAdjustmentFileName - //only used for simulationMode::UseGeantAndLookupTables - ~WLSSteppingAction(); - - void UserSteppingAction(const G4Step*); - static WLSSteppingAction* Instance() {return _fgInstance;} - void Reset(); - const std::vector &GetPhotonInfo(int SiPM); - const std::vector &GetArrivalTimesFromLookupTables(int SiPM); - - void PrintFiberStats(); - - private: - - std::unique_ptr _crvPhotons; - static WLSSteppingAction *_fgInstance; - std::vector _photonInfo[4]; - std::vector _arrivalTimesFromLookupTables[4]; - simulationMode _mode; - - std::map _wlsTrackParents; - std::set _tracksHittingFiber; - std::set _tracksGettingAbsorbedInFiber; - int _zeroFiberEmissions; - - CLHEP::HepJamesRandom _engine; - CLHEP::RandFlat _randFlat; - CLHEP::RandGaussQ _randGaussQ; - CLHEP::RandPoissonQ _randPoissonQ; - - TNtuple* _ntuple; //WLS fiber test -}; - -#endif diff --git a/CRVResponse/standalone/wls/src/G4CerekovNew.cc b/CRVResponse/standalone/wls/src/G4CerekovNew.cc deleted file mode 100644 index fa5a48284d..0000000000 --- a/CRVResponse/standalone/wls/src/G4CerekovNew.cc +++ /dev/null @@ -1,765 +0,0 @@ -// -// ******************************************************************** -// * License and Disclaimer * -// * * -// * The Geant4 software is copyright of the Copyright Holders of * -// * the Geant4 Collaboration. It is provided under the terms and * -// * conditions of the Geant4 Software License, included in the file * -// * LICENSE and available at http://cern.ch/geant4/license . These * -// * include a list of copyright holders. * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. Please see the license in the file LICENSE and URL above * -// * for the full disclaimer and the limitation of liability. * -// * * -// * This code implementation is the result of the scientific and * -// * technical work of the GEANT4 collaboration. * -// * By using, copying, modifying or distributing the software (or * -// * any work based on the software) you agree to acknowledge its * -// * use in resulting scientific publications, and indicate your * -// * acceptance of all terms of the Geant4 Software license. * -// ******************************************************************** -// -// -// -//////////////////////////////////////////////////////////////////////// -// Cerenkov Radiation Class Implementation -//////////////////////////////////////////////////////////////////////// -// -// File: G4Cerenkov.cc -// Description: Discrete Process -- Generation of Cerenkov Photons -// Version: 2.1 -// Created: 1996-02-21 -// Author: Juliet Armstrong -// Updated: 2007-09-30 by Peter Gumplinger -// > change inheritance to G4VDiscreteProcess -// GetContinuousStepLimit -> GetMeanFreePath (StronglyForced) -// AlongStepDoIt -> PostStepDoIt -// 2005-08-17 by Peter Gumplinger -// > change variable name MeanNumPhotons -> MeanNumberOfPhotons -// 2005-07-28 by Peter Gumplinger -// > add G4ProcessType to constructor -// 2001-09-17, migration of Materials to pure STL (mma) -// 2000-11-12 by Peter Gumplinger -// > add check on CerenkovAngleIntegrals->IsFilledVectorExist() -// in method GetAverageNumberOfPhotons -// > and a test for MeanNumberOfPhotons <= 0.0 in DoIt -// 2000-09-18 by Peter Gumplinger -// > change: aSecondaryPosition=x0+rand*aStep.GetDeltaPosition(); -// aSecondaryTrack->SetTouchable(0); -// 1999-10-29 by Peter Gumplinger -// > change: == into <= in GetContinuousStepLimit -// 1997-08-08 by Peter Gumplinger -// > add protection against /0 -// > G4MaterialPropertiesTable; new physics/tracking scheme -// -// mail: gum@triumf.ca -// -//////////////////////////////////////////////////////////////////////// - -#include "G4ios.hh" -#include "G4PhysicalConstants.hh" -#include "G4SystemOfUnits.hh" -#include "G4Poisson.hh" -#include "G4EmProcessSubType.hh" - -#include "G4LossTableManager.hh" -#include "G4MaterialCutsCouple.hh" -#include "G4ParticleDefinition.hh" - -#include "G4CerenkovNew.hh" - -///////////////////////// -// Class Implementation -///////////////////////// - - ////////////////////// - // static data members - ////////////////////// - -G4CerenkovNew* G4CerenkovNew::_fgInstance = NULL; -//G4bool G4CerenkovNew::fTrackSecondariesFirst = false; -//G4double G4CerenkovNew::fMaxBetaChange = 0.; -//G4int G4CerenkovNew::fMaxPhotons = 0; - - ////////////// - // Operators - ////////////// - -// G4Cerenkov::operator=(const G4Cerenkov &right) -// { -// } - - ///////////////// - // Constructors - ///////////////// - -G4CerenkovNew::G4CerenkovNew(const G4String& processName, G4ProcessType type) - : G4VProcess(processName, type) , - fTrackSecondariesFirst(false), - fMaxBetaChange(0), - fMaxPhotons(0) -{ - _fgInstance = this; - - SetProcessSubType(fCerenkov); - - thePhysicsTable = NULL; - - if (verboseLevel>0) { - G4cout << GetProcessName() << " is created " << G4endl; - } -} - -// G4Cerenkov::G4Cerenkov(const G4Cerenkov &right) -// { -// } - - //////////////// - // Destructors - //////////////// - -G4CerenkovNew::~G4CerenkovNew() -{ - if (thePhysicsTable != NULL) { - thePhysicsTable->clearAndDestroy(); - delete thePhysicsTable; - } - - minRindex.clear(); - maxRindex.clear(); -} - - //////////// - // Methods - //////////// - -G4bool G4CerenkovNew::IsApplicable(const G4ParticleDefinition& aParticleType) -{ - G4bool result = false; - if (aParticleType.GetPDGCharge() != 0.0 && - aParticleType.GetPDGMass() != 0.0 && - aParticleType.GetParticleName() != "chargedgeantino" && - !aParticleType.IsShortLived() ) { result = true; } - - return result; -} - -void G4CerenkovNew::SetTrackSecondariesFirst(const G4bool state) -{ - fTrackSecondariesFirst = state; -} - -void G4CerenkovNew::SetMaxBetaChangePerStep(const G4double value) -{ - fMaxBetaChange = value*CLHEP::perCent; -} - -void G4CerenkovNew::SetMaxNumPhotonsPerStep(const G4int NumPhotons) -{ - fMaxPhotons = NumPhotons; -} - -void G4CerenkovNew::BuildPhysicsTable(const G4ParticleDefinition&) -{ - if (!thePhysicsTable) BuildThePhysicsTable(); -} - -// PostStepDoIt -// ------------- -// -G4VParticleChange* -G4CerenkovNew::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) - -// This routine is called for each tracking Step of a charged particle -// in a radiator. A Poisson-distributed number of photons is generated -// according to the Cerenkov formula, distributed evenly along the track -// segment and uniformly azimuth w.r.t. the particle direction. The -// parameters are then transformed into the Master Reference System, and -// they are added to the particle change. - -{ - ////////////////////////////////////////////////////// - // Should we ensure that the material is dispersive? - ////////////////////////////////////////////////////// - - aParticleChange.Initialize(aTrack); - - const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - const G4Material* aMaterial = aTrack.GetMaterial(); - - G4StepPoint* pPreStepPoint = aStep.GetPreStepPoint(); - G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint(); - - G4ThreeVector x0 = pPreStepPoint->GetPosition(); - G4ThreeVector p0 = aStep.GetDeltaPosition().unit(); - G4double t0 = pPreStepPoint->GetGlobalTime(); - - G4MaterialPropertiesTable* aMaterialPropertiesTable = - aMaterial->GetMaterialPropertiesTable(); - if (!aMaterialPropertiesTable) return pParticleChange; - - G4MaterialPropertyVector* Rindex = - aMaterialPropertiesTable->GetProperty("RINDEX"); - if (!Rindex) return pParticleChange; - - // particle charge - G4double charge = aParticle->GetDefinition()->GetPDGCharge(); - - // particle beta - G4double beta = (pPreStepPoint ->GetBeta() + - pPostStepPoint->GetBeta())*0.5; - - G4double MeanNumberOfPhotons = - GetAverageNumberOfPhotons(charge,beta,aMaterial,Rindex); - - if (MeanNumberOfPhotons <= 0.0) { - - // return unchanged particle and no secondaries - - aParticleChange.SetNumberOfSecondaries(0); - - return pParticleChange; - - } - - G4double step_length; - step_length = aStep.GetStepLength(); - - MeanNumberOfPhotons = MeanNumberOfPhotons * step_length; - - G4int NumPhotons = (G4int) G4Poisson(MeanNumberOfPhotons); - - if (NumPhotons <= 0) { - - // return unchanged particle and no secondaries - - aParticleChange.SetNumberOfSecondaries(0); - - return pParticleChange; - } - - //////////////////////////////////////////////////////////////// - - aParticleChange.SetNumberOfSecondaries(NumPhotons); - - if (fTrackSecondariesFirst) { - if (aTrack.GetTrackStatus() == fAlive ) - aParticleChange.ProposeTrackStatus(fSuspend); - } - - //////////////////////////////////////////////////////////////// - - G4double Pmin = Rindex->GetMinLowEdgeEnergy(); - G4double Pmax = Rindex->GetMaxLowEdgeEnergy(); - G4double dp = Pmax - Pmin; - - G4int materialIndex = aMaterial->GetIndex(); - if(maxRindex.find(materialIndex)==maxRindex.end()) return pParticleChange; - G4double nMax = maxRindex.at(materialIndex); - - G4double BetaInverse = 1./beta; - - G4double maxCos = BetaInverse / nMax; - G4double maxSin2 = (1.0 - maxCos) * (1.0 + maxCos); - - G4double beta1 = pPreStepPoint ->GetBeta(); - G4double beta2 = pPostStepPoint->GetBeta(); - - G4double MeanNumberOfPhotons1 = - GetAverageNumberOfPhotons(charge,beta1,aMaterial,Rindex); - G4double MeanNumberOfPhotons2 = - GetAverageNumberOfPhotons(charge,beta2,aMaterial,Rindex); - - for (G4int i = 0; i < NumPhotons; i++) { - - // Determine photon energy - - G4double rand; - G4double sampledEnergy, sampledRI; - G4double cosTheta, sin2Theta; - - // sample an energy - - do { - rand = G4UniformRand(); - sampledEnergy = Pmin + rand * dp; - sampledRI = Rindex->Value(sampledEnergy); - cosTheta = BetaInverse / sampledRI; - - sin2Theta = (1.0 - cosTheta)*(1.0 + cosTheta); - rand = G4UniformRand(); - - // Loop checking, 07-Aug-2015, Vladimir Ivanchenko - } while (rand*maxSin2 > sin2Theta); - - // Generate random position of photon on cone surface - // defined by Theta - - rand = G4UniformRand(); - - G4double phi = twopi*rand; - G4double sinPhi = std::sin(phi); - G4double cosPhi = std::cos(phi); - - // calculate x,y, and z components of photon energy - // (in coord system with primary particle direction - // aligned with the z axis) - - G4double sinTheta = std::sqrt(sin2Theta); - G4double px = sinTheta*cosPhi; - G4double py = sinTheta*sinPhi; - G4double pz = cosTheta; - - // Create photon momentum direction vector - // The momentum direction is still with respect - // to the coordinate system where the primary - // particle direction is aligned with the z axis - - G4ParticleMomentum photonMomentum(px, py, pz); - - // Rotate momentum direction back to global reference - // system - - photonMomentum.rotateUz(p0); - - // Determine polarization of new photon - - G4double sx = cosTheta*cosPhi; - G4double sy = cosTheta*sinPhi; - G4double sz = -sinTheta; - - G4ThreeVector photonPolarization(sx, sy, sz); - - // Rotate back to original coord system - - photonPolarization.rotateUz(p0); - - // Generate a new photon: - - G4DynamicParticle* aCerenkovPhoton = - new G4DynamicParticle(G4OpticalPhoton::OpticalPhoton(), - photonMomentum); - aCerenkovPhoton->SetPolarization - (photonPolarization.x(), - photonPolarization.y(), - photonPolarization.z()); - - aCerenkovPhoton->SetKineticEnergy(sampledEnergy); - - // Generate new G4Track object: - - G4double NumberOfPhotons, N; - - do { - rand = G4UniformRand(); - NumberOfPhotons = MeanNumberOfPhotons1 - rand * - (MeanNumberOfPhotons1-MeanNumberOfPhotons2); - N = G4UniformRand() * - std::max(MeanNumberOfPhotons1,MeanNumberOfPhotons2); - // Loop checking, 07-Aug-2015, Vladimir Ivanchenko - } while (N > NumberOfPhotons); - - G4double delta = rand * aStep.GetStepLength(); - - G4double deltaTime = delta / (pPreStepPoint->GetVelocity()+ - rand*(pPostStepPoint->GetVelocity()- - pPreStepPoint->GetVelocity())*0.5); - - G4double aSecondaryTime = t0 + deltaTime; - - G4ThreeVector aSecondaryPosition = - x0 + rand * aStep.GetDeltaPosition(); - - G4Track* aSecondaryTrack = - new G4Track(aCerenkovPhoton,aSecondaryTime,aSecondaryPosition); - - aSecondaryTrack->SetTouchableHandle( - aStep.GetPreStepPoint()->GetTouchableHandle()); - - aSecondaryTrack->SetParentID(aTrack.GetTrackID()); - - aParticleChange.AddSecondary(aSecondaryTrack); - } - - if (verboseLevel>0) { - G4cout <<"\n Exiting from G4CerenkovNew::DoIt -- NumberOfSecondaries = " - << aParticleChange.GetNumberOfSecondaries() << G4endl; - } - - return pParticleChange; -} - -// BuildThePhysicsTable for the Cerenkov process -// --------------------------------------------- -// - -void G4CerenkovNew::BuildThePhysicsTable() -{ - if (thePhysicsTable) return; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - - // create new physics table - - thePhysicsTable = new G4PhysicsTable(numOfMaterials); - - // loop for materials - - for (G4int i=0 ; i < numOfMaterials; i++) - { - G4PhysicsOrderedFreeVector* aPhysicsOrderedFreeVector = 0; - - // Retrieve vector of refraction indices for the material - // from the material's optical properties table - - G4Material* aMaterial = (*theMaterialTable)[i]; - - G4MaterialPropertiesTable* aMaterialPropertiesTable = - aMaterial->GetMaterialPropertiesTable(); - - if (aMaterialPropertiesTable) { - - aPhysicsOrderedFreeVector = new G4PhysicsOrderedFreeVector(); - G4MaterialPropertyVector* theRefractionIndexVector = - aMaterialPropertiesTable->GetProperty("RINDEX"); - - if (theRefractionIndexVector) { - - G4double RImin, RImax; - GetMinMaxRindex(theRefractionIndexVector, RImin, RImax); - minRindex[i] = RImin; - maxRindex[i] = RImax; - - // Retrieve the first refraction index in vector - // of (photon energy, refraction index) pairs - - G4double currentRI = (*theRefractionIndexVector)[0]; - - if (currentRI > 1.0) { - - // Create first (photon energy, Cerenkov Integral) - // pair - - G4double currentPM = theRefractionIndexVector-> - Energy(0); - G4double currentCAI = 0.0; - - aPhysicsOrderedFreeVector-> - InsertValues(currentPM , currentCAI); - - // Set previous values to current ones prior to loop - - G4double prevPM = currentPM; - G4double prevCAI = currentCAI; - G4double prevRI = currentRI; - - // loop over all (photon energy, refraction index) - // pairs stored for this material - - for (size_t ii = 1; - ii < theRefractionIndexVector->GetVectorLength(); - ++ii) - { - currentRI = (*theRefractionIndexVector)[ii]; - currentPM = theRefractionIndexVector->Energy(ii); - - currentCAI = 0.5*(1.0/(prevRI*prevRI) + - 1.0/(currentRI*currentRI)); - - currentCAI = prevCAI + - (currentPM - prevPM) * currentCAI; - - aPhysicsOrderedFreeVector-> - InsertValues(currentPM, currentCAI); - - prevPM = currentPM; - prevCAI = currentCAI; - prevRI = currentRI; - } - - } - } - } - - // The Cerenkov integral for a given material - // will be inserted in thePhysicsTable - // according to the position of the material in - // the material table. - - thePhysicsTable->insertAt(i,aPhysicsOrderedFreeVector); - - } -} - -// GetMeanFreePath -// --------------- -// - -G4double G4CerenkovNew::GetMeanFreePath(const G4Track&, - G4double, - G4ForceCondition*) -{ - return 1.; -} - -G4double G4CerenkovNew::PostStepGetPhysicalInteractionLength( - const G4Track& aTrack, - G4double, - G4ForceCondition* condition) -{ - *condition = NotForced; - G4double StepLimit = DBL_MAX; - - const G4Material* aMaterial = aTrack.GetMaterial(); - G4int materialIndex = aMaterial->GetIndex(); - - // If Physics Vector is not defined no Cerenkov photons - // this check avoid string comparison below - if(!(*thePhysicsTable)[materialIndex]) { return StepLimit; } - - const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - const G4MaterialCutsCouple* couple = aTrack.GetMaterialCutsCouple(); - - G4double kineticEnergy = aParticle->GetKineticEnergy(); - const G4ParticleDefinition* particleType = aParticle->GetDefinition(); - G4double mass = particleType->GetPDGMass(); - - // particle beta - G4double beta = aParticle->GetTotalMomentum() / - aParticle->GetTotalEnergy(); - // particle gamma - G4double gamma = aParticle->GetTotalEnergy()/mass; - - G4MaterialPropertiesTable* aMaterialPropertiesTable = - aMaterial->GetMaterialPropertiesTable(); - - G4MaterialPropertyVector* Rindex = NULL; - - if (aMaterialPropertiesTable) - Rindex = aMaterialPropertiesTable->GetProperty("RINDEX"); - - if(maxRindex.find(materialIndex)==maxRindex.end()) {return StepLimit;} - G4double nMax = maxRindex.at(materialIndex); - - G4double BetaMin = 1./nMax; - if ( BetaMin >= 1. ) return StepLimit; - - G4double GammaMin = 1./std::sqrt(1.-BetaMin*BetaMin); - - if (gamma < GammaMin ) return StepLimit; - - G4double kinEmin = mass*(GammaMin-1.); - - G4double RangeMin = G4LossTableManager::Instance()-> - GetRange(particleType, - kinEmin, - couple); - G4double Range = G4LossTableManager::Instance()-> - GetRange(particleType, - kineticEnergy, - couple); - - G4double Step = Range - RangeMin; - if (Step < 1.*um ) return StepLimit; - - if (Step > 0. && Step < StepLimit) StepLimit = Step; - - // If user has defined an average maximum number of photons to - // be generated in a Step, then calculate the Step length for - // that number of photons. - - if (fMaxPhotons > 0) { - - // particle charge - const G4double charge = aParticle-> - GetDefinition()->GetPDGCharge(); - - G4double MeanNumberOfPhotons = - GetAverageNumberOfPhotons(charge,beta,aMaterial,Rindex); - - Step = 0.; - if (MeanNumberOfPhotons > 0.0) Step = fMaxPhotons / - MeanNumberOfPhotons; - - if (Step > 0. && Step < StepLimit) StepLimit = Step; - } - - // If user has defined an maximum allowed change in beta per step - if (fMaxBetaChange > 0.) { - - G4double dedx = G4LossTableManager::Instance()-> - GetDEDX(particleType, - kineticEnergy, - couple); - - G4double deltaGamma = gamma - - 1./std::sqrt(1.-beta*beta* - (1.-fMaxBetaChange)* - (1.-fMaxBetaChange)); - - Step = mass * deltaGamma / dedx; - - if (Step > 0. && Step < StepLimit) StepLimit = Step; - - } - - *condition = StronglyForced; - return StepLimit; -} - -void -G4CerenkovNew::GetMinMaxRindex(G4MaterialPropertyVector* Rindex, double &RImin, double &RImax) const -{ - RImin=(*Rindex)[0]; - RImax=(*Rindex)[0]; - for(size_t i=1; iGetVectorLength(); i++) - { - double currentRindex=(*Rindex)[i]; - if(currentRindexRImax) RImax=currentRindex; - } -} - -void -G4CerenkovNew::GetEnergyIntervals(G4MaterialPropertyVector* Rindex, double BetaInverse, - std::vector > &energyIntervals) const -{ - //find all energy intervals for which Rindex > BetaInverse - double rangeStart=NAN; - double rangeEnd=NAN; - bool rangeActive=false; - - if((*Rindex)[0]>BetaInverse) - { - rangeActive=true; - rangeStart=Rindex->GetLowEdgeEnergy(0); - } - - for(size_t i=1; iGetVectorLength(); i++) - { - if(rangeActive) - { - if((*Rindex)[i]<=BetaInverse) - { - rangeActive=false; - rangeEnd=Rindex->GetLowEdgeEnergy(i-1); - double intplFactor = (BetaInverse-(*Rindex)[i-1])/((*Rindex)[i]-(*Rindex)[i-1]); - rangeEnd+=(Rindex->GetLowEdgeEnergy(i)-Rindex->GetLowEdgeEnergy(i-1)) * intplFactor; - - energyIntervals.emplace_back(rangeStart,rangeEnd); - } - } - else - { - if((*Rindex)[i]>BetaInverse) - { - rangeActive=true; - rangeStart=Rindex->GetLowEdgeEnergy(i-1); - double intplFactor = (BetaInverse-(*Rindex)[i-1])/((*Rindex)[i]-(*Rindex)[i-1]); - rangeStart+=(Rindex->GetLowEdgeEnergy(i)-Rindex->GetLowEdgeEnergy(i-1)) * intplFactor; - } - } - } - - if(rangeActive) //still active at the end of the full range, use the maximum energy as rangeEnd - { - rangeActive=false; - rangeEnd=Rindex->GetMaxLowEdgeEnergy(); - energyIntervals.emplace_back(rangeStart,rangeEnd); - } -} - - -// GetAverageNumberOfPhotons -// ------------------------- -// This routine computes the number of Cerenkov photons produced per -// GEANT-unit (millimeter) in the current medium. -// ^^^^^^^^^^ - -G4double -G4CerenkovNew::GetAverageNumberOfPhotons(const G4double charge, - const G4double beta, - const G4Material* aMaterial, - G4MaterialPropertyVector* Rindex) const -{ - const G4double Rfact = 369.81/(eV * cm); - - if(beta <= 0.0)return 0.0; - - G4double BetaInverse = 1./beta; - - // Vectors used in computation of Cerenkov Angle Integral: - // - Refraction Indices for the current material - // - new G4PhysicsOrderedFreeVector allocated to hold CAI's - - G4int materialIndex = aMaterial->GetIndex(); - - // Retrieve the Cerenkov Angle Integrals for this material - - G4PhysicsOrderedFreeVector* CerenkovAngleIntegrals = - (G4PhysicsOrderedFreeVector*)((*thePhysicsTable)(materialIndex)); - - if(!(CerenkovAngleIntegrals->IsFilledVectorExist())) return 0.0; - - // Min and Max photon energies - G4double Pmin = Rindex->GetMinLowEdgeEnergy(); - G4double Pmax = Rindex->GetMaxLowEdgeEnergy(); - - // Min and Max Refraction Indices - if(minRindex.find(materialIndex)==minRindex.end()) return 0.0; - if(maxRindex.find(materialIndex)==maxRindex.end()) return 0.0; - G4double nMin = minRindex.at(materialIndex); - G4double nMax = maxRindex.at(materialIndex); - - // Max Cerenkov Angle Integral - G4double CAImax = CerenkovAngleIntegrals->GetMaxValue(); - - G4double dp, ge; - - // If n(Pmax) < 1/Beta -- no photons generated - - if (nMax < BetaInverse) { - dp = 0; - ge = 0; - } - - // otherwise if n(Pmin) >= 1/Beta -- photons generated over the entire energy range - - else if (nMin > BetaInverse) { - dp = Pmax - Pmin; - ge = CAImax; - } - - else { - //find all energy intervals for which Rindex >= BetaInverse - //and sum up the energy intervals and integral pieces - std::vector > energyIntervals; - GetEnergyIntervals(Rindex, BetaInverse, energyIntervals); - - dp = 0; - ge = 0; - for(size_t i=0; i &interval = energyIntervals[i]; - dp += interval.second - interval.first; - - G4bool isOutRange; - G4double CAIend = CerenkovAngleIntegrals->GetValue(interval.second, isOutRange); - G4double CAIstart = CerenkovAngleIntegrals->GetValue(interval.first, isOutRange); - ge += CAIend - CAIstart; - } - } - - // Calculate average number of photons per mm - G4double NumPhotons = Rfact * charge/eplus * charge/eplus * - (dp - ge * BetaInverse*BetaInverse); - - if(NumPhotons<0) NumPhotons=0; //may happen due to rounding errors - return NumPhotons; -} diff --git a/CRVResponse/standalone/wls/src/G4OpWLSPOPOP.cc b/CRVResponse/standalone/wls/src/G4OpWLSPOPOP.cc deleted file mode 100644 index 55eb02b1a6..0000000000 --- a/CRVResponse/standalone/wls/src/G4OpWLSPOPOP.cc +++ /dev/null @@ -1,401 +0,0 @@ -/* -GEANT doesn't provide a process which allows multiple absorption and emission spectra, and also uses a quantum yield. -Therefore, two process was developed based of G4OpWLS, one for polystyrene+PPO, and another one for POPOP. -They use different property table names. -*/ - - -#include "G4OpWLSPOPOP.hh" - -#include "G4ios.hh" -#include "G4PhysicalConstants.hh" -#include "G4SystemOfUnits.hh" -#include "G4OpProcessSubType.hh" - -#include "G4WLSTimeGeneratorProfileDelta.hh" -#include "G4WLSTimeGeneratorProfileExponential.hh" - -///////////////////////// -// Class Implementation -///////////////////////// - - ////////////////////// - // static data members - ////////////////////// - -///////////////// -// Constructors -///////////////// - -G4OpWLSPOPOP::G4OpWLSPOPOP(const G4String& processName, G4ProcessType type) - : G4VDiscreteProcess(processName, type) -{ - SetProcessSubType(fOpWLS); //TODO: There isn't a process name for OpWLSPOPOP - - theIntegralTable = NULL; - - WLSTimeGeneratorProfile = - new G4WLSTimeGeneratorProfileDelta("WLSTimeGeneratorProfileDelta"); - - if (verboseLevel>0) G4cout << GetProcessName() << " is created " << G4endl; -} - -//////////////// -// Destructors -//////////////// - -G4OpWLSPOPOP::~G4OpWLSPOPOP() -{ - if (theIntegralTable) { - theIntegralTable->clearAndDestroy(); - delete theIntegralTable; - } - delete WLSTimeGeneratorProfile; -} - -//////////// -// Methods -//////////// - -// PostStepDoIt -// ------------- -// -G4VParticleChange* -G4OpWLSPOPOP::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) -{ - aParticleChange.Initialize(aTrack); - - aParticleChange.ProposeTrackStatus(fStopAndKill); - - if (verboseLevel>0) { - G4cout << "\n** Photon absorbed! **" << G4endl; - } - - const G4Material* aMaterial = aTrack.GetMaterial(); - - G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint(); - - G4MaterialPropertiesTable* aMaterialPropertiesTable = - aMaterial->GetMaterialPropertiesTable(); - if (!aMaterialPropertiesTable) - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - - const G4MaterialPropertyVector* WLS_Intensity = - aMaterialPropertiesTable->GetProperty("WLSPOPOPCOMPONENT"); - - if (!WLS_Intensity) - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - - G4int NumPhotons = 1; - - const G4MaterialPropertyVector* WLS_QuantumYield = - aMaterialPropertiesTable->GetProperty("WLSPOPOPQUANTUMYIELD"); - - if (WLS_QuantumYield) - { - const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - G4double thePhotonEnergy = aParticle->GetTotalEnergy(); - G4double quantumYield = WLS_QuantumYield->Value(thePhotonEnergy); - - if (G4UniformRand() > quantumYield) { - - // return unchanged particle and no secondaries - - aParticleChange.SetNumberOfSecondaries(0); - - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - - } - - } - - aParticleChange.SetNumberOfSecondaries(NumPhotons); - - G4double primaryEnergy = aTrack.GetDynamicParticle()->GetKineticEnergy(); - - G4int materialIndex = aMaterial->GetIndex(); - - // Retrieve the WLS Integral for this material - // new G4PhysicsOrderedFreeVector allocated to hold CII's - - G4double WLSTime = 0.*ns; - G4PhysicsOrderedFreeVector* WLSIntegral = 0; - - WLSTime = aMaterialPropertiesTable-> - GetConstProperty("WLSPOPOPTIMECONSTANT"); - WLSIntegral = - (G4PhysicsOrderedFreeVector*)((*theIntegralTable)(materialIndex)); - - // Max WLS Integral - - G4double CIImax = WLSIntegral->GetMaxValue(); - - G4int NumberOfPhotons = NumPhotons; - - for (G4int i = 0; i < NumPhotons; i++) { - - G4double sampledEnergy; - - // Make sure the energy of the secondary is less than that of the primary - - for (G4int j = 1; j <= 100; j++) { - - // Determine photon energy - - G4double CIIvalue = G4UniformRand()*CIImax; - sampledEnergy = WLSIntegral->GetEnergy(CIIvalue); - - if (verboseLevel>1) { - G4cout << "sampledEnergy = " << sampledEnergy << G4endl; - G4cout << "CIIvalue = " << CIIvalue << G4endl; - } - - if (sampledEnergy <= primaryEnergy) break; - } - - // If no such energy can be sampled, return one less secondary, or none - - if (sampledEnergy > primaryEnergy) { - if (verboseLevel>1) - G4cout << " *** One less WLS photon will be returned ***" << G4endl; - NumberOfPhotons--; - aParticleChange.SetNumberOfSecondaries(NumberOfPhotons); - if (NumberOfPhotons == 0) { - if (verboseLevel>1) - G4cout << " *** No WLS photon can be sampled for this primary ***" - << G4endl; - // return unchanged particle and no secondaries - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - } - continue; - } - - // Generate random photon direction - - G4double cost = 1. - 2.*G4UniformRand(); - G4double sint = std::sqrt((1.-cost)*(1.+cost)); - - G4double phi = twopi*G4UniformRand(); - G4double sinp = std::sin(phi); - G4double cosp = std::cos(phi); - - G4double px = sint*cosp; - G4double py = sint*sinp; - G4double pz = cost; - - // Create photon momentum direction vector - - G4ParticleMomentum photonMomentum(px, py, pz); - - // Determine polarization of new photon - - G4double sx = cost*cosp; - G4double sy = cost*sinp; - G4double sz = -sint; - - G4ThreeVector photonPolarization(sx, sy, sz); - - G4ThreeVector perp = photonMomentum.cross(photonPolarization); - - phi = twopi*G4UniformRand(); - sinp = std::sin(phi); - cosp = std::cos(phi); - - photonPolarization = cosp * photonPolarization + sinp * perp; - - photonPolarization = photonPolarization.unit(); - - // Generate a new photon: - - G4DynamicParticle* aWLSPhoton = - new G4DynamicParticle(G4OpticalPhoton::OpticalPhoton(), - photonMomentum); - aWLSPhoton->SetPolarization - (photonPolarization.x(), - photonPolarization.y(), - photonPolarization.z()); - - aWLSPhoton->SetKineticEnergy(sampledEnergy); - - // Generate new G4Track object: - - // Must give position of WLS optical photon - - G4double TimeDelay = WLSTimeGeneratorProfile->GenerateTime(WLSTime); - G4double aSecondaryTime = (pPostStepPoint->GetGlobalTime()) + TimeDelay; - - G4ThreeVector aSecondaryPosition = pPostStepPoint->GetPosition(); - - G4Track* aSecondaryTrack = - new G4Track(aWLSPhoton,aSecondaryTime,aSecondaryPosition); - - aSecondaryTrack->SetTouchableHandle(aTrack.GetTouchableHandle()); - // aSecondaryTrack->SetTouchableHandle((G4VTouchable*)0); - - aSecondaryTrack->SetParentID(aTrack.GetTrackID()); - - aParticleChange.AddSecondary(aSecondaryTrack); - } - - if (verboseLevel>0) { - G4cout << "\n Exiting from G4OpWLSPOPOP::DoIt -- NumberOfSecondaries = " - << aParticleChange.GetNumberOfSecondaries() << G4endl; - } - - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); -} - -// BuildPhysicsTable for the wavelength shifting process -// -------------------------------------------------- - -void G4OpWLSPOPOP::BuildPhysicsTable(const G4ParticleDefinition&) -{ - if (theIntegralTable) { - theIntegralTable->clearAndDestroy(); - delete theIntegralTable; - theIntegralTable = NULL; - } - - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - - // create new physics table - - theIntegralTable = new G4PhysicsTable(numOfMaterials); - - // loop for materials - - for (G4int i=0 ; i < numOfMaterials; i++) - { - G4PhysicsOrderedFreeVector* aPhysicsOrderedFreeVector = - new G4PhysicsOrderedFreeVector(); - - // Retrieve vector of WLS wavelength intensity for - // the material from the material's optical properties table. - - G4Material* aMaterial = (*theMaterialTable)[i]; - - G4MaterialPropertiesTable* aMaterialPropertiesTable = - aMaterial->GetMaterialPropertiesTable(); - - if (aMaterialPropertiesTable) { - - G4MaterialPropertyVector* theWLSVector = - aMaterialPropertiesTable->GetProperty("WLSPOPOPCOMPONENT"); - - if (theWLSVector) { - - // Retrieve the first intensity point in vector - // of (photon energy, intensity) pairs - - G4double currentIN = (*theWLSVector)[0]; - - if (currentIN >= 0.0) { - - // Create first (photon energy) - - G4double currentPM = theWLSVector->Energy(0); - - G4double currentCII = 0.0; - - aPhysicsOrderedFreeVector-> - InsertValues(currentPM , currentCII); - - // Set previous values to current ones prior to loop - - G4double prevPM = currentPM; - G4double prevCII = currentCII; - G4double prevIN = currentIN; - - // loop over all (photon energy, intensity) - // pairs stored for this material - - for (size_t j = 1; - j < theWLSVector->GetVectorLength(); - j++) - { - currentPM = theWLSVector->Energy(j); - currentIN = (*theWLSVector)[j]; - - currentCII = 0.5 * (prevIN + currentIN); - - currentCII = prevCII + - (currentPM - prevPM) * currentCII; - - aPhysicsOrderedFreeVector-> - InsertValues(currentPM, currentCII); - - prevPM = currentPM; - prevCII = currentCII; - prevIN = currentIN; - } - } - } - } - // The WLS integral for a given material - // will be inserted in the table according to the - // position of the material in the material table. - - theIntegralTable->insertAt(i,aPhysicsOrderedFreeVector); - } -} - -// GetMeanFreePath -// --------------- -// -G4double G4OpWLSPOPOP::GetMeanFreePath(const G4Track& aTrack, - G4double , - G4ForceCondition* ) -{ - const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - const G4Material* aMaterial = aTrack.GetMaterial(); - - G4double thePhotonEnergy = aParticle->GetTotalEnergy(); - - G4MaterialPropertiesTable* aMaterialPropertyTable; - G4MaterialPropertyVector* AttenuationLengthVector; - - G4double AttenuationLength = DBL_MAX; - - aMaterialPropertyTable = aMaterial->GetMaterialPropertiesTable(); - - if ( aMaterialPropertyTable ) { - AttenuationLengthVector = aMaterialPropertyTable-> - GetProperty("WLSPOPOPABSLENGTH"); - if ( AttenuationLengthVector ){ - AttenuationLength = AttenuationLengthVector-> - Value(thePhotonEnergy); - } - else { - // G4cout << "No WLS absorption length specified" << G4endl; - } - } - else { - // G4cout << "No WLS absortion length specified" << G4endl; - } - - return AttenuationLength; -} - -void G4OpWLSPOPOP::UseTimeProfile(const G4String name) -{ - if (name == "delta") - { - delete WLSTimeGeneratorProfile; - WLSTimeGeneratorProfile = - new G4WLSTimeGeneratorProfileDelta("delta"); - } - else if (name == "exponential") - { - delete WLSTimeGeneratorProfile; - WLSTimeGeneratorProfile = - new G4WLSTimeGeneratorProfileExponential("exponential"); - } - else - { - G4Exception("G4OpWLSPOPOP::UseTimeProfile", "em0202", - FatalException, - "generator does not exist"); - } -} diff --git a/CRVResponse/standalone/wls/src/G4OpWLSPSPPO.cc b/CRVResponse/standalone/wls/src/G4OpWLSPSPPO.cc deleted file mode 100644 index 037bf2c9fa..0000000000 --- a/CRVResponse/standalone/wls/src/G4OpWLSPSPPO.cc +++ /dev/null @@ -1,401 +0,0 @@ -/* -GEANT doesn't provide a process which allows multiple absorption and emission spectra, and also uses a quantum yield. -Therefore, two process was developed based of G4OpWLS, one for polystyrene+PPO, and another one for POPOP. -They use different property table names. -*/ - - -#include "G4OpWLSPSPPO.hh" - -#include "G4ios.hh" -#include "G4PhysicalConstants.hh" -#include "G4SystemOfUnits.hh" -#include "G4OpProcessSubType.hh" - -#include "G4WLSTimeGeneratorProfileDelta.hh" -#include "G4WLSTimeGeneratorProfileExponential.hh" - -///////////////////////// -// Class Implementation -///////////////////////// - - ////////////////////// - // static data members - ////////////////////// - -///////////////// -// Constructors -///////////////// - -G4OpWLSPSPPO::G4OpWLSPSPPO(const G4String& processName, G4ProcessType type) - : G4VDiscreteProcess(processName, type) -{ - SetProcessSubType(fOpWLS); //TODO: There isn't a process name for OpWLSPSPPO - - theIntegralTable = NULL; - - WLSTimeGeneratorProfile = - new G4WLSTimeGeneratorProfileDelta("WLSTimeGeneratorProfileDelta"); - - if (verboseLevel>0) G4cout << GetProcessName() << " is created " << G4endl; -} - -//////////////// -// Destructors -//////////////// - -G4OpWLSPSPPO::~G4OpWLSPSPPO() -{ - if (theIntegralTable) { - theIntegralTable->clearAndDestroy(); - delete theIntegralTable; - } - delete WLSTimeGeneratorProfile; -} - -//////////// -// Methods -//////////// - -// PostStepDoIt -// ------------- -// -G4VParticleChange* -G4OpWLSPSPPO::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) -{ - aParticleChange.Initialize(aTrack); - - aParticleChange.ProposeTrackStatus(fStopAndKill); - - if (verboseLevel>0) { - G4cout << "\n** Photon absorbed! **" << G4endl; - } - - const G4Material* aMaterial = aTrack.GetMaterial(); - - G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint(); - - G4MaterialPropertiesTable* aMaterialPropertiesTable = - aMaterial->GetMaterialPropertiesTable(); - if (!aMaterialPropertiesTable) - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - - const G4MaterialPropertyVector* WLS_Intensity = - aMaterialPropertiesTable->GetProperty("WLSPSPPOCOMPONENT"); - - if (!WLS_Intensity) - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - - G4int NumPhotons = 1; - - const G4MaterialPropertyVector* WLS_QuantumYield = - aMaterialPropertiesTable->GetProperty("WLSPSPPOQUANTUMYIELD"); - - if (WLS_QuantumYield) - { - const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - G4double thePhotonEnergy = aParticle->GetTotalEnergy(); - G4double quantumYield = WLS_QuantumYield->Value(thePhotonEnergy); - - if (G4UniformRand() > quantumYield) { - - // return unchanged particle and no secondaries - - aParticleChange.SetNumberOfSecondaries(0); - - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - - } - - } - - aParticleChange.SetNumberOfSecondaries(NumPhotons); - - G4double primaryEnergy = aTrack.GetDynamicParticle()->GetKineticEnergy(); - - G4int materialIndex = aMaterial->GetIndex(); - - // Retrieve the WLS Integral for this material - // new G4PhysicsOrderedFreeVector allocated to hold CII's - - G4double WLSTime = 0.*ns; - G4PhysicsOrderedFreeVector* WLSIntegral = 0; - - WLSTime = aMaterialPropertiesTable-> - GetConstProperty("WLSPSPPOTIMECONSTANT"); - WLSIntegral = - (G4PhysicsOrderedFreeVector*)((*theIntegralTable)(materialIndex)); - - // Max WLS Integral - - G4double CIImax = WLSIntegral->GetMaxValue(); - - G4int NumberOfPhotons = NumPhotons; - - for (G4int i = 0; i < NumPhotons; i++) { - - G4double sampledEnergy; - - // Make sure the energy of the secondary is less than that of the primary - - for (G4int j = 1; j <= 100; j++) { - - // Determine photon energy - - G4double CIIvalue = G4UniformRand()*CIImax; - sampledEnergy = WLSIntegral->GetEnergy(CIIvalue); - - if (verboseLevel>1) { - G4cout << "sampledEnergy = " << sampledEnergy << G4endl; - G4cout << "CIIvalue = " << CIIvalue << G4endl; - } - - if (sampledEnergy <= primaryEnergy) break; - } - - // If no such energy can be sampled, return one less secondary, or none - - if (sampledEnergy > primaryEnergy) { - if (verboseLevel>1) - G4cout << " *** One less WLS photon will be returned ***" << G4endl; - NumberOfPhotons--; - aParticleChange.SetNumberOfSecondaries(NumberOfPhotons); - if (NumberOfPhotons == 0) { - if (verboseLevel>1) - G4cout << " *** No WLS photon can be sampled for this primary ***" - << G4endl; - // return unchanged particle and no secondaries - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - } - continue; - } - - // Generate random photon direction - - G4double cost = 1. - 2.*G4UniformRand(); - G4double sint = std::sqrt((1.-cost)*(1.+cost)); - - G4double phi = twopi*G4UniformRand(); - G4double sinp = std::sin(phi); - G4double cosp = std::cos(phi); - - G4double px = sint*cosp; - G4double py = sint*sinp; - G4double pz = cost; - - // Create photon momentum direction vector - - G4ParticleMomentum photonMomentum(px, py, pz); - - // Determine polarization of new photon - - G4double sx = cost*cosp; - G4double sy = cost*sinp; - G4double sz = -sint; - - G4ThreeVector photonPolarization(sx, sy, sz); - - G4ThreeVector perp = photonMomentum.cross(photonPolarization); - - phi = twopi*G4UniformRand(); - sinp = std::sin(phi); - cosp = std::cos(phi); - - photonPolarization = cosp * photonPolarization + sinp * perp; - - photonPolarization = photonPolarization.unit(); - - // Generate a new photon: - - G4DynamicParticle* aWLSPhoton = - new G4DynamicParticle(G4OpticalPhoton::OpticalPhoton(), - photonMomentum); - aWLSPhoton->SetPolarization - (photonPolarization.x(), - photonPolarization.y(), - photonPolarization.z()); - - aWLSPhoton->SetKineticEnergy(sampledEnergy); - - // Generate new G4Track object: - - // Must give position of WLS optical photon - - G4double TimeDelay = WLSTimeGeneratorProfile->GenerateTime(WLSTime); - G4double aSecondaryTime = (pPostStepPoint->GetGlobalTime()) + TimeDelay; - - G4ThreeVector aSecondaryPosition = pPostStepPoint->GetPosition(); - - G4Track* aSecondaryTrack = - new G4Track(aWLSPhoton,aSecondaryTime,aSecondaryPosition); - - aSecondaryTrack->SetTouchableHandle(aTrack.GetTouchableHandle()); - // aSecondaryTrack->SetTouchableHandle((G4VTouchable*)0); - - aSecondaryTrack->SetParentID(aTrack.GetTrackID()); - - aParticleChange.AddSecondary(aSecondaryTrack); - } - - if (verboseLevel>0) { - G4cout << "\n Exiting from G4OpWLSPSPPO::DoIt -- NumberOfSecondaries = " - << aParticleChange.GetNumberOfSecondaries() << G4endl; - } - - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); -} - -// BuildPhysicsTable for the wavelength shifting process -// -------------------------------------------------- - -void G4OpWLSPSPPO::BuildPhysicsTable(const G4ParticleDefinition&) -{ - if (theIntegralTable) { - theIntegralTable->clearAndDestroy(); - delete theIntegralTable; - theIntegralTable = NULL; - } - - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - - // create new physics table - - theIntegralTable = new G4PhysicsTable(numOfMaterials); - - // loop for materials - - for (G4int i=0 ; i < numOfMaterials; i++) - { - G4PhysicsOrderedFreeVector* aPhysicsOrderedFreeVector = - new G4PhysicsOrderedFreeVector(); - - // Retrieve vector of WLS wavelength intensity for - // the material from the material's optical properties table. - - G4Material* aMaterial = (*theMaterialTable)[i]; - - G4MaterialPropertiesTable* aMaterialPropertiesTable = - aMaterial->GetMaterialPropertiesTable(); - - if (aMaterialPropertiesTable) { - - G4MaterialPropertyVector* theWLSVector = - aMaterialPropertiesTable->GetProperty("WLSPSPPOCOMPONENT"); - - if (theWLSVector) { - - // Retrieve the first intensity point in vector - // of (photon energy, intensity) pairs - - G4double currentIN = (*theWLSVector)[0]; - - if (currentIN >= 0.0) { - - // Create first (photon energy) - - G4double currentPM = theWLSVector->Energy(0); - - G4double currentCII = 0.0; - - aPhysicsOrderedFreeVector-> - InsertValues(currentPM , currentCII); - - // Set previous values to current ones prior to loop - - G4double prevPM = currentPM; - G4double prevCII = currentCII; - G4double prevIN = currentIN; - - // loop over all (photon energy, intensity) - // pairs stored for this material - - for (size_t j = 1; - j < theWLSVector->GetVectorLength(); - j++) - { - currentPM = theWLSVector->Energy(j); - currentIN = (*theWLSVector)[j]; - - currentCII = 0.5 * (prevIN + currentIN); - - currentCII = prevCII + - (currentPM - prevPM) * currentCII; - - aPhysicsOrderedFreeVector-> - InsertValues(currentPM, currentCII); - - prevPM = currentPM; - prevCII = currentCII; - prevIN = currentIN; - } - } - } - } - // The WLS integral for a given material - // will be inserted in the table according to the - // position of the material in the material table. - - theIntegralTable->insertAt(i,aPhysicsOrderedFreeVector); - } -} - -// GetMeanFreePath -// --------------- -// -G4double G4OpWLSPSPPO::GetMeanFreePath(const G4Track& aTrack, - G4double , - G4ForceCondition* ) -{ - const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - const G4Material* aMaterial = aTrack.GetMaterial(); - - G4double thePhotonEnergy = aParticle->GetTotalEnergy(); - - G4MaterialPropertiesTable* aMaterialPropertyTable; - G4MaterialPropertyVector* AttenuationLengthVector; - - G4double AttenuationLength = DBL_MAX; - - aMaterialPropertyTable = aMaterial->GetMaterialPropertiesTable(); - - if ( aMaterialPropertyTable ) { - AttenuationLengthVector = aMaterialPropertyTable-> - GetProperty("WLSPSPPOABSLENGTH"); - if ( AttenuationLengthVector ){ - AttenuationLength = AttenuationLengthVector-> - Value(thePhotonEnergy); - } - else { - // G4cout << "No WLS absorption length specified" << G4endl; - } - } - else { - // G4cout << "No WLS absortion length specified" << G4endl; - } - - return AttenuationLength; -} - -void G4OpWLSPSPPO::UseTimeProfile(const G4String name) -{ - if (name == "delta") - { - delete WLSTimeGeneratorProfile; - WLSTimeGeneratorProfile = - new G4WLSTimeGeneratorProfileDelta("delta"); - } - else if (name == "exponential") - { - delete WLSTimeGeneratorProfile; - WLSTimeGeneratorProfile = - new G4WLSTimeGeneratorProfileExponential("exponential"); - } - else - { - G4Exception("G4OpWLSPSPPO::UseTimeProfile", "em0202", - FatalException, - "generator does not exist"); - } -} diff --git a/CRVResponse/standalone/wls/src/G4OpWLSY11.cc b/CRVResponse/standalone/wls/src/G4OpWLSY11.cc deleted file mode 100644 index 42da03d886..0000000000 --- a/CRVResponse/standalone/wls/src/G4OpWLSY11.cc +++ /dev/null @@ -1,402 +0,0 @@ -/* -GEANT doesn't provide a process which allows multiple absorption and emission spectra, and also uses a quantum yield. -Therefore, two process was developed based of G4OpWLS, one for polystyrene+PPO, and another one for POPOP. -They use different property table names. -The same mechanism was used for Y11 (fibers) -*/ - - -#include "G4OpWLSY11.hh" - -#include "G4ios.hh" -#include "G4PhysicalConstants.hh" -#include "G4SystemOfUnits.hh" -#include "G4OpProcessSubType.hh" - -#include "G4WLSTimeGeneratorProfileDelta.hh" -#include "G4WLSTimeGeneratorProfileExponential.hh" - -///////////////////////// -// Class Implementation -///////////////////////// - - ////////////////////// - // static data members - ////////////////////// - -///////////////// -// Constructors -///////////////// - -G4OpWLSY11::G4OpWLSY11(const G4String& processName, G4ProcessType type) - : G4VDiscreteProcess(processName, type) -{ - SetProcessSubType(fOpWLS); //TODO: There isn't a process name for OpWLSY11 - - theIntegralTable = NULL; - - WLSTimeGeneratorProfile = - new G4WLSTimeGeneratorProfileDelta("WLSTimeGeneratorProfileDelta"); - - if (verboseLevel>0) G4cout << GetProcessName() << " is created " << G4endl; -} - -//////////////// -// Destructors -//////////////// - -G4OpWLSY11::~G4OpWLSY11() -{ - if (theIntegralTable) { - theIntegralTable->clearAndDestroy(); - delete theIntegralTable; - } - delete WLSTimeGeneratorProfile; -} - -//////////// -// Methods -//////////// - -// PostStepDoIt -// ------------- -// -G4VParticleChange* -G4OpWLSY11::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) -{ - aParticleChange.Initialize(aTrack); - - aParticleChange.ProposeTrackStatus(fStopAndKill); - - if (verboseLevel>0) { - G4cout << "\n** Photon absorbed! **" << G4endl; - } - - const G4Material* aMaterial = aTrack.GetMaterial(); - - G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint(); - - G4MaterialPropertiesTable* aMaterialPropertiesTable = - aMaterial->GetMaterialPropertiesTable(); - if (!aMaterialPropertiesTable) - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - - const G4MaterialPropertyVector* WLS_Intensity = - aMaterialPropertiesTable->GetProperty("WLSY11COMPONENT"); - - if (!WLS_Intensity) - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - - G4int NumPhotons = 1; - - const G4MaterialPropertyVector* WLS_QuantumYield = - aMaterialPropertiesTable->GetProperty("WLSY11QUANTUMYIELD"); - - if (WLS_QuantumYield) - { - const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - G4double thePhotonEnergy = aParticle->GetTotalEnergy(); - G4double quantumYield = WLS_QuantumYield->Value(thePhotonEnergy); - - if (G4UniformRand() > quantumYield) { - - // return unchanged particle and no secondaries - - aParticleChange.SetNumberOfSecondaries(0); - - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - - } - - } - - aParticleChange.SetNumberOfSecondaries(NumPhotons); - - G4double primaryEnergy = aTrack.GetDynamicParticle()->GetKineticEnergy(); - - G4int materialIndex = aMaterial->GetIndex(); - - // Retrieve the WLS Integral for this material - // new G4PhysicsOrderedFreeVector allocated to hold CII's - - G4double WLSTime = 0.*ns; - G4PhysicsOrderedFreeVector* WLSIntegral = 0; - - WLSTime = aMaterialPropertiesTable-> - GetConstProperty("WLSY11TIMECONSTANT"); - WLSIntegral = - (G4PhysicsOrderedFreeVector*)((*theIntegralTable)(materialIndex)); - - // Max WLS Integral - - G4double CIImax = WLSIntegral->GetMaxValue(); - - G4int NumberOfPhotons = NumPhotons; - - for (G4int i = 0; i < NumPhotons; i++) { - - G4double sampledEnergy; - - // Make sure the energy of the secondary is less than that of the primary - - for (G4int j = 1; j <= 100; j++) { - - // Determine photon energy - - G4double CIIvalue = G4UniformRand()*CIImax; - sampledEnergy = WLSIntegral->GetEnergy(CIIvalue); - - if (verboseLevel>1) { - G4cout << "sampledEnergy = " << sampledEnergy << G4endl; - G4cout << "CIIvalue = " << CIIvalue << G4endl; - } - - if (sampledEnergy <= primaryEnergy) break; - } - - // If no such energy can be sampled, return one less secondary, or none - - if (sampledEnergy > primaryEnergy) { - if (verboseLevel>1) - G4cout << " *** One less WLS photon will be returned ***" << G4endl; - NumberOfPhotons--; - aParticleChange.SetNumberOfSecondaries(NumberOfPhotons); - if (NumberOfPhotons == 0) { - if (verboseLevel>1) - G4cout << " *** No WLS photon can be sampled for this primary ***" - << G4endl; - // return unchanged particle and no secondaries - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); - } - continue; - } - - // Generate random photon direction - - G4double cost = 1. - 2.*G4UniformRand(); - G4double sint = std::sqrt((1.-cost)*(1.+cost)); - - G4double phi = twopi*G4UniformRand(); - G4double sinp = std::sin(phi); - G4double cosp = std::cos(phi); - - G4double px = sint*cosp; - G4double py = sint*sinp; - G4double pz = cost; - - // Create photon momentum direction vector - - G4ParticleMomentum photonMomentum(px, py, pz); - - // Determine polarization of new photon - - G4double sx = cost*cosp; - G4double sy = cost*sinp; - G4double sz = -sint; - - G4ThreeVector photonPolarization(sx, sy, sz); - - G4ThreeVector perp = photonMomentum.cross(photonPolarization); - - phi = twopi*G4UniformRand(); - sinp = std::sin(phi); - cosp = std::cos(phi); - - photonPolarization = cosp * photonPolarization + sinp * perp; - - photonPolarization = photonPolarization.unit(); - - // Generate a new photon: - - G4DynamicParticle* aWLSPhoton = - new G4DynamicParticle(G4OpticalPhoton::OpticalPhoton(), - photonMomentum); - aWLSPhoton->SetPolarization - (photonPolarization.x(), - photonPolarization.y(), - photonPolarization.z()); - - aWLSPhoton->SetKineticEnergy(sampledEnergy); - - // Generate new G4Track object: - - // Must give position of WLS optical photon - - G4double TimeDelay = WLSTimeGeneratorProfile->GenerateTime(WLSTime); - G4double aSecondaryTime = (pPostStepPoint->GetGlobalTime()) + TimeDelay; - - G4ThreeVector aSecondaryPosition = pPostStepPoint->GetPosition(); - - G4Track* aSecondaryTrack = - new G4Track(aWLSPhoton,aSecondaryTime,aSecondaryPosition); - - aSecondaryTrack->SetTouchableHandle(aTrack.GetTouchableHandle()); - // aSecondaryTrack->SetTouchableHandle((G4VTouchable*)0); - - aSecondaryTrack->SetParentID(aTrack.GetTrackID()); - - aParticleChange.AddSecondary(aSecondaryTrack); - } - - if (verboseLevel>0) { - G4cout << "\n Exiting from G4OpWLSY11::DoIt -- NumberOfSecondaries = " - << aParticleChange.GetNumberOfSecondaries() << G4endl; - } - - return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); -} - -// BuildPhysicsTable for the wavelength shifting process -// -------------------------------------------------- - -void G4OpWLSY11::BuildPhysicsTable(const G4ParticleDefinition&) -{ - if (theIntegralTable) { - theIntegralTable->clearAndDestroy(); - delete theIntegralTable; - theIntegralTable = NULL; - } - - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - - // create new physics table - - theIntegralTable = new G4PhysicsTable(numOfMaterials); - - // loop for materials - - for (G4int i=0 ; i < numOfMaterials; i++) - { - G4PhysicsOrderedFreeVector* aPhysicsOrderedFreeVector = - new G4PhysicsOrderedFreeVector(); - - // Retrieve vector of WLS wavelength intensity for - // the material from the material's optical properties table. - - G4Material* aMaterial = (*theMaterialTable)[i]; - - G4MaterialPropertiesTable* aMaterialPropertiesTable = - aMaterial->GetMaterialPropertiesTable(); - - if (aMaterialPropertiesTable) { - - G4MaterialPropertyVector* theWLSVector = - aMaterialPropertiesTable->GetProperty("WLSY11COMPONENT"); - - if (theWLSVector) { - - // Retrieve the first intensity point in vector - // of (photon energy, intensity) pairs - - G4double currentIN = (*theWLSVector)[0]; - - if (currentIN >= 0.0) { - - // Create first (photon energy) - - G4double currentPM = theWLSVector->Energy(0); - - G4double currentCII = 0.0; - - aPhysicsOrderedFreeVector-> - InsertValues(currentPM , currentCII); - - // Set previous values to current ones prior to loop - - G4double prevPM = currentPM; - G4double prevCII = currentCII; - G4double prevIN = currentIN; - - // loop over all (photon energy, intensity) - // pairs stored for this material - - for (size_t j = 1; - j < theWLSVector->GetVectorLength(); - j++) - { - currentPM = theWLSVector->Energy(j); - currentIN = (*theWLSVector)[j]; - - currentCII = 0.5 * (prevIN + currentIN); - - currentCII = prevCII + - (currentPM - prevPM) * currentCII; - - aPhysicsOrderedFreeVector-> - InsertValues(currentPM, currentCII); - - prevPM = currentPM; - prevCII = currentCII; - prevIN = currentIN; - } - } - } - } - // The WLS integral for a given material - // will be inserted in the table according to the - // position of the material in the material table. - - theIntegralTable->insertAt(i,aPhysicsOrderedFreeVector); - } -} - -// GetMeanFreePath -// --------------- -// -G4double G4OpWLSY11::GetMeanFreePath(const G4Track& aTrack, - G4double , - G4ForceCondition* ) -{ - const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - const G4Material* aMaterial = aTrack.GetMaterial(); - - G4double thePhotonEnergy = aParticle->GetTotalEnergy(); - - G4MaterialPropertiesTable* aMaterialPropertyTable; - G4MaterialPropertyVector* AttenuationLengthVector; - - G4double AttenuationLength = DBL_MAX; - - aMaterialPropertyTable = aMaterial->GetMaterialPropertiesTable(); - - if ( aMaterialPropertyTable ) { - AttenuationLengthVector = aMaterialPropertyTable-> - GetProperty("WLSY11ABSLENGTH"); - if ( AttenuationLengthVector ){ - AttenuationLength = AttenuationLengthVector-> - Value(thePhotonEnergy); - } - else { - // G4cout << "No WLS absorption length specified" << G4endl; - } - } - else { - // G4cout << "No WLS absortion length specified" << G4endl; - } - - return AttenuationLength; -} - -void G4OpWLSY11::UseTimeProfile(const G4String name) -{ - if (name == "delta") - { - delete WLSTimeGeneratorProfile; - WLSTimeGeneratorProfile = - new G4WLSTimeGeneratorProfileDelta("delta"); - } - else if (name == "exponential") - { - delete WLSTimeGeneratorProfile; - WLSTimeGeneratorProfile = - new G4WLSTimeGeneratorProfileExponential("exponential"); - } - else - { - G4Exception("G4OpWLSY11::UseTimeProfile", "em0202", - FatalException, - "generator does not exist"); - } -} diff --git a/CRVResponse/standalone/wls/src/WLSDetectorConstruction.cc b/CRVResponse/standalone/wls/src/WLSDetectorConstruction.cc deleted file mode 100644 index 022670fefb..0000000000 --- a/CRVResponse/standalone/wls/src/WLSDetectorConstruction.cc +++ /dev/null @@ -1,591 +0,0 @@ -#include "G4ios.hh" -#include "globals.hh" - -#include "G4Box.hh" -#include "G4EllipticalTube.hh" -#include "G4Tubs.hh" -#include "G4SubtractionSolid.hh" - -#include "G4LogicalVolume.hh" -#include "G4PVPlacement.hh" - -#include "G4OpBoundaryProcess.hh" -#include "G4LogicalBorderSurface.hh" - -#include "G4Material.hh" -#include "G4NistManager.hh" - -#include "G4GeometryManager.hh" - -#include "G4SolidStore.hh" -#include "G4RegionStore.hh" -#include "G4LogicalVolumeStore.hh" -#include "G4PhysicalVolumeStore.hh" - -#include "G4RunManager.hh" - -#include "WLSEventAction.hh" -#include "WLSSteppingAction.hh" -#include "WLSDetectorConstruction.hh" -#include "WLSMaterials.hh" - -#include "G4UserLimits.hh" -#include "G4PhysicalConstants.hh" -#include "G4SystemOfUnits.hh" - -WLSDetectorConstruction* WLSDetectorConstruction::_fgInstance = NULL; - -WLSDetectorConstruction::WLSDetectorConstruction(double lengthOption, int reflectorOption) -{ - _fgInstance = this; - - _materials = NULL; - _physiWorld = NULL; - - _mppcReflectivity = 0.20; - _reflectorReflectivity = 0.83; - _blacktapeReflectivity = 0.00; - _fiberGuideBarReflectivity = 0.00; - - _barLength = lengthOption*mm; -#define TESTBEAM -#ifndef TESTBEAM - _barThickness = 19.78*mm; - _barWidth = 51.34*mm; -#else -#pragma message "USING TESTBEAM" - _barThickness = 19.8*mm; - _barWidth = 49.4*mm; -#endif - _fiberSeparation = 2.6*cm; - _holeRadiusX = 2.00*mm; - _holeRadiusY = 1.00*mm; - _coatingThickness = 0.25*mm; - _extrusionCornerRadius = 2.00*mm; - _fiberRadius = 0.70*mm - 0.042*mm - 0.042*mm; - _clad1Radius = 0.70*mm - 0.042*mm; - _clad2Radius = 0.70*mm; - _fiberGuideBarLength = 1.0*cm; - _sipmLength = 0.2*mm; - _sipmWidth = 2.0*mm; - _sipmWindowLength = 0.1*mm; - _airGap = 1.0*um; - -#ifdef FIBERTEST -#pragma message "USING FIBERTEST" - _mppcReflectivity = 0.0; - _reflectorReflectivity = 0.0; - _blacktapeReflectivity = 0.0; - _fiberGuideBarReflectivity = 0.0; - _fiberGuideBarLength = 0.0*cm; -#endif - - _reflectorOption = reflectorOption; - _reflectorAtPositiveSide = (reflectorOption>=1?true:false); //1...reflector, 2...black tape - _reflectorAtNegativeSide = (reflectorOption<=-1?true:false); - -//use only the positive values of x (assuming symmetry) (0 is at the center) -#ifndef TESTBEAM - double xbinsTmp[11] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 6.0, 9.0, 9.5, 9.89}; - double ybinsTmp[42] = {-25.67, -25.2, -24.7, -23.5, -20.5, -17.5, -15.5, -15.0, -14.5, -14.0, -13.5, -13.0, -12.5, -12.0, -11.5, -11.0, -10.5, -8.5, -6.5, -4.5, -1.5, 1.5, 4.5, 6.5, 8.5, 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 17.5, 20.5, 23.5, 24.7, 25.2, 25.67}; -#else -#pragma message "USING TESTBEAM" - double xbinsTmp[11] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 6.0, 9.0, 9.5, 9.9}; - double ybinsTmp[42] = {-24.7, -24.25, -23.75, -22.5, -20.5, -17.5, -15.5, -15.0, -14.5, -14.0, -13.5, -13.0, -12.5, -12.0, -11.5, -11.0, -10.5, -8.5, -6.5, -4.5, -1.5, 1.5, 4.5, 6.5, 8.5, 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 17.5, 20.5, 22.5, 23.75, 24.25, 24.7}; -#endif - - for(int i=0; i<11; i++) _xbins.push_back(xbinsTmp[i]*mm); //10 bins - for(int i=0; i<42; i++) _ybins.push_back(ybinsTmp[i]*mm); //41 bins - - double halfLength = _barLength/2.0; - int nBinsMainSection = lrint((_barLength-600.0)/100.0); - double binWidthMainSection = 0; - if(nBinsMainSection>0) binWidthMainSection = (_barLength-600.0)/nBinsMainSection; - for(int i=0; i<=5; i++) _zbins.push_back(-halfLength*mm+ 10.0*mm*i); - for(int i=1; i<=10; i++) _zbins.push_back(-halfLength*mm+ 50.0*mm+ 25.0*mm*i); - for(int i=1; i<=nBinsMainSection; i++) _zbins.push_back(-halfLength*mm+300.0*mm+binWidthMainSection*mm*i); - for(int i=1; i<=10; i++) _zbins.push_back( halfLength*mm-300.0*mm+ 25.0*mm*i); - for(int i=1; i<=5; i++) _zbins.push_back( halfLength*mm- 50.0*mm+ 10.0*mm*i); - - double inverseBetaBins[6] = {2.20, 1.80, 1.64, 1.58, 1.24, 1.0}; //values of interest from the index of refraction of polystyrene - for(int i=0; i<6; i++) _betabins.push_back(1.0/inverseBetaBins[i]); //5 bins - - _thetabins.push_back(0); //0 - for(int i=0; i<10; i++) _thetabins.push_back(CLHEP::pi/20.0+CLHEP::pi*i/10.0); //1/20*pi ... 19/20*pi - _thetabins.push_back(CLHEP::pi); //pi --> 11 bins - - _phibins.push_back(0); //0 - for(int i=0; i<4; i++) _phibins.push_back(CLHEP::pi/8.0+CLHEP::pi*i/4.0); //1/8*pi ... 7/8*pi - _phibins.push_back(CLHEP::pi); //pi --> 5 bins - //don't need pi...2*pi due to symmetry - - for(int i=0; i<6; i++) _rbins.push_back(_fiberRadius*i/5.0); //5 bins - - _worldSizeX = _barThickness + 1.*cm; - _worldSizeY = _barWidth + 1.*cm; - _worldSizeZ = _barLength + _fiberGuideBarLength+_airGap+_sipmLength + 1.*cm; -} - -WLSDetectorConstruction::~WLSDetectorConstruction() -{ - if(_materials) delete _materials; -} - -G4VPhysicalVolume* WLSDetectorConstruction::Construct() -{ - _materials = WLSMaterials::GetInstance(); - - return ConstructDetector(); -} - -G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector() -{ - //-------------------------------------------------- - // World - //-------------------------------------------------- - - G4VSolid* solidWorld = new G4Box("World", _worldSizeX, _worldSizeY, _worldSizeZ); - - G4LogicalVolume *logicWorld = new G4LogicalVolume(solidWorld, - FindMaterial("G4_AIR"), - "World"); - - _physiWorld = new G4PVPlacement(0, - G4ThreeVector(), - logicWorld, - "World", - 0, - false, - 0); - -#ifndef FIBERTEST - //-------------------------------------------------- - // Scintillator - //-------------------------------------------------- - - G4VSolid* solidScintillatorBase = new G4Box("ScintillatorBase", - _barThickness/2.0-_coatingThickness, - _barWidth/2.0-_coatingThickness, - _barLength/2.0); - - double scintillatorCornerRadius = _extrusionCornerRadius-_coatingThickness; - G4VSolid* solidScintillatorCorner1 = new G4Tubs("ScintillatorCorner1", scintillatorCornerRadius, 1.5*scintillatorCornerRadius, _barLength/2.0, 0.0, halfpi); - G4VSolid* solidScintillatorCorner2 = new G4Tubs("ScintillatorCorner2", scintillatorCornerRadius, 1.5*scintillatorCornerRadius, _barLength/2.0, halfpi, halfpi); - G4VSolid* solidScintillatorCorner3 = new G4Tubs("ScintillatorCorner3", scintillatorCornerRadius, 1.5*scintillatorCornerRadius, _barLength/2.0, pi, halfpi); - G4VSolid* solidScintillatorCorner4 = new G4Tubs("ScintillatorCorner4", scintillatorCornerRadius, 1.5*scintillatorCornerRadius, _barLength/2.0, 3.0*halfpi, halfpi); - - double absScintCornerPosX = _barThickness/2.0-_coatingThickness-scintillatorCornerRadius; - double absScintCornerPosY = _barWidth/2.0-_coatingThickness-scintillatorCornerRadius; - G4SubtractionSolid *solidScintillator1Corner = new G4SubtractionSolid("Scintillator1Corner",solidScintillatorBase, solidScintillatorCorner1, NULL, - G4ThreeVector(absScintCornerPosX, absScintCornerPosY, 0.0)); - G4SubtractionSolid *solidScintillator2Corner = new G4SubtractionSolid("Scintillator2Corner",solidScintillator1Corner, solidScintillatorCorner2, NULL, - G4ThreeVector(-absScintCornerPosX, absScintCornerPosY, 0.0)); - G4SubtractionSolid *solidScintillator3Corner = new G4SubtractionSolid("Scintillator3Corner",solidScintillator2Corner, solidScintillatorCorner3, NULL, - G4ThreeVector(-absScintCornerPosX, -absScintCornerPosY, 0.0)); - G4SubtractionSolid *solidScintillator4Corner = new G4SubtractionSolid("Scintillator4Corner",solidScintillator3Corner, solidScintillatorCorner4, NULL, - G4ThreeVector(absScintCornerPosX, -absScintCornerPosY, 0.0)); - - G4VSolid* solidScintillatorHole = new G4EllipticalTube("ScintillatorHole", - _holeRadiusX, - _holeRadiusY, - _barLength/2.0); - - G4SubtractionSolid * solidScintillator1Hole = new G4SubtractionSolid("Scintillator1Hole", - solidScintillator4Corner, solidScintillatorHole, NULL, - G4ThreeVector(0.0, -_fiberSeparation/2.0, 0.0)); - G4SubtractionSolid * solidScintillator2Hole = new G4SubtractionSolid("Scintillator2Hole", - solidScintillator1Hole, solidScintillatorHole, NULL, - G4ThreeVector(0.0, _fiberSeparation/2.0, 0.0)); - - G4LogicalVolume* logicScintillator = new G4LogicalVolume(solidScintillator2Hole, - FindMaterial("PolystyreneScint"), - "Scintillator"); - - _physiScintillator = new G4PVPlacement(0, - G4ThreeVector(), - logicScintillator, - "Scintillator", - logicWorld, - false, - 0); - _physiScintillator->CheckOverlaps(); - - //-------------------------------------------------- - // Extrusion (TiO2 Coating) - //-------------------------------------------------- - - G4VSolid* solidExtrusionBase = new G4Box("ExtrusionBase",_barThickness/2.0,_barWidth/2.0,_barLength/2.0); - - G4VSolid* solidExtrusionCorner1 = new G4Tubs("ExtrusionCorner1", _extrusionCornerRadius, 1.5*_extrusionCornerRadius, _barLength/2.0, 0.0, halfpi); - G4VSolid* solidExtrusionCorner2 = new G4Tubs("ExtrusionCorner2", _extrusionCornerRadius, 1.5*_extrusionCornerRadius, _barLength/2.0, halfpi, halfpi); - G4VSolid* solidExtrusionCorner3 = new G4Tubs("ExtrusionCorner3", _extrusionCornerRadius, 1.5*_extrusionCornerRadius, _barLength/2.0, pi, halfpi); - G4VSolid* solidExtrusionCorner4 = new G4Tubs("ExtrusionCorner4", _extrusionCornerRadius, 1.5*_extrusionCornerRadius, _barLength/2.0, 3.0*halfpi, halfpi); - - double absExtrCornerPosX = _barThickness/2.0-_extrusionCornerRadius; - double absExtrCornerPosY = _barWidth/2.0-_extrusionCornerRadius; - G4SubtractionSolid *solidExtrusion1Corner = new G4SubtractionSolid("Extrusion1Corner",solidExtrusionBase, solidExtrusionCorner1, NULL, - G4ThreeVector(absExtrCornerPosX, absExtrCornerPosY, 0.0)); - G4SubtractionSolid *solidExtrusion2Corner = new G4SubtractionSolid("Extrusion2Corner",solidExtrusion1Corner, solidExtrusionCorner2, NULL, - G4ThreeVector(-absExtrCornerPosX, absExtrCornerPosY, 0.0)); - G4SubtractionSolid *solidExtrusion3Corner = new G4SubtractionSolid("Extrusion3Corner",solidExtrusion2Corner, solidExtrusionCorner3, NULL, - G4ThreeVector(-absExtrCornerPosX, -absExtrCornerPosY, 0.0)); - G4SubtractionSolid *solidExtrusion4Corner = new G4SubtractionSolid("Extrusion4Corner",solidExtrusion3Corner, solidExtrusionCorner4, NULL, - G4ThreeVector(absExtrCornerPosX, -absExtrCornerPosY, 0.0)); - - G4SubtractionSolid * solidExtrusion = new G4SubtractionSolid("Extrusion", - solidExtrusion4Corner, solidScintillator4Corner, NULL, - G4ThreeVector(0.0, 0.0, 0.0)); - - G4LogicalVolume* logicExtrusion = new G4LogicalVolume(solidExtrusion, - FindMaterial("Coating"), - "Extrusion"); - - G4VPhysicalVolume *physiExtrusion = new G4PVPlacement(0, - G4ThreeVector(), - logicExtrusion, - "Extrusion", - logicWorld, - false, - 0); - physiExtrusion->CheckOverlaps(); - - //-------------------------------------------------- - // Extrusion (TiO2 Coating) Surface - //-------------------------------------------------- - - G4OpticalSurface* TiO2Surface = new G4OpticalSurface("TiO2Surface", - unified, - ground, - dielectric_metal, - 1.5); - - G4MaterialPropertiesTable* TiO2SurfaceProperty = new G4MaterialPropertiesTable(); - - G4double p_TiO2[11] = {2.00*eV, 2.75*eV, 2.88*eV, 2.95*eV, 3.02*eV, 3.10*eV, 3.18*eV, 3.26*eV, 3.35*eV, 3.44*eV, 15.75*eV}; - G4double refl_TiO2[11] = {0.91, 0.91, 0.90, 0.85, 0.69, 0.44, 0.27, 0.13, 0.08, 0.07, 0.07}; //assume a constant value for energies > 3.44eV (most photons with these energies get absorbed and wave length shifted) - G4double effi_TiO2[11] = {0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0}; - for(int i=0; i<11; i++) refl_TiO2[i]=1.0-0.75*(1.0-refl_TiO2[i]); //a higher reflectivities comparared to the numbers given by Anna - //improves the match between testbeam data and MC - - TiO2SurfaceProperty->AddProperty("REFLECTIVITY",p_TiO2,refl_TiO2,11); - TiO2SurfaceProperty->AddProperty("EFFICIENCY",p_TiO2,effi_TiO2,11); - - G4double pp[2] = {2.00*eV, 15.75*eV}; - G4double specularlobe[2] = {1.0, 1.0}; - G4double specularspike[2] = {0.0, 0.0}; - G4double backscatter[2] = {0.0, 0.0}; - TiO2SurfaceProperty->AddProperty("SPECULARLOBECONSTANT",pp,specularlobe,2); - TiO2SurfaceProperty->AddProperty("SPECULARSPIKECONSTANT",pp,specularspike,2); - TiO2SurfaceProperty->AddProperty("BACKSCATTERCONSTANT",pp,backscatter,2); - - TiO2Surface -> SetMaterialPropertiesTable(TiO2SurfaceProperty); - - new G4LogicalBorderSurface("TiO2Surface", - _physiScintillator, - physiExtrusion, - TiO2Surface); - - //-------------------------------------------------- - // Plastic Fiber Guide Bar - //-------------------------------------------------- - - G4VSolid* solidFiberGuideBarBase = new G4Box("FiberGuideBarBase", - _barThickness/2.0, - _barWidth/2.0, - _fiberGuideBarLength/2.0); - - G4VSolid* solidFiberGuideBarHole = new G4Tubs("FiberGuideBarHole",0.,_clad2Radius,_fiberGuideBarLength/2.0,0.0*rad,twopi*rad); - - G4SubtractionSolid * solidFiberGuideBar1Hole = new G4SubtractionSolid("FiberGuideBar1Hole", - solidFiberGuideBarBase, solidFiberGuideBarHole, NULL, - G4ThreeVector(0.0, -_fiberSeparation/2.0, 0.0)); - G4SubtractionSolid * solidFiberGuideBar2Hole = new G4SubtractionSolid("FiberGuideBar2Hole", - solidFiberGuideBar1Hole, solidFiberGuideBarHole, NULL, - G4ThreeVector(0.0, _fiberSeparation/2.0, 0.0)); - - G4LogicalVolume* logicFiberGuideBar = new G4LogicalVolume(solidFiberGuideBar2Hole, - FindMaterial("G4_POLYVINYL_CHLORIDE"), - "FiberGuideBar"); - - G4VPhysicalVolume *physiFiberGuideBar0= - new G4PVPlacement(0,G4ThreeVector(0.0, 0.0,-_barLength/2.0-_fiberGuideBarLength/2.0), - logicFiberGuideBar, - "FiberGuideBar", - logicWorld, - false, - 0); - - G4VPhysicalVolume *physiFiberGuideBar1= - new G4PVPlacement(0,G4ThreeVector(0.0, 0.0, _barLength/2.0+_fiberGuideBarLength/2.0), - logicFiberGuideBar, - "FiberGuideBar", - logicWorld, - false, - 1); - physiFiberGuideBar0->CheckOverlaps(); - physiFiberGuideBar1->CheckOverlaps(); - - - //surface - - G4OpticalSurface* FiberGuideBarSurface = new G4OpticalSurface("FiberGuideBarSurface", - unified, - ground, - dielectric_metal, - 0.0); - - G4MaterialPropertiesTable* FiberGuideBarSurfaceProperty = new G4MaterialPropertiesTable(); - - G4double p_FiberGuideBar[2] = {2.00*eV, 15.75*eV}; - G4double refl_FiberGuideBar[2] = {_fiberGuideBarReflectivity,_fiberGuideBarReflectivity}; - G4double effi_FiberGuideBar[2] = {0, 0}; - - FiberGuideBarSurfaceProperty -> AddProperty("REFLECTIVITY",p_FiberGuideBar,refl_FiberGuideBar,2); - FiberGuideBarSurfaceProperty -> AddProperty("EFFICIENCY",p_FiberGuideBar,effi_FiberGuideBar,2); - - FiberGuideBarSurface -> SetMaterialPropertiesTable(FiberGuideBarSurfaceProperty); - - new G4LogicalSkinSurface("FiberGuideBarSurface",logicFiberGuideBar,FiberGuideBarSurface); - -#endif - - //-------------------------------------------------- - // Cladding 2 - //-------------------------------------------------- - - G4VSolid* solidClad2 = new G4Tubs("Clad2",0.,_clad2Radius,_barLength/2.0+_fiberGuideBarLength,0.0*rad,twopi*rad); - - G4LogicalVolume* logicClad2 = new G4LogicalVolume(solidClad2, - FindMaterial("FPethylene"), - "Clad2"); - - G4VPhysicalVolume *physiClad2Hole0= - new G4PVPlacement(0, - G4ThreeVector(0.0, -_fiberSeparation/2.0, 0.0), - logicClad2, - "Clad2Hole0", - logicWorld, - false, - 0); - G4VPhysicalVolume *physiClad2Hole1= - new G4PVPlacement(0, - G4ThreeVector(0.0, _fiberSeparation/2.0, 0.0), - logicClad2, - "Clad2Hole1", - logicWorld, - false, - 1); - - physiClad2Hole0->CheckOverlaps(); - physiClad2Hole1->CheckOverlaps(); - - //-------------------------------------------------- - // Cladding 1 - //-------------------------------------------------- - - G4VSolid* solidClad1 = new G4Tubs("Clad1",0.,_clad1Radius,_barLength/2.0+_fiberGuideBarLength,0.0*rad,twopi*rad); - - G4LogicalVolume* logicClad1 = new G4LogicalVolume(solidClad1, - FindMaterial("PMMA"), - "Clad1"); - - G4VPhysicalVolume *physiClad1= - new G4PVPlacement(0, - G4ThreeVector(), - logicClad1, - "Clad1", - logicClad2, - false, - 0); - - physiClad1->CheckOverlaps(); - - //-------------------------------------------------- - // WLS Fiber - //-------------------------------------------------- - - G4VSolid* solidWLSfiber = new G4Tubs("WLSFiber",0.,_fiberRadius,_barLength/2.0+_fiberGuideBarLength,0.0*rad,twopi*rad); - - G4LogicalVolume* logicWLSfiber = new G4LogicalVolume(solidWLSfiber, - FindMaterial("PolystyreneFiber"), - "WLSFiber"); - - G4VPhysicalVolume *physiWLSfiber= - new G4PVPlacement(0, - G4ThreeVector(), - logicWLSfiber, - "WLSFiber", - logicClad1, - false, - 0); - physiWLSfiber->CheckOverlaps(); - - //-------------------------------------------------- - // SiPM (Sensitive Detector) Or Reflector - //-------------------------------------------------- - - G4VSolid* solidSiPMorReflector = new G4Box("SiPMorReflector",_sipmWidth/2.0,_sipmWidth/2.0,_sipmLength/2.0); - - //SiPM - G4VSolid* solidSiPMWindow = new G4Box("SiPMWindow",_sipmWidth/2.0,_sipmWidth/2.0,_sipmWindowLength); - G4LogicalVolume* logicSiPMWindow = new G4LogicalVolume(solidSiPMWindow, FindMaterial("Epoxy"),"SiPMWindow"); - - G4LogicalVolume* logicPhotonDet[4]; - for(int i=0; i<4; i++) - { - logicPhotonDet[i] = new G4LogicalVolume(solidSiPMorReflector, FindMaterial("G4_Si"), "PhotonDet"); - new G4PVPlacement(0, - G4ThreeVector(0.0, 0.0, (i%2==0)?(_sipmLength-_sipmWindowLength)/2.0:-(_sipmLength-_sipmWindowLength)/2.0), - logicSiPMWindow, - "PhotonSiPMWindow", - logicPhotonDet[i], - false, - i); - } - - //Reflector - G4LogicalVolume* logicReflector = new G4LogicalVolume(solidSiPMorReflector, FindMaterial("G4_Al"), "Reflector"); - - new G4PVPlacement(0, - G4ThreeVector(0.0, -_fiberSeparation/2.0, -_barLength/2.0-_fiberGuideBarLength-_airGap-_sipmLength/2.0), - _reflectorAtNegativeSide?logicReflector:logicPhotonDet[0], - _reflectorAtNegativeSide?"Reflector":"SiPM", - logicWorld, - false, - 0); - new G4PVPlacement(0, - G4ThreeVector(0.0, -_fiberSeparation/2.0, _barLength/2.0+_fiberGuideBarLength+_airGap+_sipmLength/2.0), - _reflectorAtPositiveSide?logicReflector:logicPhotonDet[1], - _reflectorAtPositiveSide?"Reflector":"SiPM", - logicWorld, - false, - 1); - new G4PVPlacement(0, - G4ThreeVector(0.0, _fiberSeparation/2.0, -_barLength/2.0-_fiberGuideBarLength-_airGap-_sipmLength/2.0), - _reflectorAtNegativeSide?logicReflector:logicPhotonDet[2], - _reflectorAtNegativeSide?"Reflector":"SiPM", - logicWorld, - false, - 2); - new G4PVPlacement(0, - G4ThreeVector(0.0, _fiberSeparation/2.0, _barLength/2.0+_fiberGuideBarLength+_airGap+_sipmLength/2.0), - _reflectorAtPositiveSide?logicReflector:logicPhotonDet[3], - _reflectorAtPositiveSide?"Reflector":"SiPM", - logicWorld, - false, - 3); - - // PhotonDet Surface Properties - G4OpticalSurface* PhotonDetSurface = new G4OpticalSurface("PhotonDetSurface", - glisur, - ground, - dielectric_metal, - 1.0); - - G4MaterialPropertiesTable* PhotonDetSurfaceProperty = new G4MaterialPropertiesTable(); - - G4double p_mppc[21] = {2.0*eV, 2.1*eV, 2.2*eV, 2.3*eV, 2.4*eV, - 2.5*eV, 2.6*eV, 2.7*eV, 2.8*eV, 2.9*eV, - 3.0*eV, 3.1*eV, 3.2*eV, 3.3*eV, 3.4*eV, - 3.5*eV, 3.6*eV, 3.7*eV, 3.8*eV, 3.9*eV, - 15.75*eV}; - G4double refl_mppc[21]; - for(int i=0; i<21; i++) refl_mppc[i]=_mppcReflectivity; - - //if a photon gets absorbed at a surface, it gets "detected" with the probability EFFICIENCY - //(the status will be Detection) - see G4OpBoundaryProcess::DoAbsorption() - //the probability to produce a PE is done by the SiPM simulation - G4double effi_mppc[21] = {0.602, 0.697, 0.784, 0.858, 0.933, - 0.970, 0.990, 1.000, 0.978, 0.958, - 0.920, 0.871, 0.803, 0.709, 0.622, - 0.547, 0.398, 0.249, 0.100, 0.000, - 0.000}; - -#ifdef FIBERTEST - for(int i=0; i<21; i++) effi_mppc[i]=1.0; -#endif - - PhotonDetSurfaceProperty -> AddProperty("REFLECTIVITY",p_mppc,refl_mppc,21); - PhotonDetSurfaceProperty -> AddProperty("EFFICIENCY",p_mppc,effi_mppc,21); - - PhotonDetSurface -> SetMaterialPropertiesTable(PhotonDetSurfaceProperty); - - for(int i=0; i<4; i++) new G4LogicalSkinSurface("PhotonDetSurface",logicPhotonDet[i],PhotonDetSurface); - - // Reflector Surface Properties - G4OpticalSurface* ReflectorSurface = new G4OpticalSurface("ReflectorSurface", - glisur, - ground, - dielectric_metal, - 1.0); - - G4MaterialPropertiesTable* ReflectorSurfaceProperty = new G4MaterialPropertiesTable(); - - G4double reflectivity = _reflectorReflectivity; - if(abs(_reflectorOption)==2) reflectivity=_blacktapeReflectivity; - G4double p_reflector[2] = {2.00*eV, 15.75*eV}; - G4double refl_reflector[2] = {reflectivity,reflectivity}; - G4double effi_reflector[2] = {0.0, 0.0}; - - ReflectorSurfaceProperty -> AddProperty("REFLECTIVITY",p_reflector,refl_reflector,2); - ReflectorSurfaceProperty -> AddProperty("EFFICIENCY",p_reflector,effi_reflector,2); - - ReflectorSurface -> SetMaterialPropertiesTable(ReflectorSurfaceProperty); - - new G4LogicalSkinSurface("ReflectorSurface",logicReflector,ReflectorSurface); - - // Fiber End Surface Properties - G4OpticalSurface* FiberEndSurface = new G4OpticalSurface("FiberEndSurface", - unified, - ground, - dielectric_dielectric, - 0.02); - - new G4LogicalBorderSurface("FiberEndSurface1",physiWLSfiber,_physiWorld,FiberEndSurface); - new G4LogicalBorderSurface("FiberEndSurface2",_physiWorld,physiWLSfiber,FiberEndSurface); - new G4LogicalBorderSurface("FiberEndSurface3",physiClad1,_physiWorld,FiberEndSurface); - new G4LogicalBorderSurface("FiberEndSurface4",_physiWorld,physiClad1,FiberEndSurface); - new G4LogicalBorderSurface("FiberEndSurface5",physiClad2Hole0,_physiWorld,FiberEndSurface); - new G4LogicalBorderSurface("FiberEndSurface6",_physiWorld,physiClad2Hole0,FiberEndSurface); - new G4LogicalBorderSurface("FiberEndSurface7",physiClad2Hole1,_physiWorld,FiberEndSurface); - new G4LogicalBorderSurface("FiberEndSurface8",_physiWorld,physiClad2Hole1,FiberEndSurface); - - //-------------------------------------------------- - // End of Construction - //-------------------------------------------------- - - return _physiWorld; -} - -void WLSDetectorConstruction::UpdateGeometry() -{ - if (!_physiWorld) return; - - // clean-up previous geometry - G4GeometryManager::GetInstance()->OpenGeometry(); - - G4PhysicalVolumeStore::GetInstance()->Clean(); - G4LogicalVolumeStore::GetInstance()->Clean(); - G4SolidStore::GetInstance()->Clean(); - G4LogicalSkinSurface::CleanSurfaceTable(); - G4LogicalBorderSurface::CleanSurfaceTable(); - - //define new one - G4RunManager::GetRunManager()->DefineWorldVolume(ConstructDetector()); - - G4RunManager::GetRunManager()->GeometryHasBeenModified(); - G4RunManager::GetRunManager()->PhysicsHasBeenModified(); - - G4RegionStore::GetInstance()->UpdateMaterialList(_physiWorld); -} - -void WLSDetectorConstruction::UpdateGeometryParameters() -{ - std::cout<<"DOES ANYONE CALL THIS???"< -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "MakeCrvPhotons.hh" -#include "MakeCrvSiPMCharges.hh" -#include "MakeCrvWaveforms.hh" -#include "MakeCrvDigis.hh" -#include "MakeCrvRecoPulses.hh" - -#include -#include - -#include "CLHEP/Random/Randomize.h" - -WLSEventAction* WLSEventAction::_fgInstance = NULL; - -WLSEventAction::WLSEventAction(WLSSteppingAction::simulationMode mode, const std::string &singlePEWaveformFilename, const std::string &photonMapFilename, - int numberOfPhotons, int simType, unsigned int minBin, bool verbose) : - _mode(mode), - _numberOfPhotons(numberOfPhotons), - _simType(simType), - _minBin(minBin), - _currentBin(minBin), - _singlePEWaveformFilename(singlePEWaveformFilename), - _photonMapFilename(photonMapFilename), - _verbose(verbose) - //numberOfPhotons, simType, minBin, currentBin, verbose is only needed for simulationMode::CreateLookupTables -{ - _fgInstance = this; - - if(_mode==WLSSteppingAction::UseGeantOnly || _mode==WLSSteppingAction::UseGeantAndLookupTables) - { - for(int SiPM=0; SiPM<4; SiPM++) - { - std::stringstream s0, s1, title; - s0<<"Photons_Geant_SiPM_"<GetXaxis()->SetTitle("Photons"); - _histP[0][SiPM]->SetLineColor(1); - _histP[1][SiPM]->GetXaxis()->SetTitle("Photons"); - _histP[1][SiPM]->SetLineColor(2); - } - - for(int SiPM=0; SiPM<4; SiPM++) - { - std::stringstream s0, s1, title; - s0<<"ArrivalTimes_Geant_SiPM_"<GetXaxis()->SetTitle("t [ns]"); - _histT[0][SiPM]->SetLineColor(1); - _histT[1][SiPM]->GetXaxis()->SetTitle("t [ns]"); - _histT[1][SiPM]->SetLineColor(2); - } - - for(int SiPM=0; SiPM<4; SiPM++) - { - std::stringstream s0, title; - s0<<"PEs_SiPM_"<GetXaxis()->SetTitle("PEs"); - _histPE[SiPM]->SetLineColor(1); - } - - _ntuple = new TNtuple("CRVNtuple","CRVNtuple","SiPM:photons:PEs:pulseHeight:pulseBeta:recoPEs:pulseTime:LEtime:chi2"); - } -} - -WLSEventAction::~WLSEventAction() -{ - if(_mode==WLSSteppingAction::UseGeantOnly || _mode==WLSSteppingAction::UseGeantAndLookupTables) - { - for(int SiPM=0; SiPM<4; SiPM++) - { - delete _histP[0][SiPM]; - delete _histP[1][SiPM]; - delete _histT[0][SiPM]; - delete _histT[1][SiPM]; - delete _histPE[SiPM]; - } - - _ntuple->SaveAs("CRVNtuple.root"); - delete _ntuple; - } - -} - -void WLSEventAction::BeginOfEventAction(const G4Event* evt) -{ - std::cout<<"Event # "<GetEventID()<Reset(); -} - -void WLSEventAction::EndOfEventAction(const G4Event* evt) -{ - //create entry in lookup tables - if(_mode==WLSSteppingAction::CreateLookupTables) - { - WLSDetectorConstruction *detector = WLSDetectorConstruction::Instance(); - - mu2eCrv::LookupBin bin; - - bin.binNumber = _currentBin; //gets set by WLSPrimaryGenerator - - bin.arrivalProbability=0; - bin.timeDelays.clear(); - bin.fiberEmissions.clear(); - - //prepare histograms - int histTimeDifference[mu2eCrv::LookupBin::maxTimeDelays]={0}; //in ns - int histEmissions[mu2eCrv::LookupBin::maxFiberEmissions]={0}; - int maxTimeDifference=0; - int maxEmissions=0; - int arrivingPhotons=0; - - //Lookup tables are created only for SiPM# 0 due to symmetry reasons - const std::vector &photonInfo = WLSSteppingAction::Instance()->GetPhotonInfo(0); - for(size_t i=0; i(photonInfo[i]._arrivalTime+0.5); //rounded to full ns - //the WLS decay time has been set to 0 for mode=CreateLookupTables - //so that the true travel time can be determined - //(in WLSPrimaryGeneratorAction) - if(timeDifference<0) timeDifference=0; - if(timeDifference>=mu2eCrv::LookupBin::maxTimeDelays) continue; - - //extract number of fiber emissions - int nEmissions=photonInfo[i]._fiberEmissions; - if(nEmissions<0) nEmissions=0; - if(nEmissions>=mu2eCrv::LookupBin::maxFiberEmissions) continue; - - //fill histogram bins - histTimeDifference[timeDifference]++; //fill this histogram bin - histEmissions[nEmissions]++; - - if(timeDifference>maxTimeDifference) maxTimeDifference=timeDifference; - if(nEmissions>maxEmissions) maxEmissions=nEmissions; - - arrivingPhotons++; //only count photons for which the arrival time and number of fiber emissions - //can be stored in the histograms - } - - if(arrivingPhotons>0) - { - bin.arrivalProbability=static_cast(arrivingPhotons)/static_cast(_generatedPhotons); - //_generatedPhotons gets set by WLSPrimaryGeneratorAction - //after sending out all photons - - //store time time delay histogram in bin - bin.timeDelays.reserve(maxTimeDifference+1); - for(int i=0; i<=maxTimeDifference; i++) - { - float p=static_cast(histTimeDifference[i])/static_cast(arrivingPhotons); - //multiplying the probability with the probability scale makes it possible to store it as an unsigned char - unsigned char pChar = static_cast(mu2eCrv::LookupBin::probabilityScale*p+0.5); - bin.timeDelays.push_back(pChar); - } - - //store fiber emission histogram in bin - bin.fiberEmissions.reserve(maxEmissions+1); - for(int i=0; i<=maxEmissions; i++) - { - float p=static_cast(histEmissions[i])/static_cast(arrivingPhotons); - //multiplying the probability with the probability scale makes it possible to store it as an unsigned char - unsigned char pChar = static_cast(mu2eCrv::LookupBin::probabilityScale*p+0.5); - bin.fiberEmissions.push_back(pChar); - } - } - - if(_verbose) - { - std::streamsize origPrecision = std::cout.precision(); - std::cout.precision(10); - float p=bin.arrivalProbability; - std::cout<<"Probability: "<GetEventID()==0) std::remove(filename.str().c_str()); //remove existing file - -//write some constants to the file before the first bin - if(_simType==0 && _currentBin==0) - { - G4Material *scintillator = G4Material::GetMaterial("PolystyreneScint",true); //scintillator - G4MaterialPropertiesTable *scintillatorPropertiesTable = scintillator->GetMaterialPropertiesTable(); - G4MaterialPropertyVector *rindexScintillator = scintillatorPropertiesTable->GetProperty("RINDEX"); - - G4Material *fiber = G4Material::GetMaterial("PolystyreneFiber",true); //fiber - G4MaterialPropertiesTable* fiberPropertiesTable = fiber->GetMaterialPropertiesTable(); - G4MaterialPropertyVector *rindexFiber = fiberPropertiesTable->GetProperty("RINDEX"); - - mu2eCrv::LookupConstants LC; - LC.version1 = 6; - LC.version2 = 0; - LC.reflector = detector->GetReflectorOption(); - LC.halfThickness = detector->GetScintillatorHalfThickness(), - LC.halfWidth = detector->GetScintillatorHalfWidth(), - LC.halfLength = detector->GetScintillatorHalfLength(), - LC.fiberSeparation = detector->GetFiberSeparation(), - LC.holeRadiusX = detector->GetHoleRadiusX(), - LC.holeRadiusY = detector->GetHoleRadiusY(), - LC.fiberRadius = detector->GetClad2Radius(); - LC.scintillatorCornerRadius = detector->GetScintillatorCornerRadius(); - LC.scintillatorBirksConstant = scintillator->GetIonisation()->GetBirksConstant(); - LC.WLSfiberDecayTime = fiberPropertiesTable->GetConstProperty("WLSTIMECONSTANT"); - LC.Write(filename.str()); - - mu2eCrv::LookupCerenkov LCerenkov; - G4CerenkovNew *cerenkov = G4CerenkovNew::Instance(); - for(double beta=1.0; ; beta/=1.01) - { - double photonsScintillator=cerenkov->GetAverageNumberOfPhotons(CLHEP::eplus, beta, scintillator, rindexScintillator); - double photonsFiber=cerenkov->GetAverageNumberOfPhotons(CLHEP::eplus, beta, fiber, rindexFiber); - LCerenkov.photonsScintillator[beta]=photonsScintillator; - LCerenkov.photonsFiber[beta]=photonsFiber; - if(photonsScintillator==0 && photonsFiber==0) break; - } - LCerenkov.Write(filename.str()); - - mu2eCrv::LookupBinDefinitions LBD; - LBD.xBins = WLSDetectorConstruction::Instance()->GetXBins(); - LBD.yBins = WLSDetectorConstruction::Instance()->GetYBins(); - LBD.zBins = WLSDetectorConstruction::Instance()->GetZBins(); - LBD.betaBins = WLSDetectorConstruction::Instance()->GetBetaBins(); - LBD.thetaBins = WLSDetectorConstruction::Instance()->GetThetaBins(); - LBD.phiBins = WLSDetectorConstruction::Instance()->GetPhiBins(); - LBD.rBins = WLSDetectorConstruction::Instance()->GetRBins(); - LBD.Write(filename.str()); - } - -//write the data to file - bin.Write(filename.str()); - } - - //fill histograms if a simulation is run - if(_mode==WLSSteppingAction::UseGeantOnly || _mode==WLSSteppingAction::UseGeantAndLookupTables) - { - for(int SiPM=0; SiPM<4; SiPM++) - { - _histP[0][SiPM]->Fill(WLSSteppingAction::Instance()->GetPhotonInfo(SiPM).size()); - _histP[1][SiPM]->Fill(WLSSteppingAction::Instance()->GetArrivalTimesFromLookupTables(SiPM).size()); - const std::vector &photonInfo = WLSSteppingAction::Instance()->GetPhotonInfo(SiPM); - const std::vector &arrivalTimesFromLookupTables = WLSSteppingAction::Instance()->GetArrivalTimesFromLookupTables(SiPM); - for(size_t i=0; iFill(photonInfo[i]._arrivalTime); - for(size_t i=0; iFill(arrivalTimesFromLookupTables[i]); - } - - Draw(evt); - - std::cout<<"Photons: "; - for(int SiPM=0; SiPM<4; SiPM++) std::cout<<_histP[0][SiPM]->GetMean()<<"/"<<_histP[1][SiPM]->GetMean()<<" "; - std::cout<GetMean()<<" "; - std::cout<GetMean()<<"/"<<_histT[1][SiPM]->GetMean()<<" "; - std::cout<PrintStatus(); - WLSSteppingAction::Instance()->PrintFiberStats(); -} - -void WLSEventAction::Draw(const G4Event* evt) -{ - double maxTime=200.0; - - mu2eCrv::MakeCrvSiPMCharges::ProbabilitiesStruct probabilities; - probabilities._avalancheProbParam1 = 0.607; - probabilities._avalancheProbParam2 = 2.7; - probabilities._trapType0Prob = 0.0; - probabilities._trapType1Prob = 0.0; - probabilities._trapType0Lifetime = 5; - probabilities._trapType1Lifetime = 50; - probabilities._thermalRate = 3.0e-4; - probabilities._crossTalkProb = 0.09; - - std::vector > inactivePixels = { {18,18}, {18,19}, {18,20}, {18,21}, - {19,18}, {19,19}, {19,20}, {19,21}, - {20,18}, {20,19}, {20,20}, {20,21}, - {21,18}, {21,19}, {21,20}, {21,21} }; - - static CLHEP::HepJamesRandom engine(1); - static CLHEP::RandFlat randFlat(engine); - static CLHEP::RandGaussQ randGaussQ(engine); - static CLHEP::RandPoissonQ randPoissonQ(engine); - mu2eCrv::MakeCrvSiPMCharges sim(randFlat,randPoissonQ,_photonMapFilename.c_str()); - sim.SetSiPMConstants(40, 40, 3.0, 0, 1695, 13.3, 8.84e-14, probabilities, inactivePixels); //FIXME Organize constants in a better way - - mu2eCrv::MakeCrvWaveforms makeCrvWaveform; - double digitizationInterval = 12.55; //ns - double digitizationInterval2 = 1.0; //ns - double noise = 4.0e-4; - double pedestal = 100; //ADC - double calibrationFactor = 391.2; //ADC*ns/PE - double calibrationFactorPulseHeight = 11.4; //ADC/PE - makeCrvWaveform.LoadSinglePEWaveform(_singlePEWaveformFilename.c_str(), 0.5, 1.040, 100, 2.652e-13); //FIXME Organize constants in a better way - - mu2eCrv::MakeCrvDigis makeCrvDigis; - - boost::shared_ptr makeRecoPulses[4]; - - double startTime=-G4UniformRand()*digitizationInterval; - std::vector siPMtimes[4], siPMcharges[4], siPMchargesInPEs[4]; - std::vector waveform[4], waveform2[4]; - std::vector ADCs[4], ADCs2[4]; - unsigned int TDC, TDC2; - for(int SiPM=0; SiPM<4; SiPM++) - { - std::vector > photonTimes; - if(_mode==WLSSteppingAction::UseGeantAndLookupTables) - { - const std::vector &photonTimesTmp = WLSSteppingAction::Instance()->GetArrivalTimesFromLookupTables(SiPM); - for(size_t i=0; i(photonTimesTmp[i],0)); - } - else - { - const std::vector &photonInfo = WLSSteppingAction::Instance()->GetPhotonInfo(SiPM); - for(size_t i=0; i(photonInfo[i]._arrivalTime,0)); - } - int photons = photonTimes.size(); - - std::vector SiPMresponseVector; - sim.Simulate(photonTimes, SiPMresponseVector); - double PEs=0; - for(size_t i=0; iFill(PEs); - - makeCrvWaveform.MakeWaveform(siPMtimes[SiPM], siPMcharges[SiPM], waveform[SiPM], startTime, digitizationInterval); - makeCrvWaveform.MakeWaveform(siPMtimes[SiPM], siPMcharges[SiPM], waveform2[SiPM], startTime, digitizationInterval2); - - makeCrvWaveform.AddElectronicNoise(waveform[SiPM], noise, randGaussQ); - makeCrvWaveform.AddElectronicNoise(waveform2[SiPM], noise, randGaussQ); - - makeCrvDigis.SetWaveform(waveform[SiPM], 2300, pedestal, startTime, digitizationInterval); - ADCs[SiPM] = makeCrvDigis.GetADCs(); - TDC = makeCrvDigis.GetTDC(); - makeCrvDigis.SetWaveform(waveform2[SiPM], 2300, pedestal, startTime, digitizationInterval2); - ADCs2[SiPM] = makeCrvDigis.GetADCs(); - TDC2 = makeCrvDigis.GetTDC(); - - makeRecoPulses[SiPM]=boost::shared_ptr(new mu2eCrv::MakeCrvRecoPulses(5, 19.0, 5.0, 50.0, 20.0, 0.7, 1.5, 0.985)); //TODO - makeRecoPulses[SiPM]->SetWaveform(ADCs[SiPM], TDC, digitizationInterval, pedestal, calibrationFactor, calibrationFactorPulseHeight); - if(makeRecoPulses[SiPM]->GetNPulses()>0) - { - double pulseHeight=0; - double recoPEs= 0; - double pulseBeta=0; - double pulseTime=0; - double LEtime=0; - double pulseChi2=0; - for(size_t j=0; jGetNPulses(); j++) - { - double recoPEsTmp = makeRecoPulses[SiPM]->GetPEs(j); - if(recoPEsTmp>recoPEs) - { - recoPEs=recoPEsTmp; - pulseHeight = makeRecoPulses[SiPM]->GetPulseHeight(j); - pulseBeta = makeRecoPulses[SiPM]->GetPulseBeta(j); - pulseTime = makeRecoPulses[SiPM]->GetPulseTime(j); - LEtime = makeRecoPulses[SiPM]->GetLEtime(j); - pulseChi2 = makeRecoPulses[SiPM]->GetPulseFitChi2(j); - } - } - _ntuple->Fill(SiPM,photons,PEs,pulseHeight,pulseBeta,recoPEs,pulseTime,LEtime,pulseChi2); - _PEs[SiPM].push_back(PEs); - _recoPEs[SiPM].push_back(recoPEs); - _pulseTimes[SiPM].push_back(pulseTime); - _LETimes[SiPM].push_back(LEtime); - _pulseBetas[SiPM].push_back(pulseBeta); - double avgPEs=0; - double avgrecoPEs=0; - double avgPulseTime=0; - double avgLETime=0; - double avgPulseBeta=0; - for(size_t j=0; j<_PEs[SiPM].size(); j++) {avgPEs+=_PEs[SiPM][j];} - for(size_t j=0; j<_recoPEs[SiPM].size(); j++) {avgrecoPEs+=_recoPEs[SiPM][j];} - for(size_t j=0; j<_pulseTimes[SiPM].size(); j++) {avgPulseTime+=_pulseTimes[SiPM][j];} - for(size_t j=0; j<_LETimes[SiPM].size(); j++) {avgLETime+=_LETimes[SiPM][j];} - for(size_t j=0; j<_pulseBetas[SiPM].size(); j++) {avgPulseBeta+=_pulseBetas[SiPM][j];} - avgPEs/=_PEs[SiPM].size(); - avgrecoPEs/=_recoPEs[SiPM].size(); - avgPulseTime/=_pulseTimes[SiPM].size(); - avgLETime/=_LETimes[SiPM].size(); - avgPulseBeta/=_pulseBetas[SiPM].size(); - std::cout<<"SiPM: "<GetNPulses()<GetEventID(); - - gStyle->SetOptStat(0); - TCanvas c(s1.str().c_str(),s1.str().c_str(),1000,1000); - c.Divide(2,2); - TGraph *graph[4]={NULL}; - TGraph *graph2[4]={NULL}; - TH1D *hist[4], *histSiPMResponse[4]; - - if(evt->GetEventID()<20) - { - std::vector graphVector; - std::vector markerVector; - std::vector axisVector; - - for(int SiPM=0; SiPM<4; SiPM++) - { - c.cd(SiPM+1); - -//Photon Arrival Times - std::ostringstream s2, s3; - s2<<"Photons_"<GetEventID()<<"__"< &photonTimesTmp = WLSSteppingAction::Instance()->GetArrivalTimesFromLookupTables(SiPM); - for(size_t i=0; iFill(photonTimesTmp[i]); - } - else - { - const std::vector &photonInfo = WLSSteppingAction::Instance()->GetPhotonInfo(SiPM); - for(size_t i=0; iFill(photonInfo[i]._arrivalTime); - } - - hist[SiPM]->SetLineColor(kBlue); - hist[SiPM]->GetXaxis()->SetTitle("t [ns]"); - hist[SiPM]->GetXaxis()->SetTitleOffset(0.8); - hist[SiPM]->GetXaxis()->SetTitleSize(0.05); - hist[SiPM]->GetYaxis()->SetTitle("Photons"); - hist[SiPM]->GetYaxis()->SetTitleOffset(0.8); - hist[SiPM]->GetYaxis()->SetTitleSize(0.05); - hist[SiPM]->GetYaxis()->SetAxisColor(kBlue); - hist[SiPM]->GetYaxis()->SetTitleColor(kBlue); - hist[SiPM]->GetYaxis()->SetLabelColor(kBlue); - hist[SiPM]->Draw(); - -//SiPM response - double scaleSiPMResponse = 1.0; - double totalPEs=0; - histSiPMResponse[SiPM]=new TH1D((s2.str()+"SiPMResponse").c_str(),"",100,0,maxTime); - for(unsigned int j=0; jFill(siPMtimes[SiPM][j], siPMchargesInPEs[SiPM][j]*scaleSiPMResponse); - totalPEs+=siPMchargesInPEs[SiPM][j]; - } - histSiPMResponse[SiPM]->SetLineColor(kOrange-6); - histSiPMResponse[SiPM]->Draw("histsame"); - -//waveforms with 1 ns bin width - unsigned int n2 = ADCs2[SiPM].size(); - if(n2==0) continue; - double *t2 = new double[n2]; - double *v2 = new double[n2]; - double histMax = hist[SiPM]->GetMaximum(); - double waveformMax = *std::max_element(ADCs2[SiPM].begin(),ADCs2[SiPM].end()); - double scale = histMax/waveformMax; - for(unsigned int j=0; jSetTitle(""); - graph2[SiPM]->SetLineWidth(1); - graph2[SiPM]->SetLineColor(kRed); - graph2[SiPM]->DrawGraph(n2,t2,v2,"same"); - - delete[] t2; - delete[] v2; - -//waveforms with 12.55 ns bin width - unsigned int n = ADCs[SiPM].size(); - if(n==0) continue; - double *t = new double[n]; - double *v = new double[n]; - for(unsigned int j=0; jSetTitle(""); - graph[SiPM]->SetMarkerStyle(20); - graph[SiPM]->SetMarkerSize(1.5); - graph[SiPM]->SetMarkerColor(kRed); - graph[SiPM]->Draw("sameP"); - - delete[] t; - delete[] v; - -//fit - unsigned int nPulse = makeRecoPulses[SiPM]->GetNPulses(); - for(unsigned int pulse=0; pulseGetPulseBeta(pulse))) continue; - double tF1=makeRecoPulses[SiPM]->GetT1(pulse); - double tF2=makeRecoPulses[SiPM]->GetT2(pulse); - int nF=(tF2-tF1)/1.0 + 1; - double *tF = new double[nF]; - double *vF = new double[nF]; - for(int iF=0; iFGetFitParam0(pulse); - double p1 = makeRecoPulses[SiPM]->GetFitParam1(pulse); - double p2 = makeRecoPulses[SiPM]->GetFitParam2(pulse); - tF[iF] = tF1 + iF*1.0; - vF[iF] = p0*TMath::Exp(-(tF[iF]-p1)/p2-TMath::Exp(-(tF[iF]-p1)/p2)); - vF[iF]+=pedestal; - vF[iF]*=scale; - if(isnan(vF[iF])) nF=0; - } - if(nF>0) - { - TGraph *graphF=new TGraph(); - graphVector.push_back(graphF); - graphF->SetTitle(""); - graphF->SetLineWidth(2); - graphF->SetLineColor(kGreen); - graphF->DrawGraph(nF,tF,vF,"same"); - } - - delete[] tF; - delete[] vF; - } - - TGaxis *axis = new TGaxis(maxTime*0.9,0,maxTime*0.9,histMax,0,histMax/scale,10,"+L"); - axisVector.push_back(axis); - axis->SetTitle("ADC"); - axis->SetTitleOffset(-0.5); - axis->SetTitleSize(0.05); - axis->SetTitleColor(kRed); - axis->SetLineColor(kRed); - axis->SetLabelColor(kRed); - axis->Draw("same"); - - TGaxis *axisSiPMResponse = new TGaxis(maxTime,0,maxTime,histMax,0,histMax/scaleSiPMResponse,10,"+L"); - axisVector.push_back(axisSiPMResponse); - axisSiPMResponse->SetTitle("SiPM charges [PE]"); - axisSiPMResponse->SetTitleOffset(0.85); - axisSiPMResponse->SetTitleSize(0.05); - axisSiPMResponse->SetTitleColor(kOrange-6); - axisSiPMResponse->SetLineColor(kOrange-6); - axisSiPMResponse->SetLabelColor(kOrange-6); - axisSiPMResponse->Draw("same"); - } - - c.SaveAs((s1.str()+".C").c_str()); - - for(int SiPM=0; SiPM<4; SiPM++) - { - delete hist[SiPM]; - delete histSiPMResponse[SiPM]; - if(graph[SiPM]) delete graph[SiPM]; - if(graph2[SiPM]) delete graph2[SiPM]; - } - for(size_t i=0; iSetOptStat(1111); - TCanvas c1("Photons","Photons",1000,1000); - c1.Divide(2,2); - for(int SiPM=0; SiPM<4; SiPM++) - { - c1.cd(SiPM+1); - gPad->SetLogy(); - _histP[0][SiPM]->Draw(); - gPad->Update(); - TPaveStats *stats0 = (TPaveStats*)_histP[0][SiPM]->FindObject("stats"); - stats0->SetTextColor(1); - stats0->SetLineColor(1); - double X1 = stats0->GetX1NDC(); - double Y1 = stats0->GetY1NDC(); - double X2 = stats0->GetX2NDC(); - double Y2 = stats0->GetY2NDC(); - _histP[1][SiPM]->Draw(); - gPad->Update(); - TPaveStats *stats1 = (TPaveStats*)_histP[1][SiPM]->FindObject("stats"); - stats1->SetTextColor(2); - stats1->SetLineColor(2); - stats1->SetX1NDC(X1); - stats1->SetY1NDC(Y1-(Y2-Y1)); - stats1->SetX2NDC(X2); - stats1->SetY2NDC(Y1); - _histP[0][SiPM]->Draw(); - _histP[1][SiPM]->Draw("same"); - } - c1.SaveAs("Photons.C"); - - TCanvas c2("ArrivalTimes","ArrivalTimes",1000,1000); - c2.Divide(2,2); - for(int SiPM=0; SiPM<4; SiPM++) - { - c2.cd(SiPM+1); - gPad->SetLogy(); - _histT[0][SiPM]->Draw(); - gPad->Update(); - TPaveStats *stats0 = (TPaveStats*)_histT[0][SiPM]->FindObject("stats"); - stats0->SetTextColor(1); - stats0->SetLineColor(1); - double X1 = stats0->GetX1NDC(); - double Y1 = stats0->GetY1NDC(); - double X2 = stats0->GetX2NDC(); - double Y2 = stats0->GetY2NDC(); - _histT[1][SiPM]->Draw(); - gPad->Update(); - TPaveStats *stats1 = (TPaveStats*)_histT[1][SiPM]->FindObject("stats"); - stats1->SetTextColor(2); - stats1->SetLineColor(2); - stats1->SetX1NDC(X1); - stats1->SetY1NDC(Y1-(Y2-Y1)); - stats1->SetX2NDC(X2); - stats1->SetY2NDC(Y1); - _histT[0][SiPM]->Draw(); - _histT[1][SiPM]->Draw("same"); - } - c2.SaveAs("ArrivalTimes.C"); - - TCanvas c3("PEs","PEs",1000,1000); - c3.Divide(2,2); - for(int SiPM=0; SiPM<4; SiPM++) - { - c3.cd(SiPM+1); - gPad->SetLogy(); - _histPE[SiPM]->Draw(); - } - c3.SaveAs("PEs.C"); -} - diff --git a/CRVResponse/standalone/wls/src/WLSExtraPhysics.cc b/CRVResponse/standalone/wls/src/WLSExtraPhysics.cc deleted file mode 100644 index de6b8442ab..0000000000 --- a/CRVResponse/standalone/wls/src/WLSExtraPhysics.cc +++ /dev/null @@ -1,85 +0,0 @@ -// -// ******************************************************************** -// * License and Disclaimer * -// * * -// * The Geant4 software is copyright of the Copyright Holders of * -// * the Geant4 Collaboration. It is provided under the terms and * -// * conditions of the Geant4 Software License, included in the file * -// * LICENSE and available at http://cern.ch/geant4/license . These * -// * include a list of copyright holders. * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. Please see the license in the file LICENSE and URL above * -// * for the full disclaimer and the limitation of liability. * -// * * -// * This code implementation is the result of the scientific and * -// * technical work of the GEANT4 collaboration. * -// * By using, copying, modifying or distributing the software (or * -// * any work based on the software) you agree to acknowledge its * -// * use in resulting scientific publications, and indicate your * -// * acceptance of all terms of the Geant4 Software license. * -// ******************************************************************** -// -/// \file optical/wls/src/WLSExtraPhysics.cc -/// \brief Implementation of the WLSExtraPhysics class -// -// -// - -#include "globals.hh" -#include "G4ParticleDefinition.hh" -#include "G4ParticleTable.hh" -#include "G4ProcessManager.hh" - -#include "G4UserSpecialCuts.hh" -#include "G4StepLimiter.hh" - -#include "WLSExtraPhysics.hh" - -WLSExtraPhysics::WLSExtraPhysics() - : G4VPhysicsConstructor("Extra") { } - -WLSExtraPhysics::~WLSExtraPhysics() { } - -void WLSExtraPhysics::ConstructParticle() { } - -void WLSExtraPhysics::ConstructProcess() -{ - G4cout << "WLSExtraPhysics:: Add Extra Physics Processes" - << G4endl; - - auto aParticleIterator=GetParticleIterator(); - aParticleIterator->reset(); - - while ((*aParticleIterator)()) { - G4ParticleDefinition* particle = aParticleIterator->value(); - G4ProcessManager* pmanager = particle->GetProcessManager(); - G4String particleName = particle->GetParticleName(); - G4double charge = particle->GetPDGCharge(); - - if (!pmanager) { - std::ostringstream o; - o << "Particle " << particleName << "without a Process Manager"; - G4Exception("WLSExtraPhysics::ConstructProcess()","", - FatalException,o.str().c_str()); - } - - if (particleName == "opticalphoton") break; - - if (charge != 0.0) { - // All charged particles should have a step limiter - // to make sure that the steps do not get too long. - pmanager->AddDiscreteProcess(new G4StepLimiter()); - pmanager->AddDiscreteProcess(new G4UserSpecialCuts()); - } else if (particleName == "neutron") { - // time cuts for ONLY neutrons: - pmanager->AddDiscreteProcess(new G4UserSpecialCuts()); - } else { - // Energy cuts for all other neutral particles - pmanager->AddDiscreteProcess(new G4UserSpecialCuts()); - } - } -} diff --git a/CRVResponse/standalone/wls/src/WLSMaterials.cc b/CRVResponse/standalone/wls/src/WLSMaterials.cc deleted file mode 100644 index 89ce50b27c..0000000000 --- a/CRVResponse/standalone/wls/src/WLSMaterials.cc +++ /dev/null @@ -1,619 +0,0 @@ -#include "WLSMaterials.hh" - -#include "G4SystemOfUnits.hh" - -WLSMaterials::WLSMaterials() -{ - nistMan = G4NistManager::Instance(); - - nistMan->SetVerbose(2); - - CreateMaterials(); -} - -WLSMaterials::~WLSMaterials() -{ - delete PMMA; - delete FPethylene; - delete PolystyreneFiber; - delete PolystyreneScint; - delete Epoxy; - delete Coating; -} - -WLSMaterials* WLSMaterials::instance = NULL; - -WLSMaterials* WLSMaterials::GetInstance() -{ - if(instance == 0) instance = new WLSMaterials(); - return instance; -} - -G4Material* WLSMaterials::GetMaterial(const G4String material) -{ - G4Material* mat = nistMan->FindOrBuildMaterial(material); - - if (!mat) mat = G4Material::GetMaterial(material); - if (!mat) - { - std::ostringstream o; - o << "Material " << material << " not found!"; - G4Exception("WLSMaterials::GetMaterial","", FatalException,o.str().c_str()); - } - - return mat; -} - -void WLSMaterials::CreateMaterials() -{ - G4double density; - G4int ncomponents; - G4double fractionmass; - std::vector natoms; - std::vector fractionMass; - std::vector elements; - - // Materials Definitions - // ===================== - - //-------------------------------------------------- - // Vacuum - //-------------------------------------------------- - - nistMan->FindOrBuildMaterial("G4_Galactic"); - - //-------------------------------------------------- - // Air - //-------------------------------------------------- - - Air = nistMan->FindOrBuildMaterial("G4_AIR"); - - //-------------------------------------------------- - // PVC - //-------------------------------------------------- - - PVC = nistMan->FindOrBuildMaterial("G4_POLYVINYL_CHLORIDE"); - - //-------------------------------------------------- - // PMMA (Fiber Inner Cladding) - //-------------------------------------------------- - - elements.push_back("C"); natoms.push_back(5); - elements.push_back("H"); natoms.push_back(8); - elements.push_back("O"); natoms.push_back(2); - - density = 1.190*g/cm3; - - PMMA = nistMan->ConstructNewMaterial("PMMA", elements, natoms, density); - - elements.clear(); - natoms.clear(); - - //-------------------------------------------------- - //Fluorinated Polyethylene (Fiber Outer Cladding) - //-------------------------------------------------- - - elements.push_back("C"); natoms.push_back(2); - elements.push_back("H"); natoms.push_back(4); -//TODO: where is the flour? - - density = 1.430*g/cm3; - - FPethylene = nistMan->ConstructNewMaterial("FPethylene", elements, natoms, density); - - elements.clear(); - natoms.clear(); - - //-------------------------------------------------- - // Polystyrene: - //-------------------------------------------------- - - elements.push_back("C"); natoms.push_back(8); - elements.push_back("H"); natoms.push_back(8); - - density = 1.050*g/cm3; - - PolystyreneFiber = nistMan->ConstructNewMaterial("PolystyreneFiber", elements, natoms, density); - PolystyreneScint = nistMan->ConstructNewMaterial("PolystyreneScint", elements, natoms, density); - - elements.clear(); - natoms.clear(); - - //-------------------------------------------------- - // Aluminium - //-------------------------------------------------- - - nistMan->FindOrBuildMaterial("G4_Al"); - - //-------------------------------------------------- - // Silicon - //-------------------------------------------------- - - nistMan->FindOrBuildMaterial("G4_Si"); - - //-------------------------------------------------- - // Epoxy - //-------------------------------------------------- - - elements.push_back("C"); natoms.push_back(21); - elements.push_back("H"); natoms.push_back(25); - elements.push_back("Cl"); natoms.push_back(1); - elements.push_back("O"); natoms.push_back(5); - - density = 1.25*g/cm3; - - Epoxy = nistMan->ConstructNewMaterial("Epoxy", elements, natoms, density); - - elements.clear(); - natoms.clear(); - - //-------------------------------------------------- - // TiO2 - //-------------------------------------------------- - - elements.push_back("Ti"); natoms.push_back(1); - elements.push_back("O"); natoms.push_back(2); - - density = 4.26*g/cm3; - - G4Material* TiO2 = nistMan->ConstructNewMaterial("TiO2", elements, natoms, density); - - elements.clear(); - natoms.clear(); - - //-------------------------------------------------- - // Scintillator Coating - 30% TiO2 and 70% polystyrene by weight. - //-------------------------------------------------- - - density = 2.01*g/cm3; - - Coating = new G4Material("Coating", density, ncomponents=2); - - Coating->AddMaterial(TiO2, fractionmass = 30*perCent); - Coating->AddMaterial(PolystyreneScint, fractionmass = 70*perCent); - - // - // ------------ Generate & Add Material Properties Table ------------ - // - - //-------------------------------------------------- - // Air - //-------------------------------------------------- - - const G4int nEntriesRefractiveIndexAir = 2; - G4double PhotonEnergyRefractiveIndexAir[nEntriesRefractiveIndexAir] = {2.00*eV, 15.75*eV}; - G4double RefractiveIndexAir[nEntriesRefractiveIndexAir] = {1.00, 1.00}; - - G4MaterialPropertiesTable* MPTAir = new G4MaterialPropertiesTable(); - MPTAir->AddProperty("RINDEX", PhotonEnergyRefractiveIndexAir, RefractiveIndexAir, nEntriesRefractiveIndexAir); - - Air->SetMaterialPropertiesTable(MPTAir); - - //-------------------------------------------------- - // Fibers Core (polystyrene) - //-------------------------------------------------- - - //refractive index polystyrene - //up to 4eV: https://refractiveindex.info/?shelf=organic&book=poly(methyl_methacrylate)&page=Sultanova - //above 4eV: (http://zeus.phys.uconn.edu/halld/tagger/fp-prototype/polystyrene_abs.pdf - //assumption: refractive index is the same for the PS+Y11 and PS+PPO+POPOP mixtures - const G4int nEntriesRefractiveIndexPS = 61; - G4double PhotonEnergyRefractiveIndexPS[nEntriesRefractiveIndexPS] = - { - 2.00, 2.05, 2.10, 2.15, 2.20, 2.25, 2.30, 2.35, 2.40, 2.45, - 2.50, 2.55, 2.60, 2.65, 2.70, 2.75, 2.80, 2.85, 2.90, 2.95, - 3.00, 3.05, 3.10, 3.15, 3.20, 3.25, 3.30, 3.40, 3.50, 3.60, - 3.70, 3.80, 3.90, 4.00, - 4.50, 5.00, 5.25, 5.50, 5.75, 6.00, 6.25, 6.50, 7.00, 7.50, - 8.00, 8.50, 9.00, 9.50, 10.00, 10.50, 11.00, 11.50, 12.00, 12.50, - 13.00, 13.50, 14.00, 14.50, 15.00, 15.50, 15.75 - }; - for(int i=0; iAddProperty("RINDEX",PhotonEnergyRefractiveIndexPS,RefractiveIndexPS,nEntriesRefractiveIndexPS); - MPTWLSfiber->AddProperty("WLSY11ABSLENGTH",PhotonEnergyAbsorptionY11,AbsorptionY11,nEntriesAbsorptionY11); - MPTWLSfiber->AddProperty("WLSY11QUANTUMYIELD",PhotonEnergyQuantumYieldY11,QuantumYieldY11,nEntriesQuantumYieldY11); - MPTWLSfiber->AddProperty("WLSY11COMPONENT",PhotonEnergyEmissionY11,EmissionY11,nEntriesEmissionY11); - MPTWLSfiber->AddConstProperty("WLSY11TIMECONSTANT", 10.0*ns); - - PolystyreneFiber->SetMaterialPropertiesTable(MPTWLSfiber); - - //-------------------------------------------------- - // Fiber Inner Cladding (PMMA) - //-------------------------------------------------- - - //refractive index PMMA - //up to 4eV: https://refractiveindex.info/?shelf=organic&book=poly%28methyl_methacrylate%29&page=Sultanova - const G4int nEntriesRefractiveIndexClad1 = 48; - G4double PhotonEnergyRefractiveIndexClad1[nEntriesRefractiveIndexClad1] = - { - 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90, - 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, - 4.00, - 4.50, 5.00, 5.25, 5.50, 5.75, 6.00, 6.25, 6.50, 7.00, 7.50, - 8.00, 8.50, 9.00, 9.50, 10.00, 10.50, 11.00, 11.50, 12.00, 12.50, - 13.00, 13.50, 14.00, 14.50, 15.00, 15.50, 15.75 - }; - for(int i=0; iAddProperty("RINDEX",PhotonEnergyRefractiveIndexClad1,RefractiveIndexClad1,nEntriesRefractiveIndexClad1); - - PMMA->SetMaterialPropertiesTable(MPTClad1); - - //-------------------------------------------------- - // Fiber Outer Cladding (Fluorinated Polyethylene) - //-------------------------------------------------- - - //refractive index outer cladding - //0.07 less than PMMA (due to the lack of data) - G4double RefractiveIndexClad2[nEntriesRefractiveIndexClad1]; - for(int i=0; iAddProperty("RINDEX",PhotonEnergyRefractiveIndexClad1,RefractiveIndexClad2,nEntriesRefractiveIndexClad1); - - FPethylene->SetMaterialPropertiesTable(MPTClad2); - - //-------------------------------------------------- - // Epoxy (SiPM window) - //-------------------------------------------------- - - //refractive index of Epoxy SiPM window is 1.55 according to Hamamatsu - assumed to be at 589nm. - //since no other information is given, the fiber polystyrene index of refraction is used -0.04. - G4double RefractiveIndexEpoxy[nEntriesRefractiveIndexPS]; - for(int i=0; iAddProperty("RINDEX", PhotonEnergyRefractiveIndexPS, RefractiveIndexEpoxy, nEntriesRefractiveIndexPS); - - Epoxy->SetMaterialPropertiesTable(MPTEpoxy); - - //-------------------------------------------------- - // Polystyrene - //-------------------------------------------------- - - //refractive index polystyrene same as for fiber (see above) - - - //emission spectrum for PPO (used for WLS [for PS+PPO] and for scintillation [for PS+PPO]) - //(https://pubs.acs.org/doi/suppl/10.1021/ac062160k/suppl_file/ac062160ksi20061218_105400.pdf) - //notes: -most emissions (due to WLS and scintillation) happen via an non-radiative energy transfer from PS to PPO - // followed by a PPO emission, so that the PS emissions can be neglected. - // -for WLS, no distingtion is made between photons being absorped by PS or PPO. - const G4int nEntriesEmissionPPO = 70; - G4double PhotonEnergyEmissionPPO[nEntriesEmissionPPO] = - { - 2.00, - 2.48, 2.50, 2.52, 2.54, 2.56, 2.58, 2.60, 2.62, 2.64, 2.66, - 2.68, 2.70, 2.72, 2.74, 2.76, 2.78, 2.80, 2.82, 2.84, 2.86, - 2.88, 2.90, 2.92, 2.94, 2.96, 2.98, 3.00, 3.02, 3.04, 3.06, - 3.08, 3.10, 3.12, 3.14, 3.16, 3.18, 3.20, 3.22, 3.24, 3.26, - 3.28, 3.30, 3.32, 3.34, 3.36, 3.38, 3.40, 3.42, 3.44, 3.46, - 3.48, 3.50, 3.52, 3.54, 3.56, 3.58, 3.60, 3.62, 3.64, 3.66, - 3.68, 3.70, 3.72, 3.74, 3.76, 3.78, 3.80, - 3.82, 15.75 - }; - for(int i=0; iAddProperty("FASTCOMPONENT",PhotonEnergyEmissionPPO,EmissionPPO,nEntriesEmissionPPO); - MPTPolystyrene->AddConstProperty("FASTTIMECONSTANT", 1.36*ns); //PPO in cyclohexane (Boens et al.) - MPTPolystyrene->AddConstProperty("FASTSCINTILLATIONRISETIME", 1.0*ns); //exact value not know, but the rise time of PS based scintillators tend to be around 1ns - MPTPolystyrene->AddConstProperty("SCINTILLATIONYIELD",35900./MeV); //to match the testbeam number of PEs - MPTPolystyrene->AddConstProperty("RESOLUTIONSCALE",1.0); - MPTPolystyrene->AddConstProperty("YIELDRATIO", 1.0); //100% fast component - - //for cerenkov emission of PS, and light refraction at the PS borders - MPTPolystyrene->AddProperty("RINDEX",PhotonEnergyRefractiveIndexPS,RefractiveIndexPS,nEntriesRefractiveIndexPS); - - //for WLS absorption/emission of PS+PPO - MPTPolystyrene->AddProperty("WLSPSPPOCOMPONENT",PhotonEnergyEmissionPPO,EmissionPPO,nEntriesEmissionPPO); - MPTPolystyrene->AddProperty("WLSPSPPOQUANTUMYIELD",PhotonEnergyQuantumYieldPSPPO,QuantumYieldPSPPO,nEntriesQuantumYieldPSPPO); - MPTPolystyrene->AddProperty("WLSPSPPOABSLENGTH",PhotonEnergyAbsorptionPSPPO,AbsorptionPSPPO,nEntriesAbsorptionPSPPO); - MPTPolystyrene->AddConstProperty("WLSPSPPOTIMECONSTANT", 1.36*ns); //PPO in cyclohexane (Boens et al.) - - //for WLS absorption/emission of POPOP - MPTPolystyrene->AddProperty("WLSPOPOPCOMPONENT",PhotonEnergyEmissionPOPOP,EmissionPOPOP,nEntriesEmissionPOPOP); - MPTPolystyrene->AddProperty("WLSPOPOPQUANTUMYIELD",PhotonEnergyQuantumYieldPOPOP,QuantumYieldPOPOP,nEntriesQuantumYieldPOPOP); - MPTPolystyrene->AddProperty("WLSPOPOPABSLENGTH",PhotonEnergyAbsorptionPOPOP,AbsorptionPOPOP,nEntriesAbsorptionPOPOP); - MPTPolystyrene->AddConstProperty("WLSPOPOPTIMECONSTANT", 1.12*ns); //POPOP in cyclohexane (Boesn et al.) - - PolystyreneScint->SetMaterialPropertiesTable(MPTPolystyrene); - - PolystyreneScint->GetIonisation()->SetBirksConstant(0.126*mm/MeV); //https://arxiv.org/pdf/1106.5649v2.pdf -} diff --git a/CRVResponse/standalone/wls/src/WLSOpticalPhysics.cc b/CRVResponse/standalone/wls/src/WLSOpticalPhysics.cc deleted file mode 100644 index 62953a68fb..0000000000 --- a/CRVResponse/standalone/wls/src/WLSOpticalPhysics.cc +++ /dev/null @@ -1,160 +0,0 @@ -// -// ******************************************************************** -// * License and Disclaimer * -// * * -// * The Geant4 software is copyright of the Copyright Holders of * -// * the Geant4 Collaboration. It is provided under the terms and * -// * conditions of the Geant4 Software License, included in the file * -// * LICENSE and available at http://cern.ch/geant4/license . These * -// * include a list of copyright holders. * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. Please see the license in the file LICENSE and URL above * -// * for the full disclaimer and the limitation of liability. * -// * * -// * This code implementation is the result of the scientific and * -// * technical work of the GEANT4 collaboration. * -// * By using, copying, modifying or distributing the software (or * -// * any work based on the software) you agree to acknowledge its * -// * use in resulting scientific publications, and indicate your * -// * acceptance of all terms of the Geant4 Software license. * -// ******************************************************************** -// -/// \file optical/wls/src/WLSOpticalPhysics.cc -/// \brief Implementation of the WLSOpticalPhysics class -// -// -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "G4LossTableManager.hh" -#include "G4EmSaturation.hh" - -#include "WLSOpticalPhysics.hh" - -WLSOpticalPhysics::WLSOpticalPhysics(G4bool toggle) - : G4VPhysicsConstructor("Optical") -{ - theWLSY11Process = NULL; - theWLSPSPPOProcess = NULL; - theWLSPOPOPProcess = NULL; - theScintProcess = NULL; - theCerenkovProcess = NULL; - theBoundaryProcess = NULL; - theAbsorptionProcess = NULL; - theRayleighScattering = NULL; - theMieHGScatteringProcess = NULL; - - AbsorptionOn = toggle; -} - -WLSOpticalPhysics::~WLSOpticalPhysics() { } - -//#include "G4ParticleDefinition.hh" -//#include "G4ParticleTable.hh" - -#include "G4OpticalPhoton.hh" - -void WLSOpticalPhysics::ConstructParticle() -{ - G4OpticalPhoton::OpticalPhotonDefinition(); -} - -#include "G4ProcessManager.hh" - -void WLSOpticalPhysics::ConstructProcess() -{ - G4cout << "WLSOpticalPhysics:: Add Optical Physics Processes" - << G4endl; - - theWLSY11Process = new G4OpWLSY11(); - theWLSPSPPOProcess = new G4OpWLSPSPPO(); - theWLSPOPOPProcess = new G4OpWLSPOPOP(); - - theScintProcess = new G4Scintillation(); - theScintProcess->SetTrackSecondariesFirst(true); - theScintProcess->SetFiniteRiseTime(true); - - theCerenkovProcess = new G4CerenkovNew(); - theCerenkovProcess->SetMaxNumPhotonsPerStep(300); - theCerenkovProcess->SetTrackSecondariesFirst(true); - - theAbsorptionProcess = new G4OpAbsorption(); - theRayleighScattering = new G4OpRayleigh(); - theMieHGScatteringProcess = new G4OpMieHG(); - theBoundaryProcess = new G4OpBoundaryProcess(); - - G4ProcessManager* pManager = - G4OpticalPhoton::OpticalPhoton()->GetProcessManager(); - - if (!pManager) { - std::ostringstream o; - o << "Optical Photon without a Process Manager"; - G4Exception("WLSOpticalPhysics::ConstructProcess()","", - FatalException,o.str().c_str()); - } - - if (AbsorptionOn) pManager->AddDiscreteProcess(theAbsorptionProcess); - - //pManager->AddDiscreteProcess(theRayleighScattering); - //pManager->AddDiscreteProcess(theMieHGScatteringProcess); - - pManager->AddDiscreteProcess(theBoundaryProcess); - - //theWLSProcess->UseTimeProfile("delta"); - theWLSY11Process->UseTimeProfile("exponential"); - theWLSPSPPOProcess->UseTimeProfile("exponential"); - theWLSPOPOPProcess->UseTimeProfile("exponential"); - - pManager->AddDiscreteProcess(theWLSY11Process); - pManager->AddDiscreteProcess(theWLSPSPPOProcess); - pManager->AddDiscreteProcess(theWLSPOPOPProcess); - -//gets set by the material properties -// theScintProcess->SetScintillationYieldFactor(1.); -// theScintProcess->SetScintillationExcitationRatio(0.0); -// theScintProcess->SetTrackSecondariesFirst(true); - - // Use Birks Correction in the Scintillation process - - G4EmSaturation* emSaturation = G4LossTableManager::Instance()->EmSaturation(); - theScintProcess->AddSaturation(emSaturation); - - auto aParticleIterator=GetParticleIterator(); - aParticleIterator->reset(); - while ( (*aParticleIterator)() ){ - - G4ParticleDefinition* particle = aParticleIterator->value(); - G4String particleName = particle->GetParticleName(); - - pManager = particle->GetProcessManager(); - if (!pManager) { - std::ostringstream o; - o << "Particle " << particleName << "without a Process Manager"; - G4Exception("WLSOpticalPhysics::ConstructProcess()","", - FatalException,o.str().c_str()); - } - - if(theCerenkovProcess->IsApplicable(*particle)){ - pManager->AddProcess(theCerenkovProcess); - pManager->SetProcessOrdering(theCerenkovProcess,idxPostStep); - } - if(theScintProcess->IsApplicable(*particle)){ - pManager->AddProcess(theScintProcess); - pManager->SetProcessOrderingToLast(theScintProcess,idxAtRest); - pManager->SetProcessOrderingToLast(theScintProcess,idxPostStep); - } - - } -} - -void WLSOpticalPhysics::SetNbOfPhotonsCerenkov(G4int MaxNumber) -{ - theCerenkovProcess->SetMaxNumPhotonsPerStep(MaxNumber); -} diff --git a/CRVResponse/standalone/wls/src/WLSPhysicsList.cc b/CRVResponse/standalone/wls/src/WLSPhysicsList.cc deleted file mode 100644 index 231278f96c..0000000000 --- a/CRVResponse/standalone/wls/src/WLSPhysicsList.cc +++ /dev/null @@ -1,303 +0,0 @@ -// -// ******************************************************************** -// * License and Disclaimer * -// * * -// * The Geant4 software is copyright of the Copyright Holders of * -// * the Geant4 Collaboration. It is provided under the terms and * -// * conditions of the Geant4 Software License, included in the file * -// * LICENSE and available at http://cern.ch/geant4/license . These * -// * include a list of copyright holders. * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. Please see the license in the file LICENSE and URL above * -// * for the full disclaimer and the limitation of liability. * -// * * -// * This code implementation is the result of the scientific and * -// * technical work of the GEANT4 collaboration. * -// * By using, copying, modifying or distributing the software (or * -// * any work based on the software) you agree to acknowledge its * -// * use in resulting scientific publications, and indicate your * -// * acceptance of all terms of the Geant4 Software license. * -// ******************************************************************** -// -/// \file optical/wls/src/WLSPhysicsList.cc -/// \brief Implementation of the WLSPhysicsList class -// -// -// - -#include "WLSPhysicsList.hh" - -#include "WLSExtraPhysics.hh" -#include "WLSOpticalPhysics.hh" - -#include "G4LossTableManager.hh" - -#include "G4ProcessManager.hh" -#include "G4ParticleTypes.hh" -#include "G4ParticleTable.hh" - -//#include "G4PhysListFactory.hh" -#include "FTFP_BERT.hh" -#include "QGSP_BERT_HP.hh" - -#include "G4Gamma.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" - -#include "WLSStepMax.hh" - -#include "G4ProcessTable.hh" - -#include "G4PionDecayMakeSpin.hh" -#include "G4DecayWithSpin.hh" - -#include "G4DecayTable.hh" -#include "G4MuonDecayChannelWithSpin.hh" -#include "G4MuonRadiativeDecayChannelWithSpin.hh" - -#include "G4RadioactiveDecayPhysics.hh" - -#include "G4SystemOfUnits.hh" - -WLSPhysicsList::WLSPhysicsList() : G4VModularPhysicsList() -{ - G4LossTableManager::Instance(); - - defaultCutValue = 1.*mm; - fCutForGamma = defaultCutValue; - fCutForElectron = defaultCutValue; - fCutForPositron = defaultCutValue; - - G4VModularPhysicsList* phys = new QGSP_BERT_HP; -// G4VModularPhysicsList* phys = new FTFP_BERT; - - for (G4int i = 0; ; ++i) { - G4VPhysicsConstructor* elem = - const_cast (phys->GetPhysics(i)); - if (elem == NULL) break; - G4cout << "RegisterPhysics: " << elem->GetPhysicsName() << G4endl; - RegisterPhysics(elem); - } - - AbsorptionOn = true; - - fPhysicsVector = - GetSubInstanceManager().offset[GetInstanceID()].physicsVector; - - fPhysicsVector->push_back(new WLSExtraPhysics()); - fPhysicsVector->push_back(opticalPhysics = new WLSOpticalPhysics(AbsorptionOn)); - - fPhysicsVector->push_back(new G4RadioactiveDecayPhysics()); - - stepMaxProcess = new WLSStepMax(); -} - -WLSPhysicsList::~WLSPhysicsList() -{ - delete stepMaxProcess; -} - -void WLSPhysicsList::ClearPhysics() -{ - for (G4PhysConstVector::iterator p = fPhysicsVector->begin(); - p != fPhysicsVector->end(); ++p) { - delete (*p); - } - fPhysicsVector->clear(); -} - -void WLSPhysicsList::ConstructParticle() -{ - G4VModularPhysicsList::ConstructParticle(); - - G4DecayTable* MuonPlusDecayTable = new G4DecayTable(); - MuonPlusDecayTable -> Insert(new - G4MuonDecayChannelWithSpin("mu+",0.986)); - MuonPlusDecayTable -> Insert(new - G4MuonRadiativeDecayChannelWithSpin("mu+",0.014)); - G4MuonPlus::MuonPlusDefinition() -> SetDecayTable(MuonPlusDecayTable); - - G4DecayTable* MuonMinusDecayTable = new G4DecayTable(); - MuonMinusDecayTable -> Insert(new - G4MuonDecayChannelWithSpin("mu-",0.986)); - MuonMinusDecayTable -> Insert(new - G4MuonRadiativeDecayChannelWithSpin("mu-",0.014)); - G4MuonMinus::MuonMinusDefinition() -> SetDecayTable(MuonMinusDecayTable); - -} - -void WLSPhysicsList::ConstructProcess() -{ - G4VModularPhysicsList::ConstructProcess(); - - SetVerbose(0); - - G4DecayWithSpin* decayWithSpin = new G4DecayWithSpin(); - - G4ProcessTable* processTable = G4ProcessTable::GetProcessTable(); - - G4VProcess* decay; - decay = processTable->FindProcess("Decay",G4MuonPlus::MuonPlus()); - - G4ProcessManager* fManager; - fManager = G4MuonPlus::MuonPlus()->GetProcessManager(); - - if (fManager) { - if (decay) fManager->RemoveProcess(decay); - fManager->AddProcess(decayWithSpin); - // set ordering for PostStepDoIt and AtRestDoIt - fManager ->SetProcessOrdering(decayWithSpin, idxPostStep); - fManager ->SetProcessOrdering(decayWithSpin, idxAtRest); - } - - decay = processTable->FindProcess("Decay",G4MuonMinus::MuonMinus()); - - fManager = G4MuonMinus::MuonMinus()->GetProcessManager(); - - if (fManager) { - if (decay) fManager->RemoveProcess(decay); - fManager->AddProcess(decayWithSpin); - // set ordering for PostStepDoIt and AtRestDoIt - fManager ->SetProcessOrdering(decayWithSpin, idxPostStep); - fManager ->SetProcessOrdering(decayWithSpin, idxAtRest); - } - - G4PionDecayMakeSpin* poldecay = new G4PionDecayMakeSpin(); - - decay = processTable->FindProcess("Decay",G4PionPlus::PionPlus()); - - fManager = G4PionPlus::PionPlus()->GetProcessManager(); - - if (fManager) { - if (decay) fManager->RemoveProcess(decay); - fManager->AddProcess(poldecay); - // set ordering for PostStepDoIt and AtRestDoIt - fManager ->SetProcessOrdering(poldecay, idxPostStep); - fManager ->SetProcessOrdering(poldecay, idxAtRest); - } - - decay = processTable->FindProcess("Decay",G4PionMinus::PionMinus()); - - fManager = G4PionMinus::PionMinus()->GetProcessManager(); - - if (fManager) { - if (decay) fManager->RemoveProcess(decay); - fManager->AddProcess(poldecay); - // set ordering for PostStepDoIt and AtRestDoIt - fManager ->SetProcessOrdering(poldecay, idxPostStep); - fManager ->SetProcessOrdering(poldecay, idxAtRest); - } - - AddStepMax(); - -} - -void WLSPhysicsList::RemoveFromPhysicsList(const G4String& name) -{ - G4bool success = false; - for (G4PhysConstVector::iterator p = fPhysicsVector->begin(); - p != fPhysicsVector->end(); ++p) { - G4VPhysicsConstructor* e = (*p); - if (e->GetPhysicsName() == name) { - fPhysicsVector->erase(p); - success = true; - break; - } - } - if (!success) { - G4ExceptionDescription message; - message << "PhysicsList::RemoveFromEMPhysicsList "<< name << "not found"; - G4Exception("example WLSPhysicsList::RemoveFromPhysicsList()", - "ExamWLSPhysicsList01",FatalException,message); - } -} - -void WLSPhysicsList::SetAbsorption(G4bool toggle) -{ - AbsorptionOn = toggle; - RemoveFromPhysicsList("Optical"); - fPhysicsVector->push_back(opticalPhysics = new WLSOpticalPhysics(toggle)); - opticalPhysics->ConstructProcess(); -} - -void WLSPhysicsList::SetCuts() -{ - if (verboseLevel >0) { - G4cout << "WLSPhysicsList::SetCuts:"; - G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") - << G4endl; - } - - // set cut values for gamma at first and for e- second and next for e+, - // because some processes for e+/e- need cut values for gamma - SetCutValue(fCutForGamma, "gamma"); - SetCutValue(fCutForElectron, "e-"); - SetCutValue(fCutForPositron, "e+"); - - if (verboseLevel>0) DumpCutValuesTable(); -} - -void WLSPhysicsList::SetCutForGamma(G4double cut) -{ - fCutForGamma = cut; - SetParticleCuts(fCutForGamma, G4Gamma::Gamma()); -} - -void WLSPhysicsList::SetCutForElectron(G4double cut) -{ - fCutForElectron = cut; - SetParticleCuts(fCutForElectron, G4Electron::Electron()); -} - -void WLSPhysicsList::SetCutForPositron(G4double cut) -{ - fCutForPositron = cut; - SetParticleCuts(fCutForPositron, G4Positron::Positron()); -} - -void WLSPhysicsList::SetStepMax(G4double step) -{ - MaxChargedStep = step; - stepMaxProcess->SetStepMax(MaxChargedStep); -} - -WLSStepMax* WLSPhysicsList::GetStepMaxProcess() -{ - return stepMaxProcess; -} - -void WLSPhysicsList::AddStepMax() -{ - // Step limitation seen as a process - - auto theParticleIterator=GetParticleIterator(); - theParticleIterator->reset(); - while ((*theParticleIterator)()){ - G4ParticleDefinition* particle = theParticleIterator->value(); - G4ProcessManager* pmanager = particle->GetProcessManager(); - - if (stepMaxProcess->IsApplicable(*particle) && !particle->IsShortLived()) - { - if (pmanager) pmanager ->AddDiscreteProcess(stepMaxProcess); - } - } -} - -void WLSPhysicsList::SetNbOfPhotonsCerenkov(G4int MaxNumber) -{ - opticalPhysics->SetNbOfPhotonsCerenkov(MaxNumber); -} - -void WLSPhysicsList::SetVerbose(G4int verbose) -{ - opticalPhysics->GetCerenkovProcess()->SetVerboseLevel(verbose); - opticalPhysics->GetScintillationProcess()->SetVerboseLevel(verbose); - opticalPhysics->GetAbsorptionProcess()->SetVerboseLevel(verbose); - opticalPhysics->GetRayleighScatteringProcess()->SetVerboseLevel(verbose); - opticalPhysics->GetMieHGScatteringProcess()->SetVerboseLevel(verbose); - opticalPhysics->GetBoundaryProcess()->SetVerboseLevel(verbose); -} diff --git a/CRVResponse/standalone/wls/src/WLSPrimaryGeneratorAction.cc b/CRVResponse/standalone/wls/src/WLSPrimaryGeneratorAction.cc deleted file mode 100644 index 857ee940ec..0000000000 --- a/CRVResponse/standalone/wls/src/WLSPrimaryGeneratorAction.cc +++ /dev/null @@ -1,500 +0,0 @@ -#include "G4ios.hh" -#include "G4Event.hh" - -#include "G4ParticleGun.hh" - -#include "G4ParticleTable.hh" -#include "G4ParticleDefinition.hh" - -#include "G4PhysicsTable.hh" - -#include "Randomize.hh" - -#include "WLSPrimaryGeneratorAction.hh" -#include "WLSEventAction.hh" -#include "WLSSteppingAction.hh" -#include "WLSDetectorConstruction.hh" - -#include "G4Material.hh" -#include "G4MaterialPropertiesTable.hh" -#include "G4MaterialPropertyVector.hh" -#include "G4SystemOfUnits.hh" -#include "G4VPhysicalVolume.hh" -#include "G4TransportationManager.hh" -#include "G4Navigator.hh" - -#include "G4PhysicalConstants.hh" -#include "G4SystemOfUnits.hh" - -#include - -WLSPrimaryGeneratorAction::WLSPrimaryGeneratorAction(WLSSteppingAction::simulationMode mode, - int numberOfPhotons, int simType, int startBin, bool verbose, double posY, double posZ) : - _mode(mode), - _numberOfPhotons(numberOfPhotons), - _simType(simType), - _currentBin(startBin), - _verbose(verbose), - _first(true), - _posY(posY), _posZ(posZ) -{ - _randomEngine = CLHEP::HepRandom::getTheEngine(); - _particleGun = new G4ParticleGun(1); - G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); - - if(_mode==WLSSteppingAction::CreateLookupTables) - { - G4ParticleDefinition* particle = particleTable->FindParticle("opticalphoton"); - _particleGun->SetParticleDefinition(particle); - } - if(_mode==WLSSteppingAction::UseGeantOnly || _mode==WLSSteppingAction::UseGeantAndLookupTables) - { -#ifndef FIBERTEST - G4ParticleDefinition* particle = particleTable->FindParticle("proton"); - _particleGun->SetParticleEnergy(120.*GeV); -#else -#pragma message "USING FIBERTEST" - G4ParticleDefinition* particle = particleTable->FindParticle("opticalphoton"); - _particleGun->SetParticleEnergy(2.88*eV); -#endif - _particleGun->SetParticleDefinition(particle); - _particleGun->SetParticleMomentumDirection(G4ThreeVector(1., 0., 0.)); - _particleGun->SetParticleTime(0); - } -} - -WLSPrimaryGeneratorAction::~WLSPrimaryGeneratorAction() -{ - delete _particleGun; -} - -void WLSPrimaryGeneratorAction::BuildEmissionSpectrum() -{ - G4Material* scintillator = G4Material::GetMaterial("PolystyreneScint",true); - G4MaterialPropertiesTable* scintillatorPropertiesTable = scintillator->GetMaterialPropertiesTable(); - - _scintillationRiseTime = scintillatorPropertiesTable->GetConstProperty("FASTSCINTILLATIONRISETIME"); - _scintillationDecayTime = scintillatorPropertiesTable->GetConstProperty("FASTTIMECONSTANT"); - -//scintillation: build the emission integral -//from G4Scintillation::BuildThePhysicsTable() - const G4MaterialPropertyVector &component = *scintillatorPropertiesTable->GetProperty("FASTCOMPONENT"); //ignore slow component - - double currentEnergy = component.Energy(0); - double currentDifferentialProb = component[0]; - double currentIntegratedProb = 0.0; - _emissionIntegral.InsertValues(currentEnergy, currentIntegratedProb); - - for(size_t i=1; iGetProperty("RINDEX"); - _cerenkovEnergyMinScintillator = _rindexScintillator->GetMinLowEdgeEnergy(); - _cerenkovEnergyMaxScintillator = _rindexScintillator->GetMaxLowEdgeEnergy(); - _maxRIndexScintillator = (*_rindexScintillator)[0]; - for(size_t i=1; i<_rindexScintillator->GetVectorLength(); i++) - { - double currentRindex=(*_rindexScintillator)[i]; - if(currentRindex>_maxRIndexScintillator) _maxRIndexScintillator=currentRindex; - } - -//Cerenkov: get the properties to generate the Cerenkov photons in fiber (assume constant rindex) - G4Material *fiber = G4Material::GetMaterial("PolystyreneFiber",true); //fiber - G4MaterialPropertiesTable* fiberPropertiesTable = fiber->GetMaterialPropertiesTable(); - _rindexFiber = fiberPropertiesTable->GetProperty("RINDEX"); - _cerenkovEnergyMinFiber = _rindexFiber->GetMinLowEdgeEnergy(); - _cerenkovEnergyMaxFiber = _rindexFiber->GetMaxLowEdgeEnergy(); - _maxRIndexFiber = (*_rindexFiber)[0]; - for(size_t i=1; i<_rindexFiber->GetVectorLength(); i++) - { - double currentRindex=(*_rindexFiber)[i]; - if(currentRindex>_maxRIndexFiber) _maxRIndexFiber=currentRindex; - } -} - -bool WLSPrimaryGeneratorAction::SetNextBins() -{ - const std::vector &xBins = WLSDetectorConstruction::Instance()->GetXBins(); - const std::vector &yBins = WLSDetectorConstruction::Instance()->GetYBins(); - const std::vector &zBins = WLSDetectorConstruction::Instance()->GetZBins(); - const std::vector &betaBins = WLSDetectorConstruction::Instance()->GetBetaBins(); - const std::vector &thetaBins = WLSDetectorConstruction::Instance()->GetThetaBins(); - const std::vector &phiBins = WLSDetectorConstruction::Instance()->GetPhiBins(); - const std::vector &rBins = WLSDetectorConstruction::Instance()->GetRBins(); - - int nXBins=xBins.size()-1; //e.g. 3 bins need 4 entries in the vector (for 3 bin boundaries) - int nYBins=yBins.size()-1; - int nZBins=zBins.size()-1; - int nBetaBins=betaBins.size()-1; - int nThetaBins=thetaBins.size()-1; - int nPhiBins=phiBins.size()-1; - int nRBins=rBins.size()-1; - -//bin# = 40*120*xBin + 120*yBin + zBin - if(_verbose) std::cout<<"Sim Type: "<<_simType<<" Current Bin: "<<_currentBin<<" Number Of Photons: "<<_numberOfPhotons<SetBinNumber(_currentBin); - - switch(_simType) - { - case 0: //scintillation in scintillator - if(_currentBin<0 || _currentBin>=nZBins*nYBins*nXBins) return false; - { - int xbin = (_currentBin / (nZBins*nYBins)) % nXBins; - int ybin = (_currentBin / nZBins) % nYBins; - int zbin = _currentBin % nZBins; - _minBinX=xBins[xbin]/mm; - _minBinY=yBins[ybin]/mm; - _minBinZ=zBins[zbin]/mm; - _maxBinX=xBins[xbin+1]/mm; //this is not a problem, since there is always one more entry than e.g. nXBins - _maxBinY=yBins[ybin+1]/mm; - _maxBinZ=zBins[zbin+1]/mm; - if(_verbose) - { - std::cout<<"X: "<<_minBinX<<" ... "<<_maxBinX<<" bin# "<=nZBins*nYBins*nXBins*nBetaBins) return false; - { - int xbin = (_currentBin / (nBetaBins*nZBins*nYBins)) % nXBins; - int ybin = (_currentBin / (nBetaBins*nZBins)) % nYBins; - int zbin = (_currentBin / nBetaBins) % nZBins; - int betabin = _currentBin % nBetaBins; - _minBinX=xBins[xbin]/mm; - _minBinY=yBins[ybin]/mm; - _minBinZ=zBins[zbin]/mm; - _maxBinX=xBins[xbin+1]/mm; //this is not a problem, since there is always one more entry than e.g. nXBins - _maxBinY=yBins[ybin+1]/mm; - _maxBinZ=zBins[zbin+1]/mm; - _minBinBeta=betaBins[betabin]; - _maxBinBeta=betaBins[betabin+1]; - if(_verbose) - { - std::cout<<"X: "<<_minBinX<<" ... "<<_maxBinX<<" bin# "<=nZBins*nRBins*nPhiBins*nThetaBins*nBetaBins) return false; - { - int betabin = (_currentBin / (nZBins*nRBins*nPhiBins*nThetaBins)) % nBetaBins; - int thetabin = (_currentBin / (nZBins*nRBins*nPhiBins)) % nThetaBins; - int phibin = (_currentBin / (nZBins*nRBins)) % nPhiBins; - int rbin = (_currentBin / nZBins) % nRBins; - int zbin = _currentBin % nZBins; - _minBinBeta=betaBins[betabin]; - _minBinTheta=thetaBins[thetabin]; - _minBinPhi=phiBins[phibin]; - _minBinR=rBins[rbin]/mm; - _minBinZ=zBins[zbin]/mm; - _maxBinBeta=betaBins[betabin+1]; - _maxBinTheta=thetaBins[thetabin+1]; - _maxBinPhi=phiBins[phibin+1]; - _maxBinR=rBins[rbin+1]/mm; - _maxBinZ=zBins[zbin+1]/mm; - if(_verbose) - { - std::cout<<"Beta: "<<_minBinBeta<<" ... "<<_maxBinBeta<GetNavigatorForTracking(); - G4VPhysicalVolume *scintillator = WLSDetectorConstruction::Instance()->GetScintillatorVolume(); - - double dx=_maxBinX-_minBinX; - double dy=_maxBinY-_minBinY; - double dz=_maxBinZ-_minBinZ; - double dBetaInverse=1.0/_minBinBeta-1.0/_maxBinBeta; //only relevant for Cerenkov - double dEnergy = _cerenkovEnergyMaxScintillator-_cerenkovEnergyMinScintillator; //only relevant for Cerenkov - - if(_simType==1 && _maxBinBeta*_maxRIndexFiber<=1.0) return 0; //Cerenkov photons can't be produced - - int actualNumberOfGeneratedPhotons=0; - for(int i=0; iLocateGlobalPointAndSetup(startPosition,NULL,false,true)!=scintillator) continue; - actualNumberOfGeneratedPhotons++; - -//pick random photon energy - - double photonEnergy; - if(_simType==0) //scintillation - { - //from G4Scintillation::PostStepDoIt() - double integratedProbMax = _emissionIntegral.GetMaxValue(); - double integratedProb = G4UniformRand()*integratedProbMax; - photonEnergy = _emissionIntegral.GetEnergy(integratedProb); - - //from G4Scintillation::sample_time() - while(1) - { - double ran1 = G4UniformRand(); - double ran2 = G4UniformRand(); - startTime = -1.0*_scintillationDecayTime*std::log(1-ran1); - double tempvar = 1.0-std::exp(-1.0*startTime/_scintillationRiseTime); - if(ran2 <= tempvar) break; - } - } - else //cerenkov - { - double BetaInverse=1.0/_maxBinBeta + G4UniformRand()*dBetaInverse; - if(BetaInverse>=_maxRIndexScintillator) {i--; continue;} - - //from G4Cerenkov::PostStepDoIt() - double maxCos = BetaInverse / _maxRIndexScintillator; - double maxSin2 = (1.0 - maxCos) * (1.0 + maxCos); - double sampledRI, cosTheta, sin2Theta; - do - { - photonEnergy = _cerenkovEnergyMinScintillator + G4UniformRand()*dEnergy; - sampledRI = _rindexScintillator->Value(photonEnergy); - cosTheta = BetaInverse / sampledRI; - sin2Theta = (1.0 - cosTheta)*(1.0 + cosTheta); - } while (G4UniformRand()*maxSin2 > sin2Theta); - } - -//As a simplification, a uniformly distributed direction and polarization is used from the scintillation and Cerenkov photons. -//While this is correct for the scintillation, it is wrong for the Cerenkov photons. However, the correct calculation -//would require the direction and speed of the charged particle, which would require more dimensions in the lookup table. -//The number of Cerenkov photons in the scintillator is small compared to the number of scintillator photons, -//and most Cerenkov photons are absorbed and wavelength shifted right away with a uniformly distributed direction and polarization. - -//pick random direction (uniformly distributed) from G4Scintillation::PostStepDoIt() - - double cost = 1. - 2.*G4UniformRand(); - double sint = std::sqrt((1.-cost)*(1.+cost)); - - double phi = CLHEP::twopi*G4UniformRand(); - double sinp = std::sin(phi); - double cosp = std::cos(phi); - - double px = sint*cosp; - double py = sint*sinp; - double pz = cost; - G4ParticleMomentum photonMomentum(px, py, pz); - -//pick random polarization (uniformly distributed) from G4Scintillation::PostStepDoIt() - - double sx = cost*cosp; - double sy = cost*sinp; - double sz = -sint; - - G4ThreeVector photonPolarization(sx, sy, sz); - G4ThreeVector perp = photonMomentum.cross(photonPolarization); - - phi = CLHEP::twopi*G4UniformRand(); - sinp = std::sin(phi); - cosp = std::cos(phi); - photonPolarization = cosp * photonPolarization + sinp * perp; - photonPolarization = photonPolarization.unit(); - -//generate photon - _particleGun->SetParticleMomentumDirection(photonMomentum); - _particleGun->SetParticlePolarization(photonPolarization); - _particleGun->SetParticleEnergy(photonEnergy); - _particleGun->SetParticleTime(startTime); - _particleGun->SetParticlePosition(startPosition); - _particleGun->GeneratePrimaryVertex(anEvent); - } - return actualNumberOfGeneratedPhotons; -} - -//Cerenkov photons in fiber -int WLSPrimaryGeneratorAction::GenerateCerenkovPhotonsInFiber(G4Event *anEvent, int generatedPhotons) -{ - double dEnergy = _cerenkovEnergyMaxFiber - _cerenkovEnergyMinFiber; - double dBetaInverse=1.0/_minBinBeta-1.0/_maxBinBeta; - double dTheta = _maxBinTheta - _minBinTheta; - double dPhi = _maxBinPhi - _minBinPhi; - - if(_maxBinBeta*_maxRIndexFiber<=1.0) return 0; //Cerenkov photons can't be produced - - double fiberSeparation = WLSDetectorConstruction::Instance()->GetFiberSeparation()/mm; - G4ThreeVector startPosition(_minBinR,fiberSeparation/2.0,_minBinZ); //take only the fiber at +y - - for(int i=0; i=_maxRIndexFiber) {i--; continue;} - - double maxCos = BetaInverse / _maxRIndexFiber; - double maxSin2 = (1.0 - maxCos) * (1.0 + maxCos); - double sampledRI, cosTheta, sin2Theta; - double photonEnergy=0; - do - { - photonEnergy = _cerenkovEnergyMinFiber + dEnergy*G4UniformRand(); - sampledRI = _rindexFiber->Value(photonEnergy); - cosTheta = BetaInverse / sampledRI; - sin2Theta = (1.0 - cosTheta)*(1.0 + cosTheta); - } while(G4UniformRand()*maxSin2 > sin2Theta); - -//random direction of photon on cone surface defined by Theta -//(in coordinate system with primary particle direction aligned with the z axis) - - double phi = CLHEP::twopi*G4UniformRand(); - double sinPhi = std::sin(phi); - double cosPhi = std::cos(phi); - - double sinTheta = std::sqrt(sin2Theta); - double px = sinTheta*cosPhi; - double py = sinTheta*sinPhi; - double pz = cosTheta; - - G4ParticleMomentum photonMomentum(px, py, pz); - -//randomly generate a direction (in the global reference system) of a primary particle -//which causes the Cerenkov photon -//(theta=0 is in +z direction, phi=0 is in +x direction, phi=pi/2 is in +y direction) - - G4ThreeVector particleMomentum; - double particleTheta=_minBinTheta + G4UniformRand()*dTheta; - double particlePhi=_minBinPhi + G4UniformRand()*dPhi; - particleMomentum.setRThetaPhi(1.0, particleTheta, particlePhi); - -//rotate photon momentum direction back to global reference system - - photonMomentum.rotateUz(particleMomentum); - -//polarization of photon - - double sx = cosTheta*cosPhi; - double sy = cosTheta*sinPhi; - double sz = -sinTheta; - - G4ThreeVector photonPolarization(sx, sy, sz); - -//rotate photon polarization back to global reference system - - photonPolarization.rotateUz(particleMomentum); - -//start position -//pick a random point within the shell of x=_minBinR and x=_maxBinR -//at fixed y (at fiber center) -//deltaX is generated in such a way that one has a constant probability of hitting a specific point in the shell -//A = 2*pi*int(r_1,r_2,r*dr) -//F(r) = int(r_1,r,r*dr)/int(r_1,r_2,r*dr) -//F(r) = ( r^2 - r_1^2 ) / ( r_2^2 - r_1^2 ) -//uniformly distributed random number u = F(r) -//u * ( r_2^2 - r_1^2 ) + r_1^2 = r^2 - double deltaX = sqrt((_maxBinR*_maxBinR-_minBinR*_minBinR)*G4UniformRand() + _minBinR*_minBinR); - double deltaZ=G4UniformRand()*(_maxBinZ - _minBinZ); - G4ThreeVector deltaPos(deltaX,0,deltaZ); - -//generate photon - _particleGun->SetParticleMomentumDirection(photonMomentum); - _particleGun->SetParticlePolarization(photonPolarization); - _particleGun->SetParticleEnergy(photonEnergy); - _particleGun->SetParticleTime(0); - _particleGun->SetParticlePosition(startPosition+deltaPos); - _particleGun->GeneratePrimaryVertex(anEvent); - } - - return generatedPhotons; -} - -void WLSPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) -{ - if(_mode==WLSSteppingAction::CreateLookupTables) - { - if(_first) - { - _first=false; - - G4Material* material = G4Material::GetMaterial("PolystyreneFiber",true); - G4MaterialPropertiesTable* materialPropertiesTable = material->GetMaterialPropertiesTable(); - materialPropertiesTable->AddConstProperty("WLSTIMECONSTANT", 0.0); //set WLS decay time to 0 - //so that the true travel time can be determined - - BuildEmissionSpectrum(); - } - - if(!SetNextBins()) return; - - int generatedPhotons=0; - if(_simType<2) generatedPhotons = GeneratePhotonsInScintillator(anEvent, _numberOfPhotons); - else generatedPhotons = GenerateCerenkovPhotonsInFiber(anEvent, _numberOfPhotons); - WLSEventAction::Instance()->SetGeneratedOptPhotons(generatedPhotons); - } - - if(_mode==WLSSteppingAction::UseGeantOnly || _mode==WLSSteppingAction::UseGeantAndLookupTables) - { -// double beamsize=0.5*mm; //resolution of wire chamber - double beamsize=0.0*mm; - double x0 = -10*mm; - double y0 = G4RandGauss::shoot(_randomEngine,_posY*mm,beamsize); //0 is at center //-13mm is at fiber 0 - double scintillatorHalfLength = WLSDetectorConstruction::Instance()->GetScintillatorHalfLength()/mm; - double z0 = G4RandGauss::shoot(_randomEngine,(-scintillatorHalfLength+_posZ)*mm,beamsize); //pos mm from left side of counter - _particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0)); - -#ifndef FIBERTEST - _particleGun->GeneratePrimaryVertex(anEvent); //not used for WLS fiber test -#else - for(int ii=0; ii<4000; ii++) - { - double cost = 1. - 2.*G4UniformRand(); - double sint = std::sqrt((1.-cost)*(1.+cost)); - double phi = twopi*G4UniformRand(); - double sinp = std::sin(phi); - double cosp = std::cos(phi); - double sx = cost*cosp; - double sy = cost*sinp; - double sz = -sint; - G4ThreeVector photonPolarization(sx, sy, sz); - G4ThreeVector photonMomentum = _particleGun->GetParticleMomentumDirection(); - G4ThreeVector perp = photonMomentum.cross(photonPolarization); - phi = twopi*G4UniformRand(); - sinp = std::sin(phi); - cosp = std::cos(phi); - photonPolarization = cosp * photonPolarization + sinp * perp; - photonPolarization = photonPolarization.unit(); - _particleGun->SetParticlePolarization(photonPolarization); - _particleGun->GeneratePrimaryVertex(anEvent); - } -#endif - } -} - diff --git a/CRVResponse/standalone/wls/src/WLSRunAction.cc b/CRVResponse/standalone/wls/src/WLSRunAction.cc deleted file mode 100644 index dd748bbad0..0000000000 --- a/CRVResponse/standalone/wls/src/WLSRunAction.cc +++ /dev/null @@ -1,35 +0,0 @@ -#include "WLSRunAction.hh" - -#include "G4Run.hh" -#include "G4RunManager.hh" - -#include "Randomize.hh" - -#include "WLSDetectorConstruction.hh" -#include "WLSSteppingAction.hh" -#include "WLSEventAction.hh" - -#include -#include - -WLSRunAction::WLSRunAction() -{ -} - -WLSRunAction::~WLSRunAction() -{ -} - -void WLSRunAction::BeginOfRunAction(const G4Run* aRun) -{ - G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; - - G4RunManager::GetRunManager()->SetRandomNumberStore(true); - G4RunManager::GetRunManager()->SetRandomNumberStoreDir("random/"); - - CLHEP::HepRandom::showEngineStatus(); -} - -void WLSRunAction::EndOfRunAction(const G4Run* ) -{ -} diff --git a/CRVResponse/standalone/wls/src/WLSStackingAction.cc b/CRVResponse/standalone/wls/src/WLSStackingAction.cc deleted file mode 100644 index 450e9a7869..0000000000 --- a/CRVResponse/standalone/wls/src/WLSStackingAction.cc +++ /dev/null @@ -1,4 +0,0 @@ -#include "WLSStackingAction.hh" - -WLSStackingAction* WLSStackingAction::_fgInstance = NULL; - diff --git a/CRVResponse/standalone/wls/src/WLSStepMax.cc b/CRVResponse/standalone/wls/src/WLSStepMax.cc deleted file mode 100644 index 98d1910a32..0000000000 --- a/CRVResponse/standalone/wls/src/WLSStepMax.cc +++ /dev/null @@ -1,82 +0,0 @@ -// -// ******************************************************************** -// * License and Disclaimer * -// * * -// * The Geant4 software is copyright of the Copyright Holders of * -// * the Geant4 Collaboration. It is provided under the terms and * -// * conditions of the Geant4 Software License, included in the file * -// * LICENSE and available at http://cern.ch/geant4/license . These * -// * include a list of copyright holders. * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. Please see the license in the file LICENSE and URL above * -// * for the full disclaimer and the limitation of liability. * -// * * -// * This code implementation is the result of the scientific and * -// * technical work of the GEANT4 collaboration. * -// * By using, copying, modifying or distributing the software (or * -// * any work based on the software) you agree to acknowledge its * -// * use in resulting scientific publications, and indicate your * -// * acceptance of all terms of the Geant4 Software license. * -// ******************************************************************** -// -/// \file optical/wls/src/WLSStepMax.cc -/// \brief Implementation of the WLSStepMax class -// -// -// - -#include "G4Track.hh" -#include "G4VParticleChange.hh" - -#include "WLSStepMax.hh" - -WLSStepMax::WLSStepMax(const G4String& aName) - : G4VDiscreteProcess(aName), MaxChargedStep(DBL_MAX) -{ - if (verboseLevel>0) { - G4cout << GetProcessName() << " is created "<< G4endl; - } -} - -WLSStepMax::~WLSStepMax() { } - -WLSStepMax::WLSStepMax(WLSStepMax& right) : G4VDiscreteProcess(right) { } - -G4bool WLSStepMax::IsApplicable(const G4ParticleDefinition& particle) -{ - return (particle.GetPDGCharge() != 0.); -} - -void WLSStepMax::SetStepMax(G4double step) { MaxChargedStep = step ; } - -G4double WLSStepMax::PostStepGetPhysicalInteractionLength( - const G4Track&, - G4double, - G4ForceCondition* condition) -{ - // condition is set to "Not Forced" - *condition = NotForced; - - G4double ProposedStep = DBL_MAX; - - if ( MaxChargedStep > 0.) ProposedStep = MaxChargedStep; - - return ProposedStep; -} - -G4VParticleChange* WLSStepMax::PostStepDoIt(const G4Track& aTrack, - const G4Step& ) -{ - // do nothing - aParticleChange.Initialize(aTrack); - return &aParticleChange; -} - -G4double WLSStepMax::GetMeanFreePath(const G4Track&,G4double,G4ForceCondition*) -{ - return 0.; -} diff --git a/CRVResponse/standalone/wls/src/WLSSteppingAction.cc b/CRVResponse/standalone/wls/src/WLSSteppingAction.cc deleted file mode 100644 index 25c823676e..0000000000 --- a/CRVResponse/standalone/wls/src/WLSSteppingAction.cc +++ /dev/null @@ -1,258 +0,0 @@ -#include "G4Run.hh" -#include "G4Step.hh" -#include "G4Track.hh" -#include "G4StepPoint.hh" -#include "G4TrackStatus.hh" -#include "G4VPhysicalVolume.hh" - -#include "WLSDetectorConstruction.hh" -#include "WLSEventAction.hh" -#include "WLSSteppingAction.hh" - -#include "MakeCrvPhotons.hh" - -#include "G4ProcessManager.hh" -#include "G4OpBoundaryProcess.hh" -#include "G4RunManager.hh" -#include "G4Material.hh" -#include "G4MaterialPropertiesTable.hh" - -#include "G4SystemOfUnits.hh" -#include "G4ThreeVector.hh" -#include - -//#define PHOTONTEST -#ifdef PHOTONTEST -#include -#endif - -#include "G4LossTableManager.hh" -#include "G4NistManager.hh" -#include "G4EmSaturation.hh" -#include "G4ParticleDefinition.hh" -#include "G4ParticleTypes.hh" - -WLSSteppingAction* WLSSteppingAction::_fgInstance = NULL; - -WLSSteppingAction::WLSSteppingAction(simulationMode mode, const std::string &lookupFileName) : - _mode(mode), _engine(0), _randFlat(_engine), _randGaussQ(_engine), _randPoissonQ(_engine) - //lookupFileName only used for simulationMode::UseGeantAndLookupTables -{ - _fgInstance = this; - - //load lookup tables - if(_mode==UseGeantAndLookupTables) - { - _crvPhotons = std::unique_ptr(new mu2eCrv::MakeCrvPhotons(_randFlat, _randGaussQ, _randPoissonQ)); - _crvPhotons->LoadLookupTable(lookupFileName); - } - -#ifdef PHOTONTEST - _ntuple = new TNtuple("CRVPhotons","CRVPhotons","SiPM:Energy:Length:StartZ:x:y:time:angle"); -#endif - Reset(); -} - -WLSSteppingAction::~WLSSteppingAction() -{ -#ifdef PHOTONTEST - _ntuple->SaveAs("CRVPhotons.root"); - delete _ntuple; -#endif -} - -void WLSSteppingAction::UserSteppingAction(const G4Step* theStep) -{ - G4OpBoundaryProcessStatus theStatus = G4OpBoundaryProcessStatus::Undefined; - - G4ProcessManager* OpManager = G4OpticalPhoton::OpticalPhoton()->GetProcessManager(); - - if (OpManager) - { - G4int MAXofPostStepLoops = OpManager->GetPostStepProcessVector()->entries(); - G4ProcessVector* fPostStepDoItVector = OpManager->GetPostStepProcessVector(typeDoIt); - - for ( G4int i=0; i(fCurrentProcess); - if (opProcess) { theStatus = opProcess->GetStatus(); break;} - } - } - - //create a list of fiber photons and their parents to find the number of re-emissions - if(theStep->GetTrack()->GetCreatorProcess()!=NULL) - { - if(theStep->GetTrack()->GetCreatorProcess()->GetProcessName()=="OpWLSY11") - { - int trackID=theStep->GetTrack()->GetTrackID(); - int parentID=theStep->GetTrack()->GetParentID(); - _wlsTrackParents[trackID]=parentID; - if(_wlsTrackParents.find(parentID)==_wlsTrackParents.end()) _tracksGettingAbsorbedInFiber.insert(parentID); - } - } - - - G4VPhysicalVolume* thePostPV = theStep->GetPostStepPoint()->GetPhysicalVolume(); - if(thePostPV) - { - if(theStep->GetTrack()->GetParticleDefinition()->GetPDGEncoding()==0) - { - std::string currentVolume=thePostPV->GetName(); - std::string creationVolume=theStep->GetTrack()->GetLogicalVolumeAtVertex()->GetName(); - int trackID=theStep->GetTrack()->GetTrackID(); - if((currentVolume=="WLSFiber" || currentVolume.compare(0,4,"Clad")==0) && creationVolume=="Scintillator") _tracksHittingFiber.insert(trackID); - } - -/* - double trueStepLength=theStep->GetStepLength(); - double stepLength=(theStep->GetPreStepPoint()->GetPosition()-theStep->GetPostStepPoint()->GetPosition()).mag(); - double diff=(trueStepLength-stepLength)/stepLength; - if(diff>0.01) - { - std::cout<<"----------- "<EmSaturation()->VisibleEnergyDepositionAtAStep(theStep)<<" "; - std::cout<GetTrack()->GetParticleDefinition()->GetParticleName()<GetTrack()->GetParticleDefinition()->GetPDGEncoding()!=0) - { - std::cout<GetTrack()->GetTrackID()<<" "<GetTrack()->GetParentID()<<" "; - std::cout<GetTrack()->GetParticleDefinition()->GetParticleName()<<" "; - std::cout<GetTrack()->GetTrackLength()<<" "<GetTrack()->GetTotalEnergy()<<" "; - std::cout<GetPreStepPoint()->GetPosition()<<" "; - std::cout<GetPostStepPoint()->GetPosition()<<" "; - std::cout<<" "; - if(theStep->GetPreStepPoint()->GetMaterial()!=NULL) - { - std::cout<GetPreStepPoint()->GetMaterial()->GetName()<<" "; - } - if(theStep->GetPostStepPoint()->GetMaterial()!=NULL) - { - std::cout<GetPostStepPoint()->GetMaterial()->GetName()<<" "; - } - if(theStep->GetTrack()->GetCreatorProcess()!=NULL) - { - std::cout<GetTrack()->GetCreatorProcess()->GetProcessName()<<" "; - } - if(theStep->GetTrack()->GetLogicalVolumeAtVertex()!=NULL) - { - std::cout<GetTrack()->GetLogicalVolumeAtVertex()->GetName(); - } - std::cout<GetName()=="SiPM") - { -//std::cout<<"DETECTION "<GetCopyNo()<Fill((float)(thePostPV->GetCopyNo()), - theStep->GetTrack()->GetTotalEnergy(), - theStep->GetTrack()->GetTrackLength(), - theStep->GetTrack()->GetVertexPosition().z(), - theStep->GetPostStepPoint()->GetPosition().x(), - theStep->GetPostStepPoint()->GetPosition().y(), //WLS fiber test - theStep->GetPostStepPoint()->GetGlobalTime(), - theStep->GetPostStepPoint()->GetMomentum().unit().dot(CLHEP::Hep3Vector(0.0,0.0,1.0))); -#endif - - //run through the list of parent photons to find the number of re-emissions - int numberOfFiberEmissions=0; - int trackID = theStep->GetTrack()->GetTrackID(); - while(1) - { - std::map::const_iterator wlsIter=_wlsTrackParents.find(trackID); - if(wlsIter!=_wlsTrackParents.end()) - { - numberOfFiberEmissions++; - trackID=wlsIter->second; //parent ID - } - else break; - } - _photonInfo[thePostPV->GetCopyNo()].emplace_back(theStep->GetPostStepPoint()->GetGlobalTime(),numberOfFiberEmissions); - if(numberOfFiberEmissions==0) _zeroFiberEmissions++; - } - } - } - - //if a lookup table is used - if(_mode==UseGeantAndLookupTables) - { - const G4ThreeVector &p1 = theStep->GetPreStepPoint()->GetPosition(); - const G4ThreeVector &p2 = theStep->GetPostStepPoint()->GetPosition(); - const double t1 = theStep->GetPreStepPoint()->GetGlobalTime(); - const double t2 = theStep->GetPostStepPoint()->GetGlobalTime(); - int PDGcode = theStep->GetTrack()->GetParticleDefinition()->GetPDGEncoding(); - double beta = (theStep->GetPreStepPoint()->GetBeta() + theStep->GetPostStepPoint()->GetBeta())/2.0; - double charge = theStep->GetTrack()->GetParticleDefinition()->GetPDGCharge(); - double visibleEnergyDeposited = G4LossTableManager::Instance()->EmSaturation()->VisibleEnergyDepositionAtAStep(theStep); - double trueStepLength = theStep->GetStepLength(); //may be longer than (p1-p2).mag() due to scattering - - static bool first=true; - if(first) - { - first=false; - - //these constants are extracted from the G4Material - //in a real run, they would be provided by the fcl file - G4Material* scintillator = G4Material::GetMaterial("PolystyreneScint",true); - G4MaterialPropertiesTable* scintillatorPropertiesTable = scintillator->GetMaterialPropertiesTable(); - double scintillationYield = scintillatorPropertiesTable->GetConstProperty("SCINTILLATIONYIELD"); - _crvPhotons->SetScintillationYield(scintillationYield); - } - - if(PDGcode!=0) //ignore optical photons - { - int reflector = WLSDetectorConstruction::Instance()->GetReflectorOption(); - _crvPhotons->MakePhotons(p1, p2, t1, t2, - beta, charge, - visibleEnergyDeposited, - trueStepLength,reflector); - - for(int SiPM=0; SiPM<4; SiPM++) - { - const std::vector ×=_crvPhotons->GetArrivalTimes(SiPM); - _arrivalTimesFromLookupTables[SiPM].insert(_arrivalTimesFromLookupTables[SiPM].end(),times.begin(),times.end()); - } - } - } -} - -const std::vector &WLSSteppingAction::GetPhotonInfo(int SiPM) -{ - return _photonInfo[SiPM]; -} - -const std::vector &WLSSteppingAction::GetArrivalTimesFromLookupTables(int SiPM) -{ - return _arrivalTimesFromLookupTables[SiPM]; -} - -void WLSSteppingAction::Reset() -{ - for(int SiPM=0; SiPM<4; SiPM++) - { - _photonInfo[SiPM].clear(); - _photonInfo[SiPM].reserve(10000); - _arrivalTimesFromLookupTables[SiPM].clear(); - _arrivalTimesFromLookupTables[SiPM].reserve(10000); - } - - _wlsTrackParents.clear(); - _tracksGettingAbsorbedInFiber.clear(); - _tracksHittingFiber.clear(); - _zeroFiberEmissions=0; -} - -void WLSSteppingAction::PrintFiberStats() -{ - std::cout<<"Full GEANT4: Tracks hitting fiber: "<<_tracksHittingFiber.size()<<" Tracks getting absorbed in fiber: "<<_tracksGettingAbsorbedInFiber.size(); - std::cout<<" Photons detected which have not been wavelength shifted in fiber: "<<_zeroFiberEmissions< -#endif - -#include "G4RunManager.hh" -#include "G4UImanager.hh" - -#include "Randomize.hh" - -#include "WLSMaterials.hh" -#include "WLSPhysicsList.hh" -#include "WLSDetectorConstruction.hh" -#include "WLSPrimaryGeneratorAction.hh" - -#include "WLSRunAction.hh" -#include "WLSEventAction.hh" -#include "WLSSteppingAction.hh" -#include "WLSStackingAction.hh" - -#include "G4StepLimiterPhysics.hh" -#include "G4TransportationManager.hh" -#include "G4GDMLParser.hh" - -#include "CLHEP/Random/Randomize.h" -#include "MakeCrvPhotons.hh" - -#include -#include -#include -#include - -bool findArgs(int argc, char** argv, const char* c) -{ - for(int i=1; i crvPhotons; - CLHEP::HepJamesRandom engine(0); - CLHEP::RandFlat randFlat(engine); - CLHEP::RandGaussQ randGausQ(engine); - CLHEP::RandPoissonQ randPoissonQ(engine); - crvPhotons = std::unique_ptr(new mu2eCrv::MakeCrvPhotons(randFlat, randGausQ, randPoissonQ)); - crvPhotons->LoadLookupTable(lookupFilename); - crvPhotons->DrawHistograms(); -} - -int main(int argc, char** argv) -{ - WLSSteppingAction::simulationMode mode=WLSSteppingAction::Undefined; - int simType=-1; - int minBin=0; - int maxBin=-1; - int n=1000; - double lengthOption=0; - int reflectorOption=0; - std::string lookupFilename=""; - - bool verbose = findArgs(argc, argv, "-v"); - - if(findArgs(argc, argv, "-h")) - { - std::cout<<"Usage ./wls [OPTION]"<SetUserInitialization(new WLSDetectorConstruction(lengthOption, reflectorOption)); - runManager->SetUserInitialization(new WLSPhysicsList()); - - WLSPrimaryGeneratorAction *generator = new WLSPrimaryGeneratorAction(mode, n, simType, minBin, verbose, posY, posZ); - //n,simType,minBin not needed in modes UseGeantOnly, and UseGeantAndLookupTables - //posY, posZ has no effect in mode CreateLookupTables - WLSRunAction* runAction = new WLSRunAction(); - std::string singlePEWaveformFilename="singlePEWaveform_v3.txt"; - std::string photonMapFilename="photonMap.root"; - WLSEventAction* eventAction = new WLSEventAction(mode, singlePEWaveformFilename, photonMapFilename, n, simType, minBin, verbose); - WLSSteppingAction* steppingAction = new WLSSteppingAction(mode, lookupFilename); //lookupFilename not needed in modes CreateLookupTables, and UseGeantOnly - WLSStackingAction* stackingAction = new WLSStackingAction(); - - runManager->SetUserAction(generator); - runManager->SetUserAction(runAction); - runManager->SetUserAction(eventAction); - runManager->SetUserAction(steppingAction); - runManager->SetUserAction(stackingAction); - runManager->Initialize(); - -/* - G4GDMLParser parser; - parser.SetRegionExport(true); - parser.Write("out.gdml", G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume()->GetLogicalVolume()); -*/ - - if(mode==WLSSteppingAction::CreateLookupTables) - { - const std::vector &xBins = WLSDetectorConstruction::Instance()->GetXBins(); - const std::vector &yBins = WLSDetectorConstruction::Instance()->GetYBins(); - const std::vector &zBins = WLSDetectorConstruction::Instance()->GetZBins(); - const std::vector &betaBins = WLSDetectorConstruction::Instance()->GetBetaBins(); - const std::vector &thetaBins = WLSDetectorConstruction::Instance()->GetThetaBins(); - const std::vector &phiBins = WLSDetectorConstruction::Instance()->GetPhiBins(); - const std::vector &rBins = WLSDetectorConstruction::Instance()->GetRBins(); - - int nXBins=xBins.size()-1; //e.g. 3 bins need 4 entries in the vector (for 3 bin boundaries) - int nYBins=yBins.size()-1; - int nZBins=zBins.size()-1; - int nBetaBins=betaBins.size()-1; - int nThetaBins=thetaBins.size()-1; - int nPhiBins=phiBins.size()-1; - int nRBins=rBins.size()-1; - - int nBins=0; - switch(simType) - { - case 0: //scintillation in scintillator - nBins=nZBins*nYBins*nXBins; - break; - case 1: //Cerenkov in scintillator - nBins=nBetaBins*nZBins*nYBins*nXBins; - break; - case 2: //Cerenkov in fiber - nBins=nZBins*nRBins*nPhiBins*nThetaBins*nBetaBins; - break; - } - - if(maxBin==-1 || maxBin>=nBins) maxBin=nBins-1; - - int numberOfEvents=maxBin-minBin+1; - if(numberOfEvents>0) - { - std::cout<BeamOn(numberOfEvents); - std::cout<BeamOn(n); - } - - delete runManager; - - return 0; -} diff --git a/CRVResponse/efficiencyCheck/CRV_Efficiency_check.fcl b/CRVResponse/test/efficiencyCheck/CRV_Efficiency_check.fcl similarity index 100% rename from CRVResponse/efficiencyCheck/CRV_Efficiency_check.fcl rename to CRVResponse/test/efficiencyCheck/CRV_Efficiency_check.fcl diff --git a/CRVResponse/efficiencyCheck/CRV_Efficiency_check_count.sh b/CRVResponse/test/efficiencyCheck/CRV_Efficiency_check_count.sh similarity index 100% rename from CRVResponse/efficiencyCheck/CRV_Efficiency_check_count.sh rename to CRVResponse/test/efficiencyCheck/CRV_Efficiency_check_count.sh diff --git a/CRVResponse/efficiencyCheck/CRV_Efficiency_check_submit.sh b/CRVResponse/test/efficiencyCheck/CRV_Efficiency_check_submit.sh similarity index 100% rename from CRVResponse/efficiencyCheck/CRV_Efficiency_check_submit.sh rename to CRVResponse/test/efficiencyCheck/CRV_Efficiency_check_submit.sh diff --git a/CRVResponse/efficiencyCheck/genconfig_D.txt b/CRVResponse/test/efficiencyCheck/genconfig_D.txt similarity index 100% rename from CRVResponse/efficiencyCheck/genconfig_D.txt rename to CRVResponse/test/efficiencyCheck/genconfig_D.txt diff --git a/CRVResponse/efficiencyCheck/genconfig_E.txt b/CRVResponse/test/efficiencyCheck/genconfig_E.txt similarity index 100% rename from CRVResponse/efficiencyCheck/genconfig_E.txt rename to CRVResponse/test/efficiencyCheck/genconfig_E.txt diff --git a/CRVResponse/efficiencyCheck/genconfig_L.txt b/CRVResponse/test/efficiencyCheck/genconfig_L.txt similarity index 100% rename from CRVResponse/efficiencyCheck/genconfig_L.txt rename to CRVResponse/test/efficiencyCheck/genconfig_L.txt diff --git a/CRVResponse/efficiencyCheck/genconfig_L_teststand.txt b/CRVResponse/test/efficiencyCheck/genconfig_L_teststand.txt similarity index 100% rename from CRVResponse/efficiencyCheck/genconfig_L_teststand.txt rename to CRVResponse/test/efficiencyCheck/genconfig_L_teststand.txt diff --git a/CRVResponse/efficiencyCheck/genconfig_R.txt b/CRVResponse/test/efficiencyCheck/genconfig_R.txt similarity index 100% rename from CRVResponse/efficiencyCheck/genconfig_R.txt rename to CRVResponse/test/efficiencyCheck/genconfig_R.txt diff --git a/CRVResponse/efficiencyCheck/genconfig_T.txt b/CRVResponse/test/efficiencyCheck/genconfig_T.txt similarity index 100% rename from CRVResponse/efficiencyCheck/genconfig_T.txt rename to CRVResponse/test/efficiencyCheck/genconfig_T.txt diff --git a/CRVResponse/efficiencyCheck/genconfig_T4.txt b/CRVResponse/test/efficiencyCheck/genconfig_T4.txt similarity index 100% rename from CRVResponse/efficiencyCheck/genconfig_T4.txt rename to CRVResponse/test/efficiencyCheck/genconfig_T4.txt diff --git a/CRVResponse/efficiencyCheck/genconfig_TS.txt b/CRVResponse/test/efficiencyCheck/genconfig_TS.txt similarity index 100% rename from CRVResponse/efficiencyCheck/genconfig_TS.txt rename to CRVResponse/test/efficiencyCheck/genconfig_TS.txt diff --git a/CRVResponse/efficiencyCheck/genconfig_U.txt b/CRVResponse/test/efficiencyCheck/genconfig_U.txt similarity index 100% rename from CRVResponse/efficiencyCheck/genconfig_U.txt rename to CRVResponse/test/efficiencyCheck/genconfig_U.txt diff --git a/CRVResponse/efficiencyCheck/geom_D.txt b/CRVResponse/test/efficiencyCheck/geom_D.txt similarity index 100% rename from CRVResponse/efficiencyCheck/geom_D.txt rename to CRVResponse/test/efficiencyCheck/geom_D.txt diff --git a/CRVResponse/efficiencyCheck/geom_E.txt b/CRVResponse/test/efficiencyCheck/geom_E.txt similarity index 100% rename from CRVResponse/efficiencyCheck/geom_E.txt rename to CRVResponse/test/efficiencyCheck/geom_E.txt diff --git a/CRVResponse/efficiencyCheck/geom_L.txt b/CRVResponse/test/efficiencyCheck/geom_L.txt similarity index 100% rename from CRVResponse/efficiencyCheck/geom_L.txt rename to CRVResponse/test/efficiencyCheck/geom_L.txt diff --git a/CRVResponse/efficiencyCheck/geom_L_teststand.txt b/CRVResponse/test/efficiencyCheck/geom_L_teststand.txt similarity index 100% rename from CRVResponse/efficiencyCheck/geom_L_teststand.txt rename to CRVResponse/test/efficiencyCheck/geom_L_teststand.txt diff --git a/CRVResponse/efficiencyCheck/geom_R.txt b/CRVResponse/test/efficiencyCheck/geom_R.txt similarity index 100% rename from CRVResponse/efficiencyCheck/geom_R.txt rename to CRVResponse/test/efficiencyCheck/geom_R.txt diff --git a/CRVResponse/efficiencyCheck/geom_T.txt b/CRVResponse/test/efficiencyCheck/geom_T.txt similarity index 100% rename from CRVResponse/efficiencyCheck/geom_T.txt rename to CRVResponse/test/efficiencyCheck/geom_T.txt diff --git a/CRVResponse/efficiencyCheck/geom_TS.txt b/CRVResponse/test/efficiencyCheck/geom_TS.txt similarity index 100% rename from CRVResponse/efficiencyCheck/geom_TS.txt rename to CRVResponse/test/efficiencyCheck/geom_TS.txt diff --git a/CRVResponse/efficiencyCheck/geom_U.txt b/CRVResponse/test/efficiencyCheck/geom_U.txt similarity index 100% rename from CRVResponse/efficiencyCheck/geom_U.txt rename to CRVResponse/test/efficiencyCheck/geom_U.txt diff --git a/CRVResponse/singleCounter/dicounter_across.fcl b/CRVResponse/test/singleCounter/dicounter_across.fcl similarity index 100% rename from CRVResponse/singleCounter/dicounter_across.fcl rename to CRVResponse/test/singleCounter/dicounter_across.fcl diff --git a/CRVResponse/singleCounter/genconfig.txt b/CRVResponse/test/singleCounter/genconfig.txt similarity index 100% rename from CRVResponse/singleCounter/genconfig.txt rename to CRVResponse/test/singleCounter/genconfig.txt diff --git a/CRVResponse/singleCounter/genconfig_across.txt b/CRVResponse/test/singleCounter/genconfig_across.txt similarity index 100% rename from CRVResponse/singleCounter/genconfig_across.txt rename to CRVResponse/test/singleCounter/genconfig_across.txt diff --git a/CRVResponse/singleCounter/genconfig_dicounter_across.txt b/CRVResponse/test/singleCounter/genconfig_dicounter_across.txt similarity index 100% rename from CRVResponse/singleCounter/genconfig_dicounter_across.txt rename to CRVResponse/test/singleCounter/genconfig_dicounter_across.txt diff --git a/CRVResponse/singleCounter/genconfig_point.txt b/CRVResponse/test/singleCounter/genconfig_point.txt similarity index 100% rename from CRVResponse/singleCounter/genconfig_point.txt rename to CRVResponse/test/singleCounter/genconfig_point.txt diff --git a/CRVResponse/singleCounter/geom.txt b/CRVResponse/test/singleCounter/geom.txt similarity index 100% rename from CRVResponse/singleCounter/geom.txt rename to CRVResponse/test/singleCounter/geom.txt diff --git a/CRVResponse/singleCounter/geom_dicounter.txt b/CRVResponse/test/singleCounter/geom_dicounter.txt similarity index 100% rename from CRVResponse/singleCounter/geom_dicounter.txt rename to CRVResponse/test/singleCounter/geom_dicounter.txt diff --git a/CRVResponse/singleCounter/singleCounter.fcl b/CRVResponse/test/singleCounter/singleCounter.fcl similarity index 100% rename from CRVResponse/singleCounter/singleCounter.fcl rename to CRVResponse/test/singleCounter/singleCounter.fcl diff --git a/CRVResponse/singleCounter/singleCounter_across.fcl b/CRVResponse/test/singleCounter/singleCounter_across.fcl similarity index 100% rename from CRVResponse/singleCounter/singleCounter_across.fcl rename to CRVResponse/test/singleCounter/singleCounter_across.fcl diff --git a/CRVResponse/singleCounter/singleCounter_darkNoise.fcl b/CRVResponse/test/singleCounter/singleCounter_darkNoise.fcl similarity index 100% rename from CRVResponse/singleCounter/singleCounter_darkNoise.fcl rename to CRVResponse/test/singleCounter/singleCounter_darkNoise.fcl diff --git a/CRVResponse/singleCounter/singleCounter_point.fcl b/CRVResponse/test/singleCounter/singleCounter_point.fcl similarity index 100% rename from CRVResponse/singleCounter/singleCounter_point.fcl rename to CRVResponse/test/singleCounter/singleCounter_point.fcl diff --git a/CRVResponse/singleModule/genconfig.txt b/CRVResponse/test/singleModule/genconfig.txt similarity index 100% rename from CRVResponse/singleModule/genconfig.txt rename to CRVResponse/test/singleModule/genconfig.txt diff --git a/CRVResponse/singleModule/geom.txt b/CRVResponse/test/singleModule/geom.txt similarity index 100% rename from CRVResponse/singleModule/geom.txt rename to CRVResponse/test/singleModule/geom.txt diff --git a/CRVResponse/singleModule/singleModule.fcl b/CRVResponse/test/singleModule/singleModule.fcl similarity index 100% rename from CRVResponse/singleModule/singleModule.fcl rename to CRVResponse/test/singleModule/singleModule.fcl From 6a8f783744543285d51de846c70184fdf6ac86b4 Mon Sep 17 00:00:00 2001 From: Andrei Gaponenko Date: Wed, 26 May 2021 00:19:17 -0500 Subject: [PATCH 35/40] Whitespace fix. --- EventMixing/src/ResamplingMixer_module.cc | 50 +++++++++++------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/EventMixing/src/ResamplingMixer_module.cc b/EventMixing/src/ResamplingMixer_module.cc index 39ee26078e..9636fbe6d7 100644 --- a/EventMixing/src/ResamplingMixer_module.cc +++ b/EventMixing/src/ResamplingMixer_module.cc @@ -35,30 +35,30 @@ namespace mu2e { using Comment = fhicl::Comment; fhicl::Table products { Name("products"), - Comment("A table specifying products to be mixed. For each supported data type\n" - "there is a mixingMap sequence that defines mapping of inputs to outputs.\n" - "Each entry in the top-level mixingMap sequence is a sequence of two strings:\n" - " [ \"InputTag\", \"outputInstanceName\" ]\n" - "The output instance name colon \":\" is special: it means take instance name from the input tag.\n" - "For example, with this config:\n" - " mixingMap: [ [ \"detectorFilter:tracker\", \"tracker\" ], [ \"detectorFilter:virtualdetector\", \":\" ] ]\n" - "the outputs will be named \"tracker\" and \"virtualdetector\"\n" - ) - }; - - - fhicl::Atom nSecondaries { Name("nSecondaries"), - Comment("Number of secondary events per single primary, a positive integer."), - 1u }; - - fhicl::Atom writeEventIDs { Name("writeEventIDs"), - Comment("Write out IDs of events on the secondary input stream."), - true + Comment("A table specifying products to be mixed. For each supported data type\n" + "there is a mixingMap sequence that defines mapping of inputs to outputs.\n" + "Each entry in the top-level mixingMap sequence is a sequence of two strings:\n" + " [ \"InputTag\", \"outputInstanceName\" ]\n" + "The output instance name colon \":\" is special: it means take instance name from the input tag.\n" + "For example, with this config:\n" + " mixingMap: [ [ \"detectorFilter:tracker\", \"tracker\" ], [ \"detectorFilter:virtualdetector\", \":\" ] ]\n" + "the outputs will be named \"tracker\" and \"virtualdetector\"\n" + ) + }; + + + fhicl::Atom nSecondaries { Name("nSecondaries"), + Comment("Number of secondary events per single primary, a positive integer."), + 1u }; + + fhicl::Atom writeEventIDs { Name("writeEventIDs"), + Comment("Write out IDs of events on the secondary input stream."), + true + }; }; - }; - struct Config { - fhicl::Table mu2e { fhicl::Name("mu2e") }; + struct Config { + fhicl::Table mu2e { fhicl::Name("mu2e") }; }; using Parameters = art::MixFilterTable; @@ -67,7 +67,7 @@ namespace mu2e { size_t nSecondaries() const { return nSecondaries_; } void processEventIDs(const art::EventIDSequence& seq); - + void beginSubRun(const art::SubRun& sr); void startEvent(art::Event const& e); void finalizeEvent(art::Event& e); @@ -81,9 +81,9 @@ namespace mu2e { , writeEventIDs_{ pars().mu2e().writeEventIDs() } { if(writeEventIDs_) { - helper.produces(); + helper.produces(); + } } - } void ResamplingMixerDetail::processEventIDs(const art::EventIDSequence& seq) { if(writeEventIDs_) { From 7d1ee788fb2791e8e7b3629d4145aadfe734cb7a Mon Sep 17 00:00:00 2001 From: Andrei Gaponenko Date: Wed, 26 May 2021 00:51:37 -0500 Subject: [PATCH 36/40] ResamplingMixer: add eventsToSkip config. --- EventMixing/src/ResamplingMixer_module.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/EventMixing/src/ResamplingMixer_module.cc b/EventMixing/src/ResamplingMixer_module.cc index 9636fbe6d7..2a8389c233 100644 --- a/EventMixing/src/ResamplingMixer_module.cc +++ b/EventMixing/src/ResamplingMixer_module.cc @@ -24,6 +24,7 @@ namespace mu2e { // Our "detail" class for art/Framework/Modules/MixFilter.h class ResamplingMixerDetail { Mu2eProductMixer spm_; + const unsigned eventsToSkip_; const unsigned nSecondaries_; bool writeEventIDs_; art::EventIDSequence idseq_; @@ -47,6 +48,11 @@ namespace mu2e { }; + fhicl::Atom eventsToSkip { Name("eventsToSkip"), + Comment("Number of events to skip at the beginning of each secondary input file in sequential readMode.\n" + "Do not use this, try readMode:randomReplace instead."), + 0u }; + fhicl::Atom nSecondaries { Name("nSecondaries"), Comment("Number of secondary events per single primary, a positive integer."), 1u }; @@ -64,6 +70,7 @@ namespace mu2e { using Parameters = art::MixFilterTable; ResamplingMixerDetail(const Parameters& pset, art::MixHelper &helper); + size_t eventsToSkip() const { return eventsToSkip_; } size_t nSecondaries() const { return nSecondaries_; } void processEventIDs(const art::EventIDSequence& seq); @@ -77,6 +84,7 @@ namespace mu2e { ResamplingMixerDetail::ResamplingMixerDetail(const Parameters& pars, art::MixHelper& helper) : spm_{ pars().mu2e().products(), helper } + , eventsToSkip_{ pars().mu2e().eventsToSkip() } , nSecondaries_{ pars().mu2e().nSecondaries() } , writeEventIDs_{ pars().mu2e().writeEventIDs() } { From 7f7491632ec99426ee963cc118a6e70dcf1e9f62 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Wed, 26 May 2021 20:44:34 -0500 Subject: [PATCH 37/40] updates in response to reviewer comments. Move content out of epilog into prolog where practical. Make time cut config more robust. Remove unnecessary SimTimeOffsetCollection. Remove unphysical N>1 option in resampler. Call down to startevent in background mixer. Add missing schema noted by Ray --- EventMixing/src/MixBackgroundFrames_module.cc | 3 ++ EventMixing/src/ResamplingMixer_module.cc | 9 +---- Filters/src/DetectorStepFilter_module.cc | 29 ++++++++++----- JobConfig/beam/BeamResampler.fcl | 13 +++++-- JobConfig/beam/NeutralsResampler.fcl | 9 ++++- JobConfig/beam/epilog.fcl | 2 -- JobConfig/beam/prolog.fcl | 8 ++--- JobConfig/pileup/Pileup.fcl | 10 ++++-- JobConfig/pileup/deuteron.fcl | 28 --------------- JobConfig/pileup/dio.fcl | 29 --------------- JobConfig/pileup/epilog.fcl | 6 ---- JobConfig/pileup/mustop.fcl | 1 + JobConfig/pileup/neutron.fcl | 28 --------------- JobConfig/pileup/oot.fcl | 28 --------------- JobConfig/pileup/photon.fcl | 29 --------------- JobConfig/pileup/prolog.fcl | 35 +++++++------------ JobConfig/pileup/proton.fcl | 28 --------------- JobConfig/primary/Primary.fcl | 1 + JobConfig/primary/prolog.fcl | 8 +---- MCDataProducts/inc/SimTimeOffset.hh | 1 - MCDataProducts/src/classes_def.xml | 2 -- RecoDataProducts/src/classes_def.xml | 2 ++ 22 files changed, 73 insertions(+), 236 deletions(-) delete mode 100644 JobConfig/pileup/deuteron.fcl delete mode 100644 JobConfig/pileup/dio.fcl delete mode 100644 JobConfig/pileup/neutron.fcl delete mode 100644 JobConfig/pileup/oot.fcl delete mode 100644 JobConfig/pileup/photon.fcl delete mode 100644 JobConfig/pileup/proton.fcl diff --git a/EventMixing/src/MixBackgroundFrames_module.cc b/EventMixing/src/MixBackgroundFrames_module.cc index 507b5d5c16..693d91b9ca 100644 --- a/EventMixing/src/MixBackgroundFrames_module.cc +++ b/EventMixing/src/MixBackgroundFrames_module.cc @@ -172,6 +172,9 @@ namespace mu2e { //================================================================ void MixBackgroundFramesDetail::startEvent(const art::Event& event) { + // call down to product mixer + spm_.startEvent(event); + pbi_ = *event.getValidHandle(pbiTag_); if(debugLevel_ > 0)std::cout << " Starting event mixing, Intensity = " << pbi_.intensity() << std::endl; diff --git a/EventMixing/src/ResamplingMixer_module.cc b/EventMixing/src/ResamplingMixer_module.cc index 39ee26078e..48491b2d32 100644 --- a/EventMixing/src/ResamplingMixer_module.cc +++ b/EventMixing/src/ResamplingMixer_module.cc @@ -24,7 +24,6 @@ namespace mu2e { // Our "detail" class for art/Framework/Modules/MixFilter.h class ResamplingMixerDetail { Mu2eProductMixer spm_; - const unsigned nSecondaries_; bool writeEventIDs_; art::EventIDSequence idseq_; @@ -46,11 +45,6 @@ namespace mu2e { ) }; - - fhicl::Atom nSecondaries { Name("nSecondaries"), - Comment("Number of secondary events per single primary, a positive integer."), - 1u }; - fhicl::Atom writeEventIDs { Name("writeEventIDs"), Comment("Write out IDs of events on the secondary input stream."), true @@ -64,7 +58,7 @@ namespace mu2e { using Parameters = art::MixFilterTable; ResamplingMixerDetail(const Parameters& pset, art::MixHelper &helper); - size_t nSecondaries() const { return nSecondaries_; } + size_t nSecondaries() const { return (size_t) 1; } void processEventIDs(const art::EventIDSequence& seq); @@ -77,7 +71,6 @@ namespace mu2e { ResamplingMixerDetail::ResamplingMixerDetail(const Parameters& pars, art::MixHelper& helper) : spm_{ pars().mu2e().products(), helper } - , nSecondaries_{ pars().mu2e().nSecondaries() } , writeEventIDs_{ pars().mu2e().writeEventIDs() } { if(writeEventIDs_) { diff --git a/Filters/src/DetectorStepFilter_module.cc b/Filters/src/DetectorStepFilter_module.cc index 989130e98a..4aed0b55bc 100644 --- a/Filters/src/DetectorStepFilter_module.cc +++ b/Filters/src/DetectorStepFilter_module.cc @@ -10,6 +10,7 @@ #include "fhiclcpp/types/Atom.h" #include "fhiclcpp/types/Sequence.h" #include "fhiclcpp/types/OptionalAtom.h" +#include "fhiclcpp/types/OptionalTable.h" #include "cetlib_except/exception.h" #include "art/Framework/Core/EDFilter.h" #include "art/Framework/Principal/Event.h" @@ -29,7 +30,16 @@ namespace mu2e { class DetectorStepFilter : public art::EDFilter { public: static constexpr double maxE_ = 1.0e6; // 1 TeV - static constexpr unsigned maxN_ = 1000000; + static constexpr unsigned maxN_ = 1000000; + + struct TimeCutConfig { + using Name=fhicl::Name; + using Comment=fhicl::Comment; + + fhicl::OptionalAtom maxTime { Name("MaximumTime"), Comment("Maximum time for good step (ns since POT)")}; + fhicl::OptionalAtom minTime { Name("MinimumTime"), Comment("Minimum time for good step (ns since POT)")}; + }; + struct Config { using Name=fhicl::Name; using Comment=fhicl::Comment; @@ -57,9 +67,9 @@ namespace mu2e { fhicl::Sequence keepPDG { Name("KeepPDG"), Comment("PDG particle codes to keep") }; - fhicl::Atom timeCut { Name("TimeCut"), Comment("Make time for good step"), false}; - fhicl::OptionalAtom maxTime { Name("MaximumTime"), Comment("Maximum time for good step (ns since POT)")}; - fhicl::OptionalAtom minTime { Name("MinimumTime"), Comment("Minimum time for good step (ns since POT)")}; + fhicl::OptionalTable timeCutConfig { fhicl::Name("TimeCutConfig") }; + + // the following should not be needed soon fhicl::Sequence SPTO { Name("TimeOffsets"), Comment("Sim Particle Time Offset Maps"), std::vector () }; }; @@ -102,7 +112,7 @@ namespace mu2e { , maxNTrk_(conf().maxNTrkSteps()) , maxNCrv_(conf().maxNCrvSteps()) , maxSumCaloE_(conf().maxSumCaloStepE()) - , timecut_(conf().timeCut()) + , timecut_(false) , minTime_(0.0), maxTime_(0.0) , toff_(conf().SPTO()) , nEvt_(0) @@ -112,10 +122,11 @@ namespace mu2e { for(const auto& trktag : conf().trkSteps()) { trkStepCols_.emplace_back(trktag); consumes(trktag); } for(const auto& calotag : conf().caloSteps()) { caloStepCols_.emplace_back(calotag); consumes(calotag); } for(const auto& crvtag : conf().crvSteps()) { crvStepCols_.emplace_back(crvtag); consumes(crvtag); } - - if( timecut_){ - conf().minTime(minTime_); - conf().maxTime(maxTime_); + TimeCutConfig tc; + if(conf().timeCutConfig(tc)) { + timecut_ = true; + tc.minTime(minTime_); + tc.maxTime(maxTime_); } } diff --git a/JobConfig/beam/BeamResampler.fcl b/JobConfig/beam/BeamResampler.fcl index ebb04e1e67..5549e6b104 100644 --- a/JobConfig/beam/BeamResampler.fcl +++ b/JobConfig/beam/BeamResampler.fcl @@ -24,27 +24,36 @@ services : @local::Services.Sim physics: { producers : { @table::Common.producers + @table::Primary.producers + compressDetStepMCs : { + @table::Primary.producers.compressDetStepMCs + @table::Pileup.producers.compressDetStepMCs + } compressPVTargetStops : @local::Beam.producers.compressPVTargetStops compressPVIPAStops : @local::Beam.producers.compressPVIPAStops TargetMuonFinder : @local::Beam.producers.TargetMuonFinder IPAMuonFinder : @local::Beam.producers.IPAMuonFinder stoppedMuonDaughters : @local::Beam.producers.stoppedMuonDaughters - @table::Primary.producers protonTimeOffset : @local::CommonMC.producers.protonTimeOffset } filters : { @table::Common.filters + @table::Primary.filters EarlyPrescaleFilter : @local::Beam.filters.EarlyPrescaleFilter beamResampler : @local::Beam.filters.beamResampler TargetStopFilter : @local::Beam.filters.TargetStopFilter IPAStopFilter : @local::Beam.filters.IPAStopFilter FlashFilter : @local::Beam.filters.FlashFilter DetStepFilter : { + @table::Primary.filters.DetStepFilter @table::Pileup.filters.DetStepFilter @table::Beam.filters.DetStepFilter } # instance to select flash without time cuts (prescaled) - EarlyDetStepFilter : @local::Pileup.filters.DetStepFilter + EarlyDetStepFilter : { + @table::Primary.filters.DetStepFilter + @table::Pileup.filters.DetStepFilter + } } analyzers : { @table::Common.analyzers diff --git a/JobConfig/beam/NeutralsResampler.fcl b/JobConfig/beam/NeutralsResampler.fcl index 2cc20b9af9..69ad2f177b 100644 --- a/JobConfig/beam/NeutralsResampler.fcl +++ b/JobConfig/beam/NeutralsResampler.fcl @@ -24,6 +24,10 @@ physics: { producers : { @table::Common.producers @table::Primary.producers + compressDetStepMCs : { + @table::Primary.producers.compressDetStepMCs + @table::Pileup.producers.compressDetStepMCs + } protonTimeOffset : @local::CommonMC.producers.protonTimeOffset } filters : { @@ -31,7 +35,10 @@ physics: { EarlyPrescaleFilter : @local::Beam.filters.EarlyPrescaleFilter neutralsResampler : @local::Beam.filters.neutralsResampler # Time cuts are ineffective against neutrals; don't apply them - DetStepFilter : @local::Pileup.filters.DetStepFilter + DetStepFilter : { + @table::Primary.filters.DetStepFilter + @table::Pileup.filters.DetStepFilter + } } analyzers : { @table::Common.analyzers diff --git a/JobConfig/beam/epilog.fcl b/JobConfig/beam/epilog.fcl index cfa3c4e5ba..750642797f 100644 --- a/JobConfig/beam/epilog.fcl +++ b/JobConfig/beam/epilog.fcl @@ -1,5 +1,3 @@ -#turn off MCTrajectories -physics.producers.g4run.TrajectoryControl.produce : false # limit printout services.message.destinations.log.categories.ArtReport.reportEvery : 1 services.message.destinations.log.categories.ArtReport.limit : 1 diff --git a/JobConfig/beam/prolog.fcl b/JobConfig/beam/prolog.fcl index db196fe858..448b88d5ea 100644 --- a/JobConfig/beam/prolog.fcl +++ b/JobConfig/beam/prolog.fcl @@ -139,12 +139,12 @@ Beam: { # DetectorSteFilter with time cut for the main flash stream # these select energy deposits after the peak of the flash has passed, to keep useless payload down -# time cut for the main flash stream # Note this is a partial config, it must be combined with Pileup definition DetStepFilter : { - TimeCut : true - MinimumTime : 300 # good hits are after this time - MaximumTime : 10 # not a typo: good hits are before this time + TimeCutConfig : { + MinimumTime : 300 # good hits are after this time + MaximumTime : 10 # not a typo: good hits are before this time + } } # resamplers diff --git a/JobConfig/pileup/Pileup.fcl b/JobConfig/pileup/Pileup.fcl index 4275503599..957e43549c 100644 --- a/JobConfig/pileup/Pileup.fcl +++ b/JobConfig/pileup/Pileup.fcl @@ -15,11 +15,17 @@ physics: { producers : { @table::Common.producers @table::Primary.producers - @table::Pileup.producers + compressDetStepMCs : { + @table::Primary.producers.compressDetStepMCs + @table::Pileup.producers.compressDetStepMCs + } } filters : { @table::Common.filters - @table::Pileup.filters + DetStepFilter : { + @table::Primary.filters.DetStepFilter + @table::Pileup.filters.DetStepFilter + } } analyzers : { @table::Common.analyzers } TriggerPath : [ @sequence::Common.generateSequence, @sequence::Common.g4Sequence, @sequence::Primary.DetStepSequence, @sequence::Primary.DetStepFilterSequence ] diff --git a/JobConfig/pileup/deuteron.fcl b/JobConfig/pileup/deuteron.fcl deleted file mode 100644 index 3a0ad7393b..0000000000 --- a/JobConfig/pileup/deuteron.fcl +++ /dev/null @@ -1,28 +0,0 @@ -// Start with particles hitting the detector mother volumes and -// write out StepPoints in the detectors. -// -// Ejected deuterons from muon capture. -// -// Andrei Gaponenko, 2015 - -#include "JobConfig/beam/prolog.fcl" - -process_name: deuteron - -source: { module_type : EmptyEvent } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Muons } -outputs: { @table::mu2e.outputs.g4s4Defs } - -physics.producers.generate.physics: { - pdgId : 1000010020 # deuteron - genId : StoppedParticleReactionGun - spectrumShape: ejectedProtons # same spectrum for protons and deuterons, as in the MECO note - spectrumVariable: kineticEnergy - nbins: 1000 -} - -services.TFileService.fileName: "nts.owner.deuteron.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.deuteron-TrkCal.version.sequencer.art" -outputs.crvOutput.fileName: "sim.owner.deuteron-CRV.version.sequencer.art" -outputs.truncatedEvtsOutput.fileName: "sim.owner.deuteron-truncated.version.sequencer.art" diff --git a/JobConfig/pileup/dio.fcl b/JobConfig/pileup/dio.fcl deleted file mode 100644 index 7233ba2d04..0000000000 --- a/JobConfig/pileup/dio.fcl +++ /dev/null @@ -1,29 +0,0 @@ -// Start with particles hitting the detector mother volumes and -// write out StepPoints in the detectors. -// -// Bulk spectrum DIO electrons. -// -// Andrei Gaponenko, 2015 - -#include "JobConfig/beam/prolog.fcl" - -process_name: dio - -source: { module_type : EmptyEvent } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Muons } -outputs: { @table::mu2e.outputs.g4s4Defs } - -physics.producers.generate.physics: { - pdgId : 11 - genId : StoppedParticleReactionGun - spectrumShape: Czarnecki - spectrumVariable: totalEnergy - elow: 1. // MeV - spectrumResolution: 0.1 // MeV -} - -services.TFileService.fileName: "nts.owner.dio.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.dio-TrkCal.version.sequencer.art" -outputs.crvOutput.fileName: "sim.owner.dio-CRV.version.sequencer.art" -outputs.truncatedEvtsOutput.fileName: "sim.owner.dio-truncated.version.sequencer.art" diff --git a/JobConfig/pileup/epilog.fcl b/JobConfig/pileup/epilog.fcl index b699c76a11..3d059645f9 100644 --- a/JobConfig/pileup/epilog.fcl +++ b/JobConfig/pileup/epilog.fcl @@ -1,9 +1,3 @@ -# don't need to keep StepPointMC info -physics.producers.compressDetStepMCs.stepPointMCTags : [ ] -# remove some intermediate genealogy steps -physics.producers.compressDetStepMCs.compressionOptions : @local::DetStepCompression.extraCompression -# no MC Trajectories -physics.producers.compressDetStepMCs.mcTrajectoryTag : "" # don't create MCTrajectories physics.producers.g4run.TrajectoryControl.produce : false # only detector SDs diff --git a/JobConfig/pileup/mustop.fcl b/JobConfig/pileup/mustop.fcl index faa444737d..61bf0c3311 100644 --- a/JobConfig/pileup/mustop.fcl +++ b/JobConfig/pileup/mustop.fcl @@ -2,6 +2,7 @@ # Generate all muon stop emission products # # Andy Edmonds, 2020 +#include "EventGenerator/fcl/prolog.fcl" #include "JobConfig/pileup/Pileup.fcl" physics.producers.generate: { module_type: MuStopProductsGun diff --git a/JobConfig/pileup/neutron.fcl b/JobConfig/pileup/neutron.fcl deleted file mode 100644 index a7d3c26847..0000000000 --- a/JobConfig/pileup/neutron.fcl +++ /dev/null @@ -1,28 +0,0 @@ -// Start with particles hitting the detector mother volumes and -// write out StepPoints in the detectors. -// -// Neutrons from muon capture. -// -// Andrei Gaponenko, 2015 - -#include "JobConfig/beam/prolog.fcl" - -process_name: neutron - -source: { module_type : EmptyEvent } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Muons } -outputs: { @table::mu2e.outputs.g4s4Defs } - -physics.producers.generate.physics: { - pdgId : 2112 - genId : StoppedParticleReactionGun - spectrumShape: tabulated - spectrumFileName: "ConditionsService/data/neutronSpectrum.txt" - spectrumVariable: kineticEnergy -} - -services.TFileService.fileName: "nts.owner.neutron.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.neutron-TrkCal.version.sequencer.art" -outputs.crvOutput.fileName: "sim.owner.neutron-CRV.version.sequencer.art" -outputs.truncatedEvtsOutput.fileName: "sim.owner.neutron-truncated.version.sequencer.art" diff --git a/JobConfig/pileup/oot.fcl b/JobConfig/pileup/oot.fcl deleted file mode 100644 index fea81ce808..0000000000 --- a/JobConfig/pileup/oot.fcl +++ /dev/null @@ -1,28 +0,0 @@ -// Start with particles hitting the detector mother volumes and -// write out StepPoints in the detectors. -// -// Decay and capture products from out of target muon stops. -// -// Andrei Gaponenko, 2015 - -#include "JobConfig/beam/prolog.fcl" - -process_name: oot - -source: { module_type : EmptyEvent } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Muons } -outputs: { @table::mu2e.outputs.g4s4Defs } - -physics.producers.generate: { - module_type: StoppedParticleG4Gun - verbosityLevel : 1 - pdgId: 13 // mu- - muonStops : @local::mu2e.ootMuonStops -} - -services.TFileService.fileName: "nts.owner.oot.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.oot-TrkCal.version.sequencer.art" -outputs.crvOutput.fileName: "sim.owner.oot-CRV.version.sequencer.art" -outputs.truncatedEvtsOutput.fileName: "sim.owner.oot-truncated.version.sequencer.art" - diff --git a/JobConfig/pileup/photon.fcl b/JobConfig/pileup/photon.fcl deleted file mode 100644 index eba2f2d36f..0000000000 --- a/JobConfig/pileup/photon.fcl +++ /dev/null @@ -1,29 +0,0 @@ -// Start with particles hitting the detector mother volumes and -// write out StepPoints in the detectors. -// -// Photons from muon capture. -// -// Andrei Gaponenko, 2015 - -#include "JobConfig/beam/prolog.fcl" - -process_name: photon - -source: { module_type : EmptyEvent } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Muons } -outputs: { @table::mu2e.outputs.g4s4Defs } - -physics.producers.generate.physics: { - pdgId : 22 - genId : StoppedParticleReactionGun - spectrumShape: flat - spectrumVariable: totalEnergy - elow: 0.0 // MeV - ehi: 7.0 // MeV -} - -services.TFileService.fileName: "nts.owner.photon.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.photon-TrkCal.version.sequencer.art" -outputs.crvOutput.fileName: "sim.owner.photon-CRV.version.sequencer.art" -outputs.truncatedEvtsOutput.fileName: "sim.owner.photon-truncated.version.sequencer.art" diff --git a/JobConfig/pileup/prolog.fcl b/JobConfig/pileup/prolog.fcl index cc22474729..48dd92a263 100644 --- a/JobConfig/pileup/prolog.fcl +++ b/JobConfig/pileup/prolog.fcl @@ -1,44 +1,35 @@ # # Prolog to create pileup particle steps for mixing # -#include "EventGenerator/fcl/prolog.fcl" -#include "TrackerMC/fcl/prolog.fcl" -#include "CaloMC/fcl/prolog.fcl" -#include "CRVResponse/fcl/prolog.fcl" -#include "Filters/fcl/prolog.fcl" -#include "Compression/fcl/prolog.fcl" -# BEGIN_PROLOG Pileup: { producers : { - # nothing specific: all come from primary + # override compression to be more selective + compressDetStepMCs: { + stepPointMCTags : [ ] # turn off VD hits for pileup + compressionOptions : @local::DetStepCompression.extraCompression # remove some intermediate genealogy steps + mcTrajectoryTag : "" # no MC Trajectories + } } filters : { -# step filter to select any detectable signal +# override step filter to select any detectable signal DetStepFilter : { - module_type : DetectorStepFilter - StrawGasSteps : [ "StrawGasStepMaker" ] - CaloShowerSteps : [ "CaloShowerStepMaker" ] - CrvSteps : [ "CrvSteps" ] - MinimumTrkStepEnergy : 1.0e-6 # 1 ev - MinimumCaloStepEnergy : 0.0 - MinimumCrvStepEnergy : 1.0e-6 # get a real value from CRV experts FIXME! + CrvSteps : [ "CrvSteps" ] # include CRV steps for pileup + # lower all the thresholds for saving an event MinimumPartMom : 0.0 # MeV/c - MaximumPartMom : 1e6 # MeV/c - KeepPDG : [ ] # all particles accepted MinimumTrkSteps : 1 - MinimumSumCaloStepE : 0.01 # check this threshold TODO! + MinimumSumCaloStepE : 0.01 MinimumCrvSteps : 1 } } - +# define products needed to run mixing KeptProducts : [ "keep mu2e::StrawGasSteps_compressDetStepMCs_*_*", "keep mu2e::CaloShowerSteps_compressDetStepMCs_*_*", "keep mu2e::CrvSteps_compressDetStepMCs_*_*", - "keep mu2e::StatusG4_*_*_*", "keep mu2e::SimParticlemv_compressDetStepMCs_*_*", "keep mu2e::GenParticles_compressDetStepMCs_*_*", + "keep mu2e::StatusG4_*_*_*", "keep mu2e::GenEventCount_*_*_*" ] Output : { @@ -50,7 +41,7 @@ Pileup: { # define paths EndPath : [ genCountLogger, Output ] -# define tools +# define tools used in mustop daughter generation dioGenTool : { tool_type : DIOGenerator spectrum : { diff --git a/JobConfig/pileup/proton.fcl b/JobConfig/pileup/proton.fcl deleted file mode 100644 index ada8f0abae..0000000000 --- a/JobConfig/pileup/proton.fcl +++ /dev/null @@ -1,28 +0,0 @@ -// Start with particles hitting the detector mother volumes and -// write out StepPoints in the detectors. -// -// Ejected protons from muon capture. -// -// Andrei Gaponenko, 2015 - -#include "JobConfig/beam/prolog.fcl" - -process_name: proton - -source: { module_type : EmptyEvent } -services: { @table::mu2e.services.simServices } -physics: { @table::mu2e.physics.g4s4Muons } -outputs: { @table::mu2e.outputs.g4s4Defs } - -physics.producers.generate.physics: { - pdgId : 2212 - genId : StoppedParticleReactionGun - spectrumShape: ejectedProtons - spectrumVariable: kineticEnergy - nbins: 1000 -} - -services.TFileService.fileName: "nts.owner.proton.version.sequencer.root" -outputs.detectorOutput.fileName: "sim.owner.proton-TrkCal.version.sequencer.art" -outputs.crvOutput.fileName: "sim.owner.proton-CRV.version.sequencer.art" -outputs.truncatedEvtsOutput.fileName: "sim.owner.proton-truncated.version.sequencer.art" diff --git a/JobConfig/primary/Primary.fcl b/JobConfig/primary/Primary.fcl index 97ccd675ca..6e6dffd3fe 100644 --- a/JobConfig/primary/Primary.fcl +++ b/JobConfig/primary/Primary.fcl @@ -4,6 +4,7 @@ # original author: Dave Brown, LBNL # #include "fcl/standardServices.fcl" +#include "EventGenerator/fcl/prolog.fcl" #include "JobConfig/common/prolog.fcl" #include "JobConfig/primary/prolog.fcl" # name all processes the same, to mask any provenance in ensemble creation diff --git a/JobConfig/primary/prolog.fcl b/JobConfig/primary/prolog.fcl index a9141130f6..35aa52c044 100644 --- a/JobConfig/primary/prolog.fcl +++ b/JobConfig/primary/prolog.fcl @@ -1,9 +1,6 @@ # # Prolog to create primary (signal, signal-like or calibration) particles and subsequent detector steps # -#include "Mu2eG4/fcl/prolog.fcl" -#include "fcl/standardServices.fcl" -#include "EventGenerator/fcl/prolog.fcl" #include "TrackerMC/fcl/prolog.fcl" #include "CaloMC/fcl/prolog.fcl" #include "CRVResponse/fcl/prolog.fcl" @@ -14,14 +11,12 @@ BEGIN_PROLOG Primary: { producers : { - @table::EventGenerator.producers @table::TrackerMC.StepProducers @table::CaloMC.StepProducers CrvSteps :{ @table::CrvSteps stepPointsModuleLabels : ["g4run"] } - compressDetStepMCs : { module_type : CompressDetStepMCs strawGasStepTag : "StrawGasStepMaker" @@ -34,7 +29,6 @@ Primary: { stepPointMCTags : [ "g4run:virtualdetector", "g4run:protonabsorber", "g4run:stoppingtarget" ] compressionOptions : @local::DetStepCompression.standardCompression } - # the following should be reconfigured to run after step compression once that is working FindMCPrimary : { module_type : FindMCPrimary SinglePrimary : true @@ -75,13 +69,13 @@ Primary: { "keep mu2e::StepPointMCs_compressDetStepMCs_virtualdetector_*", "keep mu2e::StepPointMCs_compressDetStepMCs_protonabsorber_*", "keep mu2e::StepPointMCs_compressDetStepMCs_stoppingtarget_*", - "keep mu2e::StatusG4_*_*_*", "keep mu2e::SimParticlemv_compressDetStepMCs_*_*", "keep mu2e::SimParticleart::Ptrmu2e::MCTrajectorystd::map_compressDetStepMCs_*_*", "keep mu2e::GenParticles_compressDetStepMCs_*_*", "keep mu2e::PrimaryParticle_*_*_*", "keep mu2e::CosmicLivetime_*_*_*", "keep art::TriggerResults_*_*_*", + "keep mu2e::StatusG4_*_*_*", "keep mu2e::GenEventCount_*_*_*" ] analyzers: { diff --git a/MCDataProducts/inc/SimTimeOffset.hh b/MCDataProducts/inc/SimTimeOffset.hh index 07b77520af..cc16a71f96 100644 --- a/MCDataProducts/inc/SimTimeOffset.hh +++ b/MCDataProducts/inc/SimTimeOffset.hh @@ -10,6 +10,5 @@ namespace mu2e { SimTimeOffset(double toff=0.0) : timeOffset_(toff) {} double timeOffset_; // global event time offset }; - typedef std::vector SimTimeOffsetCollection; } #endif diff --git a/MCDataProducts/src/classes_def.xml b/MCDataProducts/src/classes_def.xml index 074baadfd4..8a9859c70e 100644 --- a/MCDataProducts/src/classes_def.xml +++ b/MCDataProducts/src/classes_def.xml @@ -90,8 +90,6 @@ - - diff --git a/RecoDataProducts/src/classes_def.xml b/RecoDataProducts/src/classes_def.xml index 33409bb218..4c1e89957d 100644 --- a/RecoDataProducts/src/classes_def.xml +++ b/RecoDataProducts/src/classes_def.xml @@ -192,6 +192,8 @@ + + From 6f3ccaeec933a345b558aecc43e07ab00ec0601d Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Thu, 27 May 2021 12:09:49 -0500 Subject: [PATCH 38/40] Add back EventGenerators --- Validation/fcl/ceSimReco.fcl | 1 + 1 file changed, 1 insertion(+) diff --git a/Validation/fcl/ceSimReco.fcl b/Validation/fcl/ceSimReco.fcl index b21d0e1e64..2396bd3764 100644 --- a/Validation/fcl/ceSimReco.fcl +++ b/Validation/fcl/ceSimReco.fcl @@ -4,6 +4,7 @@ # run calorimeter and tracker and CRV reco # #include "fcl/standardServices.fcl" +#include "EventGenerator/fcl/prolog.fcl" #include "JobConfig/common/prolog.fcl" #include "JobConfig/primary/prolog.fcl" #include "JobConfig/digitize/prolog.fcl" From a8be59516801851fda5faf39c286ea5ae7547806 Mon Sep 17 00:00:00 2001 From: David Nathan Brown Date: Thu, 27 May 2021 14:56:49 -0500 Subject: [PATCH 39/40] Remove OptionalAtom --- Filters/src/DetectorStepFilter_module.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Filters/src/DetectorStepFilter_module.cc b/Filters/src/DetectorStepFilter_module.cc index 4aed0b55bc..e7fc656923 100644 --- a/Filters/src/DetectorStepFilter_module.cc +++ b/Filters/src/DetectorStepFilter_module.cc @@ -9,7 +9,6 @@ #include "fhiclcpp/ParameterSet.h" #include "fhiclcpp/types/Atom.h" #include "fhiclcpp/types/Sequence.h" -#include "fhiclcpp/types/OptionalAtom.h" #include "fhiclcpp/types/OptionalTable.h" #include "cetlib_except/exception.h" #include "art/Framework/Core/EDFilter.h" @@ -36,8 +35,8 @@ namespace mu2e { using Name=fhicl::Name; using Comment=fhicl::Comment; - fhicl::OptionalAtom maxTime { Name("MaximumTime"), Comment("Maximum time for good step (ns since POT)")}; - fhicl::OptionalAtom minTime { Name("MinimumTime"), Comment("Minimum time for good step (ns since POT)")}; + fhicl::Atom maxTime { Name("MaximumTime"), Comment("Maximum time for good step (ns since POT)")}; + fhicl::Atom minTime { Name("MinimumTime"), Comment("Minimum time for good step (ns since POT)")}; }; struct Config { @@ -125,8 +124,8 @@ namespace mu2e { TimeCutConfig tc; if(conf().timeCutConfig(tc)) { timecut_ = true; - tc.minTime(minTime_); - tc.maxTime(maxTime_); + minTime_ = tc.minTime(); + maxTime_ = tc.maxTime(); } } From 6e220698290d11aab63fff0b314d32b56b4aeed8 Mon Sep 17 00:00:00 2001 From: Rob Kutschke Date: Fri, 28 May 2021 13:19:02 -0500 Subject: [PATCH 40/40] Only enable ExtMonFNALPixelSD when it is configured to be enabled. --- Mu2eG4/src/Mu2eWorld.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mu2eG4/src/Mu2eWorld.cc b/Mu2eG4/src/Mu2eWorld.cc index 6cb19ec49d..da97e52641 100644 --- a/Mu2eG4/src/Mu2eWorld.cc +++ b/Mu2eG4/src/Mu2eWorld.cc @@ -966,7 +966,7 @@ namespace mu2e { /************************** ExtMonFNALPixelSD **************************/ - if(true) { // this SD does not derive from Mu2eG4SensitiveDetector as it does not produce StepPointMCCollection + if( sdHelper_->extMonPixelsEnabled() ) { GeomHandle extmon; //SDman->AddNewDetector(new ExtMonFNALPixelSD(_config, *extmon));
NameTitle
"; + + inf<< "" << hh->GetName() <<" "; + if(qDoLog) { + inf<< "   log "; + } + inf << ""; + inf << hh->GetTitle(); + inf << "