59 return StatusCode::FAILURE;
93 SmartIF<ITHistSvc> tHistSvc{service(
"THistSvc")};
95 ATH_MSG_ERROR(
"initialize() Could not find Hist Service -> Switching ValidationMode Off !" );
101 ATH_MSG_ERROR(
"initialize() Could not register the validation Trees -> Switching ValidationMode Off !" );
107 ATH_MSG_INFO(
"initialize() RandomService = " << randSvc()->name() );
108 m_gaussDist =
new Rndm::Numbers(randSvc(), Rndm::Gauss(0.,1.));
109 m_flatDist =
new Rndm::Numbers(randSvc(), Rndm::Flat(0.,1.));
116 ATH_MSG_INFO(
"initialize() cylinder dimensions vector from jobOptions :" );
121 ATH_MSG_INFO(
"initialize() cylinder dimensions array for algorithm and ROOT tree :" );
127 ATH_MSG_WARNING(
"initialize() layer " << lay <<
"dimensions are smaller than those of layer " << lay-1 <<
" - constraining m_cylinders to " << lay-1 );
157 return StatusCode::SUCCESS;
200 ATH_MSG_WARNING(
"execute() No highest TrackingVolume / no VolumeBounds ... pretty useless!" );
201 return StatusCode::SUCCESS;
253 ATH_MSG_DEBUG(
"execute() Start Parameters : [phi,eta] = [ " << startParameters.
momentum().phi() <<
", " << startParameters.
eta() <<
" ]" );
274 const std::vector<const Trk::TrackStateOnSurface*>* collectedMaterial =
284 if (collectedMaterial && !collectedMaterial->empty()) {
290 for (
const auto* tsos : *collectedMaterial) {
291 newX0 += tsos->materialEffectsOnTrack() ? tsos->materialEffectsOnTrack()->thicknessInX0() : 0;
305 if (!lastParameters) {
306 ATH_MSG_WARNING(
"execute() Layer " << lay <<
": start parameters for cylinder NOT found - skip event !" );
309 ATH_MSG_VERBOSE(
"execute() Layer " << lay <<
": start parameters for cylinder found: " << *lastParameters );
313 newParameters =
nullptr;
318 m_onion ? *lastParameters : startParameters,
327 const std::vector<const Trk::TrackStateOnSurface*>* collectedMaterial =
329 m_onion ? *lastParameters : startParameters,
336 if (collectedMaterial && !collectedMaterial->empty()){
345 for (
const auto* tsos : *collectedMaterial) {
346 newX0 += tsos->materialEffectsOnTrack() ? tsos->materialEffectsOnTrack()->thicknessInX0() : 0;
354 if (!newParameters) {
360 m_onion ? *lastParameters : startParameters,
370 const std::vector<const Trk::TrackStateOnSurface*>* collectedMaterial =
372 m_onion ? *lastParameters : startParameters,
379 if (collectedMaterial && !collectedMaterial->empty()){
388 for (
const auto* tsos : *collectedMaterial) {
389 newX0 += tsos->materialEffectsOnTrack() ? tsos->materialEffectsOnTrack()->thicknessInX0() : 0;
398 if (!newParameters) {
399 ATH_MSG_WARNING(
"execute() Layer " << lay <<
" intersection did not work !" );
403 ATH_MSG_WARNING(
"execute() Layer " << lay <<
" intersection is outside the known world !" );
410 ATH_MSG_VERBOSE(
"execute() Track Parameters at layer " << lay <<
": " << *newParameters );
411 ATH_MSG_DEBUG(
"execute() Track Parameters at layer " << lay <<
": [r,z] = [ " << newPosition.perp() <<
", " << newPosition.z() );
438 lastParameters = newParameters;
453 ATH_MSG_DEBUG(
"execute() deleting DataVector parameters ... " );
455 return StatusCode::SUCCESS;
460 double x,
double y,
double z,
double phi,
double theta,
double alphaZ)
473 Amg::Vector3D surfaceYdirection(zAxis.cross(surfaceZdirection));
475 Amg::Vector3D surfaceXdirection(surfaceYdirection.cross(surfaceZdirection));
478 surfaceRotation.col(0) = surfaceXdirection;
479 surfaceRotation.col(1) = surfaceYdirection;
480 surfaceRotation.col(2) = surfaceZdirection;
483 return std::make_unique<Amg::Transform3D>(surfaceRotation, surfacePosition);
486 return std::make_unique<Amg::Transform3D>(nominalTransform*
Amg::AngleAxis3D(alphaZ,zAxis));
constexpr double mass[PARTICLEHYPOTHESES]
the array of masses