ATLAS Offline Software
TrackParticleCnv_p2.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 #include <cmath>
10 
12 {
14  m_elementLinkTrackCollectionConverter.persToTrans(&persObj->m_originalTrack,&trackLink,log);
15 
17  static_cast<Trk::TrackParticleOrigin> (persObj->bitsAndPieces[0]);
18 
19  ElementLink<VxContainer> vxCandidate;
21 
22  auto trkSummary = std::unique_ptr<Trk::TrackSummary>
24 
25  std::vector<const Trk::TrackParameters*> parameters;
27 
28  auto fq = std::make_unique<Trk::FitQuality>
29  (persObj->m_fitQuality_m_chiSquared,
30  persObj->m_fitQuality_m_numberDoF);
31 
32  //----- Track Info
34  Trk::ParticleHypothesis hypothesis = static_cast<Trk::ParticleHypothesis> (persObj->bitsAndPieces[2]);
35  std::bitset<Trk::TrackInfo::NumberOfTrackProperties> properties(persObj->bitsAndPieces[3]);
36 
37  std::bitset<Trk::TrackInfo::NumberOfTrackRecoInfo> patternRecognition(persObj->bitsAndPieces[4]);
38  // TODO - is there a better way to do the below, avoiding loop?
39  for (unsigned int i = 32;i<Trk::TrackInfo::NumberOfTrackRecoInfo;++i) {
40  unsigned int mask = (1<<(i-32));
41  patternRecognition[i] = (persObj->bitsAndPieces[5] & mask );
42  }
44  hypothesis,
45  properties,
46  patternRecognition);
47 
48  //----- Kinematics
49  const Amg::Vector3D& mom = parameters.back()->momentum();
51  P4PxPyPzE fmom (mom[Trk::px],
52  mom[Trk::py],
53  mom[Trk::pz],
54  std::sqrt ((long double)mom.mag2() + (long double)mpi*mpi));
55 
56 
57  *transObj = Rec::TrackParticle (trackLink,
58  origin,
59  vxCandidate,
60  std::move(trkSummary),
61  std::move(parameters),
62  std::move(fq),
63  info,
64  fmom);
65 
66  //----- Barcode
68  m_AthenaBarCodeCnv.persToTrans(&persObj->m_abc, &abc, log);
69  transObj->setAthenaBarCode (abc.getAthenaBarCode());
70 }
71 
72 
73 void TrackParticleCnv_p2::transToPers(const Rec::TrackParticle * transObj, Rec::TrackParticle_p2 * persObj, MsgStream &log){
74 
76  abc.setAthenaBarCode (transObj->getAthenaBarCode());
77  m_AthenaBarCodeCnv.transToPers(&abc, &persObj->m_abc, log);
78 
82  persObj->m_trackSummary = toPersistent( &m_trackSummaryCnv, transObj->trackSummary(), log );
83 
84  if (transObj->fitQuality()){
85  persObj->m_fitQuality_m_chiSquared=transObj->fitQuality()->chiSquared();
86  persObj->m_fitQuality_m_numberDoF =transObj->fitQuality()->numberDoF();
87  }
88 
89  const Trk::TrackInfo& info = transObj->info();
90 
91  persObj->bitsAndPieces[0] = static_cast<unsigned int>(transObj->particleOriginType());
92  persObj->bitsAndPieces[1] = static_cast<unsigned int>(info.trackFitter());
93  persObj->bitsAndPieces[2] = static_cast<unsigned int>(info.particleHypothesis());
94  persObj->bitsAndPieces[3] = info.properties().to_ulong();
95  if (info.patternRecognition().size()<32) {
96  persObj->bitsAndPieces[4] = info.patternRecognition().to_ulong();
97  } else {
98  // more than 32 bits so have to do it the hard way.
99  unsigned int i = 0;
100  unsigned int size=info.patternRecognition().size();
101  persObj->bitsAndPieces[4]=0;
102  persObj->bitsAndPieces[5]=0;
103  for (;i<32;++i) persObj->bitsAndPieces[4] |= ((info.patternRecognition()[i]) << i);
104  for (i=32;i<size;++i) persObj->bitsAndPieces[5] |= ((info.patternRecognition()[i]) << (i-32));
105  }
106 }
grepfile.info
info
Definition: grepfile.py:38
Trk::TrackInfo::NumberOfTrackRecoInfo
@ NumberOfTrackRecoInfo
Maximum number of enums.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:268
LArSamples::FitterData::fitter
const ShapeFitter * fitter
Definition: ShapeFitter.cxx:23
Trk::TrackParticleBase::particleOriginType
TrackParticleOrigin particleOriginType() const
Get the particle origin type.
Definition: TrackParticleBase.h:235
Trk::py
@ py
Definition: ParamDefs.h:66
Trk::TrackInfo
Contains information about the 'fitter' of this track.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:32
Rec::TrackParticle_p2::m_abc
AthenaBarCode_p1 m_abc
Definition: TrackParticle_p2.h:39
Trk::TrackParticleBase::reconstructedVertexLink
const ElementLink< VxContainer > & reconstructedVertexLink() const
Definition: TrackParticleBase.h:225
ElementLinkCnv_p3::persToTrans
void persToTrans(const PersLink_t &pers, Link_t &trans, MsgStream &log) const
Rec::TrackParticle_p2::m_trackSummary
TPObjRef m_trackSummary
Definition: TrackParticle_p2.h:24
TrackParticle.h
Rec::TrackParticle::setAthenaBarCode
void setAthenaBarCode(AthenaBarCode_t)
Definition: TrackParticle.cxx:221
AthenaBarCodeImpl
Definition: AthenaBarCodeImpl.h:37
Rec::TrackParticle_p2::bitsAndPieces
unsigned int bitsAndPieces[6]
Definition: TrackParticle_p2.h:28
TrackParticleCnv_p2::persToTrans
virtual void persToTrans(const Rec ::TrackParticle_p2 *persObj, Rec ::TrackParticle *transObj, MsgStream &log)
Definition: TrackParticleCnv_p2.cxx:11
TrackParticleCnv_p2::m_elementLinkVxContainerConverter
ElementLinkCnv_p3< ElementLink< VxContainer > > m_elementLinkVxContainerConverter
Definition: TrackParticleCnv_p2.h:43
TrackParticleBase.h
Trk::VertexType
VertexType
Definition: VertexType.h:25
Trk::TrackParticleBase::trackSummary
const TrackSummary * trackSummary() const
accessor function for TrackSummary.
Definition: TrackParticleBase.h:247
TrackParticleCnv_p2.h
Rec::TrackParticle::getAthenaBarCode
AthenaBarCode_t getAthenaBarCode() const
Definition: TrackParticle.cxx:217
AthenaBarCodeImpl::setAthenaBarCode
void setAthenaBarCode(AthenaBarCode_t id)
Definition: AthenaBarCodeImpl.cxx:211
Trk::pz
@ pz
global momentum (cartesian)
Definition: ParamDefs.h:67
TrackParticleCnv_p2::m_vecParametersBaseCnv
vecParametersBaseCnv_p1 m_vecParametersBaseCnv
Definition: TrackParticleCnv_p2.h:45
AthenaBarCodeCnv_p1::transToPers
virtual void transToPers(const AthenaBarCodeImpl *transObj, AthenaBarCode_p1 *persObj, MsgStream &) const override
Definition: AthenaBarCodeCnv_p1.h:36
TrackParticleCnv_p2::m_AthenaBarCodeCnv
AthenaBarCodeCnv_p1 m_AthenaBarCodeCnv
Definition: TrackParticleCnv_p2.h:46
Rec::TrackParticle_p2::m_elVxCandidate
ElementLinkInt_p3 m_elVxCandidate
Definition: TrackParticle_p2.h:21
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:460
AthenaBarCodeCnv_p1::persToTrans
virtual void persToTrans(const AthenaBarCode_p1 *persObj, AthenaBarCodeImpl *transObj, MsgStream &) const override
Definition: AthenaBarCodeCnv_p1.h:43
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
GeoPrimitives.h
ElementLinkCnv_p3::transToPers
void transToPers(const Link_t &trans, PersLink_t &pers, const SG::ThinningCache *cache, MsgStream &log) const
Rec::TrackParticle_p2::m_trackParameters
std::vector< TPObjRef > m_trackParameters
Definition: TrackParticle_p2.h:22
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Rec::TrackParticle_p2::m_fitQuality_m_chiSquared
float m_fitQuality_m_chiSquared
Definition: TrackParticle_p2.h:25
Trk::TrackInfo::TrackFitter
TrackFitter
enums to identify who created this track and what propertis does it have.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:39
lumiFormat.i
int i
Definition: lumiFormat.py:92
Trk::TrackParticleBase::trackElementLink
const ElementLink< TrackCollection > * trackElementLink() const
Return the ElementLink to the Track.
Definition: TrackParticleBase.h:230
Rec::TrackParticle_p2::m_originalTrack
ElementLinkInt_p3 m_originalTrack
Definition: TrackParticle_p2.h:20
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
Rec::TrackParticle_p2
Definition: TrackParticle_p2.h:16
Trk::TrackParticleBase::fitQuality
const FitQuality * fitQuality() const
accessor function for FitQuality.
Definition: TrackParticleBase.h:259
Trk::px
@ px
Definition: ParamDefs.h:65
TPPtrVectorCnv::persToTrans
virtual void persToTrans(const PERS *persVect, TRANS *transVect, MsgStream &log)
Converts vector of PERS::value_type objects to vector of TRANS::value_type objects,...
Definition: TPConverter.h:929
TPPolyVectorCnv::transToPers
virtual void transToPers(const TRANS *transVect, PERS *persVect, MsgStream &log)
Converts vector of TRANS::value_type objects to vector of PERS::value_type objects,...
Definition: TPConverter.h:1122
TrackParticleCnv_p2::transToPers
virtual void transToPers(const Rec ::TrackParticle *transObj, Rec ::TrackParticle_p2 *persObj, MsgStream &log)
Definition: TrackParticleCnv_p2.cxx:73
python.JsonUtils.properties
properties
Definition: JsonUtils.py:96
ITPConverterFor::toPersistent
TPObjRef toPersistent(CNV **cnv, const typename CNV::TransBase_t *transObj, MsgStream &log) const
Persistify an object and store the persistent represenation in the storage vector of the top-level pe...
Definition: TPConverter.h:119
Trk::ParticleMasses::mass
constexpr double mass[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:53
Trk::TrackParticleBase::trackParameters
const std::vector< const TrackParameters * > & trackParameters() const
Returns the track parameters.
Definition: TrackParticleBase.h:243
AthenaBarCodeImpl::getAthenaBarCode
AthenaBarCode_t getAthenaBarCode() const
Definition: AthenaBarCodeImpl.cxx:203
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Rec::TrackParticle
Definition: Reconstruction/Particle/Particle/TrackParticle.h:47
P4PxPyPzE
Definition: P4PxPyPzE.h:29
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
HepMC::mpi
int mpi(const GenEvent &e)
Definition: GenEvent.h:507
Trk::FitQuality::chiSquared
double chiSquared() const
returns the of the overall track fit
Definition: FitQuality.h:56
Trk::FitQuality::numberDoF
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
Definition: FitQuality.h:60
Rec::TrackParticle_p2::m_fitQuality_m_numberDoF
float m_fitQuality_m_numberDoF
Definition: TrackParticle_p2.h:26
TrackParticleCnv_p2::m_elementLinkTrackCollectionConverter
ElementLinkCnv_p3< ElementLink< TrackCollection > > m_elementLinkTrackCollectionConverter
Definition: TrackParticleCnv_p2.h:42
TrackParticleCnv_p2::m_trackSummaryCnv
TrackSummaryCnv_p2 * m_trackSummaryCnv
Definition: TrackParticleCnv_p2.h:41
ITPConverterFor::createTransFromPStore
CNV::Trans_t * createTransFromPStore(CNV **cnv, const TPObjRef &ref, MsgStream &log) const
Create transient representation of a persistent object, stored in the the top-level persistent object...
Definition: TPConverter.h:172
Trk::TrackParticleBase::info
const TrackInfo & info() const
returns the info of the track.
Definition: TrackParticleBase.h:276