// FileName: reco_far_spill_fava00_base_dogwood0.C
// Created 7 Nov 2008
//
// Usage
// loon -bq add_to_path(<path>) reco_far_spill_fava00_base_dogwood0.C <reroot_file>

/////////////////////////////////////////////////////////
// Output:                                             //
// Output Files:                                       //
//  CandS.root - candidate output file                 //
//  ntupleStS.root - NtpSt ntuple output               //
/////////////////////////////////////////////////////////

#include "headers/aclic.h"
#include "headers/test_filename.h"

class JobC;

#include "headers/reroot/reroot_create_path.h"
#include "headers/reroot/reroot_do_report.h"
#include "headers/reroot/reroot_configure.h"

#include "headers/far_mc/far_mc_create_path.h"
#include "headers/far_mc/far_mc_configure.h"
#include "headers/far_mc/far_mc_do_report.h"
#include "headers/far_mc/far_mc_set_calibrator.h"
#include "headers/far_mc/far_mc_set_msg_levels.h"

#include "headers/io/set_input_mc.h"
#include "headers/io/attach_output_mc.h"

#include "headers/util/run.h"

#include "headers/configure_ugli.h"

void reco_far_spill_fava00_base_dogwood0(int nSkip = 0, int nRun = 100000)
{
  test_filename('f');

  gROOT->Macro("macros/load_libs.C");

  RecJobRecord::SetGlobalProdName("Dogwood");

  JobC jc;

  JobCPath& reroot = reroot_create_path(jc, "Reco");
  JobCPath& far_mc = far_mc_create_path(jc, "Reco1");
  reroot.Attach(&far_mc);

  set_input_mc(jc);

  // TODO, do this somewhere else
  // Set up RerootExodus to build the event as MC (instead of Reroot)
  RerootExodus::SetVldSimFlag(SimFlag::kMC);

  //turn off all filters - TODO, do this somwhere else
  reroot.SetAllFilters(0);
  far_mc.SetAllFilters(0);

  reroot_configure(reroot, Detector::kFar);

  // TODO, do this elsewhere
  //Additional Configuration settings supplied by Nathaniel
  reroot.Mod("DetSim").Set("applyTrigger=0");    //Turn off all triggers - soill trigger event
  reroot.Mod("PhotonTransport").Set("NoiseWindow=40e-6"); //Increase noise window to +- 40 us of noise for spill trigger

  far_mc_configure(far_mc);

  // Set the simulated date of the events as to allow for consistent calibration
  // RerootExodus::SetOverrideVldTimeStamp();

  configure_ugli();

  far_mc_set_calibrator(0);

  reroot_do_report(reroot);
  far_mc_do_report(far_mc);

  attach_output_mc(jc, far_mc, "CandS.root", true, "Daikon");

  far_mc_set_msg_levels(jc);

  run(jc, reroot, nSkip, nRun);
}
