1 # A script to run an analysis module: AnalysisExample. You may want to
     2 # compare this script with ${LARSIM_DIR}/job/prodsingle.fcl; in
     3 # particular, in this script there are no output streams because the
     4 # module doesn't write any events, just histograms or n-tuples.
     6 # See <https://cdcvs.fnal.gov/redmine/projects/larsoft/wiki/_Running_Jobs_> 
     7 # for more information on the structure of .fcl files. 
     9 # The following line has to be changed to match your experiment; e.g.,
    10 # "services_dune.fcl", "services_lariat.fcl". I'm using microboone
    11 # solely because, as a MicroBooNE collaborator, it's easier for me to
    12 # test this script to make sure it works.
    14 # Note that the following line loads many more services than we're
    15 # going to use in this example. If we're clever enough, and we worked
    16 # through the nested layers of fcl scripts, we could only include
    17 # those services that we actually use, which would save some time and
    18 # memory. For this example I'm going for simplicity (but scroll to the
    19 # bottom of this script to see the price of simplicity).
    21 #include "services_microboone_simulation.fcl"
    23 process_name: AnalysisExample
    27   # Load the service that manages root files for histograms.
    28   # Any histograms or n-tuples that you create in the program will be
    29   # written to this file. You can override the file name with the -T
    30   # option on the command line; e.g.,
    31   #  lar -c AnalysisExample.fcl -T myhistograms.root -s myinput.root
    33   TFileService:           { fileName: "AnalysisExample.root" }
    35   # This constrols the display in the output of how long each job step
    36   # takes for each event. A lot of configuration can be added: details at
    37   # https://cdcvs.fnal.gov/redmine/projects/art/wiki/TimeTracker#TimeTracker
    41   # This parameter controls the level of descriptive output from
    42   # various LArSoft modules. For a list of different message levels,
    43   # see ${LARDATA_DIR}/job/messageservice.fcl. For most jobs this is
    44   # set to standard_warning; here it is set to standard_info because I
    45   # write some LogInfo messages in the analysis module for
    46   # demonstration purposes.
    48   # Note that if you set this to standard_debug (to see the LOG_DEBUG
    49   # messages in the analysis module) the job's messages will not
    50   # appear on screen. They're written to a debug.log file instead.
    52   message:                @local::standard_info
    54   # This following line defines many default LArSoft resources for
    55   # this job. It's more than we'll need, but it's easier to include
    56   # all of them than to pick and choose. We want "simulation" services
    57   # because the example module accesses LArG4Parameters.
    58   @table::microboone_simulation_services
    62 >>>>>>> origin/feature/seligman_uptodateAnalysisExample
    63 # The 'source' section tells the script to expect an input file with art::Event records.
    64 # Note that the name of the input file is not included here. You specify that on the
    65 # command line when you run this script; e.g.,
    66 #    lar -c AnalysisExample.fcl -s myinput.root
    67 # The file "myinput.root" is assumed to have been created by a previous LArSoft job.
    71   module_type: RootInput
    73   # Number of events to analyze; "-1" means all of the events in the input
    74   # file. You can override this value with the "-n" option on the command line. 
    77   # I've commented this out, but if you want to include the name of
    78   # an art::Event input file in a script, here's how you do it.
    79   # fileNames: ["myinput.root"]
    82 # This is empty, because we're not writing an output file with
    86 # The 'physics' section defines and configures some modules to do work
    87 # on each event.  First modules are defined; they are scheduled
    88 # later. Modules are grouped by type.
    91   # Define the variables we'll need to read for this analysis program.
    94     # This name defines a job step below, and will appear as a directory 
    95     # in the output histogram file. 
    98       # The "module_type" tells us which module to run. The name here
    99       # must match the name supplied to DEFINE_ART_MODULE near the end
   100       # of AnalysisExample_module.cc.
   102       module_type:     "AnalysisExample"
   104       # The input parameters for our AnalysisExample module. Compare
   105       # the names you see here with the "struct Config" in
   106       # AnalysisExample_module.cxx. You will want to add/remove/rename
   107       # the example parameters below to suit your task.
   109       # If you are reading any objects created by the standard
   110       # simulation scripts, then don't change the value of this
   111       # parameter. This is the name of the 'producer' that ran the
   112       # simulation module in a previous job. An example of a job file
   113       # that runs the simulation is ${LARSIM_DIR}/job/prodsingle.fcl;
   114       # look for "largeant:". It's unlikely that anyone would change
   115       # the name of this producer.
   117       SimulationLabel: "largeant"
   119       # Hits can be created by more than one module in
   120       # ${LARRECO_DIR}/source/larreco/HitFinder. For this example, I
   121       # picked the one that's usually run first.
   125       # The same for clusters:
   127       ClusterLabel:    "trajcluster"
   129       # In this example, which primary particle(s) we'll focus on in an event.
   133       # dx used for the dE/dx calculation; units are cm. 
   138   # Schedule job step(s) for execution by defining the analysis module
   139   # for this job. An 'analysis' module (as opposed to a 'producer' or
   140   # a 'filter') does not alter the contents of events in the input
   141   # file, nor does it create any events as output. Any step names
   142   # listed here must match a name in the 'analyzers' section above.
   144   analysis: [ AnalysisExample ]
   146   # "end_paths" is a keyword and contains the modules that do not modify the art::Event;
   147   # i.e., analyzers and output streams.
   149   end_paths: [ analysis ]
   152 # In order to work with the reconstructed objects I use in
   153 # AnalysisExample, I found I needed to add the following lines. For
   155 # <https://cdcvs.fnal.gov/redmine/projects/uboonecode/wiki/Guide_to_Using_FCL_files_in_MicroBooNE>
   156 # Note that this is a MicroBooNE-only requirement; your experiment may
   157 # need different adjustments to handle the difference between
   158 # simulation and reconstruction waveform times.
   160 services.DetectorClocksService.InheritClockConfig: false
   161 services.DetectorClocksService.TriggerOffsetTPC: -400
   162 services.DetectorPropertiesService.NumberTimeSamples: 6400
   163 services.DetectorPropertiesService.ReadOutWindowSize: 6400