Updates of SCT_InducedChargeModel and SCT_SurfaceChargeGenerator
SCT_InducedChargeModel
- Rename SCT_InducedChargedModel to SCT_InducedChargeModel.
- Calculate Lorentz angle following SiLorentzAngleSvc.
- Define constructor and call loadICMParameters method in it.
- Change init method to setWaferParameters method and return SCT_InducedChargeModelData.
- SCT_InducedChargeModelData holds wafer dependent data.
- m_EFieldModel exists in both SCT_InducedChargeModel and SCT_InducedChargeModelData because FEM may be switched to FDM if depletion voltage is out of range.
- Make methods const using SCT_InducedChargeModelData.
- As preparation for AthenaMT in release 22
- Add cache of SCT_InducedChargeModelData to avoid the same calculation for every call.
- Change EFiled method to getEField method.
- Change m_PotentialValue to hold multiple sets (FEM and FDM)
- Define getFEMIndex method to get s_VFD0 index and check out of range of s_VFD0.
- Move some funtionalities of loadICMParameters to new setEField method.
- Chage order of EFieldModel enums for efficient memory usage.
- Make msgLvl method const
- Use std::array instead of C array.
- Add more comments.
SCT_SurfaceChargeGenerator
- SCT_SurfaceChargesGenerator::processSiHit calls SCT_InducedChargeModel::setWaferParameters.
- Otherwise correct voltage values cannot be obtained.
- m_depletionVoltage/CLHEP::volt and m_biasVoltage/CLHEP::volt are used instead of m_vdepl and m_bias.
I ran the Reco_tf.py --AMI q221
command without and with this MR with m_doInducedChargedModel=true
to use SCT_InducedChargedModel
. Slight differences are expected due to fix of voltages and temperature, and change of position for B field, change of Lorentz angle calculation. h_phiVsNstrips0
plot (cluster size vs incident angle for the innermost Barrel layer) shows only small differences.
- Without this MR: h_phiVsNstrips0_old.pdf
- With this MR: h_phiVsNstrips0_new.pdf
Tag @mtogawa
Manually swept to master by MR !37514 (merged)
Edited by Susumu Oda