ATLAS Offline Software
RandomProtoTrackCreator.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3  */
6 #include "Acts/Surfaces/PerigeeSurface.hpp"
7 
8 
10  const std::string& name,
11  const IInterface* parent): base_class(type,name,parent){
12 }
14  const xAOD::PixelClusterContainer & pixelContainer,
15  const xAOD::StripClusterContainer & stripContainer,
16  std::vector<ActsTrk::ProtoTrack> & foundProtoTracks ) const {
17  // Sample N random hits for example
18  std::vector<ActsTrk::ATLASUncalibSourceLink> dummyPoints;
19  size_t nPix = 1;
20  size_t nStrip = 7;
21  for (size_t k = 0; k < nPix; ++k){
22  auto index = rand() % pixelContainer.size();
23  dummyPoints.push_back(makeATLASUncalibSourceLink(&pixelContainer, index, ctx));
24  }
25 
26 
27  for (size_t k = 0; k < nStrip; ++k){
28  auto index = rand() % stripContainer.size();
29  dummyPoints.push_back(makeATLASUncalibSourceLink(&stripContainer, index, ctx));
30  }
31 
32  ATH_MSG_DEBUG("Made a proto-track with " <<dummyPoints.size()<<" random clusters");
33 
34 
35  // Make the intput perigee
36  auto inputPerigee = makeDummyParams(dummyPoints[0]);
37 
38  // and add to the list (will only make one prototrack per event for now)
39  foundProtoTracks.push_back({dummyPoints,std::move(inputPerigee)});
40 
41  return StatusCode::SUCCESS;
42 }
43 
46  return dynamic_cast <const xAOD::PixelCluster*>(theMeas)->globalPosition().cast<double>();
47  } else if (theMeas->type() == xAOD::UncalibMeasType::StripClusterType){
48  return dynamic_cast<const xAOD::StripCluster*>(theMeas)->globalPosition().cast<double>();
49  }
50  return Amg::Vector3D::Zero();
51 }
52 
53 
54 std::unique_ptr<Acts::BoundTrackParameters> ActsTrk::RandomProtoTrackCreator::makeDummyParams (const ActsTrk::ATLASUncalibSourceLink & firstPRD) const{
55 
56  const xAOD::UncalibratedMeasurement* measurement = &getUncalibratedMeasurement(firstPRD);
57  using namespace Acts::UnitLiterals;
58  std::shared_ptr<const Acts::Surface> actsSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(
59  Acts::Vector3(0., 0., 0.));
60  Acts::BoundVector params;
61 
62  auto globalPos = getMeasurementPos(measurement);
63 
64  // No, this is not a physically correct parameter estimate!
65  // We just want a placeholder to point in roughly the expected direction...
66  // A real track finder would do something more reasonable here.
67  params << 0., 0.,
68  globalPos.phi(), globalPos.theta(),
69  1. / (1000000000. * 1_MeV), 0.;
70 
71 
72  // Covariance - let's be honest and say we have no clue ;-)
73  Acts::BoundSquareMatrix cov = Acts::BoundSquareMatrix::Identity();
74  cov *= 100000;
75 
76  // some ACTS paperwork
79  Acts::PdgParticle absPdg = Acts::makeAbsolutePdgParticle(Acts::ePionPlus);
80  Acts::ParticleHypothesis actsHypothesis{
81  absPdg, mass, Acts::AnyCharge{1.0f}};
82 
83  return std::make_unique<Acts::BoundTrackParameters>(actsSurface, params,
84  cov, actsHypothesis);
85 
86 }
index
Definition: index.py:1
xAOD::UncalibMeasType::StripClusterType
@ StripClusterType
python.SystemOfUnits.MeV
int MeV
Definition: SystemOfUnits.py:154
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
ActsTrk::RandomProtoTrackCreator::RandomProtoTrackCreator
RandomProtoTrackCreator(const std::string &type, const std::string &name, const IInterface *parent)
Definition: RandomProtoTrackCreator.cxx:9
xAOD::UncalibratedMeasurement_v1
Definition: UncalibratedMeasurement_v1.h:13
ActsTrk::makeATLASUncalibSourceLink
ATLASUncalibSourceLink makeATLASUncalibSourceLink(const xAOD::UncalibratedMeasurementContainer *container, std::size_t index, [[maybe_unused]] const EventContext &ctx)
Definition: ATLASSourceLink.h:31
LArG4FSStartPointFilter.rand
rand
Definition: LArG4FSStartPointFilter.py:80
xAOD::UncalibratedMeasurement_v1::type
virtual xAOD::UncalibMeasType type() const =0
Returns the type of the measurement type as a simple enumeration.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
test_pyathena.parent
parent
Definition: test_pyathena.py:15
xAOD::StripCluster_v1
Definition: StripCluster_v1.h:17
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
ParticleHypothesis.h
ActsTrk::RandomProtoTrackCreator::getMeasurementPos
Amg::Vector3D getMeasurementPos(const xAOD::UncalibratedMeasurement *theMeas) const
get the global position for an uncalibrated measurement - delegates to the specialisation
Definition: RandomProtoTrackCreator.cxx:44
Trk::ParticleMasses::mass
constexpr double mass[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:53
ActsTrk::RandomProtoTrackCreator::makeDummyParams
std::unique_ptr< Acts::BoundTrackParameters > makeDummyParams(const ActsTrk::ATLASUncalibSourceLink &firstPRD) const
creates a random, dummy set of parameters Warning: This is not a real parameter estimate.
Definition: RandomProtoTrackCreator.cxx:54
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ActsTrk::getUncalibratedMeasurement
const xAOD::UncalibratedMeasurement & getUncalibratedMeasurement(const ATLASUncalibSourceLink &source_link)
Definition: ATLASSourceLink.h:27
xAOD::TauJetParameters::nStrip
@ nStrip
Get number of strips.
Definition: TauDefs.h:204
xAOD::ParticleHypothesis
ParticleHypothesis
Definition: TrackingPrimitives.h:192
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
ActsTrk::RandomProtoTrackCreator::findProtoTracks
virtual StatusCode findProtoTracks(const EventContext &ctx, const xAOD::PixelClusterContainer &pixelContainer, const xAOD::StripClusterContainer &stripContainer, std::vector< ActsTrk::ProtoTrack > &foundProtoTracks) const override final
EF-style pattern recognition to create prototracks.
Definition: RandomProtoTrackCreator.cxx:13
xAOD::PixelCluster_v1
Definition: PixelCluster_v1.h:17
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
RandomProtoTrackCreator.h
PowhegControl_ttFCNC_NLO.params
params
Definition: PowhegControl_ttFCNC_NLO.py:226
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
xAOD::UncalibMeasType::PixelClusterType
@ PixelClusterType
fitman.k
k
Definition: fitman.py:528
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32