dune1x2x6_optical_tutorial_zscan.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 BEGIN_PROLOG
11 
12 standard_textfilegen:
13 {
14  module_type: "TextFileGen"
15  InputFileName: "vectors/zscan.vec" # name of file containing events in hepevt format to
16  # put into simb::MCTruth objects for use in LArSoft
17 }
18 
19 END_PROLOG
20 
21 
22 process_name: TextGen
23 
24 services:
25 {
26  # Load the service that manages root files for histograms.
27  TFileService: { fileName: "dune1x2x6_optical_example_zscan_hist.root" }
28  TimeTracker: {}
29  RandomNumberGenerator: {} #ART native random number generator
30  message: @local::standard_info
31  @table::dunefd_simulation_services
32 }
33 
34 # DUNE FD 1x2x6 workspace geometry
35 services.Geometry: @local::dune10kt_1x2x6_geo
36 
37 # Enable photon simulation for the 1x2x6 geometry.
38 # This is turned off by default in dunefd_simulation_services
39 # since the full FD cannot be simulated for photon signals.
40 
41 services.PhotonVisibilityService: @local::dune10kt_1x2x6_photonvisibilityservice
42 services.LArG4Parameters.UseCustomPhysics: true
43 services.LArG4Parameters.EnabledPhysics: [ "Em",
44  "FastOptical",
45  "SynchrotronAndGN",
46  "Ion",
47  "Hadron",
48  "Decay",
49  "HadronElastic",
50  "Stopping",
51  "NeutronTrackingCut" ]
52 
53 
54 #Start each new event with an empty event.
55 source:
56 {
57  module_type: EmptyEvent
58  timestampPlugin: { plugin_type: "GeneratedEventTimestamp" }
59  maxEvents: 20 # Number of events to create
60  firstRun: 1 # Run number to use for this file
61  firstEvent: 1 # number of first event in the file
62 }
63 
64 # Define and configure some modules to do work on each event.
65 # First modules are defined; they are scheduled later.
66 # Modules are grouped by type.
67 physics:
68 {
69 
70  producers:
71  {
72  generator: @local::standard_textfilegen
73  largeant: @local::dunefd_largeant
74  rns: { module_type: "RandomNumberSaver" }
75  }
76 
77  analyzers:
78  {
79  pmtresponse: @local::dunefd_simphotoncounter
80 
81 
82  # This name defines a job step below, and will appear as a directory
83  # in the output histogram file.
84  AnalysisExample:
85  {
86  # The "module_type" tells us which module to run. The name here
87  # matches the name supplied to DEFINE_ART_MODULE near the end of
88  # AnalysisExample_module.cc.
89 
90  module_type: "AnalysisExample"
91 
92  # The input parameters for our AnalysisExample module. Compare
93  # the names you see here with the reconfigure method in
94  # AnalysisExample.cxx. You will want to add/remove/rename the
95  # example parameters below to suit your task.
96 
97  # If you are reading any objects created by the simulation, then
98  # don't change the value of this parameter. This is the name of
99  # the 'producer' that ran the simulation module in a previous
100  # job. An example of a job file that runs the simulation is
101  # ${LARSIM_DIR}/job/prodsingle.fcl; look for "largeant:". It's
102  # unlikely that anyone would change the name of this producer.
103 
104  SimulationLabel: "largeant"
105 
106  # Hits can be created by more than one module in
107  # ${LARRECO_DIR}/source/HitFinder. For this example, I picked
108  # the one that's usually run first.
109 
110  HitLabel: "gaushit"
111 
112  # The same for clusters:
113 
114  ClusterLabel: "fuzzycluster"
115 
116  # In this example, which primary particle(s) we'll focus on in an event.
117  # PDG code 13 = mu-.
118  PDGcode: 13
119 
120  # dx used for the dE/dx calculation; units are cm.
121  BinSize: 0.3
122  }
123  }
124 
125 
126  #define the producer and filter modules for this path, order matters,
127  #filters reject all following items. see lines starting physics.producers below
128  # simulate: [ generator, largeant, daq, rns ]
129  simulate: [ generator, largeant, rns ]
130  analyzeIt: [ AnalysisExample, pmtresponse]
131 
132  #define the output stream, there could be more than one if using filters
133  stream1: [ out1 ]
134 
135  #trigger_paths is a keyword and contains the paths that modify the art::event,
136  #ie filters and producers
137  trigger_paths: [simulate]
138 
139  #end_paths is a keyword and contains the paths that do not modify the art::Event,
140  #ie analyzers and output streams. these all run simultaneously
141  end_paths: [analyzeIt, stream1]
142 }
143 
144 #block to define where the output goes. if you defined a filter in the physics
145 #block and put it in the trigger_paths then you need to put a SelectEvents: {SelectEvents: [XXX]}
146 #entry in the output stream you want those to go to, where XXX is the label of the filter module(s)
147 outputs:
148 {
149  out1:
150  {
151  module_type: RootOutput
152  fileName: "dune1x2x6_optical_example_zscan_gen.root" #default file name, can override from command line with -o or --output
153  }
154 }
155