Calculates the reaction position using telescope and tracking data. More...
#include <TTGTIKProcessor.h>
Public Member Functions | |
| TTGTIKProcessor () | |
| Constructor. | |
| ~TTGTIKProcessor () override | |
| Default destructor. | |
| void | Init (TEventCollection *col) override |
| Initialize the processor with an event collection. | |
| void | Process () override |
| Main processing function. | |
Private Member Functions | |
| TTGTIKProcessor (const TTGTIKProcessor &rhs)=delete | |
| Double_t | bisection (const TTrack *track, const TTelescopeData *data) |
| Bisection method for calculating reaction position. | |
| ClassDefOverride (TTGTIKProcessor, 1) | |
| ROOT class definition macro. | |
| Double_t | GetCMAngle (Double_t ELab, Double_t Ecm, Double_t ALab) |
| Recalculate the LAB angle after reconstruction. | |
| Double_t | GetCustomExcitedEnergy (Int_t telID, Double_t Etotal) |
| Generate a custom excited state energy. | |
| Double_t | GetEcm_classic_kinematics (Double_t energy, Double_t theta) |
| Calculate the center-of-mass energy using classical kinematics. | |
| Double_t | GetEcm_kinematics (Double_t energy, Double_t theta, Double_t low_e, Double_t high_e) |
| Calculate the center-of-mass energy using relativistic kinematics. | |
| Double_t | GetEcmFromBeam (Double_t z, const TTrack *track) |
| Calculate the center-of-mass energy from beam data. | |
| Double_t | GetEcmFromDetectParticle (Double_t z, const TTrack *track, const TTelescopeData *data) |
| Calculate the center-of-mass energy from detected particle data. | |
| std::pair< Double_t, Double_t > | GetELabALabPair (Double_t z, const TTrack *track, const TTelescopeData *data) |
| Calculate the LAB energy and LAB angle from detected particle data. | |
| Double_t | GetReactionPosition (const TTrack *track, const TTelescopeData *data) |
| Calculate the reaction position along the Z-axis. | |
| Double_t | newton (const TTrack *track, const TTelescopeData *data) |
| (Deprecated) Newton method for calculating reaction position. | |
| TTGTIKProcessor & | operator= (const TTGTIKProcessor &rhs)=delete |
| Double_t | TargetFunction (Double_t z, const TTrack *track, const TTelescopeData *data) |
| Target function for the bisection (and Newton) method. | |
Private Attributes | |
| TString | fDetectorParameterName |
| Name of the detector parameter (TDetectorParameter) | |
| TClonesArray * | fDetectorPrm |
| ! Pointer to detector parameter objects (TClonesArray of TDetectorParameter) | |
| Bool_t | fDoCenterPos |
| Flag to use the detector center position. | |
| Bool_t | fDoCustom |
| Flag to enable custom processing. | |
| Double_t | fExcitedEnergy |
| Excited state energy (MeV) | |
| TClonesArray ** | fInData |
| ! Pointer to the input telescope data (TClonesArray of TTelescopeData) | |
| Double_t | fInitialBeamEnergy |
| Beam energy immediately after the window (MeV) | |
| TString | fInputColName |
| Name of the input telescope data collection (TTelescopeData) | |
| TString | fInputTrackColName |
| Name of the input tracking data collection (TTrack) | |
| TClonesArray ** | fInTrackData |
| ! Pointer to the input tracking data (TClonesArray of TTrack) | |
| TClonesArray * | fOutData |
| ! Pointer to the output reaction information (TClonesArray of TReactionInfo) | |
| TString | fOutputColName |
| Name of the output reaction information collection (TReactionInfo) | |
| IntVec_t | fParticleAArray |
| Array of mass numbers for reaction particles. | |
| IntVec_t | fParticleZArray |
| Array of atomic numbers for reaction particles. | |
| Double_t | fPressure |
| Gas pressure in Torr. | |
| TString | fTargetName |
| Name of the gas target used in TSrim calculations. | |
| TString | fTargetParameterName |
| Name of the target parameter (TTargetParameter) | |
| TClonesArray * | fTargetPrm |
| ! Pointer to target parameter objects (TClonesArray of TTargetParameter) | |
| Double_t | fTemperature |
| Gas temperature in Kelvin. | |
| const Double_t | kEpsilon = 1.0e-3 |
| Convergence threshold for the bisection method. | |
| const Double_t | kInitialMax = 1000.0 |
| Initial maximum value for bisection method (mm) | |
| const Double_t | kInitialMin = -250.0 |
| Initial minimum value for bisection method (mm) | |
| const Int_t | kMaxIteration = 1000 |
| Maximum number of iterations for the bisection method. | |
| Double_t | M1 |
| Double_t | M2 |
| Double_t | M3 |
| Double_t | M3_default |
| Double_t | M4 |
| TSrim * | srim |
| ! TSrim object to calculate energy loss | |
Calculates the reaction position using telescope and tracking data.
This class read two input data from a TClonesArray("art::crib::TTelescopeData") and a TClonesArray("art::TTrack"). It applies Thick Gas Target Method and get reaction position and Ecm.
UseCustomFunction is designed for specific analysis, currently for 26Si(a, p) analysis.This processor is using classical (non-relativistic) kinematics. Okawa note the relationship. See my master thesis (Japanese) for the details.
Consider Ion1 + Ion2 -> Ion3 + Ion4 reaction, that is, Ion2(Ion1, Ion3)Ion4 reaction.
Based on the relationship between the center-of-mass frame and the laboratory frame,
\[ \begin{align} v_{\mathrm{CM}} &= \frac{M_2}{M_1 + M_2} v_1 \\ v_{1\mathrm{CM}} &= v_1 - v_{\mathrm{CM}} = \frac{M_2}{M_1}v_{\mathrm{CM}} \\ v_{2\mathrm{CM}} &= 0 - v_{\mathrm{CM}} = -v_{\mathrm{CM}} \end{align} \]
The speed of the center of mass, \( v_{\mathrm{CM}} \), and kinetic energy, \( E_{\mathrm{CM}} \) can be expressed as follows based on the definition of the center of mass.
\[ \begin{align} E_{\mathrm{CM}} &= \frac{M_2(M_1 + M_2)}{2M_1} v_{\mathrm{CM}}^2 \\ &= \alpha v_{\mathrm{CM}}^2 \end{align} \]
Here, \( \alpha \) is defined as:
\[ \begin{align} \alpha = \frac{M_2(M_1 + M_2)}{2M_1} \end{align} \]
Based on the relationship between the reaction Q-value and the conservation laws,
\[ \begin{align} \frac{1}{2}M_1 v_{1\mathrm{CM}}^2 + \frac{1}{2}M_2 v_{2\mathrm{CM}}^2 + Q &= \frac{1}{2}M_3 v_{3\mathrm{CM}}^2 + \frac{1}{2}M_4 v_{4\mathrm{CM}}^2 \\ M_1 v_{1\mathrm{CM}} &= M_2 v_{2\mathrm{CM}} \\ M_3 v_{3\mathrm{CM}} &= M_4 v_{4\mathrm{CM}} \\ \end{align} \]
Cancelling \( v_{4\mathrm{CM}} \), we obtain:
\[ \begin{align} \alpha v_{\mathrm{CM}}^2 + Q &= \frac{M_3(M_3 + M_4)}{2M_4}v_{3\mathrm{CM}}^2 \\ \alpha v_{\mathrm{CM}}^2 + Q &= \beta v_{3\mathrm{CM}}^2 \end{align} \]
Here, \( \beta \) is defined as:
\[ \begin{align} \beta = \frac{M_3(M_3+M_4)}{2M_4} \end{align} \]
For Ion 3, the velocity component perpendicular to the z-axis remains unchanged between the LAB and CM frames, while the parallel component can be transformed using vcm. Therefore,
\[ \begin{align} v_{3\mathrm{CM}}\sin{\theta_{\mathrm{CM}}} &= v_3\sin{\theta} \\ v_{3\mathrm{CM}}\cos{\theta_{\mathrm{CM}}} &= v_3\cos{\theta} - v_{\mathrm{CM}} \end{align} \]
Cancelling \( \theta_{\mathrm{CM}} \) from these two equations, we obtain:
\[ \begin{align} v_{3\mathrm{cm}}^2 &= v_3^2 -2v_3 v_{\mathrm{CM}}\cos\theta + v_{\mathrm{cm}}^2 \end{align} \]
\( v_3 \) and \( \theta \) can be considered observable quantities. Cancelling \( v_{3\mathrm{CM}} \), we obtain:
\[ \begin{align} \alpha v_{\mathrm{CM}}^2 + Q = \beta\left(v_3^2 -2v_3v_{\mathrm{cm}}\cos\theta + v_{\mathrm{CM}}^2\right) \\ (\alpha - \beta)v_{\mathrm{CM}}^2 + 2(\beta v_3 \cos\theta)v_{\mathrm{CM}} + (Q - \beta v_3^2) = 0 \end{align} \]
By solving this quadratic equation, various quantities can be obtained. These relationships are utilized in the methods of this class.
In inverse kinematics, ion 4 is detected. Therefore, the indices 3 and 4 should be swapped, and the transformation \( \theta_{\mathrm{CM}} \rightarrow \pi - \theta_{\mathrm{CM}} \) should be applied.
Definition at line 162 of file TTGTIKProcessor.h.
| art::crib::TTGTIKProcessor::TTGTIKProcessor | ( | ) |
Constructor.
Definition at line 27 of file TTGTIKProcessor.cc.
|
override |
Default destructor.
Definition at line 68 of file TTGTIKProcessor.cc.
|
privatedelete |
|
private |
Bisection method for calculating reaction position.
| track | Pointer to the tracking data (TTrack). |
| data | Pointer to the telescope data (TTelescopeData). |
This function first performs a rough search over the interval [kInitialMin, kInitialMax] to identify a valid subinterval where the target function is defined and exhibits a sign change. It then applies the standard bisection method within that subinterval to converge on a zero.
Definition at line 256 of file TTGTIKProcessor.cc.
|
private |
ROOT class definition macro.
|
private |
Recalculate the LAB angle after reconstruction.
| ELab | LAB energy (MeV). |
| Ecm | Center-of-mass energy (MeV). |
| ALab | LAB angle (radian). |
This function calculates the CM scattering angle (θ_cm) based on the detected particle's laboratory energy (ELab) and laboratory scattering angle (ALab), as well as the center-of-mass energy (Ecm). The calculation employs classical kinematics, using coefficients derived from the masses of the reaction participants. In particular:
Definition at line 629 of file TTGTIKProcessor.cc.
|
private |
Generate a custom excited state energy.
This function is used for custom processing (e.g., handling excited state effects).
| telID | Identifier for the telescope. |
| Etotal | Total measured energy (MeV). |
This is used for 26Si(a, p)29P analysis. This function uses a custom random generator ROOT file (specific to this analysis) to assign an excited state energy for 29P based on TALYS simulation data. It reads graphs from a directory corresponding to the given telescope ID, computes the ratio of excited state contributions as a function of energy, and then, using a uniform random number, selects one excited state.
NOTE: This function is not designed for generic use and performs file I/O on an event-by-event basis, which is inefficient.
Definition at line 659 of file TTGTIKProcessor.cc.
|
private |
Calculate the center-of-mass energy using classical kinematics.
| energy | LAB energy (MeV). |
| theta | LAB angle (radian). |
This function calculates the center-of-mass energy (Ecm) from the detected particle's laboratory energy and angle using classical (non-relativistic) kinematics. It is used in the GetEcmFromDetectParticle method. The formulas employed here are based on those detailed in Okawa's master thesis.
Definition at line 557 of file TTGTIKProcessor.cc.
|
private |
Calculate the center-of-mass energy using relativistic kinematics.
| energy | LAB energy (MeV). |
| theta | LAB angle (radian). |
| low_e | Lower bound for energy (MeV). |
| high_e | Upper bound for energy (MeV). |
This function is intended to compute the center-of-mass energy (Ecm) from the detected laboratory energy and angle using relativistic formulas. It is designed to be used in the GetEcmFromDetectParticle method. However, the relativistic kinematics implementation is currently not available, and this function always returns kInvalidD.
Definition at line 546 of file TTGTIKProcessor.cc.
|
private |
Calculate the center-of-mass energy from beam data.
| z | Reaction position (mm). |
| track | Pointer to the tracking data (TTrack). |
This function calculates the center-of-mass energy (Ecm) based on the beam's kinematics and its energy loss when traversing the target material. The beam is considered to be the first particle (Z1) of the reaction system [Z1, Z2, Z3, Z4].
The procedure is as follows:
Definition at line 388 of file TTGTIKProcessor.cc.
|
private |
Calculate the center-of-mass energy from detected particle data.
| z | Reaction position (mm). |
| track | Pointer to the tracking data (TTrack). |
| data | Pointer to the telescope data (TTelescopeData). |
This function computes the center-of-mass energy (Ecm) using the laboratory energy and angle of the detected particle obtained from the assumed reaction position (z). Currently, it employs classical kinematics for the calculation.
Definition at line 453 of file TTGTIKProcessor.cc.
|
private |
Calculate the LAB energy and LAB angle from detected particle data.
| z | Reaction position (mm). |
| track | Pointer to the tracking data (TTrack). |
| data | Pointer to the telescope data (TTelescopeData). |
This function calculates the LAB energy (ELab) and LAB angle (ALab) of the detected particle, based on an assumed reaction position (z). It retrieves the detector parameters corresponding to the telescope ID, computes the effective detection position using either the strip information or the detector center position (depending on the flag), and then applies the TSrim library to determine the energy loss. The LAB angle is computed as the angle between the track direction and the vector from the reaction position to the detection position.
Definition at line 475 of file TTGTIKProcessor.cc.
|
private |
Calculate the reaction position along the Z-axis.
| track | Pointer to the tracking data (TTrack). |
| data | Pointer to the telescope data (TTelescopeData). |
This function computes the reaction position (z-coordinate) by employing the bisection method. Although an alternative Newton method is available, the bisection method is preferred for its robustness. Newton method is not implemented yet.
Definition at line 237 of file TTGTIKProcessor.cc.
|
override |
Initialize the processor with an event collection.
| col | Pointer to the event collection. |
This function prepares necessary input and output objects, validates parameters, computes mass values for the reaction, initializes the TSrim object for energy loss calculations, and sets up the output collection.
Definition at line 81 of file TTGTIKProcessor.cc.
|
private |
(Deprecated) Newton method for calculating reaction position.
| track | Pointer to the tracking data (TTrack). |
| data | Pointer to the telescope data (TTelescopeData). |
Currently it is unavailable, return kInvalidD.
Definition at line 246 of file TTGTIKProcessor.cc.
|
privatedelete |
|
override |
Main processing function.
This function processes the input telescope and tracking data to reconstruct the reaction information.
Definition at line 166 of file TTGTIKProcessor.cc.
|
private |
Target function for the bisection (and Newton) method.
Computes the difference between the beam and detected particle center-of-mass energies.
| z | Reaction position (mm). |
| track | Pointer to the tracking data (TTrack). |
| data | Pointer to the telescope data (TTelescopeData). |
This function calculates two center-of-mass energies based on an assumed reaction position (z):
The target function is defined as: f(z) = Ecm(beam) - Ecm(detected)
A zero crossing of this function indicates that the assumed z position corresponds to the true reaction position. The (x, y, z) coordinates are then determined from the tracking data.
Definition at line 361 of file TTGTIKProcessor.cc.
|
private |
Name of the detector parameter (TDetectorParameter)
Definition at line 190 of file TTGTIKProcessor.h.
|
private |
! Pointer to detector parameter objects (TClonesArray of TDetectorParameter)
Definition at line 199 of file TTGTIKProcessor.h.
|
private |
Flag to use the detector center position.
Definition at line 211 of file TTGTIKProcessor.h.
|
private |
Flag to enable custom processing.
Definition at line 210 of file TTGTIKProcessor.h.
|
private |
Excited state energy (MeV)
Definition at line 209 of file TTGTIKProcessor.h.
|
private |
! Pointer to the input telescope data (TClonesArray of TTelescopeData)
Definition at line 194 of file TTGTIKProcessor.h.
|
private |
Beam energy immediately after the window (MeV)
Definition at line 203 of file TTGTIKProcessor.h.
|
private |
Name of the input telescope data collection (TTelescopeData)
Definition at line 187 of file TTGTIKProcessor.h.
|
private |
Name of the input tracking data collection (TTrack)
Definition at line 188 of file TTGTIKProcessor.h.
|
private |
! Pointer to the input tracking data (TClonesArray of TTrack)
Definition at line 195 of file TTGTIKProcessor.h.
|
private |
! Pointer to the output reaction information (TClonesArray of TReactionInfo)
Definition at line 196 of file TTGTIKProcessor.h.
|
private |
Name of the output reaction information collection (TReactionInfo)
Definition at line 189 of file TTGTIKProcessor.h.
|
private |
Array of mass numbers for reaction particles.
Definition at line 208 of file TTGTIKProcessor.h.
|
private |
Array of atomic numbers for reaction particles.
Definition at line 207 of file TTGTIKProcessor.h.
|
private |
Gas pressure in Torr.
Definition at line 205 of file TTGTIKProcessor.h.
|
private |
Name of the gas target used in TSrim calculations.
Definition at line 204 of file TTGTIKProcessor.h.
|
private |
Name of the target parameter (TTargetParameter)
Definition at line 191 of file TTGTIKProcessor.h.
|
private |
! Pointer to target parameter objects (TClonesArray of TTargetParameter)
Definition at line 200 of file TTGTIKProcessor.h.
|
private |
Gas temperature in Kelvin.
Definition at line 206 of file TTGTIKProcessor.h.
|
private |
Convergence threshold for the bisection method.
Definition at line 219 of file TTGTIKProcessor.h.
|
private |
Initial maximum value for bisection method (mm)
Definition at line 218 of file TTGTIKProcessor.h.
|
private |
Initial minimum value for bisection method (mm)
Definition at line 217 of file TTGTIKProcessor.h.
|
private |
Maximum number of iterations for the bisection method.
Definition at line 220 of file TTGTIKProcessor.h.
|
private |
Definition at line 223 of file TTGTIKProcessor.h.
|
private |
Definition at line 224 of file TTGTIKProcessor.h.
|
private |
Definition at line 226 of file TTGTIKProcessor.h.
|
private |
Definition at line 225 of file TTGTIKProcessor.h.
|
private |
Definition at line 227 of file TTGTIKProcessor.h.
|
private |
! TSrim object to calculate energy loss
Definition at line 214 of file TTGTIKProcessor.h.