diff --git a/examples/DBASE/test.database b/examples/DBASE/test.database index d4dae4a85cabfb629f2db613651b56e8804371cb..027c0b474883f86d25b3ae3525fc74f4aa22ec2d 100644 --- a/examples/DBASE/test.database +++ b/examples/DBASE/test.database @@ -6,6 +6,8 @@ g_decode_map_filename="MAPS/jun04.map" gpbeam = 4.015 hpcentral = 2.074 htheta_lab = 10.99 +spcentral = 1.73 +stheta_lab = -32.32 hpartmass = 0.13957 52949 g_ctp_parm_filename="PARAM/52949/general.param" diff --git a/examples/PARAM/general.param b/examples/PARAM/general.param index cd56bb35a271318259ba8474180a965b61431590..2b22217eda85e35a6cd3dca9e8cc11c2a733c521 100644 --- a/examples/PARAM/general.param +++ b/examples/PARAM/general.param @@ -28,4 +28,7 @@ raddeg=3.14159265/180 #include "PARAM/hdriftmap.param" #include "PARAM/hcal.param" #include "PARAM/hcer.param" - +#include "PARAM/shodo.param" +#include "PARAM/scal.param" +#include "PARAM/sdc.param" +#include "PARAM/sdriftmap.param" diff --git a/examples/PARAM/hcana.param b/examples/PARAM/hcana.param index 1f9e393f0b67fed0ccc4079beadd84ae881bd61b..47b4766b5526cbf1fd9f0da9393347d6fe98188a 100644 --- a/examples/PARAM/hcana.param +++ b/examples/PARAM/hcana.param @@ -4,6 +4,7 @@ ; hhodo_num_planes = 4 +hhodo_plane_names = "1x 1y 2x 2y" hcal_num_layers = 4 @@ -16,18 +17,15 @@ hcal_b_cor = 8000. hcal_c_cor = 64.36 hcal_d_cor = 1.66 +hcal_layer_names = "1pr 2ta 3ta 4ta" + haero_num_pairs = 8 # Names of planes so that parameter names can be constructed hdc_plane_names = "1x1 1y1 1u1 1v1 1y2 1x2 2x1 2y1 2u1 2v1 2y2 2x2" -hcal_layer_names = "1pr 2ta 3ta 4ta" - -hhodo_plane_names = "1x 1y 2x 2y" - # The following were defined in REPLAY.PARAM h_recon_coeff_filename = 'PARAM/hms_recon_coeff.dat' ;hms optics matrix -s_recon_coeff_filename = 'PARAM/sos_recon_coeff.dat' ;sos optics matrix # The following are set to zero to replicate historical ENGINE behavior # For new analyses they should be set to 1. If not defined here, @@ -39,3 +37,43 @@ hdc_fix_lr = 0 # If 1, don't do the the propagation along the wire each time the hit # appears in a space point. (Which means the correction accumulates) hdc_fix_propcorr = 0 + +# SOS parameters +shodo_num_planes = 4 +shodo_plane_names = "1x 1y 2x 2y" + +scal_num_layers = 4 + +# Exclusion band width for the calorimeter's fiducial volume. +# (saw) Don't know what this should be. Copied it from HMS. +scal_fv_delta = 5. + +# Constants for the coordiante correction of the calorimeter energy depositions +# (saw) Copied from HMS +scal_a_cor = 200. +scal_b_cor = 8000. +scal_c_cor = 64.36 +scal_d_cor = 1.66 + +scal_layer_names = "1pr 2ta 3ta 4ta" + +# Names of planes so that parameter names can be constructed +sdc_plane_names = "1u1 1u2 1x1 1x2 1v1 1v2 2u1 2u2 2x1 2x2 2v1 2v2" + +# The following were defined in REPLAY.PARAM +s_recon_coeff_filename = 'PARAM/sos_recon_coeff.dat' ;sos optics matrix + +# Fortran ENGINE only had this as a parameter for HMS. Need it here +# because same code used for both spectrometers +sntracks_max_fp = 10 + +# The following are set to zero to replicate historical ENGINE behavior +# For new analyses they should be set to 1. If not defined here, +# hcana will default 1, the new and correct behaviour. + +# If 1, Let a hit have different L/R assignment for different space points +# instead of L/R assignment from first sp it appears in. +sdc_fix_lr = 0 +# If 1, don't do the the propagation along the wire each time the hit +# appears in a space point. (Which means the correction accumulates) +sdc_fix_propcorr = 0 diff --git a/examples/db_run.dat b/examples/db_run.dat index 3cdedabfb33489f3c1d36bf5614ba103c0539e3d..cf6548c4ee580df5f2a25efd659b1c4afbe46f16 100755 --- a/examples/db_run.dat +++ b/examples/db_run.dat @@ -7,5 +7,6 @@ ebeam = 4.02187 H.theta = 19.99 H.pcentral = 2.074 - +S.theta = -32.32 +S.pcentral = 1.73 diff --git a/examples/hodtest.C b/examples/hodtest.C index b15f5298ddbdcd0a4f614e8642a8f7b71f9e7b73..dcf776a5d6a3e067cd6d3eb4296829624ed51cf0 100644 --- a/examples/hodtest.C +++ b/examples/hodtest.C @@ -44,6 +44,13 @@ THcCherenkov* cherenkov = new THcCherenkov("cher", "Gas Cerenkov" ); HMS->AddDetector( cherenkov ); + THaApparatus* SOS = new THcHallCSpectrometer("S","SOS"); + gHaApps->Add( SOS ); + // Add detectors + SOS->AddDetector( new THcHodoscope("hod", "Hodoscope" )); + SOS->AddDetector( new THcShower("cal", "Shower" )); + SOS->AddDetector( new THcDC("dc", "Drift Chambers" )); + // 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 diff --git a/examples/output.def b/examples/output.def index 71d516fb5510b038677b300c0f1edd6e499866b8..da415c882be6917b54355d30565d7c7da28644a9 100644 --- a/examples/output.def +++ b/examples/output.def @@ -6,6 +6,9 @@ block H.cal.* block H.aero.* block H.cher.* block H.tr.* +block S.dc.* +block S.hod.* +block S.cal.* block g.evtyp # TDC hits per paddle diff --git a/src/THcDC.cxx b/src/THcDC.cxx index 3fba8bc1493c982cee501241ecb454c4759bf714..2342ead8ef47377e38f266f1b0d537494aa94b82 100644 --- a/src/THcDC.cxx +++ b/src/THcDC.cxx @@ -256,7 +256,7 @@ Int_t THcDC::ReadDatabase( const TDatime& date ) delete [] fTdcWinMin; fTdcWinMin = new Int_t [fNPlanes]; delete [] fTdcWinMax; fTdcWinMax = new Int_t [fNPlanes]; - delete [] fCentralTime; fCentralTime = new Int_t [fNPlanes]; + delete [] fCentralTime; fCentralTime = new Double_t [fNPlanes]; delete [] fNWires; fNWires = new Int_t [fNPlanes]; delete [] fNChamber; fNChamber = new Int_t [fNPlanes]; // Which chamber is this plane delete [] fWireOrder; fWireOrder = new Int_t [fNPlanes]; // Wire readout order @@ -284,7 +284,7 @@ Int_t THcDC::ReadDatabase( const TDatime& date ) {"dc_tdc_min_win", fTdcWinMin, kInt, fNPlanes}, {"dc_tdc_max_win", fTdcWinMax, kInt, fNPlanes}, - {"dc_central_time", fCentralTime, kInt, fNPlanes}, + {"dc_central_time", fCentralTime, kDouble, fNPlanes}, {"dc_nrwire", fNWires, kInt, fNPlanes}, {"dc_chamber_planes", fNChamber, kInt, fNPlanes}, {"dc_wire_counting", fWireOrder, kInt, fNPlanes}, diff --git a/src/THcDC.h b/src/THcDC.h index f383816e739aa5721e8d3cedee98d84e82dcfd29..a8d0bfb5af9d0010b38454db12a2a89639ce2de6 100644 --- a/src/THcDC.h +++ b/src/THcDC.h @@ -126,7 +126,7 @@ protected: // its plane number. Should we have a Get method for each or Int_t* fTdcWinMin; Int_t* fTdcWinMax; - Int_t* fCentralTime; + Double_t* fCentralTime; Int_t* fNWires; // Number of wires per plane Int_t* fNChamber; Int_t* fWireOrder; diff --git a/src/THcDriftChamber.cxx b/src/THcDriftChamber.cxx index 909dd7ab4176e655ea9c5b4dfaca424101e2fff5..1140b38e6a33918068e1f46e1464209e8488ec98 100644 --- a/src/THcDriftChamber.cxx +++ b/src/THcDriftChamber.cxx @@ -140,14 +140,16 @@ Int_t THcDriftChamber::ReadDatabase( const TDatime& date ) prefix[0]=tolower(GetApparatus()->GetName()[0]); prefix[1]='\0'; DBRequest list[]={ - {"_remove_sppt_if_one_y_plane",&fRemove_Sppt_If_One_YPlane, kInt}, + {"_remove_sppt_if_one_y_plane",&fRemove_Sppt_If_One_YPlane, kInt,0,1}, {"dc_wire_velocity", &fWireVelocity, kDouble}, {"SmallAngleApprox", &fSmallAngleApprox, kInt}, - {"stub_max_xpdiff", &fStubMaxXPDiff, kDouble}, + {"stub_max_xpdiff", &fStubMaxXPDiff, kDouble,0,1}, {"debugflagpr", &fhdebugflagpr, kDouble}, {Form("dc_%d_zpos",fChamberNum), &fZPos, kDouble}, {0} }; + fRemove_Sppt_If_One_YPlane = 0; // Default + fStubMaxXPDiff = 0.05; // The HMS default. Not used for SOS. gHcParms->LoadParmValues((DBRequest*)&list,prefix); // Get parameters parent knows about @@ -1043,8 +1045,8 @@ void THcDriftChamber::LeftRight() plusminusknown[ihit1] = 1; plusminusknown[ihit2] = -1; } + npaired+=2; } - npaired+=2; } } } diff --git a/src/THcHodoscope.cxx b/src/THcHodoscope.cxx index a0e10ef80e3f0b41def4b55085d1867ffdf19a73..da37a7f4a0c7476093714a8d538cc2632cdc2bfa 100644 --- a/src/THcHodoscope.cxx +++ b/src/THcHodoscope.cxx @@ -405,21 +405,22 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date ) {"hodo_neg_time_offset",&fHodoNegTimeOffset[0],kDouble,fMaxHodoScin}, {"hodo_pos_ped_limit",&fHodoPosPedLimit[0],kInt,fMaxHodoScin}, {"hodo_neg_ped_limit",&fHodoNegPedLimit[0],kInt,fMaxHodoScin}, - {"tofusinginvadc",&fTofUsingInvAdc,kInt}, + {"tofusinginvadc",&fTofUsingInvAdc,kInt,0,1}, {0} }; + fTofUsingInvAdc = 0; // Default if not defined gHcParms->LoadParmValues((DBRequest*)&list,prefix); if (fTofUsingInvAdc) { - DBRequest list2[]={ - {"hodo_pos_invadc_offset",&fHodoPosInvAdcOffset[0],kDouble,fMaxHodoScin}, - {"hodo_neg_invadc_offset",&fHodoNegInvAdcOffset[0],kDouble,fMaxHodoScin}, - {"hodo_pos_invadc_linear",&fHodoPosInvAdcLinear[0],kDouble,fMaxHodoScin}, - {"hodo_neg_invadc_linear",&fHodoNegInvAdcLinear[0],kDouble,fMaxHodoScin}, - {"hodo_pos_invadc_adc",&fHodoPosInvAdcAdc[0],kDouble,fMaxHodoScin}, - {"hodo_neg_invadc_adc",&fHodoNegInvAdcAdc[0],kDouble,fMaxHodoScin}, - {0} - }; - gHcParms->LoadParmValues((DBRequest*)&list2,prefix); + DBRequest list2[]={ + {"hodo_pos_invadc_offset",&fHodoPosInvAdcOffset[0],kDouble,fMaxHodoScin}, + {"hodo_neg_invadc_offset",&fHodoNegInvAdcOffset[0],kDouble,fMaxHodoScin}, + {"hodo_pos_invadc_linear",&fHodoPosInvAdcLinear[0],kDouble,fMaxHodoScin}, + {"hodo_neg_invadc_linear",&fHodoNegInvAdcLinear[0],kDouble,fMaxHodoScin}, + {"hodo_pos_invadc_adc",&fHodoPosInvAdcAdc[0],kDouble,fMaxHodoScin}, + {"hodo_neg_invadc_adc",&fHodoNegInvAdcAdc[0],kDouble,fMaxHodoScin}, + {0} + }; + gHcParms->LoadParmValues((DBRequest*)&list2,prefix); }; if (fDebug >=1) { cout <<"******* Testing Hodoscope Parameter Reading ***\n"; diff --git a/src/THcShower.cxx b/src/THcShower.cxx index 21c956e53f6918f0ea2d634796b1e0bb5cfe6b08..67c2ca0ef61d301fdb93e5c0542957b4b7dcdc5a 100644 --- a/src/THcShower.cxx +++ b/src/THcShower.cxx @@ -166,7 +166,7 @@ Int_t THcShower::ReadDatabase( const TDatime& date ) DBRequest list[]={ {"cal_num_neg_columns", &fNegCols, kInt}, {"cal_slop", &fSlop, kDouble}, - {"cal_fv_test", &fvTest, kInt}, + {"cal_fv_test", &fvTest, kInt,0,1}, {"cal_fv_delta", &fvDelta, kDouble}, {"dbg_decoded_cal", &fdbg_decoded_cal, kInt}, {"dbg_sparsified_cal", &fdbg_sparsified_cal, kInt}, @@ -174,6 +174,7 @@ Int_t THcShower::ReadDatabase( const TDatime& date ) {"dbg_tracks_cal", &fdbg_tracks_cal, kInt}, {0} }; + fvTest = 0; // Default if not defined gHcParms->LoadParmValues((DBRequest*)&list, prefix); }