- -=Neutron Detector overview=-
+ !Neutron Detector overview
The Neutron Detector (sometimes called ))BigHand(( or NeutronArm) contains two thin veto planes followed by the neutron-detector planes: seven planes of converter material/scintillator. Each veto plane is composed of independent left-and-right scintillators read out on one end, with a total of 48 * 2 = 96 detectors per plane. The active region of the neutron detectors are 5 or 10cm thick scintillator bars read out on both sides, providing a horizontal position as well as precise timing information. The segmentation of the neutron detector planes permits a coarse determination of the neutron's vertical position.
- -=Signal path and digitization=-
+ !!Signal path and digitization
The signals from each PMT were split and recorded by ADCs and TDCs. The ADCs integrated the pulses over a ~150ns time window. The time of the pulses were recorded in multi-hit TDCs: the vetos to Lecroy 1877 TDCs run in common-stop mode at 0.5ns/channel, and the neutron-detectors to F1 TDCs set to 0.1183ns/channel.
::L1A - BBtrig = 0.05*~~red:D.ctimeL1A[[0]~~ (ns)::
- -=Analysis Overview=-
+ !Analysis Overview
The ~~blue:THaNeutronApp~~ is the overall neutron detector apparatus, whose location in the hall is specified in the run database (db_run.dat) via :
# Track construction for easier comparison to BB calculations
- -=Decoding=-
+ !!Decoding
The first step is to take the data, generally from a CODA file, and read it into the ))Neutron-Detector(( class objects. The ADC and TDC values are stored in the following global variables, which can be written out to the ROOT-file. Since each channel is localized to a specific plane, each variable listed below is to be prefixed by the corresponding detector plane (eg: use "na.nd.n3.lthit_tdc" to access the "lthit_tdc" array for the n3 plane).
- -=Intra-plane Reconstruction=-
+ !!Intra-plane Reconstruction
At the "CoarseProcess"-ing stage, the hits in the correlations between the ADCs and TDCs for a given bar are constructed in the THaScintPlane and THaVetoPlane classes; this is not performed at the Decode stage so the multi-hit capabilities of the TDCs can be used.
For the Veto detectors the same steps are followed, except that only one side and PMT is used, such that a mean-time is not formed. The hit_tof and hit_Edep are assigned to ltime or rtime and the lahit_ac or rahit_ac, respectively, and hit_ypos is set to the center of the (left or right) paddle.
- -=Cluster finding=-
+ !!Cluster finding
The individual hits in seven neutron detector planes must be matched together to construct a small number of "clusters" per event. This is performed at the "FineProcess" level by the ~np~THaNeutronDetector::CreateClusters~/np~ method. First, all the "hits" in the neutron detector planes constructed in the previous step are sorted through, and those which pass the loose cut
The clusters are sorted in order of descending deposited energy.
- -=Veto to Cluster matching=- To look for a matching hit in the veto counters, a ray from the front of the cluster towards the target center is used to match to the veto bars and get the matching bar, ))VetoInt((. The index and veto bar hit in each the veto plane with the best-matching time to the cluster within +/-1 bar of ))VetoInt(( is stored with the cluster; if no match is found the veto bar is listed as ))VetoInt(( and the index is set to -1.
+ !!Veto to Cluster matching To look for a matching hit in the veto counters, a ray from the front of the cluster towards the target center is used to match to the veto bars and get the matching bar, ))VetoInt((. The index of the veto hit and the corresponding veto bar for each veto plane that best-matches the ~~red:time~~ of the cluster within +/-1 bar of ))VetoInt(( is stored with the cluster; if no match is found the veto bar is listed as ))VetoInt(( and the index is set to -1. The time of the veto-hit is just from the lthit_time or rthit_time arrays, NOT corrected for the position along the veto bar.
The variables are owned by the Neutron Detector and so have the prefix "na.nd.". The global variables available for each cluster are:
~~red:clus_dz2~~ | cluster's E-weighted dz**2 (m**2)
~~red:clus_v1bar~~ | veto bar in plane V1 matching to this cluster
- ~~red:clus_v1hit~~ | index of hit in plane V1 matching to this cluster; -1 if no hit found
+ ~~red:clus_v1hit~~ | index of hit in plane V1 array (v1.hit_*) matching to this cluster; -1 if no hit found
~~red:clus_v2bar~~ | veto bar in plane V2 matching to this cluster
- ~~red:clus_v2hit~~ | index of hit in plane V2 matching to this cluster; -1 if no hit found
+ ~~red:clus_v2hit~~ | index of hit in plane V2 array (v2.hit_*) matching to this cluster; -1 if no hit found
||
- -=Neutron Detector to BB matching=-
+ !!Neutron Detector to BB matching
The "tracks" are then generated from the clusters via ~np~THaNeutronDetector::BuildTracks~/np~, where rays from the target center to the primary hit are generated and put into the Hall Coordinate System (HCS). The pathlength from the target to the hit is calculated, as well as the direction of the momentum 3-vector, however the beta and magnitude of the momentum vector are arbitrary at this point since the time-of-flight is not fully calculated since the BigBite arm is not used. The location of the tracks' intersections at Z=0 of the neutron detector are calculated and reported, as well as their equivalent target "theta" and "phi" variables. However, it is suggested to use the "tr.px, tr.py, tr.pz" variables, divided by "tr.p" as direction cosines of the track.
|