ATLAS Offline Software
Loading...
Searching...
No Matches
MuonCnv_p1.cxx
Go to the documentation of this file.
1
2
3/*
4 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
5*/
6
7// MuonCnv_p1.cxx
8// Implementation file for class MuonCnv_p1
9// Author: K.Cranmer<cranmer@cern.ch>
10// Author: S.Binet<binet@cern.ch>
12
13
14// STL includes
15
16// 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_p1.h"
32
35
36// pre-allocate converters
42
43
45 Analysis::Muon* trans,
46 MsgStream& msg ) const
47{
48// msg << MSG::DEBUG << "Loading Muon from persistent state..."
49// << endmsg;
50
51 // base classes
52 momCnv.persToTrans ( &pers->m_momentum, &trans->momentumBase(), msg );
53 partBaseCnv.persToTrans( &pers->m_particleBase, &trans->particleBase(), msg );
54
55 // element links
57 trackCnv.persToTrans( &pers->m_inDetTrackParticle,
58 &inDetTrackLink,
59 msg );
60 trans->setInDetTrackLink (inDetTrackLink);
61
62 ElementLink<Rec::TrackParticleContainer> muonSpectrometerTrackLink;
63 trackCnv.persToTrans( &pers->m_muonSpectrometerTrackParticle,
64 &muonSpectrometerTrackLink,
65 msg );
66 trans->setMuonSpectrometerTrackLink (muonSpectrometerTrackLink);
67
69 trackCnv.persToTrans( &pers->m_muonExtrapolatedTrackParticle,
70 &muonExtrapTrackLink,
71 msg );
72 trans->setMuonExtrapTrackLink (muonExtrapTrackLink,
74
77 &innerExtrapTrackLink,
78 msg );
79 trans->setInnerExtrapTrackLink (innerExtrapTrackLink);
80
82 trackCnv.persToTrans( &pers->m_combinedMuonTrackParticle,
83 &combinedTrackLink,
84 msg );
85 trans->setCombinedTrackLink (combinedTrackLink,
87
89 clusterCnv.persToTrans( &pers->m_cluster,
90 &clusterLink,
91 msg );
92 trans->setClusterLink (clusterLink);
93
94
95 // muon parameters
96 const std::vector<float>& params = pers->m_parameters;
97 trans->set_parameter(MuonParameters::etcone10, params[ 0] );
98 trans->set_parameter(MuonParameters::etcone20, params[ 1] );
99 trans->set_parameter(MuonParameters::etcone30, params[ 2] );
100 trans->set_parameter(MuonParameters::etcone40, params[ 3] );
101
102 trans->set_parameter(MuonParameters::nucone10, params[ 8] );
103 trans->set_parameter(MuonParameters::nucone20, params[ 9] );
104 trans->set_parameter(MuonParameters::nucone30, params[10] );
105 trans->set_parameter(MuonParameters::nucone40, params[11] );
106
110 trans->set_parameter(MuonParameters::annBarrel, params[19] );
111 trans->set_parameter(MuonParameters::annEndCap, params[20] );
112 trans->set_parameter(MuonParameters::innAngle, params[21] );
113 trans->set_parameter(MuonParameters::midAngle, params[22] );
114
115 // author
116 trans->set_author (static_cast<MuonParameters::Author>(pers->m_author));
117 trans->set_allAuthors (0);
118 trans->add_author ( trans->author() );
119
120 // chi2 of the track matching
121 trans->set_matchChi2 (pers->m_matchChi2);
122
123 // Low Pt muon stuff
126
127 trans->set_bestMatch (pers->m_bestMatch);
129
130 // this muon is also found by the lowPT reconstruction algorithm
132
133 // this muon is also found by the Calo Muon ID reconstruction algorithm
135
137
139 MuonCaloEnergyContainer * caloEnergyContainer = 0;
140 if (m_storeGate->retrieve(caloEnergyContainer, m_muonCaloEnergyContainerName).isFailure() || caloEnergyContainer == NULL) {
141 msg << MSG::WARNING << "Cannot retrieve MuonCaloEnergyContainer" << m_muonCaloEnergyContainerName
142 << endmsg;
143 } else {
144 float deltaE = pers->m_caloEnergyLoss.m_energyDeposit;
145 float sigmaM = pers->m_caloEnergyLoss.m_energySigmaMinus;
146 float sigmaP = pers->m_caloEnergyLoss.m_energySigmaPlus;
147 float sigma = (sigmaM+sigmaP)/2.0;
148 unsigned short elossT = static_cast<unsigned short> (pers->m_caloEnergyLoss.m_energyLossType);
149 float caloLR = pers->m_caloEnergyLoss.m_caloLRLikelihood;
150 unsigned short tag = static_cast<unsigned short>(pers->m_caloEnergyLoss.m_fsrCandidateEnergy);
151 float fsrEnergy = pers->m_caloEnergyLoss.m_fsrCandidateEnergy;
152
153 CaloEnergy * caloEnergy = new CaloEnergy(deltaE, sigma, sigmaM, sigmaP, elossT, caloLR, tag) ;
154 caloEnergy->set_fsrCandidateEnergy ( fsrEnergy );
155 std::vector<DepositInCalo> deposits;
156 deposits.reserve( pers->m_caloEnergyLoss.m_deposits.size() );
157 typedef std::vector<DepositInCalo_p1> Deposits_t;
158 for ( Deposits_t::const_iterator
159 itr = pers->m_caloEnergyLoss.m_deposits.begin(),
160 iEnd = pers->m_caloEnergyLoss.m_deposits.end();
161 itr != iEnd;
162 ++itr ) {
163 deposits.push_back( DepositInCalo() );
164 depositCnv.persToTrans( &*itr, &deposits.back(), msg );
165 }
166 caloEnergy->set_deposits( deposits );
167 caloEnergyContainer->push_back( caloEnergy );
169 caloEnergyLink.toContainedElement(*caloEnergyContainer, caloEnergy);
170 trans->setCaloEnergyLink (caloEnergyLink);
171 }
172
173// msg << MSG::DEBUG << "Loaded Muon from persistent state [OK]"
174// << endmsg;
175
176 return;
177}
178
180 Muon_p1* pers,
181 MsgStream& msg ) const
182{
183 msg << MSG::ERROR << "Analysis::Muon at " << trans << " Persistent Muon_p1 at " << pers << " Cannot write to Muon_p1" << endmsg;
184 throw std::runtime_error("Writing to Muon_p1 is not supported - MuonCnv_p1::transToPers(...)");
185 return;
186}
#define endmsg
static const DepositInCaloCnv_p1 depositCnv
This file contains the class definition for the ElementLinkCnv_p1 class.
static const P4ImplPxPyPzECnv_p1 momCnv
Definition JetCnv_p1.cxx:30
static const TrackLinkCnv_t trackCnv
ElementLinkCnv_p1< ElementLink< CaloClusterContainer > > ClusterLinkCnv_t
ElementLinkCnv_p1< ElementLink< Rec::TrackParticleContainer > > TrackLinkCnv_t
static const ClusterLinkCnv_t clusterCnv
static const ParticleBaseCnv_p1 partBaseCnv
The ATLAS Muon object - see doxygen, physics workbookd and the Muon Combined Performance WG's pages f...
MuonParameters::Author author() const
return the primary author of this Muon - the algorithm that is most likely to reconstruct prompt muon...
void set_matchNumberDoF(int x)
set the chi2 parameters - number of degrees of freedom
void set_isAlsoFoundByCaloMuonId(const bool isAlsoSeenByCaloMuonId)
set is also seen by calo muon Id reconstruction
void setMuonSpectrometerTrackLink(const ElementLink< Rec::TrackParticleContainer > &l)
void set_parameter(MuonParameters::ParamDef index, double value, bool overwrite=false)
set a parameter in the MuonParamDefs.h
Definition Muon.cxx:888
void setCaloEnergyLink(const ElementLink< MuonCaloEnergyContainer > &l)
void set_isAlsoFoundByLowPt(const bool isAlsoSeenByLowPt)
set is also seen by low Pt reconstruction
bool add_author(MuonParameters::Author author)
the add_author method returns a bool:
Definition Muon.cxx:368
void set_numberOfAssociatedPhiDigits(int nMDT, int nCSC, int nRPC, int nTGC)
Set the LowPt - Associated Phi Digits.
Definition Muon.cxx:848
void setInnerExtrapTrackLink(const ElementLink< Rec::TrackParticleContainer > &l)
void setClusterLink(const ElementLink< CaloClusterContainer > &l)
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 ...
void set_numberOfAssociatedEtaDigits(int nMDT, int nCSC, int nRPC, int nTGC)
Set the LowPt stuff.
Definition Muon.cxx:840
void setMuonExtrapTrackLink(const ElementLink< Rec::TrackParticleContainer > &l, bool isValid)
void set_author(MuonParameters::Author author)
set the primary Author : the primary author is the algorithm that first created this Muon
void setCombinedTrackLink(const ElementLink< Rec::TrackParticleContainer > &l, bool isValid)
void setInDetTrackLink(const ElementLink< Rec::TrackParticleContainer > &l)
void set_matchChi2(float x)
set the chi2 parameters - matchChi2
std::vector< DepositInCalo_p1 > m_deposits
float m_energySigmaPlus
float m_caloLRLikelihood
float m_energySigmaMinus
float m_fsrCandidateEnergy
float m_energyDeposit
class extending the basic Trk::EnergyLoss to describe the measured or parameterised muon energy loss ...
Definition CaloEnergy.h:28
void set_deposits(const std::vector< DepositInCalo > &deposits)
set the detailed energy deposits in the calorimeter layers
Definition CaloEnergy.h:111
void set_fsrCandidateEnergy(const float fs)
FSR Candidate Energy.
Definition CaloEnergy.h:118
value_type push_back(value_type pElem)
Add an element to the end of the collection.
class describing the measured energy loss associated to muons on the detector level,...
Data object for a StoreGate container holding a vector of CaloEnergy, the detailed energy loss descri...
StoreGateSvc_t m_storeGate
Definition MuonCnv_p1.h:65
virtual void persToTrans(const Muon_p1 *persObj, Analysis::Muon *transObj, MsgStream &msg) const override
Method creating the transient representation of Analysis::Muon from its persistent representation Muo...
virtual void transToPers(const Analysis::Muon *transObj, Muon_p1 *persObj, MsgStream &msg) const override
Method creating the persistent representation Muon_p1 from its transient representation Analysis::Muo...
std::string m_muonCaloEnergyContainerName
Definition MuonCnv_p1.h:66
bool m_isAlsoFoundByCaloMuonId
Definition Muon_p1.h:120
int m_matchNumberDoF
Definition Muon_p1.h:117
ElementLinkInt_p1 m_inDetTrackParticle
link to associated TrackParticle (Inner Detector)
Definition Muon_p1.h:96
ParticleBase_p1 m_particleBase
the ParticleBase part
Definition Muon_p1.h:69
std::vector< int > m_associatedEtaDigits
Low Pt muon stuff.
Definition Muon_p1.h:91
bool m_hasCombinedMuonTrackParticle
Definition Muon_p1.h:82
ElementLinkInt_p1 m_combinedMuonTrackParticle
links to associated TrackParticle (Combined muon)
Definition Muon_p1.h:108
std::vector< float > m_parameters
muon parameters
Definition Muon_p1.h:114
ElementLinkInt_p1 m_cluster
link to CaloCluster
Definition Muon_p1.h:111
ElementLinkInt_p1 m_muonSpectrometerTrackParticle
link to associated TrackParticle (Muon Spectrometer)
Definition Muon_p1.h:99
bool m_bestMatch
Definition Muon_p1.h:116
double m_matchChi2
Chi2 of the track matching.
Definition Muon_p1.h:88
bool m_hasMuonExtrapolatedTrackParticle
Definition Muon_p1.h:80
unsigned int m_author
author
Definition Muon_p1.h:74
P4IPtCotThPhiM_p1 m_momentum
the 4-mom part
Definition Muon_p1.h:66
CaloEnergy_p1 m_caloEnergyLoss
energy loss in calorimeter
Definition Muon_p1.h:123
std::vector< int > m_associatedPhiDigits
Definition Muon_p1.h:92
bool m_isAlsoFoundByLowPt
Definition Muon_p1.h:119
ElementLinkInt_p1 m_muonExtrapolatedTrackParticle
link to associated TrackParticle (Muon extrapolated)
Definition Muon_p1.h:102
ElementLinkInt_p1 m_innerExtrapolatedTrackParticle
link to associated TrackParticle (Inner extrapolated)
Definition Muon_p1.h:105
const momentum_type & momentumBase() const
access to underlying base type (I4Momentum-like)
const particle_type & particleBase() const
access to underlying base type (IParticle-like)
@ innAngle
common MuGirl and MuTag parameters
@ segmentDeltaEta
MuTag parameters.
@ etcone10
isolation enums - common parameters
Author
do not change the order of these enums.
MsgStream & msg
Definition testRead.cxx:32