New CAFs (feature_caf_size) notes

Under construction

Join #feature_caf_size on slack, there's some useful stuff on there, and people ready to answer questions.


decafs/concats: /pnfs/nova/persistent/production/concat/R16-11-12-feature_caf_size.a/prod_decaf_R16-11-12-feature_decaf_size.a_*


Use the branch

(Kirk's instructions: docdb 16063 page 10 + CosRej package on top of the ones listed)

newrel -t development dev_caf_testing
cd dev_caf_testing
srt_setup -a
addpkg_svn -b StandardRecord feature_caf_size
addpkg_svn -b CAFMaker feature_caf_size
addpkg_svn -b CAFAna feature_caf_size
addpkg_svn -b Preselection feature_caf_size
addpkg_svn -b ProductMorgue feature_caf_size
addpkg_svn -b CosRej feature_caf_size
addpkg_svn -b MCCheater feature_caf_size
novasoft_build -t

feature_caf_size tagged release

setup_nova -b maxopt -r R16-11-12-feature_caf_size.a

Note that this build uses CAFAna, CAFMaker, FNEX, MCCheater, Preselection, ProductMorgue, SRT_NOVA, StandardRecord from R16-11-12-feature_caf_size.a, others from S16-11-12.
Setup as seen in

Documentation / validation

Merge of New CAFs into main branch (02/24/2017)

  • The new CAF structure was merged back into the main branch on 02/24/17.
  • The last tag compatible with the old CAF structure is R17-02-22-legacy-cafs-v1
  • The branch R17-02-22-legacy-cafs-v1-br is also available is additional commits are needed to the old CAF structure branch

Using ART files from the SA era in a release with the new CAF structure

As part of the standard production of reco and pid files the StandardRecord object is stored in the ART file for book keeping and can be used to make CAFAna style cuts in the ART file. If you are running a job on a file which has an old CAF style StandardRecord object in it (any SA era production reco or pid file, or any custom produced files where the StandardRecord was stored) in a release more modern then R17-02-22, you must modify the source block of your job file as follows to have an input command to drop the object:

  module_type: RootInput # Read root source
  maxEvents:   -1        # Process all events
  inputCommands: [ "keep *", "drop *_cafmaker_*_*" ]

If this is not included you will encounter an error along the lines of the following:

 ---- FatalRootError BEGIN
        Fatal Root Error: @SUB=TStreamerInfo::BuildOld
        Cannot convert caf::SRTrackBranch::kalman from type:vector<caf::SRTrack> to type:caf::SRKalman, skip element
        cet::exception going through module RootOutput/out1 run: 10392 subRun: 44 event: 849440
      ---- FatalRootError END
      Exception going through path end_path
    ---- ScheduleExecutionFailure END
  ---- EventProcessorFailure END
  cet::exception caught in EventProcessor and rethrown
---- EventProcessorFailure END