-
Stephen A. Wood authored
An example GUI to display the periodic report during the analysis is included. (rustats.tcl). The commands to startup the GUI are in hodtest.C, but commented out.
Stephen A. Wood authoredAn example GUI to display the periodic report during the analysis is included. (rustats.tcl). The commands to startup the GUI are in hodtest.C, but commented out.
hodtest.C 4.29 KiB
{
//
// Steering script to test hodoscope decoding
//
Int_t RunNumber=50017;
char RunFileNamePattern[]="daq04_%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");
// 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("cer", "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" ));
THaApparatus* BEAM = new THcRasteredBeam("RB","Rastered Beamline");
gHaApps->Add( BEAM );
// 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"));
THcPeriodicReport* prep = new THcPeriodicReport("rep","Periodic Report","periodic.template", "periodic.out");
// Defaults to every 2 seconds. To do by event count instead:
// prep->SetEventPeriod(1000);
// prep->SetTimePeriod(0);
//gSystem->Exec("rm periodic.out");
//gSystem->Exec("./runstats.tcl periodic.out&");
gHaPhysics->Add(prep);
// 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);
run->SetRunParamClass("THcRunParameters");
// Perhaps we should make a THcRun that does this
// 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");
}