Project

General

Profile

LArIAT Packages

This page contains a list of all packages in the LArIAT offline repository as well as information for how to add a new package. Please add documentation for the package each time a new module is committed.

JobConfigurations

This package contains the .fcl files to configure standard jobs for LArIAT.

Adding A New Package

In Your Development Area

Your development area is the "develop" release you created for LArIATSoft if you used the function provided on the Setting up the Offline Software page. To add a new package, you simply create a directory in the srcs/lariatsoft directory of that release. You then need to add a CMakeLists.txt file to that directory. An example file is found in source:/lariatsoft/Calibration/CMakeLists.txt and is reproduced here. Note that comments are indicated with a "#".

# This is an example file where a module .so file is being created and any fhicl files will be installed into the fcl directory of the build product.  

# simple_plugin is the keyword for the build tool to know that it is creating either a service or module library
# You need a separate simple_plugin call for each module or service in the package

simple_plugin(CalWireT1034 "module" # creating the module library for CalWireT1034
Filters # Filters is a LArSoft library that we have to link in
RecoBase # RecoBase is a LArSoft library that we have to link in
${ART_FRAMEWORK_CORE} # The next several lines are to link in necessary ART libraries
${ART_FRAMEWORK_PRINCIPAL}
${ART_FRAMEWORK_SERVICES_REGISTRY}
${ART_FRAMEWORK_SERVICES_OPTIONAL}
${ART_FRAMEWORK_SERVICES_OPTIONAL_TFILESERVICE_SERVICE}
${ART_PERSISTENCY_COMMON}
${ART_PERSISTENCY_PROVENANCE}
${ART_UTILITIES}
${MF_MESSAGELOGGER} # The next two lines are to link in necessary MessageFacility libraries
${MF_UTILITIES}
${FHICLCPP} # Link in the FHICL interface
${CETLIB} # Link in the cetlib interfaces
${ROOT_GEOM} # The next several lines link in necessary ROOT libraries
${ROOT_XMLIO}
${ROOT_GDML}
${ROOT_BASIC_LIB_LIST}
BASENAME_ONLY # This flag tells the build system to make the library only contain the module or service name, not the full path to the source file
)

install_headers() # This line says to install the headers in the appropriate install directory
install_fhicl() # This line says to install the .fcl files in the appropriate install directory
install_source() # This line says to install the source code in the appropriate install directory

You then need to edit the CMakeLists.txt file in the top level lariatsoft directory to contain a line like

add_subdirectory(<MyPackage>)

where you replace <MyPackage> with the name of your package.

Adding The Package to the Repository

Once your package compiles, add it to the repository. From the top level lariatsoft directory in your srcs area do

$ git status
$ git add <MyPackage>
$ git commit -m'adding new package <MyPackage> to do xxx to the repository'
$ git push origin develop

Note, you may have to do "git add" for the top level CMakeLists.txt file too as you changed that.