opticaldetectordigitizer_dune35t_example.fcl
Go to the documentation of this file.
1 #include "services_dune.fcl"
2 #include "backtrackerservice.fcl"
3 #include "particleinventoryservice.fcl"
4 #include "opticaldetectormodules_dune.fcl"
5 #include "opticaldetectorservices_dune.fcl"
6 
7 
8 process_name: OpticalDigitization
9 
10 services:
11 {
12  # Load the service that manages root files for histograms.
13  TFileService: { fileName: "opticaldetectordigitizer_dune35t_hist.root" }
14  TimeTracker: {}
15  MemoryTracker: { } # default is one
16  RandomNumberGenerator: {} #ART native random number generator
17  @table::dune35t_simulation_services_legacy
18  message: @local::standard_info
19  BackTrackerService: @local::dune35t_backtrackerservice # defined in backtrackerservice.fcl
20  ParticleInventoryService: @local::dune35t_particleinventoryservice # defined in backtrackerservice.fcl
21 }
22 
23 #source is now a root file
24 source:
25 {
26  module_type: RootInput
27  maxEvents: 10 # Number of events to create
28  #specify from command line with -s or --source
29 
30 }
31 
32 
33 # Define and configure some modules to do work on each event.
34 # First modules are defined; they are scheduled later.
35 # Modules are grouped by type.
36 physics:
37 {
38 
39  producers:
40  {
41  opdigi: # simple digitizer with no noise and high saturation
42  {
43  module_type: "OpDetDigitizerDUNE"
44  InputModule: "largeant" # Module that created OpDetPulses (OpticalRawDigits)
45  VoltageToADC: 151.5 # Converting mV to ADC counts (counts in 1 mV)
46  LineNoise: 2.6 # Pedestal RMS in ADC counts
47  DarkNoiseRate: 10.0 # In Hz
48  CrossTalk: 0.165 # Probability of producing 2 PE for 1 incident photon
49  Pedestal: 1500 # in ADC counts
50 
51  Padding: 0 # In ticks
52  }
53  rns: { module_type: "RandomNumberSaver" }
54  }
55 
56  analyzers:
57  {
58  pmtresponse: @local::dune35t_simphotoncounter
59  opdigiana:
60  {
61  module_type: "OpDetDigiAnaDUNE"
62  InputModule: "opdigi" # Module that created OpDetPulses (OpticalRawDigits)
63  }
64  }
65 
66 
67  #define the producer and filter modules for this path, order matters,
68  #filters reject all following items. see lines starting physics.producers below
69  simulate: [ opdigi, rns ]
70  analyzeIt: [ pmtresponse, opdigiana ]
71 
72  #define the output stream, there could be more than one if using filters
73  stream1: [ out1 ]
74 
75  #trigger_paths is a keyword and contains the paths that modify the art::event,
76  #ie filters and producers
77  trigger_paths: [ simulate ]
78 
79  #end_paths is a keyword and contains the paths that do not modify the art::Event,
80  #ie analyzers and output streams. these all run simultaneously
81  end_paths: [ analyzeIt, stream1 ]
82 }
83 
84 #block to define where the output goes. if you defined a filter in the physics
85 #block and put it in the trigger_paths then you need to put a SelectEvents: {SelectEvents: [XXX]}
86 #entry in the output stream you want those to go to, where XXX is the label of the filter module(s)
87 outputs:
88 {
89  out1:
90  {
91  module_type: RootOutput
92  fileName: "opticaldetectordigitizer_dune35t_gen.root"
93  #default file name, can override from command line with -o or --output
94  dataTier: "simulated"
95  compressionLevel: 1
96  }
97 }
98 
99 services.DetectorClocksService.FramePeriod: 2600.0 # Readout window end in us
100 services.DetectorClocksService.ClockSpeedOptical: 150.0 # Sampling frequency in MHz