TikiWiki Assistant Thank you for installing TikiWiki!
Click the :: options in the Menu for more options. Please, also see TikiMovies for more setup details. |
Neutron Detector Analysis
Neutron Detector overviewThe 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 digitizationThe 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.The values recorded by the 1877 TDCs had a definite and fixed offset to the time of the Common Stop pulse provided by the Trigger Supervisor and its 'Level One Accept', or L1A, signal. Due to the internal operations of the F1 TDC, there was a looser relation between the controlling pulse sent to the TDC and the L1A time, so a copy of the L1A was also put into a channel in the TDC; this is what is referred to as the "Reference Time". In the analysis software, the "Reference Time" is subtracted off such that the "time" variables are with respect to the L1A. The BigBite detectors, most importantly the scintillator for purposes of reconstructing the neutron time-of-flight (ToF), used a DIFFERENT common signal for the TDC and ADC digitization, which we will call the BBtrig. To relate the Neutron Detector and BigBite times, a Lecroy 1875 TDC was used to record the difference (sometimes called the "raw coincidence time"), where the TDC had 50ps/channel such that: L1A - BBtrig = 0.05*D.ctimeL1A[0] (ns) Analysis OverviewThe THaNeutronApp is the overall neutron detector apparatus, whose location in the hall is specified in the run database (db_run.dat) via :
The THaNeutronApp contains the THaNeutronDetector, the major class that drives the analysis of the neutron detector, which contains the neutron detector planes (in THaScintPlane's) and veto detectors (in THaVetoPlane, which inherits from THaScintPlane). The geometry, channel map, calibration constants, etc. of each plane is specified in the database (db_na.nd.dat file for now), which is describe elsewhere. Each THaScintPlane contains an array of its bars as THaScintBar (or THaVetoBar) objects. The bars are readout by PMT's (THaScintPMT); in the case of the neutron detector planes both sides of a single bar are readout and can be combined, while for the veto bars each left- and right-paddle is read out independently. The analysis of the neutron detector proceeds in the following steps:
DecodingThe 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).Since the TDCs are mult-hit, and to permit for tight-packing of the data in the tree, the general storage of the ADC and TDC readout is as a set of parallel arrays. These sets of parallel arrays have an array for the bar number, the raw readout value, and then the values after some corrections have been applied.
In addition, there are "flat", non-packed arrays indexed on the bar number that store a subset (just the first hit) of the data present in the full arrays listed above. These are also prefixed by the detector and plane number, eg. "na.nd.n3.LT[5]" to get at the time of the first hit of bar 5 of plane N3. These are NOT used in the full analysis, and are depreciated.
Intra-plane ReconstructionAt 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.First the TDC and ADC hits are sorted by bar number and value, with the earlier and highest amplitudes listed first. To speed up the search for matching hits, temporary index arrays are used to hold the location of the hits in the lthit_* and similar arrays. The corrected times from the TDC, the same data as in the lthit_time and rthit_time variables, are selected to use only those entries with a time within a 300ns window as given in the database. The "hits" on each bar are then constructed: for the neutron detector planes both PMTs on a bar are required to have ADC and TDC information while for the veto planes only the single attached PMT must have the complete information. The left and right times for each bar are corrected for timewalk effects using the ADC readout of the same bar: ltime = lthit_time - C_l * pow(lahit_ap, P_l) rtime = rthit_time - C_r * pow(rahit_ap, P_r) where (C_l, C_r, P_l, P_r) are calibration constants from the database, with P_l and P_r between -1 and -.5. With the corrected times the time of the hit on the bar, its the position along the bar, and energy deposition can be calculated and the complete hit is constructed. These can be accessed as the global array variables owned by the detector plane (eg: na.nd.n6.hit_tof), of dimension nhit. The hits are sorted in ascending order by bar number. Below Cn is the effective signal-propogation speed, including internal reflections, in the bar and is between 0.14 to 0.15 m/ns.
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 findingThe 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 THaNeutronDetector::CreateClusters 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 |hit_ypos - bar_y| < THaNeutronDetector::fHitLRMatch * bar_length are put into an array of good "single hits". The single hits are then iterated over, and those which are either neighbors vertically (ie in adjacent bars in the same plane) or in neighboring planes and at roughly the same vertical position (x), and have times matching to within a short window (given by THaNeutronDetector::fClustTimeWindow , presently set to 10 ns) are joined together into a cluster. The cluster continues to grow to collect all hits with the given criteria. The next unused "single hit" is then used as the beginning of the next cluster, and so on until all the "single hits" are members of a cluster, even if that cluster contains only one hit bar. The geometric correlation between bars is generated at initialization and stored in the THaBarArray class. Formally, the criteria for a candidate hit "C" being added to a cluster by its proximity to the already-in-the-cluster hit "I" are the loose cuts: |hit_time_C - hit_time_I| < fClustTimeWindow, AND |hit_xpos_C - hit_xpos_I| < 1.5*Max(bar_xsize_C, bar_xsize_I) AND [ |hit_plane_C-hit_plane_I|<=1 OR MinDist(bar_zpos_C,bar_zpos_I) < 1.5*(bar_zsize_C+bar_zsize_I) ] where MinDist is the minimum distance between the edges of the scintillator bar in the z-direction, and everything else has its obvious interpretation. For each cluster, the specific time (tof), position (xpos,ypos,zpos), plane and bar number are of the hit closest to the front of the neutron detector. The energy-weighted position and moments of the hits are accumulated as: clus_xwgt = 1/clus_Edep * Sum(hit_Edep * hit_xpos) clus_dx2 = 1/clus_Edep * Sum( hit_Edep * (hit_xpos - clus_xwgt)**2 ) (and likewise for clus_ywgt and clus_zwgt, and clus_dy2 and clus_dz2). The clusters are sorted in order of descending deposited energy. Veto to Cluster matchingTo 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 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:
Neutron Detector to BB matchingThe "tracks" are then generated from the clusters via THaNeutronDetector::BuildTracks, 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. The tracks arrays are completely parallel to the "cluster" arrays listed above. The final "tracks" are owned by the Neutron Apparatus, and so have the prefix "na.":
To get the proper "time-of-flight" of the candidate nucleon track, the time must be calculated relative to the electron in BigBite. As an example, this can be calculated (to within and offset and ignoring the pathlength corrections for the electron) as: na.tr.time - B.s.time[B.s.trpad[0]] + 0.05*D.ctimeL1A[0] where "B.s.time[B.s.trpad[0]]" is the time of the hit in the BigBite's scintillators relative to the BBtrig accociated with the electron.Created by: feuerbac last modification: Tuesday 22 of May, 2007 [13:45:43 UTC] by feuerbac
article:
Veto Efficiency
·
wiki page: NeutronDetector · NA ChangeLog · NA Geometry · Neutron Detector Analysis · Veto Plane · Veto · UVA · Sums · NA software variables · Marker Bar · GLA · Calibration Technique · CMU · Neutron Plane · |
Login Search
|