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

Added setup_Directory() method to main_calib.C :: Added README for DC...

Added setup_Directory() method to main_calib.C :: Added README for DC Calibration :: changed directory named from shms_dc_calib to dc_calib (#424)

* added HMS/SHMS DC Calib README :: changed directory name from shms_dc_calib to dc_calib

* added setup_Directpry() method in main_calib.C
parent 577007fc
No related branches found
No related tags found
No related merge requests found
Showing
with 102 additions and 91 deletions
HMS/SHMS Drift Chambers Calibration
============================================
This directory contains the code for calibrating the pair of HMS/SHMS drift chambers.
Directory structure
----------------------
* hallc_replay/CALIBRATION/dc_calib/scripts/main_calib.C : steering C++ code that executes the methods in DC_Calib.C
* hallc_replay/CALIBRATION/dc_calib/scripts/DC_Calib.C : Calibration Code where all the class methods are defined
* hallc_replay/CALIBRATION/dc_calib/scripts/DC_Calib.h : Header file containing the variable definitions used in the methods
Running code
---------------
NOTE: p: SHMS, h: HMS, <spec>: HMS, or SHMS
* First set the parameter 'p(h)_using_tzero_per_wire = 0' in the
parameter file located in: hallc_replay/PARAM/<spec>/DC/p(h)dc_cuts.param
* Replay the data to produce the uncalibrated root file to be used as input in the calibration
NOTE: Make sure to include the necessary leafs if you want to make any pid cuts.
The leafs are:
SHMS:
P.ngcer.npeSum, P.cal.etot, T.shms.pEL_CLEAN_tdcTime (the P.cal.etot is currently commented out until further discussion)
HMS:
H.cer.npeSum, H.cal.etot, T.hms.hEL_CLEAN_tdcTime (the H.cal.etot is currently commented out until further discussion)
* From the hallc_replay execute: ./hcana SCRIPTS/<spec>/PRODUCTION/<replay_script.C>
* From the directory where this README file is:
-Open and modify 'DC_Calib obj()' line. This line has the following format:
-------------------------------------------------------------------------------------------------
DC_calib obj("<spec_flag>", "/path/to/ROOTfile/", run_NUM, event_NUM, "<pid_flag>");
**The <spec_flag> and <pid_flag> have the possible arguments:
<spec_flag>: HMS, SHMS
<pid_flag>: pid_elec, pid_hadron, dc_1hit, pid_kFLASE
When the <pid_flag> is selected, the calibration script applies the following cuts:
1) pid_elec: P.ngcer.npeSum > 1.0 && T.shms.pEL_CLEAN_tdcTime > 0.0 (for HMS: H.cer.npeSum > 1.0 && T.hms.hEL_CLEAN_tdcTime > 0.0 )
2) pid_hadron: P.ngcer.npeSum < 1.0 (for HMS: H.cer.npeSum < 1.0 )
3) dc_1hit: Ndata.P(H).dc.plane.time == 1 && Ndata.P(H).dc.plane.wirenum == 1, where plane-> 1u1, 1u2, ...
NOTE: The Ndata cut, requires a single hit in each chamber per plane per event
4) pid_kFALSE: No cuts are applied.
-------------------------------------------------------------------------------------------------
* Once the arguments are specified, execute: root -l main_calib.C
When the calibration is completed, a directory will be created under the name: <spec_flag>_DC_Log_runNUM/
In this directory, the calibration output files are stored automatically, once the calibration is completed:
1) <spec_flag>_DC_driftimes.root
2) t_zero_values_plane.dat
3) p(h)dc_calib_runNUM.param
4) p(h)dc_tzero_per_wire_runNUM.param
Each file contains the following:
1) uncalibrated/calibrated drift times, fitted drift times, tzero_v_wire graphs
2) data files containing four columns: wire, tzero, tzero_error, entries
3) parameter file containing time-to-distance look-up values
4) parameter file containing per-wire tzero corrections
* The parameter files must be copied to the following location:
-> /hallc_replay/PARAM/<spec>/DC/hdc_calib.param
-> /hallc_replay/PARAM/<spec>/DC/hdc_tzero_per_wire.param
* Set the parameter 'p(h)_using_tzero_per_wire = 1' in the
parameter file located in: hallc_replay/PARAM/<spec>/DC/p(h)dc_cuts.param
* From the hallc_replay execute: ./hcana SCRIPTS/SHMS/PRODUCTION/<replay_script.C> once again.
NOTE: An indication that the calibration worked is by looking a the drift distances, which should appear
relatively flat. There may be a high number of counts at the extremes of the drift distance, for which
the additional cuts may need to be applied.
* The recommended cuts when looking at drift distances are:
1) P(H).dc.plane.time > 0 (drift time > 0)
2) PID cuts that were applied based on the <pid_flag> selected
......@@ -19,11 +19,11 @@ int main_calib()
//pid_elec, pid_hadron, dc_1hit, pid_kFALSE (no PID cuts)
// |
// v
//DC_calib obj("HMS", "../../../ROOTfiles/hms_replay_production_all_1856_dcuncal.root", 1856,2000000, "pid_kFALSE");
// DC_calib obj("HMS", "../../../ROOTfiles/hms_replay_production_all_1856_dcuncal.root", 1856,200, "pid_kFALSE");
//DC_calib obj("SHMS", "../../../ROOTfiles/shms_replay_production_all_2071_-1_dcuncalib.root", 2071, 3000000, "pid_bkg");
DC_calib obj("HMS", "../../../ROOTfiles/hms_coin_replay_production_1866_1000000.root", 1866, 1000000, "dc_1hit");
DC_calib obj("HMS", "../../../ROOTfiles/hms_coin_replay_production_1866_1000000.root", 1866, 1000, "pid_kFALSE");
obj.setup_Directory();
obj.printInitVar();
obj.SetPlaneNames();
obj.GetDCLeafs();
......
SHMS Drift Chambers Calibration
============================================
This directory contains the code for calibrating the pair of SHMS drift chambers.
Directory structure
----------------------
* hallc_replay/CALIBRATION/shms_dc_calib/run_Cal.C : steering C++ code that executes all codes in the 'scripts' directory
* hallc_replay/CALIBRATION/shms_dc_calib/scripts : all scripts necessary to do calibration lie in this directory
* hallc_replay/CALIBRATION/shms_dc_calib/root_files : all root files produced by the calibration are in this directory
* hallc_replay/CALIBRATION/shms_dc_calib/data_files : all data files produced by the calibration are in this directory
Running code
---------------
* First set the parameter 'p_using_tzero_per_wire = 0' in the
parameter file located at: hallc_replay/PARAM/SHMS/DC/CUTS/pdc_cuts.param
* Replay the data to produce the uncalibrated root file to be used as input in the calibration
* From the hallc_replay execute: ./hcana SCRIPTS/SHMS/STACK/replay_shms.C
* From the directory where this README file is: execute: root -l run_Cal.C
* From the calibration results, two parameter files will be produced in:
* hallc_replay/PARAM/SHMS/DC/CALIB/pdc_tzero_per_wire_run#.param
* hallc_replay/PARAM/SHMS/DC/CALIB/pdc_calib_run#.param
* Rename the new parameter files as follows:
* copy: pdc_tzero_per_wire_run#.param to pdc_tzero_per_wire.param
* copy: pdc_calib_run#.param to pdc_calib.param
* Before replaying the data again, set the parameter 'p_using_tzero_per_wire = 1' to
allow the source code (hcana) to read the parameter values during the replay.
* Replay the data with the updated parameters to produce the new calibrated root files
with the corrected drift times and drift distances.
* Compare the calibrated and uncalibrated root files to verify the calibration was done properly.
Brief decription of code
------------------------
* Overview: The code determines the tzero offsets on a wire-by-wire basis. These offsets are
corrections by which each wire drift time spectrum must be shifted to align it with a
drift time of "0 ns". This time corresponds to when the electrons from the ionized gas inside
the chamber are in contact with the sense wire, hence a drift time of "0 ns".
* Brief Description of the scripts in the '/scripts' directory
*** to run the scripts independenlty, open the input_RUN.txt files and write the filen_ame, run_number and number of events in this order: root_file.root run_number events
** get_pdc_time_histo.C :
-- outputs root_file: 'shms_dc_time_%d.root', (%d=run_number)
-- contains re-binned per-plane drift time histograms
** wire_drift_times.C (and wire_drift_times.h) - See instructions in wire_drift_times.C on how to execute independently
-- outputs root_file: 'shms_DC_plane_%d_wire_histos.root'
-- contains a 2-D histo of "drift time vs. Wire Number" and drift time spectra for all wires in the plane
** get_wire_tzero.C
-- outputs root_file: 'shms_DC_plane_%d_fitted_histos.root'
-- contains line-fitted wire drift time histos. The extrapolation of the fit to the x-axis is defined as "tzero"
Also contains two "tzero vs. wirenumber" plots: one for all wires, and the other is after setting tzero=0 for
wires that did not have enough statistics for a good quality fit, a weighted average was calculated for the latter.
-- outputs data_file: 'shms_dc_planetzero_run%d.dat' -> contains list of "tzero" values for all wires (plane e.g. 2u1, 1x2, ...)
'shms_dc_planetzero_run%d_updated.dat' -> contains list of "tzero" values for all wires that
had a good fit. The remaining tzeros are set to 0.
'tzero_weighted_avg_run%d.dat -> contains weighted tzero values per plane
** get_tzero_per_wire_param.C
-- outputs data_file: 'tzero_values_per_wire.dat'
-- contains list of tzero values for all wires in all planes
-- outputs param_file: /hallc_replay/PARAM/SHMS/DC/CALIB/pdc_tzero_per_wire_run#.param
-- contains tzero values for all wires in all planes, but the file is formatted so that the values may be read by the source code (hcana)
** get_pdc_time_histo_tzero_corrected.C
-- outputs root_file: 'shms_tzero_corr_histo.root'
-- contains list of "t0-corrected" wire drift times, and their respective plane drift times.
** get_LookUp_Values.C
-- outputs param_file: /hallc_replay/PARAM/SHMS/DC/CALIB/pdc_calib_run#.param
-- contains scaling factors calculated from the corrected plane drift times on a bin-by-in basis. These values get read by the source code
which will be used to scale the drift distance histograms.
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