76 const EventContext& ctx = Gaudi::Hive::currentContext();
83 return StatusCode::FAILURE;
91 std::vector<const TrackStateOnSurface*> material;
92 std::vector<const TrackStateOnSurface*> matPrec;
94 for (
unsigned int it = 0; it <
m_numScan+1; it++) {
106 material.clear(); matPrec.clear();
129 const std::vector<const Trk::TrackStateOnSurface*>* mmsentry =
m_extrapolator->extrapolateM(ctx,
136 for (
const auto& entry : *mmsentry) {
139 << entry->trackParameters()->position() <<
":"
140 << entry->trackParameters()->momentum().mag() - currPar->
momentum().mag());
144 currPar = (mmsentry->back()) ? mmsentry->back()->trackParameters() : msEntry;
146 const std::vector<const Trk::TrackStateOnSurface*>* peri =
m_extrapolator->extrapolateM(ctx,
156 ATH_MSG_ERROR (
"Perigee pointer is null in CETmaterial.cxx");
158 return StatusCode::FAILURE;
160 for (
const auto& entry : *peri) {
161 if (entry && entry->trackParameters()) {
163 << entry->trackParameters()->position() <<
":"
164 << entry->trackParameters()->momentum().mag() - msEntry->
momentum().mag());
168 if (peri->back() && peri->back()->trackParameters()) {
170 << initialPerigee.parameters()[0] <<
","
171 << initialPerigee.parameters()[1] <<
","
172 << initialPerigee.parameters()[2] <<
","
173 << initialPerigee.parameters()[3] <<
","
174 << initialPerigee.
momentum().mag() );
176 << peri->back()->trackParameters()->parameters()[0] <<
","
177 << peri->back()->trackParameters()->parameters()[1] <<
","
178 << peri->back()->trackParameters()->parameters()[2] <<
","
179 << peri->back()->trackParameters()->parameters()[3] <<
","
180 << peri->back()->trackParameters()->momentum().mag() );
182 ATH_MSG_ERROR(
"extrapolation to perigee failed for input parameters: " << msEntry->parameters() );
187 ATH_MSG_ERROR(
"extrapolation to MSentry failed for input parameters: " << currPar->parameters() );
213 const std::vector<const Trk::TrackStateOnSurface*>* nextPrec =
m_extraprec->extrapolateM(
222 for (
const auto *i : *nextPrec) {
231 if (!lay || !nextPrec || nextPrec->empty() || !nextPrec->back() )
break;
232 precPar = nextPrec->back()->trackParameters();
234 if (!material.empty())
for (
auto & i : material) {
235 if (i->materialEffectsOnTrack()) mat += i->materialEffectsOnTrack()->thicknessInX0();
238 currPar->parameters()[1]-precPar->parameters()[1]);
248 if (!material.empty())
for (
auto & i : material) {
249 if (i->materialEffectsOnTrack()) matc += i->materialEffectsOnTrack()->thicknessInX0();
261 if (!material.empty())
for (
auto & i : material) {
262 if (i->materialEffectsOnTrack()) {
263 mat += i->materialEffectsOnTrack()->thicknessInX0();
269 const std::vector<const Trk::TrackStateOnSurface*>* destParameters =
m_extrapolator->extrapolateM(
279 if (destParameters)
for (
const auto *destParameter : *destParameters) {
290 std::vector<const Trk::DetachedTrackingVolume*> detVols =
m_extrapolator->trackingGeometry()->lowestDetachedTrackingVolumes(trPar->
position());
295 if (destParameters) {
303 if (!destParameters || destParameters->empty() ) {
304 ATH_MSG_ERROR(
"extrapolation to outer boundary failed for input parameters: " << initialPerigee.parameters() );
305 }
else if (destParameters->back()->trackParameters()) {
309 const std::vector<const Trk::TrackStateOnSurface*>* peri =
m_extrapolator->extrapolateM(
310 ctx, *(destParameters->back()->trackParameters()),
318 for (
unsigned int i=0; i< peri->size(); i++)
319 ATH_MSG_INFO(
"position:" << i <<
"," << (*peri)[i]->trackParameters()->position() );
320 ATH_MSG_INFO(
"extrapolation to perigee:input: " << initialPerigee.parameters() );
321 ATH_MSG_INFO(
"extrapolation to perigee:output: " << peri->back()->trackParameters()->parameters() );
323 ATH_MSG_ERROR(
"extrapolation to perigee failed for input parameters: " << destParameters->back()->trackParameters()->parameters() );
329 delete destParameters;
335 return StatusCode::SUCCESS;