Skip to content
Snippets Groups Projects
Commit 49ffa61b authored by Walter Lampl's avatar Walter Lampl
Browse files

Merge branch 'refactor/gx2f_traj_caloelossupdate' into 'master'

Deduplicate calorimeter energy loss state updater in GlobalChi2Fitter

See merge request atlas/athena!36142
parents 43179d9b 5455d842
No related branches found
No related tags found
No related merge requests found
......@@ -51,6 +51,8 @@ namespace Trk {
void setChi2(double);
void setMass(double);
void conditionalSetCalorimeterEnergyLossState(GXFTrackState *);
std::pair<GXFTrackState *, GXFTrackState *> findFirstLastMeasurement(void);
bool hasKink(void);
......
......@@ -82,16 +82,7 @@ namespace Trk {
if (rhs.m_caloelossstate != nullptr) {
for (auto & state : m_states) {
GXFMaterialEffects *meff = state->materialEffects();
const TrackParameters *par = state->trackParameters();
if (
(meff != nullptr) && (par != nullptr) && meff->sigmaDeltaE() > 0 &&
meff->sigmaDeltaPhi() == 0 &&
(par->position().perp() > 1400 || std::abs(par->position().z()) > 3700)
) {
m_caloelossstate = state.get();
}
conditionalSetCalorimeterEnergyLossState(state.get());
}
}
......@@ -141,14 +132,7 @@ namespace Trk {
if (rhs.m_caloelossstate != nullptr) {
for (auto & state : m_states) {
GXFMaterialEffects *meff = state->materialEffects();
const TrackParameters *par = state->trackParameters();
if (
(meff != nullptr) && (par != nullptr) && meff->sigmaDeltaE() > 0 && meff->sigmaDeltaPhi() == 0 &&
(par->position().perp() > 1400 || std::abs(par->position().z()) > 3700)
) {
m_caloelossstate = state.get();
}
conditionalSetCalorimeterEnergyLossState(state.get());
}
}
m_upstreammat = rhs.m_upstreammat;
......@@ -156,6 +140,24 @@ namespace Trk {
return *this;
}
void GXFTrajectory::conditionalSetCalorimeterEnergyLossState(GXFTrackState * state) {
constexpr double perpThreshold = 1400;
constexpr double zThreshold = 3700;
const GXFMaterialEffects *meff = state->materialEffects();
const TrackParameters *par = state->trackParameters();
if (
meff != nullptr &&
par != nullptr &&
meff->sigmaDeltaE() > 0 &&
meff->sigmaDeltaPhi() == 0 &&
(par->position().perp() > perpThreshold || std::abs(par->position().z()) > zThreshold)
) {
m_caloelossstate = state;
}
}
bool GXFTrajectory::addMeasurementState(std::unique_ptr<GXFTrackState> state, int index) {
if (!m_states.empty() && (m_states.back()->measurement() != nullptr)) {
const MeasurementBase *meas = m_states.back()->measurement();
......@@ -213,7 +215,6 @@ namespace Trk {
}
void GXFTrajectory::addMaterialState(std::unique_ptr<GXFTrackState> state, int index) {
const TrackParameters *par = state->trackParameters();
GXFMaterialEffects *meff = state->materialEffects();
if (state->trackStateType() == TrackState::Scatterer) {
......@@ -226,13 +227,7 @@ namespace Trk {
if (meff->sigmaDeltaE() > 0) {
m_nbrems++;
if (
(par != nullptr) && meff->sigmaDeltaPhi() == 0 &&
(par->position().perp() > 1400 || std::abs(par->position().z()) > 3700)
) {
m_caloelossstate = state.get();
}
conditionalSetCalorimeterEnergyLossState(state.get());
}
m_toteloss += std::abs(meff->deltaE());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment