protodune_optical_tutorial_yscan.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/yscan.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: "protodune_optical_example_yscan_hist.root" }
28  TimeTracker: {}
29  RandomNumberGenerator: {} #ART native random number generator
30  message: @local::standard_info
31  @table::protodune_simulation_services
32 }
33 
34 
35 
36 #Start each new event with an empty event.
37 source:
38 {
39  module_type: EmptyEvent
40  timestampPlugin: { plugin_type: "GeneratedEventTimestamp" }
41  maxEvents: 20 # Number of events to create
42  firstRun: 1 # Run number to use for this file
43  firstEvent: 1 # number of first event in the file
44 }
45 
46 # Define and configure some modules to do work on each event.
47 # First modules are defined; they are scheduled later.
48 # Modules are grouped by type.
49 physics:
50 {
51 
52  producers:
53  {
54  generator: @local::standard_textfilegen
55  largeant: @local::dunefd_largeant
56  rns: { module_type: "RandomNumberSaver" }
57  }
58 
59  analyzers:
60  {
61  pmtresponse: @local::dunefd_simphotoncounter
62 
63 
64  # This name defines a job step below, and will appear as a directory
65  # in the output histogram file.
66  AnalysisExample:
67  {
68  # The "module_type" tells us which module to run. The name here
69  # matches the name supplied to DEFINE_ART_MODULE near the end of
70  # AnalysisExample_module.cc.
71 
72  module_type: "AnalysisExample"
73 
74  # The input parameters for our AnalysisExample module. Compare
75  # the names you see here with the reconfigure method in
76  # AnalysisExample.cxx. You will want to add/remove/rename the
77  # example parameters below to suit your task.
78 
79  # If you are reading any objects created by the simulation, then
80  # don't change the value of this parameter. This is the name of
81  # the 'producer' that ran the simulation module in a previous
82  # job. An example of a job file that runs the simulation is
83  # ${LARSIM_DIR}/job/prodsingle.fcl; look for "largeant:". It's
84  # unlikely that anyone would change the name of this producer.
85 
86  SimulationLabel: "largeant"
87 
88  # Hits can be created by more than one module in
89  # ${LARRECO_DIR}/source/HitFinder. For this example, I picked
90  # the one that's usually run first.
91 
92  HitLabel: "gaushit"
93 
94  # The same for clusters:
95 
96  ClusterLabel: "fuzzycluster"
97 
98  # In this example, which primary particle(s) we'll focus on in an event.
99  # PDG code 13 = mu-.
100  PDGcode: 13
101 
102  # dx used for the dE/dx calculation; units are cm.
103  BinSize: 0.3
104  }
105  }
106 
107 
108  #define the producer and filter modules for this path, order matters,
109  #filters reject all following items. see lines starting physics.producers below
110  # simulate: [ generator, largeant, daq, rns ]
111  simulate: [ generator, largeant, rns ]
112  analyzeIt: [ AnalysisExample, pmtresponse]
113 
114  #define the output stream, there could be more than one if using filters
115  stream1: [ out1 ]
116 
117  #trigger_paths is a keyword and contains the paths that modify the art::event,
118  #ie filters and producers
119  trigger_paths: [simulate]
120 
121  #end_paths is a keyword and contains the paths that do not modify the art::Event,
122  #ie analyzers and output streams. these all run simultaneously
123  end_paths: [analyzeIt, stream1]
124 }
125 
126 #block to define where the output goes. if you defined a filter in the physics
127 #block and put it in the trigger_paths then you need to put a SelectEvents: {SelectEvents: [XXX]}
128 #entry in the output stream you want those to go to, where XXX is the label of the filter module(s)
129 outputs:
130 {
131  out1:
132  {
133  module_type: RootOutput
134  fileName: "protodune_optical_example_yscan_gen.root" #default file name, can override from command line with -o or --output
135  }
136 }
137