ATLAS Offline Software
MuonCnv_p2.cxx
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // MuonCnv_p2.cxx
8 // Implementation file for class MuonCnv_p2
9 // Author: Ketevi A. Assamagan <ketevi@bnl.gov>
11 
12 
13 // STL includes
14 
15 // DataModelAthenaPool includes
18 
19 // EventCommonTPCnv includes
21 
22 // ParticleEventTPCnv includes
24 
25 // muonEvent includes
26 #include "muonEvent/Muon.h"
28 
29 // RecTPCnv includes
31 #include "RecTPCnv/MuonCnv_p2.h"
32 
36 
37 // pre-allocate converters
38 static const P4ImplIPtCotThPhiMCnv_p1 momCnv;
39 static const ParticleBaseCnv_p1 partBaseCnv;
40 static const TrackLinkCnv_t trackCnv;
41 static const ClusterLinkCnv_t clusterCnv;
42 static const segmentLinkCnv_t segmentCnv;
43 static const DepositInCaloCnv_p1 depositCnv;
44 
45 
46 void MuonCnv_p2::persToTrans( const Muon_p2* pers,
47  Analysis::Muon* trans,
48  MsgStream& msg ) const
49 {
50 // msg << MSG::DEBUG << "Loading Muon from persistent state..."
51 // << endmsg;
52 
53  // base classes
54  momCnv.persToTrans ( &pers->m_momentum, &trans->momentumBase(), msg );
55  partBaseCnv.persToTrans( &pers->m_particleBase, &trans->particleBase(), msg );
56 
57  // element links
59  trackCnv.persToTrans( &pers->m_inDetTrackParticle,
60  &inDetTrackLink,
61  msg );
62  trans->setInDetTrackLink (inDetTrackLink);
63 
64  ElementLink<Rec::TrackParticleContainer> muonSpectrometerTrackLink;
66  &muonSpectrometerTrackLink,
67  msg );
68  trans->setMuonSpectrometerTrackLink (muonSpectrometerTrackLink);
69 
70  ElementLink<Rec::TrackParticleContainer> muonExtrapTrackLink;
72  &muonExtrapTrackLink,
73  msg );
74  trans->setMuonExtrapTrackLink (muonExtrapTrackLink,
76 
77  ElementLink<Rec::TrackParticleContainer> innerExtrapTrackLink;
79  &innerExtrapTrackLink,
80  msg );
81  trans->setInnerExtrapTrackLink (innerExtrapTrackLink);
82 
85  &combinedTrackLink,
86  msg );
87  trans->setCombinedTrackLink (combinedTrackLink,
89 
91  clusterCnv.persToTrans( &pers->m_cluster,
92  &clusterLink,
93  msg );
94  trans->setClusterLink (clusterLink);
95 
97  segmentCnv.persToTrans( &pers->m_muonSegments,
98  &muonSegmentLink,
99  msg );
100  trans->setMuonSegmentLink (muonSegmentLink);
101 
102  // muon parameters
103  const std::vector<float>& params = pers->m_parameters;
108 
113 
121 
124 
125  // author
126  trans->set_author (static_cast<MuonParameters::Author>(pers->m_author));
127  trans->set_allAuthors (0);
128  trans->add_author ( trans->author() );
129 
130  // chi2 of the track matching
131  trans->set_matchChi2 (pers->m_matchChi2);
132 
133  // Low Pt muon stuff
136 
137  trans->set_bestMatch (pers->m_bestMatch);
138  trans->set_matchNumberDoF (pers->m_matchNumberDoF);
139 
140  // this muon is also found by the lowPT reconstruction algorithm
142 
143  // this muon is also found by the Calo Muon ID reconstruction algorithm
145 
148 
150 
151  MuonCaloEnergyContainer * caloEnergyContainer = 0;
152  if (m_storeGate->retrieve(caloEnergyContainer, m_muonCaloEnergyContainerName).isFailure() || caloEnergyContainer == NULL) {
153  msg << MSG::WARNING << "Cannot retrieve MuonCaloEnergyContainer" << m_muonCaloEnergyContainerName
154  << endmsg;
155  } else {
156  float deltaE = pers->m_caloEnergyLoss.m_energyDeposit;
157  float sigmaM = pers->m_caloEnergyLoss.m_energySigmaMinus;
158  float sigmaP = pers->m_caloEnergyLoss.m_energySigmaPlus;
159  float sigma = (sigmaM+sigmaP)/2.0;
160  unsigned short elossT = static_cast<unsigned short> (pers->m_caloEnergyLoss.m_energyLossType);
161  float caloLR = pers->m_caloEnergyLoss.m_caloLRLikelihood;
162  unsigned short tag = static_cast<unsigned short>(pers->m_caloEnergyLoss.m_fsrCandidateEnergy);
163  float fsrEnergy = pers->m_caloEnergyLoss.m_fsrCandidateEnergy;
164 
165  CaloEnergy * caloEnergy = new CaloEnergy(deltaE, sigma, sigmaM, sigmaP, elossT, caloLR, tag) ;
166  caloEnergy->set_fsrCandidateEnergy ( fsrEnergy );
167  std::vector<DepositInCalo> deposits;
168  deposits.reserve( pers->m_caloEnergyLoss.m_deposits.size() );
169  typedef std::vector<DepositInCalo_p1> Deposits_t;
170  for ( Deposits_t::const_iterator
171  itr = pers->m_caloEnergyLoss.m_deposits.begin(),
172  iEnd = pers->m_caloEnergyLoss.m_deposits.end();
173  itr != iEnd;
174  ++itr ) {
175  deposits.push_back( DepositInCalo() );
176  depositCnv.persToTrans( &*itr, &deposits.back(), msg );
177  }
178  caloEnergy->set_deposits( deposits );
179  caloEnergyContainer->push_back( caloEnergy );
181  caloEnergyLink.toContainedElement(*caloEnergyContainer, caloEnergy);
182  trans->setCaloEnergyLink (caloEnergyLink);
183  }
184 
185 // msg << MSG::DEBUG << "Loaded Muon from persistent state [OK]"
186 // << endmsg;
187 
188  return;
189 }
190 
192  Muon_p2* pers,
193  MsgStream& msg ) const
194 {
195  msg << MSG::ERROR << "Analysis::Muon at " << trans << " Persistent Muon_p2 at " << pers << " Cannot write to Muon_p2" << endmsg;
196  throw std::runtime_error("Writing to Muon_p2 is not supported - MuonCnv_p2::transToPers(...)");
197  return;
198 
199 }
200 
ElementLinkCnv_p1.h
This file contains the class definition for the ElementLinkCnv_p1 class.
Muon_p2::m_inDetTrackParticle
ElementLinkInt_p1 m_inDetTrackParticle
link to associated TrackParticle (Inner Detector)
Definition: Muon_p2.h:92
Muon_p2::m_matchChi2
double m_matchChi2
Chi2 of the track matching.
Definition: Muon_p2.h:84
MuonCnv_p2::m_muonCaloEnergyContainerName
std::string m_muonCaloEnergyContainerName
Definition: MuonCnv_p2.h:65
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
DepositInCaloCnv_p1
Definition: DepositInCaloCnv_p1.h:28
MuonParameters::etcone20
@ etcone20
Definition: MuonParamDefs.h:114
Muon_p2::m_innerExtrapolatedTrackParticle
ElementLinkInt_p1 m_innerExtrapolatedTrackParticle
link to associated TrackParticle (Inner extrapolated)
Definition: Muon_p2.h:104
Analysis::Muon::set_isAlsoFoundByLowPt
void set_isAlsoFoundByLowPt(const bool isAlsoSeenByLowPt)
set is also seen by low Pt reconstruction
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:189
CaloEnergy
class extending the basic Trk::EnergyLoss to describe the measured or parameterised muon energy loss ...
Definition: CaloEnergy.h:28
Analysis::Muon::setCaloEnergyLink
void setCaloEnergyLink(const ElementLink< MuonCaloEnergyContainer > &l)
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:411
MuonParameters::nucone20
@ nucone20
Definition: MuonParamDefs.h:118
MuonCnv_p2::transToPers
virtual void transToPers(const Analysis::Muon *transObj, Muon_p2 *persObj, MsgStream &msg) const override
Method creating the persistent representation Muon_p1 from its transient representation Analysis::Muo...
Definition: MuonCnv_p2.cxx:191
Muon_p2::m_author
unsigned int m_author
author
Definition: Muon_p2.h:72
Analysis::Muon::set_bestMatch
void set_bestMatch(bool best)
set the best match
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:600
MuonCnv_p2::persToTrans
virtual void persToTrans(const Muon_p2 *persObj, Analysis::Muon *transObj, MsgStream &msg) const override
Method creating the transient representation of Analysis::Muon from its persistent representation Muo...
Definition: MuonCnv_p2.cxx:46
Muon_p2::m_cluster
ElementLinkInt_p1 m_cluster
link to CaloCluster
Definition: Muon_p2.h:110
Analysis::Muon::setMuonSpectrometerTrackLink
void setMuonSpectrometerTrackLink(const ElementLink< Rec::TrackParticleContainer > &l)
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:399
MuonParameters::t0
@ t0
MuGirl parameter.
Definition: MuonParamDefs.h:143
Muon_p2::m_matchNumberDoF
int m_matchNumberDoF
Definition: Muon_p2.h:116
Muon_p2::m_muonSpectrometerTrackParticle
ElementLinkInt_p1 m_muonSpectrometerTrackParticle
link to associated TrackParticle (Muon Spectrometer)
Definition: Muon_p2.h:98
Analysis::Muon::set_allAuthors
void set_allAuthors(const uint16_t allAuthors)
set all the authors of this Muon the authors are 16-bit word, 1-bit reserved for each muon Algorithm ...
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:142
MuonCaloEnergyContainer.h
ElementLinkVectorCnv_p1
Definition: ElementLinkVectorCnv_p1.h:28
Analysis::Muon::setMuonExtrapTrackLink
void setMuonExtrapTrackLink(const ElementLink< Rec::TrackParticleContainer > &l, bool isValid)
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:361
Analysis::Muon::setInDetTrackLink
void setInDetTrackLink(const ElementLink< Rec::TrackParticleContainer > &l)
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:355
MuonParameters::innAngle
@ innAngle
common MuGirl and MuTag parameters
Definition: MuonParamDefs.h:148
Muon_p2::m_momentum
P4IPtCotThPhiM_p1 m_momentum
the 4-mom part
Definition: Muon_p2.h:64
Muon_p2
Definition: Muon_p2.h:38
ElementLinkVectorCnv_p1.h
This file contains the class definition for the ElementLinkVectorCnv_p1 class. NOTE: it should be inc...
MuonCnv_p2::m_storeGate
StoreGateSvc_t m_storeGate
Definition: MuonCnv_p2.h:64
ElementLinkVectorCnv_p1::persToTrans
void persToTrans(const PersLinkVect_t &pers, LinkVect_t &trans, MsgStream &log) const
CaloEnergy_p1::m_caloLRLikelihood
float m_caloLRLikelihood
Definition: CaloEnergy_p1.h:63
Analysis::Muon::set_isAlsoFoundByCaloMuonId
void set_isAlsoFoundByCaloMuonId(const bool isAlsoSeenByCaloMuonId)
set is also seen by calo muon Id reconstruction
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:194
Muon_p2::m_caloEnergyLoss
CaloEnergy_p1 m_caloEnergyLoss
energy loss in calorimeter
Definition: Muon_p2.h:122
Analysis::Muon::setInnerExtrapTrackLink
void setInnerExtrapTrackLink(const ElementLink< Rec::TrackParticleContainer > &l)
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:374
MuonParameters::segmentDeltaPhi
@ segmentDeltaPhi
Definition: MuonParamDefs.h:140
MuonParameters::annBarrel
@ annBarrel
Definition: MuonParamDefs.h:145
Analysis::Muon::set_matchNumberDoF
void set_matchNumberDoF(int x)
set the chi2 parameters - number of degrees of freedom
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:595
Muon_p2::m_particleBase
ParticleBase_p1 m_particleBase
the ParticleBase part
Definition: Muon_p2.h:67
Muon_p2::m_combinedMuonTrackParticle
ElementLinkInt_p1 m_combinedMuonTrackParticle
links to associated TrackParticle (Combined muon)
Definition: Muon_p2.h:107
Muon_p2::m_isAlsoFoundByLowPt
bool m_isAlsoFoundByLowPt
Definition: Muon_p2.h:118
Analysis::Muon::set_matchChi2
void set_matchChi2(float x)
set the chi2 parameters - matchChi2
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:593
Muon_p2::m_caloMuonAlsoFoundByMuonReco
unsigned short m_caloMuonAlsoFoundByMuonReco
Definition: Muon_p2.h:124
MuonParameters::etcone30
@ etcone30
Definition: MuonParamDefs.h:115
ParticleBaseCnv_p1::persToTrans
virtual void persToTrans(const ParticleBase_p1 *persObj, ParticleBase *transObj, MsgStream &msg) const final
Method creating the transient representation of ParticleBase from its persistent representation Parti...
Definition: ParticleBaseCnv_p1.cxx:49
ClusterLinkCnv_t
ElementLinkCnv_p1< ElementLink< CaloClusterContainer > > ClusterLinkCnv_t
Definition: MuonCnv_p2.cxx:34
CaloEnergy_p1::m_energySigmaPlus
float m_energySigmaPlus
Definition: CaloEnergy_p1.h:61
Analysis::Muon::setMuonSegmentLink
void setMuonSegmentLink(const ElementLinkVector< Trk::SegmentCollection > &l)
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:346
Analysis::Muon::add_author
bool add_author(MuonParameters::Author author)
the add_author method returns a bool:
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:368
MuonParameters::Author
Author
do not change the order of these enums.
Definition: MuonParamDefs.h:39
Analysis::Muon::set_author
void set_author(MuonParameters::Author author)
set the primary Author : the primary author is the algorithm that first created this Muon
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:133
Analysis::Muon::setCombinedTrackLink
void setCombinedTrackLink(const ElementLink< Rec::TrackParticleContainer > &l, bool isValid)
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:380
MuonParameters::midAngle
@ midAngle
Definition: MuonParamDefs.h:149
Muon_p2::m_associatedEtaDigits
std::vector< int > m_associatedEtaDigits
Low Pt muon stuff.
Definition: Muon_p2.h:87
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
Muon_p2::m_muonExtrapolatedTrackParticle
ElementLinkInt_p1 m_muonExtrapolatedTrackParticle
link to associated TrackParticle (Muon extrapolated)
Definition: Muon_p2.h:101
CaloEnergy_p1::m_energyDeposit
float m_energyDeposit
Definition: CaloEnergy_p1.h:59
MuonParameters::segmentDeltaEta
@ segmentDeltaEta
MuTag parameters.
Definition: MuonParamDefs.h:139
ParticleBaseCnv_p1.h
Analysis::Muon
The ATLAS Muon object - see doxygen, physics workbookd and the Muon Combined Performance WG's pages f...
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:48
CaloEnergy_p1::m_fsrCandidateEnergy
float m_fsrCandidateEnergy
Definition: CaloEnergy_p1.h:65
Analysis::Muon::setClusterLink
void setClusterLink(const ElementLink< CaloClusterContainer > &l)
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:405
MuonCnv_p2.h
MuonCaloEnergyContainer
Data object for a StoreGate container holding a vector of CaloEnergy, the detailed energy loss descri...
Definition: MuonCaloEnergyContainer.h:19
Muon_p2::m_isAlsoFoundByCaloMuonId
bool m_isAlsoFoundByCaloMuonId
Definition: Muon_p2.h:119
ParticleImpl::momentumBase
const momentum_type & momentumBase() const
access to underlying base type (I4Momentum-like)
Definition: ParticleImpl.h:393
MuonParameters::nucone10
@ nucone10
Definition: MuonParamDefs.h:117
Muon_p2::m_bestMatch
bool m_bestMatch
Definition: Muon_p2.h:115
ElementLinkCnv_p1
Definition: ElementLinkCnv_p1.h:27
ElementLinkVector
ElementLinkVector implementation for standalone ROOT.
Definition: AthLinks/ElementLinkVector.h:27
DepositInCaloCnv_p1.h
DepositInCalo
class describing the measured energy loss associated to muons on the detector level,...
Definition: DepositInCalo.h:23
ParticleImpl::particleBase
const particle_type & particleBase() const
access to underlying base type (IParticle-like)
Definition: ParticleImpl.h:403
MuonParameters::nucone40
@ nucone40
Definition: MuonParamDefs.h:120
ElementLinkCnv_p1::persToTrans
void persToTrans(const PersLink_t &pers, Link_t &trans, MsgStream &log) const
Muon_p2::m_hasCombinedMuonTrackParticle
bool m_hasCombinedMuonTrackParticle
Definition: Muon_p2.h:78
Muon_p2::m_hasMuonExtrapolatedTrackParticle
bool m_hasMuonExtrapolatedTrackParticle
Definition: Muon_p2.h:77
MuonParameters::nucone30
@ nucone30
Definition: MuonParamDefs.h:119
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
P4ImplIPtCotThPhiMCnv_p1.h
DepositInCaloCnv_p1::persToTrans
virtual void persToTrans(const DepositInCalo_p1 *persObj, DepositInCalo *transObj, MsgStream &msg) const override
Method creating the transient representation of DepositInCalo from its persistent representation Depo...
Definition: DepositInCaloCnv_p1.cxx:25
CaloEnergy_p1::m_energyLossType
int m_energyLossType
Definition: CaloEnergy_p1.h:62
Analysis::Muon::set_parameter
void set_parameter(MuonParameters::ParamDef index, double value, bool overwrite=false)
set a parameter in the MuonParamDefs.h
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:888
P4ImplIPtCotThPhiMCnv_p1::persToTrans
virtual void persToTrans(const P4ImplIPtCotThPhiM_p1 *persObj, P4ImplIPtCotThPhiM *transObj, MsgStream &msg) const override
Method creating the transient representation of P4ImplIPtCotThPhiM from its persistent representation...
Definition: P4ImplIPtCotThPhiMCnv_p1.cxx:26
ParticleBaseCnv_p1
Definition: ParticleBaseCnv_p1.h:30
CaloEnergy::set_fsrCandidateEnergy
void set_fsrCandidateEnergy(const float fs)
FSR Candidate Energy.
Definition: CaloEnergy.h:118
Muon_p2::m_muonSegments
ElementLinkIntVector_p1 m_muonSegments
link to the Trk::Segment
Definition: Muon_p2.h:95
P4ImplIPtCotThPhiMCnv_p1
Definition: P4ImplIPtCotThPhiMCnv_p1.h:38
Muon_p2::m_parameters
std::vector< float > m_parameters
muon parameters
Definition: Muon_p2.h:113
Analysis::Muon::set_numberOfAssociatedEtaDigits
void set_numberOfAssociatedEtaDigits(int nMDT, int nCSC, int nRPC, int nTGC)
Set the LowPt stuff.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:840
MuonParameters::annEndCap
@ annEndCap
Definition: MuonParamDefs.h:146
MuonParameters::etcone10
@ etcone10
isolation enums - common parameters
Definition: MuonParamDefs.h:113
Muon.h
Analysis::Muon::set_numberOfAssociatedPhiDigits
void set_numberOfAssociatedPhiDigits(int nMDT, int nCSC, int nRPC, int nTGC)
Set the LowPt - Associated Phi Digits.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:848
CaloEnergy::set_deposits
void set_deposits(const std::vector< DepositInCalo > &deposits)
set the detailed energy deposits in the calorimeter layers
Definition: CaloEnergy.h:111
CaloEnergy_p1::m_deposits
std::vector< DepositInCalo_p1 > m_deposits
Definition: CaloEnergy_p1.h:66
MuonParameters::etcone40
@ etcone40
Definition: MuonParamDefs.h:116
CaloEnergy_p1::m_energySigmaMinus
float m_energySigmaMinus
Definition: CaloEnergy_p1.h:60
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
PowhegControl_ttFCNC_NLO.params
params
Definition: PowhegControl_ttFCNC_NLO.py:226
MuonParameters::segmentChi2OverDoF
@ segmentChi2OverDoF
Definition: MuonParamDefs.h:141
MuonParameters::beta
@ beta
Definition: MuonParamDefs.h:144
segmentLinkCnv_t
ElementLinkVectorCnv_p1< ElementLinkVector< Trk::SegmentCollection > > segmentLinkCnv_t
Definition: MuonCnv_p2.cxx:35
Muon_p2::m_associatedPhiDigits
std::vector< int > m_associatedPhiDigits
Definition: Muon_p2.h:88
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
Analysis::Muon::set_caloMuonAlsoFoundByMuonReco
void set_caloMuonAlsoFoundByMuonReco(const unsigned short isAlsoFoundByMuonReco)
set if this calo muon is also reconstructed by one of the standard muon recosntruction algorithms tha...
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:204
TrackLinkCnv_t
ElementLinkCnv_p1< ElementLink< Rec::TrackParticleContainer > > TrackLinkCnv_t
Definition: MuonCnv_p2.cxx:33
Analysis::Muon::author
MuonParameters::Author author() const
return the primary author of this Muon - the algorithm that is most likely to reconstruct prompt muon...
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:111