From 9d84f07614947c28f8968e229af74cd87bd1afc2 Mon Sep 17 00:00:00 2001 From: Eric Pooser <pooser@jlab.org> Date: Thu, 26 Jan 2017 14:54:17 -0500 Subject: [PATCH] Add infrastructure for SHMS aerogel replay --- DBASE/general.param | 1 + DEF-files/SHMS/AERO/paeroana.def | 27 +++++++ DEF-files/SHMS/AERO/paeroana_cuts.def | 14 ++++ MAPS/SHMS/DETEC/paero.map | 30 ++++---- MAPS/SHMS/DETEC/paero_ptrig.map | 83 ++++++++++++++++++++ PARAM/SHMS/AERO/paero.param | 11 +++ PARAM/SHMS/GEN/pcana.param | 5 +- SCRIPTS/SHMS/replay_paero_test_stand.C | 100 +++++++++++++++++++++++++ 8 files changed, 255 insertions(+), 16 deletions(-) create mode 100644 DEF-files/SHMS/AERO/paeroana.def create mode 100644 DEF-files/SHMS/AERO/paeroana_cuts.def create mode 100644 MAPS/SHMS/DETEC/paero_ptrig.map create mode 100644 PARAM/SHMS/AERO/paero.param create mode 100644 SCRIPTS/SHMS/replay_paero_test_stand.C diff --git a/DBASE/general.param b/DBASE/general.param index 22c8b72d..fed1a220 100644 --- a/DBASE/general.param +++ b/DBASE/general.param @@ -34,6 +34,7 @@ raddeg=3.14159265/180 #include "PARAM/SHMS/GEN/ptracking.param" ; SHMS detector specific paramter files +#include "PARAM/SHMS/AERO/paero.param" #include "PARAM/SHMS/CAL/pcal.param" #include "PARAM/SHMS/DC/pdc.pos" #include "PARAM/SHMS/DC/pdc.param" diff --git a/DEF-files/SHMS/AERO/paeroana.def b/DEF-files/SHMS/AERO/paeroana.def new file mode 100644 index 00000000..8fd195a7 --- /dev/null +++ b/DEF-files/SHMS/AERO/paeroana.def @@ -0,0 +1,27 @@ +# See $ANALYZER/examples/output_example.def for examples +# +block P.aero.* +block T.shms.* + +TH1F paero-_occu 'SHMS Aero- Occupancy; Counter Number; Number of Entries' P.aero.negAdcCounter 7 0.5 7.5 +TH1F paero+_occu 'SHMS Aero+ Occupancy; Counter Number; Number of Entries' P.aero.posAdcCounter 7 0.5 7.5 + +TH2F paero-_rawped_vs_cntr 'SHMS Aero- Raw Pulse Pedestal vs. Counter Number; Counter Number; Raw Pulse Pedestal / 10 ADC Units' P.aero.negAdcCounter P.aero.negAdcPedRaw 7 0.5 7.5 1000 0 10000 +TH2F paero-_rawpi_vs_cntr 'SHMS Aero- Raw Pulse Integral vs. Counter Number; Counter Number; Raw Pulse Integral / 10 ADC Units' P.aero.negAdcCounter P.aero.negAdcPulseIntRaw 7 0.5 7.5 4000 0 40000 +TH2F paero-_rawpped_vs_cntr 'SHMS Aero- Raw Pulse Peak vs. Counter Number; Counter Number; Raw Pulse Peak / 10 ADC Units' P.aero.negAdcCounter P.aero.negAdcPulseAmpRaw 7 0.5 7.5 410 0 4100 +TH2F paero-_rawptime_vs_cntr 'SHMS Aero- Raw Pulse Time vs. Counter Number; Counter Number; Raw Pulse Time / 10 ADC Units' P.aero.negAdcCounter P.aero.negAdcPulseTimeRaw 7 0.5 7.5 1000 0 10000 + +TH2F paero+_rawped_vs_cntr 'SHMS Aero+ Raw Pulse Pedestal vs. Counter Number; Counter Number; Raw Pulse Pedestal / 10 ADC Units' P.aero.posAdcCounter P.aero.posAdcPedRaw 7 0.5 7.5 1000 0 10000 +TH2F paero+_rawpi_vs_cntr 'SHMS Aero+ Raw Pulse Integral vs. Counter Number; Counter Number; Raw Pulse Integral / 10 ADC Units' P.aero.posAdcCounter P.aero.posAdcPulseIntRaw 7 0.5 7.5 4000 0 40000 +TH2F paero+_rawpped_vs_cntr 'SHMS Aero+ Raw Pulse Peak vs. Counter Number; Counter Number; Raw Pulse Peak / 10 ADC Units' P.aero.posAdcCounter P.aero.posAdcPulseAmpRaw 7 0.5 7.5 410 0 4100 +TH2F paero+_rawptime_vs_cntr 'SHMS Aero+ Raw Pulse Time vs. Counter Number; Counter Number; Raw Pulse Time / 10 ADC Units' P.aero.negAdcCounter P.aero.negAdcPulseTimeRaw 7 0.5 7.5 1000 0 10000 + +TH2F paero-_ped_vs_cntr 'SHMS Aero- Pulse Pedestal vs. Counter Number; Counter Number; Pulse Pedestal / 10 ADC Units' P.aero.negAdcCounter P.aero.negAdcPed 7 0.5 7.5 1000 0 10000 +TH2F paero-_pi_vs_cntr 'SHMS Aero- Pulse Integral vs. Counter Number; Counter Number; Pulse Integral / 10 ADC Units' P.aero.negAdcCounter P.aero.negAdcPulseInt 7 0.5 7.5 4000 0 40000 +TH2F paero-_pped_vs_cntr 'SHMS Aero- Pulse Peak vs. Counter Number; Counter Number; Pulse Peak / 10 ADC Units' P.aero.negAdcCounter P.aero.negAdcPulseAmp 7 0.5 7.5 410 0 4100 + +TH2F paero+_ped_vs_cntr 'SHMS Aero+ Pulse Pedestal vs. Counter Number; Counter Number; Pulse Pedestal / 10 ADC Units' P.aero.posAdcCounter P.aero.posAdcPed 7 0.5 7.5 1000 0 10000 +TH2F paero+_pi_vs_cntr 'SHMS Aero+ Pulse Integral vs. Counter Number; Counter Number; Pulse Integral / 10 ADC Units' P.aero.posAdcCounter P.aero.posAdcPulseInt 7 0.5 7.5 4000 0 40000 +TH2F paero+_pped_vs_cntr 'SHMS Aero+ Pulse Peak vs. Counter Number; Counter Number; Pulse Peak / 10 ADC Units' P.aero.posAdcCounter P.aero.posAdcPulseAmp 7 0.5 7.5 410 0 4100 + + diff --git a/DEF-files/SHMS/AERO/paeroana_cuts.def b/DEF-files/SHMS/AERO/paeroana_cuts.def new file mode 100644 index 00000000..5add84a3 --- /dev/null +++ b/DEF-files/SHMS/AERO/paeroana_cuts.def @@ -0,0 +1,14 @@ +Block: RawDecode + +Pedestal_event 0 +RawDecode_master 1 + +Block: Decode +Decode_master 1 + +Block: CoarseTracking +CoarseTracking_master 1 + +Block: CoarseReconstruct +CourseReconstruct 0 + diff --git a/MAPS/SHMS/DETEC/paero.map b/MAPS/SHMS/DETEC/paero.map index eef46539..86e3d37e 100644 --- a/MAPS/SHMS/DETEC/paero.map +++ b/MAPS/SHMS/DETEC/paero.map @@ -1,4 +1,4 @@ -! SAERO_ID=25 :: ::,ADC+,ADC- +! PAERO_ID=25 :: ::,ADC+,ADC- DETECTOR=25 @@ -6,19 +6,19 @@ DETECTOR=25 ROC=2 SLOT=10 - 10, 1, 1, 0 ! sAER01+ - 11, 1, 2, 0 ! sAER02+ - 12, 1, 3, 0 ! sAER03+ - 13, 1, 4, 0 ! sAER04+ - 14, 1, 5, 0 ! sAER05+ - 15, 1, 6, 0 ! sAER06+ + 10, 1, 1, 0 ! pAER01+ + 11, 1, 2, 0 ! pAER02+ + 12, 1, 3, 0 ! pAER03+ + 13, 1, 4, 0 ! pAER04+ + 14, 1, 5, 0 ! pAER05+ + 15, 1, 6, 0 ! pAER06+ SLOT=13 - 0, 1, 7, 0 ! sAER07+ - 1, 1, 1, 1 ! sAER01- - 2, 1, 2, 1 ! sAER02- - 3, 1, 3, 1 ! sAER03- - 4, 1, 4, 1 ! sAER04- - 5, 1, 5, 1 ! sAER05- - 6, 1, 6, 1 ! sAER06- - 7, 1, 7, 1 ! sAER07- + 0, 1, 7, 0 ! pAER07+ + 1, 1, 1, 1 ! pAER01- + 2, 1, 2, 1 ! pAER02- + 3, 1, 3, 1 ! pAER03- + 4, 1, 4, 1 ! pAER04- + 5, 1, 5, 1 ! pAER05- + 6, 1, 6, 1 ! pAER06- + 7, 1, 7, 1 ! pAER07- diff --git a/MAPS/SHMS/DETEC/paero_ptrig.map b/MAPS/SHMS/DETEC/paero_ptrig.map new file mode 100644 index 00000000..4371a2f3 --- /dev/null +++ b/MAPS/SHMS/DETEC/paero_ptrig.map @@ -0,0 +1,83 @@ +! TSHMS_ID=20 :: ::,ADC,TDC +! PAERO_ID=25 :: ::,ADC,TDC + + +DETECTOR=20 + +ROC=2 + +SLOT=14 + 0, 1, 1, 0 ! pAERSUM + 1, 1, 2, 0 ! pHGCSUM + 2, 1, 3, 0 ! pNGCSUM + +SLOT=20 + 15, 2, 1, 1 ! pT1 + +SLOT=19 + 31, 2, 2, 1 ! pT2 + 32, 2, 3, 1 ! p1X + 33, 2, 4, 1 ! p1Y + 34, 2, 5, 1 ! p2X + 35, 2, 6, 1 ! p2Y + 36, 2, 7, 1 ! p1T + 37, 2, 8, 1 ! p2T + 38, 2, 9, 1 ! pT3 + 39, 2, 10, 1 ! pAERSUM + 40, 2, 11, 1 ! pHGCSUM + 41, 2, 12, 1 ! pNGCSUM + +ROC=6 + +SLOT=6 + 79, 2, 13, 1 ! pDCREF1 + +SLOT=7 + 79, 2, 14, 1 ! pDCREF2 + +SLOT=8 + 79, 2, 15, 1 ! pDCREF3 + +SLOT=9 + 79, 2, 16, 1 ! pDCREF4 + +SLOT=10 + 79, 2, 17, 1 ! pDCREF5 + +SLOT=11 + 47, 2, 18, 1 ! pDCREF6 + +SLOT=12 + 47, 2, 19, 1 ! pDCREF7 + +SLOT=13 + 47, 2, 20, 1 ! pDCREF8 + +SLOT=14 + 15, 2, 21, 1 ! pDCREF9 + +SLOT=15 + 47, 2, 22, 1 ! pDCREF10 + + +DETECTOR=25 + +ROC=2 + +SLOT=10 + 10, 1, 1, 0 ! pAER01+ + 11, 1, 2, 0 ! pAER02+ + 12, 1, 3, 0 ! pAER03+ + 13, 1, 4, 0 ! pAER04+ + 14, 1, 5, 0 ! pAER05+ + 15, 1, 6, 0 ! pAER06+ + +SLOT=13 + 0, 1, 7, 0 ! pAER07+ + 1, 1, 1, 1 ! pAER01- + 2, 1, 2, 1 ! pAER02- + 3, 1, 3, 1 ! pAER03- + 4, 1, 4, 1 ! pAER04- + 5, 1, 5, 1 ! pAER05- + 6, 1, 6, 1 ! pAER06- + 7, 1, 7, 1 ! pAER07- diff --git a/PARAM/SHMS/AERO/paero.param b/PARAM/SHMS/AERO/paero.param new file mode 100644 index 00000000..c1622274 --- /dev/null +++ b/PARAM/SHMS/AERO/paero.param @@ -0,0 +1,11 @@ + paero_pos_gain = 1./168.3, 1./233.9, 1./181.3, 1./169.2, 1./177.6, 1./155.0, 1./169.5, 1./149.7, + + paero_neg_gain = 1./248.8, 1./186.4, 1./236.4, 1./172.0, + 1./205.3, 1./198.1, 1./227.9, 1./229.2, + + paero_pos_ped_limit = 1000., 1000., 1000., 1000., + 1000., 1000., 1000., 1000., + + paero_neg_ped_limit = 1000., 1000., 1000., 1000., + 1000., 1000., 1000., 1000., + diff --git a/PARAM/SHMS/GEN/pcana.param b/PARAM/SHMS/GEN/pcana.param index 347bf0e2..2ba415b0 100644 --- a/PARAM/SHMS/GEN/pcana.param +++ b/PARAM/SHMS/GEN/pcana.param @@ -18,4 +18,7 @@ pdc_plane_names = "1u1 1u2 1x1 1x2 1v1 1v2 2v2 2v1 2x2 2x1 2u2 2u1" ; behavior, but one for more correct behavior pdc_fix_lr = 1 ; Let hit have different L/R assignment for different space point pdc_fix_propcorr = 1 ; do propagation along wire each time hit appeears - ; in a space point \ No newline at end of file + ; in a space point + +; Number of aerogel pairs of pmt's +paero_num_pairs = 7 \ No newline at end of file diff --git a/SCRIPTS/SHMS/replay_paero_test_stand.C b/SCRIPTS/SHMS/replay_paero_test_stand.C new file mode 100644 index 00000000..c934c040 --- /dev/null +++ b/SCRIPTS/SHMS/replay_paero_test_stand.C @@ -0,0 +1,100 @@ +void replay_paero_test_stand(Int_t RunNumber=0, Int_t MaxEvent=0) { + + // Get RunNumber and MaxEvent if not provided. + if(RunNumber == 0) { + cout << "Enter a Run Number (-1 to exit): "; + cin >> RunNumber; + if( RunNumber<=0 ) return; + } + if(MaxEvent == 0) { + cout << "\nNumber of Events to analyze: "; + cin >> MaxEvent; + if(MaxEvent == 0) { + cerr << "...Invalid entry\n"; + exit; + } + } + + // Create file name patterns. + const char* RunFileNamePattern = "raw/shms_all_%05d.dat"; + const char* ROOTFileNamePattern = "ROOTfiles/paero_replay_%d.root"; + // Add variables to global list. + gHcParms->Define("gen_run_number", "Run Number", RunNumber); + gHcParms->AddString("g_ctp_database_filename", "DBASE/standard.database"); + + // Load varibles from files to global list. + 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_kinematics_filename"), RunNumber); + gHcParms->Load(gHcParms->GetString("g_ctp_parm_filename")); + + // Load params for HMS trigger configuration + gHcParms->Load("PARAM/TRIG/tshms.param"); + + // Load the Hall C style detector map + gHcDetectorMap = new THcDetectorMap(); + gHcDetectorMap->Load("MAPS/SHMS/DETEC/paero_ptrig.map"); + + // Set up the equipment to be analyzed. + THaApparatus* SHMS = new THcHallCSpectrometer("P", "SHMS"); + gHaApps->Add(SHMS); + // Add aeroscope to HMS apparatus + THcAerogel* aero = new THcAerogel("aero", "Aerogel"); + SHMS->AddDetector(aero); + + // Add trigger apparatus + THaApparatus* TRG = new THcTrigApp("T", "TRG"); + gHaApps->Add(TRG); + // Add trigger detector to trigger apparatus + THcTrigDet* shms = new THcTrigDet("shms", "SHMS Trigger Information"); + TRG->AddDetector(shms); + + // 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, MaxEvent); // Physics Event number, does not + // include scaler or control events. + run->SetNscan(1); + run->SetDataRequired(0x7); + run->Print(); + + // Define the analysis parameters + TString ROOTFileName = Form(ROOTFileNamePattern, RunNumber); + analyzer->SetCountMode(2); // 0 = counter is # of physics triggers + // 1 = counter is # of all decode reads + // 2 = counter is event number + analyzer->SetEvent(event); + analyzer->SetCrateMapFileName("MAPS/db_cratemap.dat"); + analyzer->SetOutFile(ROOTFileName.Data()); + analyzer->SetOdefFile("DEF-files/SHMS/AERO/paeroana.def"); + analyzer->SetCutFile("DEF-files/SHMS/AERO/paeroana_cuts.def"); // optional + + // File to record cuts accounting information + //analyzer->SetSummaryFile("summary_example.log"); // optional + + // Start the actual analysis. + analyzer->Process(run); + // Create report file from template. + //analyzer->PrintReport( // optional + // "TEMPLATES/dcana.template", + // Form("REPORT_OUTPUT/replay_hms_%05d.report", RunNumber) + //); +} -- GitLab