Data Analysis - Cherenkov Calibration
Cherenkov Calibration
Written by Cameron Cotton. The information presented here draws heavily from the documents in the reference section, so I thank the authors: Ryan Ambrose, Garth Huber, and Simona Malace.
The Cherenkov Detector (For Beginners)
The Cherenkov Detector uses the phenomenon of Cherenkov Radiation to detect when particles traveling faster than the speed of light of the detector chamber medium (Heavy Gas, Noble Gas, Aerogel) pass through the detector chamber. The primary purpose of the Cherenkov Detector is particle identification, particularly for distinguishing between electrons and pions in our experiments. Since the dipole magnets in front of the HMS and SHMS detectors can "select" the energy of the particles that are bent into the detector, we know the velocities of the electrons and pions that enter the detector. We can then choose the medium in the Cherenkov Detector such that Cherenkov radiation is emitted for the light and fast electrons, but not for the heavy and slow moving pions with the same energy. PMTs are then used to detect the resulting Cherenkov Radiation, taking the original photon and converting it into an electric pulse. An ADC is then used to convert the analog signal into a digital signal that reflects the ampltude of the original electric pulse (1pC = ADC Channel 1, 7pC = ADC Channel 7, etc).
While this is an overly simplistic picture, I hope it makes clear the basic principles behind how a Cherenkov Detector works and the utility it provides to particle physics experiments.
Purpose
The goal of performing a Cherenkov Detector Calibration is to quantify the Cherenkov Detector's response to the passage of various particles. In particular, we seek to map the PMT signal from a single photoelectron (SPE) to a particular ADC channel (pC). This will allow us to convert our Cherenkov Detector data from a physically meaningless quantity (ADC channel), to something much more meaningful (number of photoelectrons, or NPE). Having an accurate mapping between ADC channel and NPE is very useful, as cuts are often made on NPE to distinguish between electron events and pion events - which may have produced some radiation via scintillation or another process, but generally not as much as Cerenkov radiation.
We expect the PMT to respond linearly to the number of photoelectrons (for reasonably low NPE). For example, if 3 photoelectrons are extracted from the PMT's photocathode, we expect a 3 times larger signal to be output from the PMT relative to an event where only 1 photoelectron is extracted. So, if the SPE peak was found to be at ADC channel 50, we would expect to see the peak for NPE = 3 around ADC channel 150.
Method 1
Method 1 [2] is used when you are able to clearly identify the Single Photoelectron (SPE) peak in the "goodAdcPulseInt" spectrum. Simply fit the pulse integral of the SPE with a gaussian. The calibration is complete once you put 1/fit_result (mean) into the PARAM file. For sample plots, see [2] or my log entry. This is used for the SHMS HGCER and the HMS CER.
Method 2
Method 2 [2] is used when you cannot identify the SPE. First, you should fit the charge integral (goodAdcPulseInt) from electrons only (cuts on Preshower, Shower, and others (see logbook entry in [2] slide 5)). You can then fit the resulting histogram to get the calibration constant for the PARAM file (see details for one possible fit in [2] slide 5, or use a "stretched" Poisson distribution to fit). This method is not as nice as Method 1 and can be very sensitive to exact cuts, so caution should be taken when using this method (do systematic studies). For sample plots, see [2] or my log entry. This is used for the SHMS NGCER.
Practice
- Make sure you have pulled the a version of the hallc_replay_XEM repository that includes my calibration code (/CALIBRATION/all_cer_calib/cer_calib.C).
- To run the Cherenkov calibration script, you need a Cherenkov calibration replay. Navigate to /group/c-xem2/<user>/hallc_replay_XEM directory
- run hcana and load the calibration replay script
- .L SCRIPTS/HMS/CALIBRATION/replay_cer_hms.C
- Then run the desired replay function as:
- replay(run number, number of events)
- From the directory with my code, you should run root and execute the code with the following command:
- .L cer_calib.C
- The rootfile should appear under /ROOTfiles/HMS/CALIBRATION/hms_replay_cer_%d_%d.root
- Next, you can run the SHMS HGCER Calibration (you can do any of them first, but for this practice we start here). To do this, type:
- run_shms_cer_calib(1)
- The argument (1) tells the code to find the HGCERs coefficients, as opposed to the NGCERs coefficients.
- In general, you would need to provide a second argument, which is the "file_path/file_name" to tell the code which replay to look at. For now, I have the default file set to one in my volatile that should be suitable for this practice if its still here, though higher statistics are desirable for a full calibration, and PMT 1 on the NGCER has issues.
- Depending on the number of events the code needs to loop through and how busy the ifarm is, this may take some time (10-15 minutes for 1M events).
- Depending on the kinematics of the run used, the domain set in the code for the fitting function may need to be changed to fit around the peak of the data nicely.
- It should print the 1/Calibration Constant to the command line. For this calibration (as well as the HMS Cerenkov calibration) this value should be the mean of the Gaussian distribution. This is not the case for the NGCER calibration that we will do later.
- To complete this calibration, write the calibration constants into one of the phgcer_calib.param files in the replay under PARAM/SHMS/HGCER (Need to discuss with Casey exactly which files we want to put this in). For the NGCER, the file will be called something like PARAM/SHMS/NGCER/pngcer_calib.param. And for the HMS the file is under PARAM/HMS/HCER/ and will be called something like hcer_calib.param.
- run_shms_cer_calib(1)
- Next, we want to run the SHMS NGCER Calibration. To do this using the same script as above, type;
- run_shms_cer_calib(2)
- The argument (2) tells the code to find the NGCERs coefficients, as opposed to the HGCERs coefficients.
- The notes for the above calibration apply to this one.
- run_shms_cer_calib(2)
- Finally, we want to run the HMS CER Calibration. To do this, type,
- run_hms_cer_calib()
- No options required here (apart from file name if you don't want to use the default), as this function only handles the 1 Cerenkov for the HMS.
- The notes for the above calibration apply to this one.
- run_hms_cer_calib()
- Note: The code above works for the SHMS NGCER. However, since I took a novel approach to calibrating the SHMS NGCER and no other code exists in the main Jefferson Lab hallc_replay git repository, I made a separate script where I updated the SHMS NGCER portion of the above code to utilize RDataFrame objects, which allow it to analyze the data rapidly. It also has more sophisticated input handling and should not be difficult to start using. Documentation about running this script is contained in the same directory as the code in /CALIBRATION/shms_ngcer_calib/.
Cerenkov Configurations During XEM2
HMS
We ran with 0.4 atm of C4F8O in the HMS Cerenkov. https://logbooks.jlab.org/entry/4042396