Skip to content
Snippets Groups Projects
Commit 6d6f5f1d authored by Mark K Jones's avatar Mark K Jones Committed by GitHub
Browse files

Merge pull request #181 from MarkKJones/primarykine

Scripts and DEF files for using THcPrimaryKine
parents 096aa5bb 99f6e154
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,6 @@ hpcentral = 3.
ppcentral = 3.
hpartmass = 0.00051099
ppartmass = 0.00051099
ptargmass_amu=12.0
465-465
ppcentral = 0.750
\ No newline at end of file
This diff is collapsed.
# Report file for SHMS stack
Block: RawDecode
Pedestal_event g.evtyp == 4
scalar_event g.evtyp == 0
HMS_event g.evtyp == 1
SHMS_event g.evtyp == 1
coin_event g.evtyp == 3
misc_event g.evtyp >= 5
hmscoin_event HMS_event || coin_event
shmscoin_event SHMS_event || coin_event
all_event HMS_event || SHMS_event || coin_event
RawDecode_master 1
Block: Decode
all_trigs HMS_event || SHMS_event || coin_event
shms_coin_trig SHMS_event || coin_event
good_S1_time T.shms.p1T_tdcTime > 241 && T.shms.p1T_tdcTime < 243
good_S2X_time T.shms.p2X_tdcTime > 180 && T.shms.p2X_tdcTime < 220
good_S1_S2X_time good_S1_time && good_S2X_time
Decode_master SHMS_event
Block: CoarseTracking
CoarseTracking_master SHMS_event
# Add cuts to stricter times and apply them to drift distances
time_cut1 P.dc.1u1.time > 0 && P.dc.1u1.time < 250
time_cut2 P.dc.1u2.time > 0 && P.dc.1u2.time < 250
time_cut3 P.dc.1x1.time > 0 && P.dc.1x1.time < 250
time_cut4 P.dc.1x2.time > 0 && P.dc.1x2.time < 250
time_cut5 P.dc.1v1.time > 0 && P.dc.1v1.time < 250
time_cut6 P.dc.1v2.time > 0 && P.dc.1v2.time < 250
time_cut7 P.dc.2v2.time > 0 && P.dc.2v2.time < 250
time_cut8 P.dc.2v1.time > 0 && P.dc.2v1.time < 250
time_cut9 P.dc.2x2.time > 0 && P.dc.2x2.time < 250
time_cut10 P.dc.2x1.time > 0 && P.dc.2x1.time < 250
time_cut11 P.dc.2u2.time > 0 && P.dc.2u2.time < 250
time_cut12 P.dc.2u1.time > 0 && P.dc.2u1.time < 250
shmsDC1Planes_large (P.dc.1x1.nhit + P.dc.1u2.nhit + P.dc.1u1.nhit + P.dc.1v1.nhit + P.dc.1x2.nhit + P.dc.1v2.nhit) > 20
shmsDC2Planes_large (P.dc.2x1.nhit + P.dc.2u2.nhit + P.dc.2u1.nhit + P.dc.2v1.nhit + P.dc.2x2.nhit + P.dc.2v2.nhit) > 20
shms_ch1_gt0 P.dc.Ch1.nhit > 0
shms_ch2_gt0 P.dc.Ch2.nhit > 0
shms_ch_gt0 P.dc.Ch2.nhit > 0 && P.dc.Ch1.nhit > 0
shms_ch_gt4 P.dc.Ch2.nhit > 3 && P.dc.Ch1.nhit > 3
shms_ch2_gt0_noch1 P.dc.Ch2.nhit > 0 && P.dc.Ch1.nhit == 0
shms_ch1_gt0_noch2 P.dc.Ch1.nhit > 0 && P.dc.Ch2.nhit == 0
shms_noch1_noch2 P.dc.Ch1.nhit == 0 && P.dc.Ch2.nhit == 0
shms_ch_gt0_track shms_ch_gt0 && P.dc.ntrack > 0
shms_ch_gt4_track shms_ch_gt4 && P.dc.ntrack > 0
shms_ch1_gt0_gtime P.dc.Ch1.nhit > 0 && good_S1_S2X_time
shms_ch2_gt0_gtime P.dc.Ch2.nhit > 0 && good_S1_S2X_time
shms_ch_gt0_gtime P.dc.Ch2.nhit > 0 && P.dc.Ch1.nhit > 0 && good_S1_S2X_time
shms_ch_gt4_gtime P.dc.Ch2.nhit > 3 && P.dc.Ch1.nhit > 3 && good_S1_S2X_time
shms_ch2_gt0_noch1_gtime P.dc.Ch2.nhit > 0 && P.dc.Ch1.nhit == 0 && good_S1_S2X_time
shms_ch1_gt0_noch2_gtime P.dc.Ch1.nhit > 0 && P.dc.Ch2.nhit == 0 && good_S1_S2X_time
shms_noch1_noch2_gtime P.dc.Ch1.nhit == 0 && P.dc.Ch2.nhit == 0 && good_S1_S2X_time
shms_ch_gt0_track_gtime shms_ch_gt0 && P.dc.ntrack > 0 && good_S1_S2X_time
shms_ch_gt4_track_gtime shms_ch_gt4 && P.dc.ntrack > 0 && good_S1_S2X_time
shmsDC1_1hit_x1 P.dc.1x1.nhit == 1
shmsDC1_1hit_u1 P.dc.1u1.nhit == 1
shmsDC1_1hit_u2 P.dc.1u2.nhit == 1
shmsDC1_1hit_v1 P.dc.1v1.nhit == 1
shmsDC1_1hit_v2 P.dc.1v2.nhit == 1
shmsDC1_1hit_x2 P.dc.1x2.nhit == 1
shmsDC2_1hit_x1 P.dc.2x1.nhit == 1
shmsDC2_1hit_u1 P.dc.2u1.nhit == 1
shmsDC2_1hit_u2 P.dc.2u2.nhit == 1
shmsDC2_1hit_v1 P.dc.2v1.nhit == 1
shmsDC2_1hit_v2 P.dc.2v2.nhit == 1
shmsDC2_1hit_x2 P.dc.2x2.nhit == 1
p1hit1 P.dc.1x1.nhit >= 1
p1hit2 P.dc.1u1.nhit >= 1
p1hit3 P.dc.1u2.nhit >= 1
p1hit4 P.dc.1v1.nhit >= 1
p1hit5 P.dc.1v2.nhit >= 1
p1hit6 P.dc.1x2.nhit >= 1
p2hit1 P.dc.2x1.nhit >= 1
p2hit2 P.dc.2u1.nhit >= 1
p2hit3 P.dc.2u2.nhit >= 1
p2hit4 P.dc.2v1.nhit >= 1
p2hit5 P.dc.2v2.nhit >= 1
p2hit6 P.dc.2x2.nhit >= 1
shmsDC1Planes6hits shmsDC1_1hit_x1 && shmsDC1_1hit_u1 && shmsDC1_1hit_u2 && shmsDC1_1hit_x2 && shmsDC1_1hit_v1 && shmsDC1_1hit_v2
shmsDC2Planes6hits shmsDC2_1hit_x1 && shmsDC2_1hit_u1 && shmsDC2_1hit_u2 && shmsDC2_1hit_x2 && shmsDC2_1hit_v1 && shmsDC2_1hit_v2
shmsDC1_5hits_x1 shmsDC1_1hit_u1 && shmsDC1_1hit_u2 && shmsDC1_1hit_x2 && shmsDC1_1hit_v1 && shmsDC1_1hit_v2
shmsDC1_6hits_x1 p1hit1 && shmsDC1_1hit_u1 && shmsDC1_1hit_u2 && shmsDC1_1hit_x2 && shmsDC1_1hit_v1 && shmsDC1_1hit_v2
shmsDC1_5hits_u1 shmsDC1_1hit_x1 && shmsDC1_1hit_u2 && shmsDC1_1hit_x2 && shmsDC1_1hit_v1 && shmsDC1_1hit_v2
shmsDC1_6hits_u1 p1hit2 && shmsDC1_1hit_x1 && shmsDC1_1hit_u2 && shmsDC1_1hit_x2 && shmsDC1_1hit_v1 && shmsDC1_1hit_v2
shmsDC1_5hits_u2 shmsDC1_1hit_x1 && shmsDC1_1hit_u1 && shmsDC1_1hit_x2 && shmsDC1_1hit_v1 && shmsDC1_1hit_v2
shmsDC1_6hits_u2 p1hit3 && shmsDC1_1hit_x1 && shmsDC1_1hit_u1 && shmsDC1_1hit_x2 && shmsDC1_1hit_v1 && shmsDC1_1hit_v2
shmsDC1_5hits_v1 shmsDC1_1hit_x1 && shmsDC1_1hit_u1 && shmsDC1_1hit_x2 && shmsDC1_1hit_u2 && shmsDC1_1hit_v2
shmsDC1_6hits_v1 p1hit4 && shmsDC1_1hit_x1 && shmsDC1_1hit_u1 && shmsDC1_1hit_x2 && shmsDC1_1hit_u2 && shmsDC1_1hit_v2
shmsDC1_5hits_v2 shmsDC1_1hit_x1 && shmsDC1_1hit_u1 && shmsDC1_1hit_x2 && shmsDC1_1hit_u2 && shmsDC1_1hit_v1
shmsDC1_6hits_v2 p1hit5 && shmsDC1_1hit_x1 && shmsDC1_1hit_u1 && shmsDC1_1hit_x2 && shmsDC1_1hit_u2 && shmsDC1_1hit_v1
shmsDC1_5hits_x2 shmsDC1_1hit_x1 && shmsDC1_1hit_u1 && shmsDC1_1hit_v1 && shmsDC1_1hit_u2 && shmsDC1_1hit_v2
shmsDC1_6hits_x2 p1hit6 && shmsDC1_1hit_x1 && shmsDC1_1hit_u1 && shmsDC1_1hit_v1 && shmsDC1_1hit_u2 && shmsDC1_1hit_v2
shmsDC2_5hits_x1 shmsDC2_1hit_u1 && shmsDC2_1hit_u2 && shmsDC2_1hit_x2 && shmsDC2_1hit_v1 && shmsDC2_1hit_v2
shmsDC2_6hits_x1 p2hit1 && shmsDC2_1hit_u1 && shmsDC2_1hit_u2 && shmsDC2_1hit_x2 && shmsDC2_1hit_v1 && shmsDC2_1hit_v2
shmsDC2_5hits_u1 shmsDC2_1hit_x1 && shmsDC2_1hit_u2 && shmsDC2_1hit_x2 && shmsDC2_1hit_v1 && shmsDC2_1hit_v2
shmsDC2_6hits_u1 p2hit2 && shmsDC2_1hit_x1 && shmsDC2_1hit_u2 && shmsDC2_1hit_x2 && shmsDC2_1hit_v1 && shmsDC2_1hit_v2
shmsDC2_5hits_u2 shmsDC2_1hit_x1 && shmsDC2_1hit_u1 && shmsDC2_1hit_x2 && shmsDC2_1hit_v1 && shmsDC2_1hit_v2
shmsDC2_6hits_u2 p2hit3 && shmsDC2_1hit_x1 && shmsDC2_1hit_u1 && shmsDC2_1hit_x2 && shmsDC2_1hit_v1 && shmsDC2_1hit_v2
shmsDC2_5hits_v1 shmsDC2_1hit_x1 && shmsDC2_1hit_u1 && shmsDC2_1hit_x2 && shmsDC2_1hit_u2 && shmsDC2_1hit_v2
shmsDC2_6hits_v1 p2hit4 && shmsDC2_1hit_x1 && shmsDC2_1hit_u1 && shmsDC2_1hit_x2 && shmsDC2_1hit_u2 && shmsDC2_1hit_v2
shmsDC2_5hits_v2 shmsDC2_1hit_x1 && shmsDC2_1hit_u1 && shmsDC2_1hit_x2 && shmsDC2_1hit_u2 && shmsDC2_1hit_v1
shmsDC2_6hits_v2 p2hit5 && shmsDC2_1hit_x1 && shmsDC2_1hit_u1 && shmsDC2_1hit_x2 && shmsDC2_1hit_u2 && shmsDC2_1hit_v1
shmsDC2_5hits_x2 shmsDC2_1hit_x1 && shmsDC2_1hit_u1 && shmsDC2_1hit_v1 && shmsDC2_1hit_u2 && shmsDC2_1hit_v2
shmsDC2_6hits_x2 p2hit6 && shmsDC2_1hit_x1 && shmsDC2_1hit_u1 && shmsDC2_1hit_v1 && shmsDC2_1hit_u2 && shmsDC2_1hit_v2
shms1HitsLt P.dc.Ch1.nhit <= P.dc.Ch1.maxhits && g.evtyp == 1
shms2HitsLt P.dc.Ch2.nhit <= P.dc.Ch2.maxhits && g.evtyp == 1
shmsHitsLt P.dc.Ch1.nhit <= P.dc.Ch1.maxhits && P.dc.Ch2.nhit <= P.dc.Ch2.maxhits && g.evtyp == 1
shmsDC1PlanesGT (p1hit1 + p1hit2 + p1hit3 + p1hit4 + p1hit5 + p1hit6 ) >= 5
shmsDC2PlanesGT (p2hit1 + p2hit2 + p2hit3 + p2hit4 + p2hit5 + p2hit6 ) >= 5
shmsPlanesGT shmsDC1PlanesGT && shmsDC2PlanesGT
shmsHitsPlanes (P.dc.Ch1.nhit <= 6) && (P.dc.Ch2.nhit <= 6) && shmsPlanesGT
pSpacePoints P.dc.Ch1.spacepoints >= 1 && P.dc.Ch2.spacepoints >= 1
pSpacePointsStub P.dc.stubtest == 1 && P.dc.Ch1.spacepoints >= 1 && P.dc.Ch2.spacepoints >= 1
pFoundTrack P.dc.ntrack > 0
pStubLT P.dc.stubtest == 1
f1PSpacePoints shms1HitsLt && shmsDC1PlanesGT && P.dc.Ch1.spacepoints == 0 && g.evtyp == 1
f2PSpacePoints shms2HitsLt && shmsDC2PlanesGT && P.dc.Ch2.spacepoints == 0 && g.evtyp == 1
pTest1 shmsHitsPlanes && (!pSpacePoints)
pTest2 pSpacePoints && (!pStubLT)
Block: CoarseReconstruct
CoarseReconstruct_master SHMS_event
Block: Tracking
Tracking_master SHMS_event
Block: Reconstruct
Reconstruct_master SHMS_event
cer_ng_elec P.ngcer.npeSum > 0.5
cer_ng_pi P.ngcer.npeSum <= 0.5
cer_hg_elec P.hgcer.npeSum > 0.5
cer_hg_pi P.hgcer.npeSum <= 0.5
cer_pi_both cer_ng_pi && cer_hg_pi
cer_elec_both cer_ng_elec && cer_hg_elec
cal_elec P.cal.etracknorm > 0.6 && P.cal.etracknorm < 1.6
cal_pi P.cal.etracknorm <= 0.6 && P.cal.etracknorm > 0.
elec_all cer_ng_elec && cer_hg_elec && cal_elec
pi_all cer_ng_pi && cer_hg_pi && cal_pi
shmsScinGood P.hod.goodscinhit == 1
shmsScinShould shmsScinGood
shmsScinShoulde shmsScinGood && P.cal.etotnorm > 0.6 && P.cal.etotnorm < 1.6 && P.hgcer.npeSum > 0.5
shmsScinShouldh shmsScinGood && P.cal.etotnorm <= 0.6 && P.cal.etotnorm > 0. && P.hgcer.npeSum < 0.5
shmsScinDid shmsScinShould && P.dc.ntrack > 0
shmsScinDide shmsScinShoulde && P.dc.ntrack > 0
shmsScinDidh shmsScinShouldh && P.dc.ntrack > 0
goodHDC1x1 P.dc.1x1.nhit > 0 && P.dc.1x1.nhit < 3
goodHDC1u2 P.dc.1u2.nhit > 0 && P.dc.1u2.nhit < 3
goodHDC1u1 P.dc.1u1.nhit > 0 && P.dc.1u1.nhit < 3
goodHDC1v1 P.dc.1v1.nhit > 0 && P.dc.1v1.nhit < 3
goodHDC1v2 P.dc.1v2.nhit > 0 && P.dc.1v2.nhit < 3
goodHDC1x2 P.dc.1x2.nhit > 0 && P.dc.1x2.nhit < 3
goodHDC2x1 P.dc.2x1.nhit > 0 && P.dc.2x1.nhit < 3
goodHDC2u2 P.dc.2u2.nhit > 0 && P.dc.2u2.nhit < 3
goodHDC2u1 P.dc.2u1.nhit > 0 && P.dc.2u1.nhit < 3
goodHDC2v1 P.dc.2v1.nhit > 0 && P.dc.2v1.nhit < 3
goodHDC2v2 P.dc.2v2.nhit > 0 && P.dc.2v2.nhit < 3
goodHDC2x2 P.dc.2x2.nhit > 0 && P.dc.2x2.nhit < 3
goodHDC1 goodHDC1x1 && goodHDC1u2 && goodHDC1u1 && goodHDC1v1 && goodHDC1v2 && goodHDC1x2
goodHDC2 goodHDC2x1 && goodHDC2u2 && goodHDC2u1 && goodHDC2v1 && goodHDC2v2 && goodHDC2x2
bothGood goodHDC1 && goodHDC2
realhdc1x1 goodHDC1x1 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc1u2 goodHDC1u2 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc1u1 goodHDC1u1 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc1v1 goodHDC1v1 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc1v2 goodHDC1v2 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc1x2 goodHDC1x2 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc2x1 goodHDC2x1 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc2u2 goodHDC2u2 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc2u1 goodHDC2u1 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc2v1 goodHDC2v1 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc2v2 goodHDC2v2 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
realhdc2x2 goodHDC2x2 && ((P.dc.Ch1.spacepoints + P.dc.Ch2.spacepoints) > 0)
pFound1Track P.dc.ntrack == 1
pFound2Track P.dc.ntrack == 2
pFound3Track P.dc.ntrack == 3
pFound4Track P.dc.ntrack == 4
pCleanTrack P.gtr.index > -1
1pCleanTrack P.gtr.index == 0
2pCleanTrack P.gtr.index == 1
3pCleanTrack P.gtr.index == 2
4pCleanTrack P.gtr.index == 3
pCleanTrack_cer_elec (P.gtr.index > -1) && cer_elec_both
p1hit1_cer_elec p1hit1 && cer_elec_both
pCleanTrack_cal_elec (P.gtr.index > -1) && cal_elec
p1hit1_cal_elec p1hit1 && cal_elec
anyhs1x P.hod.1x.nhits > 0
anyhs1y P.hod.1y.nhits > 0
anyhs2x P.hod.2x.nhits > 0
anyhs2y P.hod.2y.nhits > 0
goodps1x P.hod.1x.nhits > 0 && P.hod.1x.nhits < 3
goodps1y P.hod.1y.nhits > 0 && P.hod.1y.nhits < 3
goodps1 goodps1x && goodps1y
goodps2x P.hod.2x.nhits > 0 && P.hod.2x.nhits < 3
goodps2y P.hod.2y.nhits > 0 && P.hod.2y.nhits < 3
goodps2 goodps2x && goodps2y
goodps1s2 goodps1 && goodps2
Block: Physics
Physics_master SHMS_event
void replay_singlearm_shms (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/shms_replay_singlearm_%d_%d.root";
// Load global parameters
// Add variables to global list.
gHcParms->Define("gen_run_number", "Run Number", RunNumber);
gHcParms->AddString("g_ctp_database_filename", "DBASE/STD/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"));
gHcParms->Load(gHcParms->GetString("g_ctp_calib_filename"));
// Load params for SHMS trigger configuration
gHcParms->Load("PARAM/TRIG/tshms.param");
// Load the Hall C detector map
gHcDetectorMap = new THcDetectorMap();
gHcDetectorMap->Load("MAPS/SHMS/DETEC/STACK/shms_stack.map");
// 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 equipment to be analyzed.
THaApparatus* SHMS = new THcHallCSpectrometer("P", "SHMS");
gHaApps->Add(SHMS);
// Add Noble Gas Cherenkov to SHMS apparatus
THcCherenkov* ngcer = new THcCherenkov("ngcer", "Noble Gas Cherenkov");
SHMS->AddDetector(ngcer);
// Add drift chambers to SHMS apparatus
THcDC* dc = new THcDC("dc", "Drift Chambers");
SHMS->AddDetector(dc);
// Add hodoscope to SHMS apparatus
THcHodoscope* hod = new THcHodoscope("hod", "Hodoscope");
SHMS->AddDetector(hod);
// Add Heavy Gas Cherenkov to SHMS apparatus
THcCherenkov* hgcer = new THcCherenkov("hgcer", "Heavy Gas Cherenkov");
SHMS->AddDetector(hgcer);
// Add Heavy Gas Cherenkov to SHMS apparatus
THcAerogel* aero = new THcAerogel("aero", "Aerogel");
SHMS->AddDetector(aero);
// Add calorimeter to SHMS apparatus
THcShower* cal = new THcShower("cal", "Calorimeter");
SHMS->AddDetector(cal);
THaApparatus* BEAM = new THaIdealBeam("IB","Ideal Beamline");
gHaApps->Add( BEAM );
// Include golden track information
THaGoldenTrack* gtr = new THaGoldenTrack("P.gtr", "SHMS Golden Track", "P");
gHaPhysics->Add(gtr);
//
THcPrimaryKine* pkine = new THcPrimaryKine("P.kin","SHMS single arm kinematics","P","IB");
gHaPhysics->Add(pkine);
// // Add handler for prestart event 125.
THcConfigEvtHandler* ev125 = new THcConfigEvtHandler("HC", "Config Event type 125");
gHaEvtHandlers->Add(ev125);
// Add handler for EPICS events
THaEpicsEvtHandler *hcepics = new THaEpicsEvtHandler("epics", "HC EPICS event type 180");
gHaEvtHandlers->Add(hcepics);
// Add handler for scaler events
THcScalerEvtHandler *pscaler = new THcScalerEvtHandler("P","Hall C scaler event type 1");
pscaler->AddEventType(1);
pscaler->SetUseFirstEvent(kTRUE);
gHaEvtHandlers->Add (pscaler);
// 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);
// Set to read in Hall C run database parameters
run->SetRunParamClass("THcRunParameters");
// 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, MaxEvent);
analyzer->SetCountMode(2); // 0 = counter is # of physics triggers
// 1 = counter is # of all decode reads
// 2 = counter is event number
analyzer->SetEvent(event);
// Set EPICS event type
analyzer->SetEpicsEvtType(180);
// Define crate map
analyzer->SetCrateMapFileName("MAPS/db_cratemap.dat");
// Define output ROOT file
analyzer->SetOutFile(ROOTFileName.Data());
// Define DEF-file
analyzer->SetOdefFile("DEF-files/SHMS/PRODUCTION/pstackana_singlearm.def");
// Define cuts file
analyzer->SetCutFile("DEF-files/SHMS/PRODUCTION/pstackana_singlearm_cuts.def"); // optional
// File to record accounting information for cuts
analyzer->SetSummaryFile(Form("REPORT_OUTPUT/SHMS/PRODUCTION/summary_singlearm_%d_%d.report", RunNumber, MaxEvent)); // optional
// Start the actual analysis.
analyzer->Process(run);
// Create report file from template
analyzer->PrintReport("TEMPLATES/SHMS/PRODUCTION/pstackana_production.template",
Form("REPORT_OUTPUT/SHMS/PRODUCTION/replay_shms_singlearm_%d_%d.report", RunNumber, MaxEvent)); // optional
}
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