Back to home page

sPhenix code displayed by LXR

 
 

    


Warning, /analysis/SiCalo/SiliconSeedAna/doc/README_full_EN.md is written in an unsupported language. File is not indexed.

0001 # 📘 SiliconCaloMatching README (Complete Version / English)
0002 
0003 ---
0004 
0005 ## ■ Overview
0006 
0007 `SiliconCaloMatching` is a module in the sPHENIX analysis framework that integrates two detector subsystems:
0008 
0009 - Silicon tracker reconstructed tracks (`SvtxTrack`)
0010 - Electromagnetic calorimeter clusters (`RawCluster`)
0011 
0012 The module not only performs matching between these objects but also:
0013 
0014 👉 **reconstructs the transverse momentum (pT) of particles using detector geometry and bending information.**
0015 
0016 ---
0017 
0018 ## ■ Input Data
0019 
0020 ### ● SvtxTrack (Track)
0021 
0022 Represents reconstructed charged particle trajectories.
0023 
0024 #### Main parameters
0025 - Transverse momentum: `pT`
0026 - Azimuthal angle: `φ`
0027 - Position: `(x, y, z)`
0028 - Charge: `charge`
0029 
0030 ---
0031 
0032 ### ● RawCluster (EMCal Cluster)
0033 
0034 Represents energy deposits in the electromagnetic calorimeter.
0035 
0036 ```cpp
0037 (x, y, z)
0038 ```
0039 
0040 👉 Stored in Cartesian coordinates (NOT η–φ representation)
0041 
0042 ---
0043 
0044 ## ■ Overall Algorithm
0045 
0046 ```
0047 SvtxTrack
00480049 Projection to EMCal surface
00500051 Cluster search
00520053 Compute Δφ, Δz
00540055 Select closest cluster
00560057 pT reconstruction
00580059 SiliconCaloTrack output
0060 ```
0061 
0062 ---
0063 
0064 # ■ Track Representation (Important)
0065 
0066 This algorithm does NOT use full track fitting.
0067 
0068 👉 Instead, the track direction is approximated using **two silicon clusters**.
0069 
0070 ---
0071 
0072 ## ● Cluster Retrieval
0073 
0074 ```cpp
0075 TrackSeed* si_seed = track->get_silicon_seed();
0076 ```
0077 
0078 ---
0079 
0080 ## ● Inner and Outer Clusters
0081 
0082 ```cpp
0083 ckey_outer
0084 ckey_inner
0085 ```
0086 
0087 ```cpp
0088 Acts::Vector3 oCpos;
0089 Acts::Vector3 iCpos;
0090 ```
0091 
0092 ---
0093 
0094 ## ● Track Direction (φ_intt)
0095 
0096 ```cpp
0097 phi_intt = atan2(
0098     oCpos.y() - iCpos.y(),
0099     oCpos.x() - iCpos.x()
0100 );
0101 ```
0102 
0103 👉 Direction of the track inside the silicon detector
0104 
0105 ---
0106 
0107 ## ● Direction toward EMCal (φ_calo)
0108 
0109 ```cpp
0110 phi_calo = atan2(
0111     emc_y - oCpos.y(),
0112     emc_x - oCpos.x()
0113 );
0114 ```
0115 
0116 👉 Direction from outer silicon cluster to EMCal cluster
0117 
0118 ---
0119 
0120 # ■ Definition of Δφ (Core Quantity)
0121 
0122 ```
0123 Δφ = φ_calo − φ_intt
0124 ```
0125 
0126 👉 Represents the **bending angle** of the particle in the magnetic field
0127 
0128 ---
0129 
0130 # ■ Matching
0131 
0132 ## ● Matching Variables
0133 
0134 ```
0135 Δφ = φ_track − φ_cluster
0136 Δz = z_track − z_cluster
0137 ```
0138 
0139 ---
0140 
0141 ## ● Distance Metric
0142 
0143 ```
0144 r² = (Δφ × R)² + (Δz)²
0145 ```
0146 
0147 - R ≈ 93.5 cm (EMCal radius)
0148 
0149 ---
0150 
0151 ## ● Interpretation
0152 
0153 - φ difference is converted into arc length
0154 - z difference is directly used
0155 
0156 👉 Matching is performed in **real spatial coordinates**
0157 
0158 ---
0159 
0160 # 🚀 ■ Momentum Reconstruction (Core Part)
0161 
0162 ## ■ Implementation (Exact Code)
0163 
0164 ```cpp
0165 float phi_intt = atan2(oCpos.y()-iCpos.y(), oCpos.x()-iCpos.x());
0166 float phi_calo = atan2(emc_y - oCpos.y(), emc_x - oCpos.x());
0167 
0168 float dphi = phi_calo - phi_intt;
0169 
0170 float pt_calo = 0.21 * pow(fabs(dphi), -0.986);
0171 ```
0172 
0173 ---
0174 
0175 ## ■ Formula
0176 
0177 pT = 0.21 × |Δφ|^-0.986
0178 
0179 ---
0180 
0181 ## ■ Physical Interpretation
0182 
0183 In a magnetic field:
0184 
0185 Δφ ∝ 1 / pT
0186 
0187 Therefore:
0188 
0189 pT ∝ 1 / Δφ
0190 
0191 ---
0192 
0193 ## ■ Why exponent ≠ -1
0194 
0195 Expected ideal relation:
0196 
0197 pT ∝ 1 / Δφ
0198 
0199 Actual implementation:
0200 
0201 pT ∝ |Δφ|^-0.986
0202 
0203 Reasons:
0204 
0205 - Non-uniform magnetic field
0206 - Detector geometry effects
0207 - Finite resolution of measurements
0208 
0209 👉 Parameters are obtained through calibration using simulation or real data
0210 
0211 ---
0212 
0213 ## ■ General Form
0214 
0215 pT = A × |Δφ|^α
0216 
0217 | Parameter | Value |
0218 |----------|------|
0219 | A | 0.21 |
0220 | α | -0.986 |
0221 
0222 ---
0223 
0224 # ■ Core Idea of Algorithm
0225 
0226 👉 **Reconstruct momentum with minimal information**
0227 
0228 ```
0229 2 silicon points + 1 EMCal point → pT
0230 ```
0231 
0232 ---
0233 
0234 # ■ Features
0235 
0236 ✅ Computationally lightweight  
0237 ✅ Works without full tracking (e.g., no TPC)  
0238 ✅ Calibrated with experimental data  
0239 
0240 ---
0241 
0242 # ■ Limitations
0243 
0244 - Reduced accuracy at high pT (small Δφ)  
0245 - Sensitive to detector alignment  
0246 - Possible mismatching in high occupancy events  
0247 
0248 ---
0249 
0250 # ■ Summary
0251 
0252 - φ is computed using atan2
0253 - Matching uses Δφ and Δz
0254 - Clusters are handled in (x, y, z)
0255 - pT is reconstructed as:
0256 
0257 pT = 0.21 × |Δφ|^-0.986
0258 
0259 ---
0260 
0261 # ■ One-line Description
0262 
0263 👉 Reconstruct transverse momentum from track bending angle (Δφ) using an empirical formula.
0264 
0265 ---
0266 
0267 # ■ Output (SiliconCaloTrack)
0268 
0269 - Track information (pT, φ, z, charge)
0270 - Cluster information (x, y, z, energy)
0271 - dphi, dz
0272 - pt_calo
0273 
0274 ---
0275 
0276 # ■ Summary
0277 
0278 The algorithm reconstructs pT from the bending angle using two silicon clusters and one EMCal cluster.
0279