Skip to content
Snippets Groups Projects
Commit 9d84f076 authored by Eric Pooser's avatar Eric Pooser
Browse files

Add infrastructure for SHMS aerogel replay

parent 2f61a24f
No related branches found
No related tags found
No related merge requests found
......@@ -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"
......
# 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
Block: RawDecode
Pedestal_event 0
RawDecode_master 1
Block: Decode
Decode_master 1
Block: CoarseTracking
CoarseTracking_master 1
Block: CoarseReconstruct
CourseReconstruct 0
! 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-
! 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-
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.,
......@@ -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
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)
//);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment