1 #include "services_dune.fcl"
2 #include "largeantmodules_dune.fcl"
3 #include "detsimmodules_dune.fcl"
4 #include "photpropservices_dune.fcl"
5 #include "CORSIKAGendp.fcl"
6 #include "tools_dune.fcl"
9 process_name: CosmicsDP
11 services: @local::protodunedphase_simulation_services_legacy
13 #Load the service that manages root files for histograms.
14 services.TFileService: { fileName: "cosmics_corsika_rotation_hist.root" }
15 services.TimeTracker: {}
16 services.RandomNumberGenerator: {} #ART native random number generator
17 services.FileCatalogMetadata: @local::art_file_catalog_mc
18 services.NuRandomService: @local::random_NuRandomService # seedservice.fcl
19 services.Geometry: @local::protodunedphase_geo
20 services.DetectorPropertiesService: @local::protodunedphase_detproperties
22 #we activate light simulation
23 services.LArG4Parameters.UseCustomPhysics: true
24 services.LArG4Parameters.EnabledPhysics: [ "Em",
34 #Start each new event with an empty event.
37 module_type: EmptyEvent
38 timestampPlugin: { plugin_type: "GeneratedEventTimestamp" }
39 maxEvents: 100 # Number of events to create
40 firstRun: 1 # Run number to use for this file
41 firstEvent: 1 # number of first event in the file
44 # Define and configure some modules to do work on each event.
45 # First modules are defined; they are scheduled later.
46 # Modules are grouped by type.
52 rns: { module_type: "RandomNumberSaver" }
53 generator: @local::standard_CORSIKAGendp_CMC
54 largeant: @local::dunefd_largeant
55 daq: @local::dune_detsim
58 #define the producer and filter modules for this path, order matters,
59 #filters reject all following items. see lines starting physics.producers below
66 #define the output stream, there could be more than one if using filters
69 #trigger_paths is a keyword and contains the paths that modify the art::event,
70 #ie filters and producers
71 trigger_paths: [simulate]
73 #end_paths is a keyword and contains the paths that do not modify the art::Event,
74 #ie analyzers and output streams. these all run simultaneously
78 #block to define where the output goes. if you defined a filter in the physics
79 #block and put it in the trigger_paths then you need to put a
80 SelectEvents: {SelectEvents: [XXX]}
81 #entry in the output stream you want those to go to, where XXX is the label of the filter module(s)
86 module_type: RootOutput
87 fileName: "cosmics_protodunedp.root" #default file name, can override from command line with -o or --output
88 dataTier: "cosmic-detsim"
93 #specific to cosmic sim
94 physics.producers.generator.DoRotation: true
95 physics.producers.generator.SampleTime: 8e-3
96 physics.producers.generator.TimeOffset: -4e-3 #4.0 ms readout should start at -0.875 ms to match data
97 physics.producers.generator.BufferBox: [ -300.0, 300.0, -300.0, 300.0, -300.0, 300.0 ] #in cm
98 physics.producers.generator.ShowerAreaExtension: 2000
99 physics.producers.generator.RandomXZShift: 2000 #amount to randomly shift shower start point in x & z [cm] (default is 1000)
100 physics.producers.generator.ProjectToHeight: 856 #height to which particles are projected in cm
101 physics.producers.generator.ShowerInputFiles: [
102 "/cvmfs/dune.osgstorage.org/pnfs/fnal.gov/usr/dune/persistent/stash/Cosmics/CERN/CORSIKA/standard/p_showers_*",
103 "/cvmfs/dune.osgstorage.org/pnfs/fnal.gov/usr/dune/persistent/stash/Cosmics/CERN/CORSIKA/standard/He_showers_*",
104 "/cvmfs/dune.osgstorage.org/pnfs/fnal.gov/usr/dune/persistent/stash/Cosmics/CERN/CORSIKA/standard//N_showers_*",
105 "/cvmfs/dune.osgstorage.org/pnfs/fnal.gov/usr/dune/persistent/stash/Cosmics/CERN/CORSIKA/standard//Mg_showers_*",
106 "/cvmfs/dune.osgstorage.org/pnfs/fnal.gov/usr/dune/persistent/stash/Cosmics/CERN/CORSIKA/standard//Fe_showers_*"
107 ] #list of sqlite dbs with corsika showers
111 services.DetectorPropertiesService.Electronlifetime: 3000.0 #in us
113 services.LArG4Parameters.MinNumberOfElCluster: 20
115 services.PhotonVisibilityService: @local::protodunedp_photonvisibilityservice
116 services.PhotonVisibilityService.Interpolate: true
119 physics.producers.daq.NoiseOn: true
120 physics.producers.daq.PedestalOn: true
121 physics.producers.daq.DistortOn: false
122 physics.producers.daq.SuppressOn: false #false when noise on!
123 physics.producers.daq.KeepEmptyChannels: true
126 services.ChannelNoiseService: @local::chnoiseold
127 services.PedestalAdditionService: @local::padprovided
129 services.DetPedestalService: @local::dunedp_fixedpeds
130 services.DetPedestalService.FixedDetPedestal.PedMeanErrY: 0
131 services.DetPedestalService.FixedDetPedestal.PedMeanErrZ: 0
132 services.DetPedestalService.FixedDetPedestal.PedMeanY: 60
133 services.DetPedestalService.FixedDetPedestal.PedMeanZ: 60
134 services.DetPedestalService.FixedDetPedestal.PedRmsErrY: 0
135 services.DetPedestalService.FixedDetPedestal.PedRmsErrZ: 0
136 services.DetPedestalService.FixedDetPedestal.PedRmsY: 0
137 services.DetPedestalService.FixedDetPedestal.PedRmsZ: 0
139 services.AdcDistortService: @local::stuckbits
140 services.AdcSuppressService: @local::zsonline
141 services.AdcCompressService: @local::cmpreplace
144 #===================New noise module ===========================================
145 #Configure realistic noise service for DP detectors based on the 311 data
146 #NB: Hardcoded unrotated geometry:
148 services.ChannelNoiseService:{
149 service_provider: DPhaseRealisticNoiseService
150 NoiseModel: "729-0_fft_mirror.root" #path to the noise model root file
151 RandomizeX: 15. #0.002
152 RandomizeY: 15. #0.002
155 SetBaseline: false #if true sum baseline to real noise model
156 NoiseArrayPoints: 1000
157 OldNoiseIndex: false #From ExponentialChannelNoiseService. Keep false