Skip to content
Snippets Groups Projects
hodtest_daq07.C 3.83 KiB
Newer Older

{

  //
  //  Steering script to test hodoscope decoding
  //
  Int_t RunNumber=65605;
  char RunFileNamePattern[]="daq07-coin_%d.log.0";
  gHcParms->Define("gen_run_number", "Run Number", RunNumber);
  gHcParms->AddString("g_ctp_database_filename", "DBASE/test.database");
  gHcParms->Load(gHcParms->GetString("g_ctp_database_filename"), RunNumber);

  // g_ctp_parm_filename and g_decode_map_filename should now be defined

  gHcParms->Load(gHcParms->GetString("g_ctp_parm_filename"));

  // Constants not in ENGINE PARAM files that we want to be
  // configurable
  gHcParms->Load("PARAM/hcana.param");

  gHcParms->Load("PARAM/hdumptof.param");
  // Generate db_cratemap to correspond to map file contents
  char command[100];
  sprintf(command,"./make_cratemap.pl < %s > db_cratemap.dat",gHcParms->GetString("g_decode_map_filename"));
  system(command);

  // Load the Hall C style detector map
  gHcDetectorMap=new THcDetectorMap();
  gHcDetectorMap->Load(gHcParms->GetString("g_decode_map_filename"));

  // Set up the equipment to be analyzed.

  THaApparatus* HMS = new THcHallCSpectrometer("H","HMS");
  gHaApps->Add( HMS );

  // Add hodoscope
  THcHodoscope* hms_hodoscope = new THcHodoscope("hod","Hodoscope");
  HMS->AddDetector( hms_hodoscope );
  HMS->AddDetector( new THcShower("cal", "Shower" ));
  HMS->AddDetector( new THcDC("dc", "Drift Chambers" ));
  THcAerogel* aerogel = new THcAerogel("aero", "Aerogel Cerenkov" );
  HMS->AddDetector( aerogel );
  THcCherenkov* cherenkov = new THcCherenkov("cher", "Gas Cerenkov" );
  HMS->AddDetector( cherenkov );

  THcScalerEvtHandler *hscaler = new THcScalerEvtHandler("HS","HC scaler event type 0");
  hscaler->SetDebugFile("HScaler.txt");
  gHaEvtHandlers->Add (hscaler);


  //  THaApparatus* SOS = new THcHallCSpectrometer("S","SOS");
  //  gHaApps->Add( SOS );
  // Add detectors
  //  THcHodoscope* sos_hodoscope = new THcHodoscope("hod","Hodoscope");
  //  SOS->AddDetector( sos_hodoscope);
  //  SOS->AddDetector( new THcShower("cal", "Shower" ));
  //  SOS->AddDetector( new THcDC("dc", "Drift Chambers" ));

  // setup physics
  gHaPhysics->Add( new THaGoldenTrack( "H.gold", "HMS Golden Track", "H" ));
  //  gHaPhysics->Add( new THaGoldenTrack( "S.gold", "SOS Golden Track", "S" ));

  gHaPhysics->Add(new THcHodoEff("hhodeff","HMS Hodoscope Efficiencies","H.hod"));
  //  gHaPhysics->Add(new THcHodoEff("shodeff","SOS Hodoscope Efficiencies","S.hod"));

  // Set up the analyzer - we use the standard one,
  // but this could be an experiment-specific one as well.
  // The Analyzer controls the reading of the data, executes
  // tests/cuts, loops over Acpparatus's and PhysicsModules,
  // and executes the output routines.
  THcAnalyzer* analyzer = new THcAnalyzer;

  // A simple event class to be output to the resulting tree.
  // Creating your own descendant of THaEvent is one way of
  // defining and controlling the output.
  THaEvent* event = new THaEvent;
  // Define the run(s) that we want to analyze.
  // We just set up one, but this could be many.
  char RunFileName[100];
  sprintf(RunFileName,RunFileNamePattern,RunNumber);
  THaRun* run = new THaRun(RunFileName);

  // Eventually need to learn to skip over, or properly analyze
  // the pedestal events
  run->SetEventRange(1,100000);//  Physics Event number, does not
                                // include scaler or control events

  // Define the analysis parameters
  analyzer->SetEvent( event );
  analyzer->SetOutFile( "hodtest.root" );
  analyzer->SetOdefFile("output.def");
  analyzer->SetCutFile("hodtest_cuts.def");        // optional
  analyzer->SetCountMode(2);// Counter event number same as gen_event_ID_number
  // File to record cuts accounting information
  //  analyzer->SetSummaryFile("summary_example.log"); // optional
  analyzer->Process(run);     // start the actual analysis
  analyzer->PrintReport("report.template","report.out");
}