Skip to content
Snippets Groups Projects
Commit 5c07f546 authored by Yero1990's avatar Yero1990 Committed by Eric Pooser
Browse files

Add primary kine (#184)

* -added primary kin to HMS single arm production replay script
-Minor fix in shms production replay script

* Minor addition in replay_production_hms.C

* -change primary kine names in hms/shms replay scripts

* -added elec_KIN/ dir. for electron kinematics DEF-files for HMS/SHMS
-include new def files in mergelist and update production def file
parent d02e6a42
No related branches found
No related tags found
No related merge requests found
Showing
with 78 additions and 1091 deletions
......@@ -10,3 +10,4 @@ block H.hod.*
block H.aero.*
block H.cal.*
block H.gtr.*
block H.ekin.*
#************************************************
# HMS Single arm Primary (beam -usually electron)
# Kinematics Quantities
#************************************************
TH1F h_q2 'HMS Q2 ; Q2 (GeV2) ' H.kin.Q2 100 0 5
TH1F h_omega 'HMS omega ; Ebeam-Escat (GeV)' H.kin.omega 100 0 5
TH1F h_w2 'HMS W2 ; W2 (GeV2)' H.kin.W2 100 0 10
TH1F h_w 'HMS W ; W (GeV)' H.kin.W 100 0 5
TH1F h_thscat 'HMS Scattering angle ; HMS scattering angle (deg)' H.kin.scat_ang_deg 100 12 18
......@@ -12,6 +12,19 @@ block H.hod.*
block H.aero.*
block H.cal.*
block H.gtr.*
block H.ekin.*
#************************************************
# HMS Single arm Primary (beam -usually electron)
# Kinematics Quantities
#************************************************
TH1F h_q2 'HMS Q2 ; Q2 (GeV2) ' H.kin.Q2 100 0 5
TH1F h_omega 'HMS omega ; Ebeam-Escat (GeV)' H.kin.omega 100 0 5
TH1F h_w2 'HMS W2 ; W2 (GeV2)' H.kin.W2 100 0 10
TH1F h_w 'HMS W ; W (GeV)' H.kin.W 100 0 5
TH1F h_thscat 'HMS Scattering angle ; HMS scattering angle (deg)' H.kin.scat_ang_deg 100 12 18
#********************
......
BLOCK/hblock_vars.def
elec_KIN/h_elec_kin_histos.def
CER/hcer_histos.def
DC/hdc_6gev_histos.def
HODO/hhodo_histos.def
......
......@@ -10,4 +10,5 @@ block P.hod.*
block P.hgcer.*
block P.aero.*
block P.cal.*
block P.gtr.*
\ No newline at end of file
block P.gtr.*
block P.ekin.*
#***********************************************
# SHMS Single arm Primary (Scattered Beam)
# Kinematics Quantities
#***********************************************
TH1F p_q2 'SHMS Q2 ; Q2 (GeV2) ' P.kin.Q2 100 0 5
TH1F p_omega 'SHMS omega ; Ebeam-Escat (GeV)' P.kin.omega 100 0 5
TH1F p_w2 'SHMS W2 ; W2 (GeV2)' P.kin.W2 100 0 10
TH1F p_w 'SHMS W ; W (GeV)' P.kin.W 100 0 5
TH1F p_thscat 'SHMS Scattering angle ; SHMS scattering angle (deg)' P.kin.scat_ang_deg 100 12 18
BLOCK/pblock_vars.def
elec_KIN/p_elec_kin_histos.def
NGCER/pngcer_histos.def
DC/pdc_histos.def
HODO/phodo_histos.def
......
......@@ -13,6 +13,21 @@ block P.hgcer.*
block P.aero.*
block P.cal.*
block P.gtr.*
block P.ekin.*
#***********************************************
# SHMS Single arm Primary (Scattered Beam)
# Kinematics Quantities
#***********************************************
TH1F p_q2 'SHMS Q2 ; Q2 (GeV2) ' P.kin.Q2 100 0 5
TH1F p_omega 'SHMS omega ; Ebeam-Escat (GeV)' P.kin.omega 100 0 5
TH1F p_w2 'SHMS W2 ; W2 (GeV2)' P.kin.W2 100 0 10
TH1F p_w 'SHMS W ; W (GeV)' P.kin.W 100 0 5
TH1F p_thscat 'SHMS Scattering angle ; SHMS scattering angle (deg)' P.kin.scat_ang_deg 100 12 18
#**********************
# Noble Gas Cherenkov *
......
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
......@@ -71,6 +71,14 @@ void replay_production_hms(Int_t RunNumber=0, Int_t MaxEvent=0) {
THaGoldenTrack* gtr = new THaGoldenTrack("H.gtr", "HMS Golden Track", "H");
gHaPhysics->Add(gtr);
//Add Ideal Beam Apparatus
THaApparatus* BEAM = new THaIdealBeam("IB","Ideal Beamline");
gHaApps->Add( BEAM );
//Add Physics Module to calculate primary (scattered beam - usually electron) kinematics
THcPrimaryKine* hkine_elec = new THcPrimaryKine("H.ekin", "HMS single arm e- kinematics", "H", "IB");
gHaPhysics->Add(hkine_elec);
// Add handler for prestart event 125.
THcConfigEvtHandler* ev125 = new THcConfigEvtHandler("HC", "Config Event type 125");
gHaEvtHandlers->Add(ev125);
......@@ -101,6 +109,10 @@ void replay_production_hms(Int_t RunNumber=0, Int_t MaxEvent=0) {
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
......@@ -110,7 +122,7 @@ void replay_production_hms(Int_t RunNumber=0, Int_t MaxEvent=0) {
run->Print();
// Define the analysis parameters
TString ROOTFileName = Form(ROOTFileNamePattern, RunNumber);
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
......
......@@ -69,6 +69,14 @@ void replay_production_shms (Int_t RunNumber = 0, Int_t MaxEvent = 0) {
THaGoldenTrack* gtr = new THaGoldenTrack("P.gtr", "SHMS Golden Track", "P");
gHaPhysics->Add(gtr);
//Add Ideal Beam Apparatus
THaApparatus* BEAM = new THaIdealBeam("IB","Ideal Beamline");
gHaApps->Add( BEAM );
// Add Physics Module to calculate primary (scattered beam - usually electrons) kinematics
THcPrimaryKine* pkine_elec = new THcPrimaryKine("P.ekin","SHMS single arm e- kinematics","P","IB");
gHaPhysics->Add(pkine_elec);
// // Add handler for prestart event 125.
THcConfigEvtHandler* ev125 = new THcConfigEvtHandler("HC", "Config Event type 125");
gHaEvtHandlers->Add(ev125);
......@@ -99,6 +107,9 @@ void replay_production_shms (Int_t RunNumber = 0, Int_t MaxEvent = 0) {
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
......
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