// FileName: reco_near_cosmic_daikon04_base_dogwood0.C
// Created 19 May 2008

// Usage
// loon -bq add_to_path(<path>) reco_near_cosmic_daikon04_base_dogwood0.C <data_file>

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

#include "headers/aclic.h"

class JobC;

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

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

#include "headers/near_mc/near_mc_do_report.h"

#include "headers/near_cosmic_mc/near_cosmic_mc_create_path.h"
#include "headers/near_cosmic_mc/near_cosmic_mc_configure.h"
#include "headers/near_cosmic_mc/near_cosmic_mc_configure_shower.h"
#include "headers/near_cosmic_mc/near_cosmic_mc_set_msg_levels.h"

#include "headers/srsafitter/srsafitter_set_msg_levels.h"

#include "headers/near_mc/near_mc_set_calibrator.h"

#include "headers/util/run.h"

#include "headers/configure_ugli.h"
#include "headers/apply_spectrometer_fudge.h"

void reco_near_cosmic_daikon04_base_dogwood0(int nSkip = 0, int nRun = 100000)
{
  gROOT->Macro("macros/load_libs.C");

  RecJobRecord::SetGlobalProdName("Dogwood");

  JobC jc;

  JobCPath& reroot = reroot_create_path(jc, "Reco");
  JobCPath& mc_reco = near_cosmic_mc_create_path(jc, "Reco1");

  //Attach the normal reco chain after the reroot path
  jc.Path.Attach("Reco", "Reco1");

  set_input_mc(jc);

  // TODO - turn these off somewhere else
  //turn off all filters
  reroot.SetAllFilters(0);
  mc_reco.SetAllFilters(0);

  reroot_configure(reroot, Detector::kNear);

  // TODO - move this somewhere else.
  reroot.Mod("RerootToTruthModule").Set("GetApplyRollback=1");

  near_cosmic_mc_configure(mc_reco);
  near_cosmic_mc_configure_shower(mc_reco);

  // TODO - work out what to do with this line
  mc_reco.Mod("StripSRListModule").Set("ListIn=canddigitlist");

  configure_ugli();

  near_mc_set_calibrator(0);

  //SpectrometerFudge added April 23,2007
  //this should be removed after database entry is updated
  apply_spectrometer_fudge();

  reroot_do_report(reroot);
  near_mc_do_report(mc_reco);

  attach_output_mc_srsafitter(jc, mc_reco, "CandS.root", true);

  near_cosmic_mc_set_msg_levels(jc);
  srsafitter_set_msg_levels(jc);

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

