protodune_optical_tutorial_sim.fcl
Go to the documentation of this file.
1 #include "services_dune.fcl"
2 #include "singles_dune.fcl"
3 #include "largeantmodules_dune.fcl"
4 #include "detsimmodules_dune.fcl"
5 #include "mccheatermodules.fcl"
6 #include "photpropservices_dune.fcl"
7 #include "opticaldetectormodules_dune.fcl"
8 
9 
10 
11 process_name: SinglesGen
12 
13 services:
14 {
15  # Load the service that manages root files for histograms.
16  TFileService: { fileName: "protodune_optical_tutorial_sim_hist.root" }
17  TimeTracker: {}
18  RandomNumberGenerator: {} #ART native random number generator
19  message: @local::standard_info
20  @table::protodune_simulation_services
21 }
22 
23 
24 
25 #Start each new event with an empty event.
26 source:
27 {
28  module_type: EmptyEvent
29  timestampPlugin: { plugin_type: "GeneratedEventTimestamp" }
30  maxEvents: 1 # Number of events to create
31  firstRun: 1 # Run number to use for this file
32  firstEvent: 1 # number of first event in the file
33 }
34 
35 # Define and configure some modules to do work on each event.
36 # First modules are defined; they are scheduled later.
37 # Modules are grouped by type.
38 physics:
39 {
40 
41  producers:
42  {
43  generator: @local::dunefd_singlep
44  largeant: @local::dunefd_largeant
45  rns: { module_type: "RandomNumberSaver" }
46  }
47 
48  analyzers:
49  {
50  pmtresponse: @local::dunefd_simphotoncounter
51 
52 
53  # This name defines a job step below, and will appear as a directory
54  # in the output histogram file.
55  AnalysisExample:
56  {
57  # The "module_type" tells us which module to run. The name here
58  # matches the name supplied to DEFINE_ART_MODULE near the end of
59  # AnalysisExample_module.cc.
60 
61  module_type: "AnalysisExample"
62 
63  # The input parameters for our AnalysisExample module. Compare
64  # the names you see here with the reconfigure method in
65  # AnalysisExample.cxx. You will want to add/remove/rename the
66  # example parameters below to suit your task.
67 
68  # If you are reading any objects created by the simulation, then
69  # don't change the value of this parameter. This is the name of
70  # the 'producer' that ran the simulation module in a previous
71  # job. An example of a job file that runs the simulation is
72  # ${LARSIM_DIR}/job/prodsingle.fcl; look for "largeant:". It's
73  # unlikely that anyone would change the name of this producer.
74 
75  SimulationLabel: "largeant"
76 
77  # Hits can be created by more than one module in
78  # ${LARRECO_DIR}/source/HitFinder. For this example, I picked
79  # the one that's usually run first.
80 
81  HitLabel: "gaushit"
82 
83  # The same for clusters:
84 
85  ClusterLabel: "fuzzycluster"
86 
87  # In this example, which primary particle(s) we'll focus on in an event.
88  # PDG code 13 = mu-.
89  PDGcode: 13
90 
91  # dx used for the dE/dx calculation; units are cm.
92  BinSize: 0.3
93  }
94  }
95 
96 
97  #define the producer and filter modules for this path, order matters,
98  #filters reject all following items. see lines starting physics.producers below
99  # simulate: [ generator, largeant, daq, rns ]
100  simulate: [ generator, largeant, rns ]
101  analyzeIt: [ AnalysisExample, pmtresponse]
102 
103  #define the output stream, there could be more than one if using filters
104  stream1: [ out1 ]
105 
106  #trigger_paths is a keyword and contains the paths that modify the art::event,
107  #ie filters and producers
108  trigger_paths: [simulate]
109 
110  #end_paths is a keyword and contains the paths that do not modify the art::Event,
111  #ie analyzers and output streams. these all run simultaneously
112  end_paths: [analyzeIt, stream1]
113 }
114 
115 #block to define where the output goes. if you defined a filter in the physics
116 #block and put it in the trigger_paths then you need to put a SelectEvents: {SelectEvents: [XXX]}
117 #entry in the output stream you want those to go to, where XXX is the label of the filter module(s)
118 outputs:
119 {
120  out1:
121  {
122  module_type: RootOutput
123  fileName: "protodune_optical_tutorial_sim_gen.root" #default file name, can override from command line with -o or --output
124  }
125 }
126 
127 
128 #
129 # Change the properties of the generated singles
130 #
131 
132 physics.producers.generator.Theta0XZ: [ 0 ]
133 physics.producers.generator.Theta0YZ: [ 0 ]
134 #physics.producers.generator.SigmaThetaXZ: [ 0 ]
135 #physics.producers.generator.SigmaThetaYZ: [ 0 ]
136 
137 physics.producers.generator.X0: [ 120.0 ] # 120 cm from wire plan
138 #physics.producers.generator.SigmaX: [ 1.0 ] # fraction with uniform
139 physics.producers.generator.Y0: [ 50.0 ] # slightly above center in y
140 #physics.producers.generator.SigmaY: [ 50.0 ] # fraction with uniform
141 physics.producers.generator.Z0: [ 0.0 ] # 1 m into the cryostat
142 #physics.producers.generator.SigmaZ: [ 0.0 ]
143 #physics.producers.generator.PDist: 0 # uniform
144 #physics.producers.generator.PosDist: 0 # uniform
145 #physics.producers.generator.ThetaDist: 0 # uniform