From 9e50f35035ac7ff7a4433cd131a00c855436519e Mon Sep 17 00:00:00 2001 From: Masaki Ishitsuka <masaki.ishitsuka@cern.ch> Date: Thu, 11 Sep 2014 11:02:09 +0200 Subject: [PATCH] Definition of array for road variables are changed. 3 stations was explicitly assumed before but now it is extended to include CSC and EE chambers. Numbers are defined in MuonDefs.h. (xAODTrigMuon-00-00-08) --- .../Root/L2CombinedMuonAuxContainer_v1.cxx | 29 + .../xAODTrigMuon/Root/L2CombinedMuon_v1.cxx | 178 ++ .../Root/L2IsoMuonAuxContainer_v1.cxx | 32 + Event/xAOD/xAODTrigMuon/Root/L2IsoMuon_v1.cxx | 157 ++ .../Root/L2StandAloneMuonAuxContainer_v1.cxx | 210 ++ .../xAODTrigMuon/Root/L2StandAloneMuon_v1.cxx | 1770 +++++++++++++++++ .../Root/dict/ContainerProxies.cxx | 18 + Event/xAOD/xAODTrigMuon/cmt/Makefile.RootCore | 24 + Event/xAOD/xAODTrigMuon/cmt/requirements | 32 + Event/xAOD/xAODTrigMuon/doc/mainpage.h | 13 + .../xAODTrigMuon/L2CombinedMuon.h | 18 + .../xAODTrigMuon/L2CombinedMuonAuxContainer.h | 17 + .../xAODTrigMuon/L2CombinedMuonContainer.h | 18 + .../xAODTrigMuon/xAODTrigMuon/L2IsoMuon.h | 18 + .../xAODTrigMuon/L2IsoMuonAuxContainer.h | 17 + .../xAODTrigMuon/L2IsoMuonContainer.h | 18 + .../xAODTrigMuon/L2StandAloneMuon.h | 20 + .../L2StandAloneMuonAuxContainer.h | 19 + .../xAODTrigMuon/L2StandAloneMuonContainer.h | 20 + .../xAODTrigMuon/xAODTrigMuon/TrigMuonDefs.h | 40 + .../xAODTrigMuon/xAODTrigMuon/selection.xml | 89 + .../versions/L2CombinedMuonAuxContainer_v1.h | 71 + .../versions/L2CombinedMuonContainer_v1.h | 31 + .../xAODTrigMuon/versions/L2CombinedMuon_v1.h | 147 ++ .../versions/L2IsoMuonAuxContainer_v1.h | 71 + .../versions/L2IsoMuonContainer_v1.h | 31 + .../xAODTrigMuon/versions/L2IsoMuon_v1.h | 155 ++ .../L2StandAloneMuonAuxContainer_v1.h | 270 +++ .../versions/L2StandAloneMuonContainer_v1.h | 31 + .../versions/L2StandAloneMuon_v1.h | 515 +++++ .../xAODTrigMuon/xAODTrigMuonDict.h | 56 + 31 files changed, 4135 insertions(+) create mode 100644 Event/xAOD/xAODTrigMuon/Root/L2CombinedMuonAuxContainer_v1.cxx create mode 100644 Event/xAOD/xAODTrigMuon/Root/L2CombinedMuon_v1.cxx create mode 100644 Event/xAOD/xAODTrigMuon/Root/L2IsoMuonAuxContainer_v1.cxx create mode 100644 Event/xAOD/xAODTrigMuon/Root/L2IsoMuon_v1.cxx create mode 100644 Event/xAOD/xAODTrigMuon/Root/L2StandAloneMuonAuxContainer_v1.cxx create mode 100644 Event/xAOD/xAODTrigMuon/Root/L2StandAloneMuon_v1.cxx create mode 100644 Event/xAOD/xAODTrigMuon/Root/dict/ContainerProxies.cxx create mode 100644 Event/xAOD/xAODTrigMuon/cmt/Makefile.RootCore create mode 100644 Event/xAOD/xAODTrigMuon/cmt/requirements create mode 100644 Event/xAOD/xAODTrigMuon/doc/mainpage.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuon.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuonAuxContainer.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuonContainer.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuon.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuonAuxContainer.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuonContainer.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuon.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuonAuxContainer.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuonContainer.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/TrigMuonDefs.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/selection.xml create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuonAuxContainer_v1.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuonContainer_v1.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuon_v1.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuonAuxContainer_v1.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuonContainer_v1.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuon_v1.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuonAuxContainer_v1.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuonContainer_v1.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuon_v1.h create mode 100644 Event/xAOD/xAODTrigMuon/xAODTrigMuon/xAODTrigMuonDict.h diff --git a/Event/xAOD/xAODTrigMuon/Root/L2CombinedMuonAuxContainer_v1.cxx b/Event/xAOD/xAODTrigMuon/Root/L2CombinedMuonAuxContainer_v1.cxx new file mode 100644 index 00000000000..f41866e5441 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/Root/L2CombinedMuonAuxContainer_v1.cxx @@ -0,0 +1,29 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2CombinedMuonAuxContainer_v1.cxx 605591 2014-07-09 12:07:31Z krasznaa $ + +// Local include(s): +#include "xAODTrigMuon/versions/L2CombinedMuonAuxContainer_v1.h" + +namespace xAOD { + + L2CombinedMuonAuxContainer_v1::L2CombinedMuonAuxContainer_v1() + : AuxContainerBase() { + + AUX_VARIABLE( pt ); + AUX_VARIABLE( phi ); + AUX_VARIABLE( eta ); + + AUX_VARIABLE( charge ); + AUX_VARIABLE( strategy ); + AUX_VARIABLE( errorFlag ); + AUX_VARIABLE( matchFlag ); + AUX_VARIABLE( sigmaPt ); + + AUX_VARIABLE( idTrackLink ); + AUX_VARIABLE( muSATrackLink ); + } + +} // namespace xAOD diff --git a/Event/xAOD/xAODTrigMuon/Root/L2CombinedMuon_v1.cxx b/Event/xAOD/xAODTrigMuon/Root/L2CombinedMuon_v1.cxx new file mode 100644 index 00000000000..663b668485c --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/Root/L2CombinedMuon_v1.cxx @@ -0,0 +1,178 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2CombinedMuon_v1.cxx 605614 2014-07-09 12:49:31Z krasznaa $ + +// System include(s): +#include <iostream> + +// EDM include(s): +#include "xAODCore/AuxStoreAccessorMacros.h" + +// Local include(s): +#include "xAODTrigMuon/versions/L2CombinedMuon_v1.h" +#include "xAODTrigMuon/L2StandAloneMuon.h" +#include "xAODTrigMuon/L2StandAloneMuonContainer.h" + +namespace xAOD { + + L2CombinedMuon_v1::L2CombinedMuon_v1() + : IParticle(), m_p4(), m_p4Cached( false ) { + + } + + ///////////////////////////////////////////////////////////////////////////// + // + // Implementation of the xAOD::IParticle functions + // + + AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( L2CombinedMuon_v1, float, double, + pt ) + AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( L2CombinedMuon_v1, float, double, + eta ) + AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( L2CombinedMuon_v1, float, double, + phi ) + + double L2CombinedMuon_v1::m() const { + + return 105.6583715; + } + + double L2CombinedMuon_v1::e() const { + + return p4().M(); + } + + double L2CombinedMuon_v1::rapidity() const { + + return p4().Rapidity(); + } + + const L2CombinedMuon_v1::FourMom_t& L2CombinedMuon_v1::p4() const { + + // Update the cached object if necessary: + if( ! m_p4Cached ) { + m_p4Cached = true; + m_p4.SetPtEtaPhiM( pt(), eta(), phi(), m() ); + } + + // Return the cached object: + return m_p4; + } + + Type::ObjectType L2CombinedMuon_v1::type() const { + + return Type::L2CombinedMuon; + } + + // + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + // + // Implementation of the 4-momentum setter functions + // + + void L2CombinedMuon_v1::setPt( float pt ) { + + static Accessor< float > acc( "pt" ); + acc( *this ) = pt; + m_p4Cached = false; + return; + } + + void L2CombinedMuon_v1::setEta( float eta ) { + + static Accessor< float > acc( "eta" ); + acc( *this ) = eta; + m_p4Cached = false; + return; + } + + void L2CombinedMuon_v1::setPhi( float phi ) { + + static Accessor< float > acc( "phi" ); + acc( *this ) = phi; + m_p4Cached = false; + return; + } + + // + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + // + // Implementation of the LVL2 muon iso specific functions + // + + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2CombinedMuon_v1, float, + charge, setCharge ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2CombinedMuon_v1, int, + strategy, setStrategy ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2CombinedMuon_v1, int, + errorFlag, setErrorFlag ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2CombinedMuon_v1, int, + matchFlag, setMatchFlag ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2CombinedMuon_v1, float, + sigmaPt, setSigmaPt ) + + AUXSTORE_OBJECT_SETTER_AND_GETTER( L2CombinedMuon_v1, + ElementLink< TrackParticleContainer >, + idTrackLink, setIdTrackLink ) + + const xAOD::TrackParticle* L2CombinedMuon_v1::idTrack() const { + + static Accessor< ElementLink< TrackParticleContainer > > + acc( "idTrackLink" ); + if( ! acc.isAvailable( *this ) ) { + return 0; + } + const ElementLink< TrackParticleContainer >& el = acc( *this ); + if( ! el.isValid() ) { + return 0; + } + return *el; + } + + AUXSTORE_OBJECT_SETTER_AND_GETTER( L2CombinedMuon_v1, + ElementLink< L2StandAloneMuonContainer >, + muSATrackLink, setMuSATrackLink ) + + const xAOD::L2StandAloneMuon* L2CombinedMuon_v1::muSATrack() const { + + static Accessor< ElementLink< L2StandAloneMuonContainer > > + acc( "muSATrackLink" ); + if( ! acc.isAvailable( *this ) ) { + return 0; + } + const ElementLink< L2StandAloneMuonContainer >& el = acc( *this ); + if( ! el.isValid() ) { + return 0; + } + return *el; + } + + // + ///////////////////////////////////////////////////////////////////////////// + +} // namespace xAOD + +/// Helper operator for easily printing the properties of a LVL2 muon iso +/// object for debugging. +/// +std::ostream& operator<< ( std::ostream& out, + const xAOD::L2CombinedMuon_v1& mu ) { + + out << "charge: " << mu.charge() << "; "; + out << "pt: " << mu.pt() << "; "; + out << "phi: " << mu.phi() << "; "; + out << "eta: " << mu.eta() << "; "; + out << "strategy: " << mu.strategy() << "; "; + out << "errorFlag: " << mu.errorFlag() << "; "; + out << "matchFlag: " << mu.matchFlag() << "; "; + out << "sigmaPt: " << mu.sigmaPt(); + + // Return the stream: + return out; +} diff --git a/Event/xAOD/xAODTrigMuon/Root/L2IsoMuonAuxContainer_v1.cxx b/Event/xAOD/xAODTrigMuon/Root/L2IsoMuonAuxContainer_v1.cxx new file mode 100644 index 00000000000..a481efef9f0 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/Root/L2IsoMuonAuxContainer_v1.cxx @@ -0,0 +1,32 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2IsoMuonAuxContainer_v1.cxx 605591 2014-07-09 12:07:31Z krasznaa $ + +// Local include(s): +#include "xAODTrigMuon/versions/L2IsoMuonAuxContainer_v1.h" + +namespace xAOD { + + L2IsoMuonAuxContainer_v1::L2IsoMuonAuxContainer_v1() + : AuxContainerBase() { + + AUX_VARIABLE( pt ); + AUX_VARIABLE( phi ); + AUX_VARIABLE( eta ); + + AUX_VARIABLE( roiWord ); + AUX_VARIABLE( charge ); + AUX_VARIABLE( errorFlag ); + AUX_VARIABLE( sumPt01 ); + AUX_VARIABLE( sumPt02 ); + AUX_VARIABLE( sumPt03 ); + AUX_VARIABLE( sumPt04 ); + AUX_VARIABLE( sumEt01 ); + AUX_VARIABLE( sumEt02 ); + AUX_VARIABLE( sumEt03 ); + AUX_VARIABLE( sumEt04 ); + } + +} // namespace xAOD diff --git a/Event/xAOD/xAODTrigMuon/Root/L2IsoMuon_v1.cxx b/Event/xAOD/xAODTrigMuon/Root/L2IsoMuon_v1.cxx new file mode 100644 index 00000000000..22046af96f9 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/Root/L2IsoMuon_v1.cxx @@ -0,0 +1,157 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2IsoMuon_v1.cxx 605614 2014-07-09 12:49:31Z krasznaa $ + +// System include(s): +#include <iostream> + +// EDM include(s): +#include "xAODCore/AuxStoreAccessorMacros.h" + +// Local include(s): +#include "xAODTrigMuon/versions/L2IsoMuon_v1.h" + +namespace xAOD { + + L2IsoMuon_v1::L2IsoMuon_v1() + : IParticle(), m_p4(), m_p4Cached( false ) { + + } + + ///////////////////////////////////////////////////////////////////////////// + // + // Implementation of the xAOD::IParticle functions + // + + AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( L2IsoMuon_v1, float, double, + pt ) + AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( L2IsoMuon_v1, float, double, + eta ) + AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( L2IsoMuon_v1, float, double, + phi ) + + double L2IsoMuon_v1::m() const { + + return 105.6583715; + } + + double L2IsoMuon_v1::e() const { + + return p4().M(); + } + + double L2IsoMuon_v1::rapidity() const { + + return p4().Rapidity(); + } + + const L2IsoMuon_v1::FourMom_t& L2IsoMuon_v1::p4() const { + + // Update the cached object if necessary: + if( ! m_p4Cached ) { + m_p4Cached = true; + m_p4.SetPtEtaPhiM( pt(), eta(), phi(), m() ); + } + + // Return the cached object: + return m_p4; + } + + Type::ObjectType L2IsoMuon_v1::type() const { + + return Type::L2IsoMuon; + } + + // + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + // + // Implementation of the 4-momentum setter functions + // + + void L2IsoMuon_v1::setPt( float pt ) { + + static Accessor< float > acc( "pt" ); + acc( *this ) = pt; + m_p4Cached = false; + return; + } + + void L2IsoMuon_v1::setEta( float eta ) { + + static Accessor< float > acc( "eta" ); + acc( *this ) = eta; + m_p4Cached = false; + return; + } + + void L2IsoMuon_v1::setPhi( float phi ) { + + static Accessor< float > acc( "phi" ); + acc( *this ) = phi; + m_p4Cached = false; + return; + } + + // + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + // + // Implementation of the LVL2 muon iso specific functions + // + + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, uint32_t, + roiWord, setRoiWord ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, float, + charge, setCharge ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, int, + errorFlag, setErrorFlag ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, float, + sumPt01, setSumPt01 ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, float, + sumPt02, setSumPt02 ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, float, + sumPt03, setSumPt03 ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, float, + sumPt04, setSumPt04 ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, float, + sumEt01, setSumEt01 ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, float, + sumEt02, setSumEt02 ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, float, + sumEt03, setSumEt03 ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2IsoMuon_v1, float, + sumEt04, setSumEt04 ) + // + ///////////////////////////////////////////////////////////////////////////// + +} // namespace xAOD + +/// Helper operator for easily printing the properties of a LVL2 muon iso +/// object for debugging. +/// +std::ostream& operator<< ( std::ostream& out, + const xAOD::L2IsoMuon_v1& mu ) { + + out << "roiWord: " << mu.roiWord() << "; "; + out << "charge: " << mu.charge() << "; "; + out << "pt: " << mu.pt() << "; "; + out << "phi: " << mu.phi() << "; "; + out << "eta: " << mu.eta() << "; "; + out << "errorFlag: " << mu.errorFlag() << "; "; + out << "sumPt01: " << mu.sumPt01() << "; "; + out << "sumPt02: " << mu.sumPt02() << "; "; + out << "sumPt03: " << mu.sumPt03() << "; "; + out << "sumPt04: " << mu.sumPt04() << "; "; + out << "sumEt01: " << mu.sumEt01() << "; "; + out << "sumEt02: " << mu.sumEt02() << "; "; + out << "sumEt03: " << mu.sumEt03() << "; "; + out << "sumEt04: " << mu.sumEt04(); + + // Return the stream: + return out; +} diff --git a/Event/xAOD/xAODTrigMuon/Root/L2StandAloneMuonAuxContainer_v1.cxx b/Event/xAOD/xAODTrigMuon/Root/L2StandAloneMuonAuxContainer_v1.cxx new file mode 100644 index 00000000000..b5f30e3641f --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/Root/L2StandAloneMuonAuxContainer_v1.cxx @@ -0,0 +1,210 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2StandAloneMuonAuxContainer_v1.cxx 613775 2014-08-28 07:56:49Z mishitsu $ + +// Local include(s): +#include "xAODTrigMuon/versions/L2StandAloneMuonAuxContainer_v1.h" + +namespace xAOD { + + L2StandAloneMuonAuxContainer_v1::L2StandAloneMuonAuxContainer_v1() + : AuxContainerBase() { + + AUX_VARIABLE( pt ); + AUX_VARIABLE( phi ); + AUX_VARIABLE( eta ); + + AUX_VARIABLE( roiWord ); + AUX_VARIABLE( sAddress ); + AUX_VARIABLE( rMS ); + AUX_VARIABLE( etaMS ); + AUX_VARIABLE( phiMS ); + AUX_VARIABLE( dirPhiMS ); + AUX_VARIABLE( zMS ); + AUX_VARIABLE( dirZMS ); + AUX_VARIABLE( beta ); + + AUX_VARIABLE( barrelRadius ); + AUX_VARIABLE( barrelSagitta ); + + AUX_VARIABLE( endcapAlpha ); + AUX_VARIABLE( endcapBeta ); + AUX_VARIABLE( endcapRadius ); + + AUX_VARIABLE( slopeInner ); + AUX_VARIABLE( interceptInner ); + AUX_VARIABLE( deltaR ); + + AUX_VARIABLE( etaMap ); + AUX_VARIABLE( phiMap ); + AUX_VARIABLE( etaBin ); + AUX_VARIABLE( phiBin ); + + AUX_VARIABLE( isTgcFailure ); + AUX_VARIABLE( isRpcFailure ); + + AUX_VARIABLE( deltaEta ); + AUX_VARIABLE( deltaPhi ); + + AUX_VARIABLE( superPointR ); + AUX_VARIABLE( superPointZ ); + AUX_VARIABLE( superPointSlope ); + AUX_VARIABLE( superPointIntercept ); + AUX_VARIABLE( superPointChi2 ); + + AUX_VARIABLE( algoId ); + AUX_VARIABLE( teId ); + AUX_VARIABLE( lvl1Id ); + AUX_VARIABLE( lumiBlock ); + AUX_VARIABLE( muonDetMask ); + AUX_VARIABLE( roiId ); + AUX_VARIABLE( roiSystem ); + AUX_VARIABLE( roiSubsystem ); + AUX_VARIABLE( roiSector ); + AUX_VARIABLE( roiNumber ); + AUX_VARIABLE( roiThreshold ); + AUX_VARIABLE( roiEta ); + AUX_VARIABLE( roiPhi ); + + AUX_VARIABLE( ptBarelRadius ); + AUX_VARIABLE( ptBarelSagitta ); + AUX_VARIABLE( ptEndcapAlpha ); + AUX_VARIABLE( ptEndcapBeta ); + AUX_VARIABLE( ptEndcapRadius ); + + AUX_VARIABLE( chamberType1Normal ); + AUX_VARIABLE( chamberType1Overlap ); + AUX_VARIABLE( chamberType2Normal ); + AUX_VARIABLE( chamberType2Overlap ); + + AUX_VARIABLE( roadAwNormal ); + AUX_VARIABLE( roadAwOverlap ); + + AUX_VARIABLE( roadBwNormal ); + AUX_VARIABLE( roadBwOverlap ); + + AUX_VARIABLE( zMinNormal ); + AUX_VARIABLE( zMinOverlap ); + AUX_VARIABLE( zMaxNormal ); + AUX_VARIABLE( zMaxOverlap ); + + AUX_VARIABLE( rMinNormal ); + AUX_VARIABLE( rMinOverlap ); + AUX_VARIABLE( rMaxNormal ); + AUX_VARIABLE( rMaxOverlap ); + + AUX_VARIABLE( etaMinNormal ); + AUX_VARIABLE( etaMinOverlap ); + AUX_VARIABLE( etaMaxNormal ); + AUX_VARIABLE( etaMaxOverlap ); + + AUX_VARIABLE( tgcPt ); + + AUX_VARIABLE( tgcInnEta ); + AUX_VARIABLE( tgcInnPhi ); + AUX_VARIABLE( tgcInnR ); + AUX_VARIABLE( tgcInnZ ); + + AUX_VARIABLE( tgcInnRhoStd ); + AUX_VARIABLE( tgcInnRhoN ); + AUX_VARIABLE( tgcInnPhiStd ); + AUX_VARIABLE( tgcInnPhiN ); + + AUX_VARIABLE( tgcMid1Eta ); + AUX_VARIABLE( tgcMid1Phi ); + AUX_VARIABLE( tgcMid1R ); + AUX_VARIABLE( tgcMid1Z ); + + AUX_VARIABLE( tgcMid2Eta ); + AUX_VARIABLE( tgcMid2Phi ); + AUX_VARIABLE( tgcMid2R ); + AUX_VARIABLE( tgcMid2Z ); + + AUX_VARIABLE( tgcMidRhoChi2 ); + AUX_VARIABLE( tgcMidRhoN ); + AUX_VARIABLE( tgcMidPhiChi2 ); + AUX_VARIABLE( tgcMidPhiN ); + + AUX_VARIABLE( rpc1x ); + AUX_VARIABLE( rpc1y ); + AUX_VARIABLE( rpc1z ); + + AUX_VARIABLE( rpc2x ); + AUX_VARIABLE( rpc2y ); + AUX_VARIABLE( rpc2z ); + + AUX_VARIABLE( rpc3x ); + AUX_VARIABLE( rpc3y ); + AUX_VARIABLE( rpc3z ); + + AUX_VARIABLE( extensionCapacity ); + AUX_VARIABLE( robCapacity ); + AUX_VARIABLE( csmCapacity ); + AUX_VARIABLE( lvl1EmuCapacity ); + AUX_VARIABLE( rpcHitsCapacity ); + AUX_VARIABLE( tgcHitsCapacity ); + AUX_VARIABLE( mdtHitsCapacity ); + + AUX_VARIABLE( extension0 ); + AUX_VARIABLE( extension1 ); + AUX_VARIABLE( extension2 ); + AUX_VARIABLE( extension3 ); + AUX_VARIABLE( extension4 ); + AUX_VARIABLE( extension5 ); + AUX_VARIABLE( extension6 ); + AUX_VARIABLE( extension7 ); + AUX_VARIABLE( extension8 ); + AUX_VARIABLE( extension9 ); + + AUX_VARIABLE( lvl1Emulation ); + + AUX_VARIABLE( robId ); + AUX_VARIABLE( removedRobId ); + + AUX_VARIABLE( csmId ); + AUX_VARIABLE( csmSize ); + AUX_VARIABLE( csmError ); + AUX_VARIABLE( removedCsmId ); + + AUX_VARIABLE( padHitOnlineId ); + AUX_VARIABLE( padHitCode ); + AUX_VARIABLE( padHitX ); + AUX_VARIABLE( padHitY ); + AUX_VARIABLE( padHitZ ); + AUX_VARIABLE( padHitR ); + AUX_VARIABLE( padHitP ); + + AUX_VARIABLE( tgcInnRhoHitPhi ); + AUX_VARIABLE( tgcInnRhoHitR ); + AUX_VARIABLE( tgcInnRhoHitZ ); + AUX_VARIABLE( tgcInnRhoHitWidth ); + AUX_VARIABLE( tgcInnRhoHitInSeg ); + AUX_VARIABLE( tgcInnPhiHitPhi ); + AUX_VARIABLE( tgcInnPhiHitR ); + AUX_VARIABLE( tgcInnPhiHitZ ); + AUX_VARIABLE( tgcInnPhiHitWidth ); + AUX_VARIABLE( tgcInnPhiHitInSeg ); + AUX_VARIABLE( tgcMidRhoHitPhi ); + AUX_VARIABLE( tgcMidRhoHitR ); + AUX_VARIABLE( tgcMidRhoHitZ ); + AUX_VARIABLE( tgcMidRhoHitWidth ); + AUX_VARIABLE( tgcMidRhoHitInSeg ); + AUX_VARIABLE( tgcMidPhiHitPhi ); + AUX_VARIABLE( tgcMidPhiHitR ); + AUX_VARIABLE( tgcMidPhiHitZ ); + AUX_VARIABLE( tgcMidPhiHitWidth ); + AUX_VARIABLE( tgcMidPhiHitInEeg ); + + AUX_VARIABLE( mdtHitOnlineId ); + AUX_VARIABLE( mdtHitOfflineId ); + AUX_VARIABLE( mdtHitR ); + AUX_VARIABLE( mdtHitZ ); + AUX_VARIABLE( mdtHitResidual ); + AUX_VARIABLE( mdtHitTime ); + AUX_VARIABLE( mdtHitSpace ); + AUX_VARIABLE( mdtHitSigma ); + } + +} // namespace xAOD diff --git a/Event/xAOD/xAODTrigMuon/Root/L2StandAloneMuon_v1.cxx b/Event/xAOD/xAODTrigMuon/Root/L2StandAloneMuon_v1.cxx new file mode 100644 index 00000000000..fbaab0cef1a --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/Root/L2StandAloneMuon_v1.cxx @@ -0,0 +1,1770 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2StandAloneMuon_v1.cxx 616091 2014-09-11 11:00:02Z mishitsu $ + +// System include(s): +#include <iostream> + +// EDM include(s): +#include "xAODCore/AuxStoreAccessorMacros.h" + +// Local include(s): +#include "xAODTrigMuon/versions/L2StandAloneMuon_v1.h" +#include "xAODTrigMuon/TrigMuonDefs.h" + +namespace xAOD { + + L2StandAloneMuon_v1::L2StandAloneMuon_v1() + : IParticle(), m_p4(), m_p4Cached( false ) { + + } + + ///////////////////////////////////////////////////////////////////////////// + // + // Implementation of the xAOD::IParticle functions + // + + AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( L2StandAloneMuon_v1, float, double, + pt ) + AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( L2StandAloneMuon_v1, float, double, + eta ) + AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( L2StandAloneMuon_v1, float, double, + phi ) + + double L2StandAloneMuon_v1::m() const { + + return 105.6583715; + } + + double L2StandAloneMuon_v1::e() const { + + return p4().M(); + } + + double L2StandAloneMuon_v1::rapidity() const { + + return p4().Rapidity(); + } + + const L2StandAloneMuon_v1::FourMom_t& L2StandAloneMuon_v1::p4() const { + + // Update the cached object if necessary: + if( ! m_p4Cached ) { + m_p4Cached = true; + m_p4.SetPtEtaPhiM( pt(), eta(), phi(), m() ); + } + + // Return the cached object: + return m_p4; + } + + Type::ObjectType L2StandAloneMuon_v1::type() const { + + // Create some trigger types in xAODBase in the next round... + return Type::Other; + } + + // + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + // + // Implementation of the 4-momentum setter functions + // + + void L2StandAloneMuon_v1::setPt( float pt ) { + + static Accessor< float > acc( "pt" ); + acc( *this ) = pt; + m_p4Cached = false; + return; + } + + void L2StandAloneMuon_v1::setEta( float eta ) { + + static Accessor< float > acc( "eta" ); + acc( *this ) = eta; + m_p4Cached = false; + return; + } + + void L2StandAloneMuon_v1::setPhi( float phi ) { + + static Accessor< float > acc( "phi" ); + acc( *this ) = phi; + m_p4Cached = false; + return; + } + + // + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + // + // Implementation of the LVL2 muon specific functions + // + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Set and get methods for the outputs of L2 muon standalone muon algorithm + /// + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + roiWord, setRoIWord ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, int, + sAddress, setSAddress ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + rMS, setRMS ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + etaMS, setEtaMS ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + phiMS, setPhiMS ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + dirPhiMS, setDirPhiMS ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + zMS, setZMS ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + dirZMS, setDirZMS ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + beta, setBeta ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + barrelRadius, setBarrelRadius ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + barrelSagitta, setBarrelSagitta ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + endcapAlpha, setEndcapAlpha ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + endcapBeta, setEndcapBeta ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + endcapRadius, setEndcapRadius ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + slopeInner, setSlopeInner ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + interceptInner, setInterceptInner ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + deltaR, setDeltaR ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + etaMap, setEtaMap ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + phiMap, setPhiMap ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, int, + etaBin, setEtaBin ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, int, + phiBin, setPhiBin ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, int, + isTgcFailure, setIsTgcFailure ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, int, + isRpcFailure, setIsRpcFailure ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + deltaEta, setDeltaEta ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + deltaPhi, setDeltaPhi ) + // + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Object for accessing the superPointR variable + /// + static SG::AuxElement::Accessor< std::vector< float > > sprAcc( "superPointR" ); + /// Object for accessing the superPointZ variable + static SG::AuxElement::Accessor< std::vector< float > > spzAcc( "superPointZ" ); + /// Object for accessing the superPointSlope variable + static SG::AuxElement::Accessor< std::vector< float > > spsAcc( "superPointSlope" ); + /// Object for accessing the superPointIntercept variable + static SG::AuxElement::Accessor< std::vector< float > > spiAcc( "superPointIntercept" ); + /// Object for accessing the superPointChi2 variable + static SG::AuxElement::Accessor< std::vector< float > > spcAcc( "superPointChi2" ); + + /// Get superPoint properties + float L2StandAloneMuon_v1::superPointR( int chamber ) const { + if( chamber >= 0 && sprAcc( *this ).size() > (unsigned int)chamber ) { + return sprAcc( *this ).at( chamber ); + } else { + return 0.; + } + } + + float L2StandAloneMuon_v1::superPointZ( int chamber ) const { + if( chamber >= 0 && spzAcc( *this ).size() > (unsigned int)chamber ) { + return spzAcc( *this ).at( chamber ); + } else { + return 0.; + } + } + + float L2StandAloneMuon_v1::superPointSlope( int chamber ) const { + if( chamber >= 0 && spsAcc( *this ).size() > (unsigned int)chamber ) { + return spsAcc( *this ).at( chamber ); + } else { + return 0.; + } + } + + float L2StandAloneMuon_v1::superPointIntercept( int chamber ) const { + if( chamber >= 0 && spiAcc( *this ).size() > (unsigned int)chamber ) { + return spiAcc( *this ).at( chamber ); + } else { + return 0.; + } + } + + float L2StandAloneMuon_v1::superPointChi2( int chamber ) const { + if( chamber >= 0 && spcAcc( *this ).size() > (unsigned int)chamber ) { + return spcAcc( *this ).at( chamber ); + } else { + return 0.; + } + } + + /// Set superPoint properties + void L2StandAloneMuon_v1::setSuperPoint( int chamber, float r, float z, + float slope, float intercept, float chi2 ) { + + // Make sure that the variables are big enough: + if( sprAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + sprAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( spzAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + spzAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( spsAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + spsAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( spiAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + spiAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( spcAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + spcAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + + if (chamber >=0 && chamber < L2MuonParameters::Chamber::MaxChamber ) { + // Set the variables: + sprAcc( *this ).at( chamber ) = r; + spzAcc( *this ).at( chamber ) = z; + spsAcc( *this ).at( chamber ) = slope; + spiAcc( *this ).at( chamber ) = intercept; + spcAcc( *this ).at( chamber ) = chi2; + } + + return; + } + + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// Below are detailed information + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// L1 information + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, int, + algoId, setAlgoId ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + teId, setTeId ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + lvl1Id, setLvl1Id ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + lumiBlock, setLumiBlock ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + muonDetMask, setMuonDetMask ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + roiId, setRoiId ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + roiSystem, setRoiSystem ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + roiSubsystem, setRoiSubsystem ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + roiSector, setRoiSector ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + roiNumber, setRoiNumber ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + roiThreshold, setRoiThreshold ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + roiEta, setRoiEta ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, uint32_t, + roiPhi, setRoiPhi ) + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// Set and get pT from different algorithms + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + ptBarelRadius, setPtBarelRadius ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + ptBarelSagitta, setPtBarelSagitta ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + ptEndcapAlpha, setPtEndcapAlpha ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + ptEndcapBeta, setPtEndcapBeta ) + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, + ptEndcapRadius, setPtEndcapRadius ) + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Object for accessing the road information + /// + /// chamber types + static SG::AuxElement::Accessor< std::vector< int > > + ct1nAcc( "chamberType1Normal" ); + static SG::AuxElement::Accessor< std::vector< int > > + ct1oAcc( "chamberType1Overlap" ); + static SG::AuxElement::Accessor< std::vector< int > > + ct2nAcc( "chamberType2Normal" ); + static SG::AuxElement::Accessor< std::vector< int > > + ct2oAcc( "chamberType2Overlap" ); + + /// road slope and intercept + static SG::AuxElement::Accessor< std::vector< float > > + awnAcc( "roadAwNormal" ); + static SG::AuxElement::Accessor< std::vector< float > > + awoAcc( "roadAwOverlap" ); + static SG::AuxElement::Accessor< std::vector< float > > + bwnAcc( "roadBwNormal" ); + static SG::AuxElement::Accessor< std::vector< float > > + bwoAcc( "roadBwOverlap" ); + + /// Z range + static SG::AuxElement::Accessor< std::vector< float > > + zminnAcc( "zMinNormal" ); + static SG::AuxElement::Accessor< std::vector< float > > + zminoAcc( "zMinOverlap" ); + static SG::AuxElement::Accessor< std::vector< float > > + zmaxnAcc( "zMaxNormal" ); + static SG::AuxElement::Accessor< std::vector< float > > + zmaxoAcc( "zMaxOverlap" ); + + /// R range + static SG::AuxElement::Accessor< std::vector< float > > + rminnAcc( "rMinNormal" ); + static SG::AuxElement::Accessor< std::vector< float > > + rminoAcc( "rMinOverlap" ); + static SG::AuxElement::Accessor< std::vector< float > > + rmaxnAcc( "rMaxNormal" ); + static SG::AuxElement::Accessor< std::vector< float > > + rmaxoAcc( "rMaxOverlap" ); + + /// Eta range + static SG::AuxElement::Accessor< std::vector< float > > + eminnAcc( "etaMinNormal" ); + static SG::AuxElement::Accessor< std::vector< float > > + eminoAcc( "etaMinOverlap" ); + static SG::AuxElement::Accessor< std::vector< float > > + emaxnAcc( "etaMaxNormal" ); + static SG::AuxElement::Accessor< std::vector< float > > + emaxoAcc( "etaMaxOverlap" ); + + /// + /// Get road properties + /// + /// Chamber types + int L2StandAloneMuon_v1::chamberType1( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + + if ( ct1nAcc( *this ).size() > (unsigned int)station ) { + return ct1nAcc( *this ).at( station ); + } else { + return 0; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( ct1oAcc( *this ).size() > (unsigned int)station ) { + return ct1oAcc( *this ).at( station ); + } else { + return 0; + } + + } + + return 0; + } + + int L2StandAloneMuon_v1::chamberType2( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + if ( ct2nAcc( *this ).size() > (unsigned int)station ) { + return ct2nAcc( *this ).at( station ); + } else { + return 0; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( ct2oAcc( *this ).size() > (unsigned int)station ) { + return ct2oAcc( *this ).at( station ); + } else { + return 0; + } + + } + + return 0; + } + + /// Road slope + float L2StandAloneMuon_v1::roadAw( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + if ( awnAcc( *this ).size() > (unsigned int)station ) { + return awnAcc( *this ).at( station ); + } else { + return 0.; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( awoAcc( *this ).size() > (unsigned int)station ) { + return awoAcc( *this ).at( station ); + } else { + return 0.; + } + + } + + return 0.; + } + + /// Road intercept + float L2StandAloneMuon_v1::roadBw( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + if ( bwnAcc( *this ).size() > (unsigned int)station ) { + return bwnAcc( *this ).at( station ); + } else { + return 0.; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( bwoAcc( *this ).size() > (unsigned int)station ) { + return bwoAcc( *this ).at( station ); + } else { + return 0.; + } + + } + + return 0.; + } + + /// Z range + float L2StandAloneMuon_v1::zMin( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + if ( zminnAcc( *this ).size() > (unsigned int)station ) { + return zminnAcc( *this ).at( station ); + } else { + return 0.; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( zminoAcc( *this ).size() > (unsigned int)station ) { + return zminoAcc( *this ).at( station ); + } else { + return 0.; + } + + } + + return 0.; + } + + float L2StandAloneMuon_v1::zMax( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + if ( zmaxnAcc( *this ).size() > (unsigned int)station ) { + return zmaxnAcc( *this ).at( station ); + } else { + return 0.; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( zmaxoAcc( *this ).size() > (unsigned int)station ) { + return zmaxoAcc( *this ).at( station ); + } else { + return 0.; + } + + } + + return 0.; + } + + /// R range + float L2StandAloneMuon_v1::rMin( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + if ( rminnAcc( *this ).size() > (unsigned int)station ) { + return rminnAcc( *this ).at( station ); + } else { + return 0.; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( rminoAcc( *this ).size() > (unsigned int)station ) { + return rminoAcc( *this ).at( station ); + } else { + return 0.; + } + + } + + return 0.; + } + + float L2StandAloneMuon_v1::rMax( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + if ( rmaxnAcc( *this ).size() > (unsigned int)station ) { + return rmaxnAcc( *this ).at( station ); + } else { + return 0.; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( rmaxoAcc( *this ).size() > (unsigned int)station ) { + return rmaxoAcc( *this ).at( station ); + } else { + return 0.; + } + + } + + return 0.; + } + + /// Eta range + float L2StandAloneMuon_v1::etaMin( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + if ( eminnAcc( *this ).size() > (unsigned int)station ) { + return eminnAcc( *this ).at( station ); + } else { + return 0.; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( eminoAcc( *this ).size() > (unsigned int)station ) { + return eminoAcc( *this ).at( station ); + } else { + return 0.; + } + + } + + return 0.; + } + + float L2StandAloneMuon_v1::etaMax( int station, int sector ) const { + + if ( station < 0 ) return 0; + + if ( sector == 0 ) { + /// normal sector + if ( emaxnAcc( *this ).size() > (unsigned int)station ) { + return emaxnAcc( *this ).at( station ); + } else { + return 0.; + } + + } else if ( sector == 1 ) { + /// overlap sector + + if ( emaxoAcc( *this ).size() > (unsigned int)station ) { + return emaxoAcc( *this ).at( station ); + } else { + return 0.; + } + + } + + return 0.; + } + + + /// Set road properties + + /// Chamber types + void L2StandAloneMuon_v1::setChamberType1( int station, int sector, int chamberType ) { + + // Make sure that the variables are big enough: + if( ct1nAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + ct1nAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( ct1oAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + ct1oAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + + // Make sure that the variables are big enough: + if ( station < 0 || station >= L2MuonParameters::Chamber::MaxChamber ) return; + if ( sector < 0 || sector > 1 ) return; + + if (sector == 0 ) { + /// Normal sector + ct1nAcc( *this ).at( station ) = chamberType; + + } else if ( sector == 1 ) { + /// Overlap sector + ct1oAcc( *this ).at( station ) = chamberType; + + } + + return; + } + + void L2StandAloneMuon_v1::setChamberType2( int station, int sector, int chamberType ) { + + // Make sure that the variables are big enough: + if( ct2nAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + ct2nAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( ct2oAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + ct2oAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + + // Make sure that the variables are big enough: + if ( station < 0 || station >= L2MuonParameters::Chamber::MaxChamber ) return; + if ( sector < 0 || sector > 1 ) return; + + if (sector == 0 ) { + /// Normal sector + ct2nAcc( *this ).at( station ) = chamberType; + + } else if ( sector == 1 ) { + /// Overlap sector + ct2oAcc( *this ).at( station ) = chamberType; + + } + + return; + } + + /// Road + void L2StandAloneMuon_v1::setRoad( int station, int sector, float aw, float bw ) { + + // Make sure that the variables are big enough: + if( awnAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + awnAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( bwnAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + bwnAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( awoAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + awoAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( bwoAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + bwoAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + + // Make sure that the variables are big enough: + if ( station < 0 || station >= L2MuonParameters::Chamber::MaxChamber ) return; + if ( sector < 0 || sector > 1 ) return; + + if (sector == 0 ) { + /// Normal sector + + /// Slope + awnAcc( *this ).at( station ) = aw; + + /// Intercept + bwnAcc( *this ).at( station ) = bw; + + } else if ( sector == 1 ) { + /// Overlap sector + + /// Slope + awoAcc( *this ).at( station ) = aw; + + /// Intercept + bwoAcc( *this ).at( station ) = bw; + + } + + return; + } + + /// Z range + void L2StandAloneMuon_v1::setRegionZ( int station, int sector, float min, float max ) { + + // Make sure that the variables are big enough: + if( zminnAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + zminnAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( zmaxnAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + zmaxnAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( zminoAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + zminoAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( zmaxoAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + zmaxoAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + + // Make sure that the variables are big enough: + if ( station < 0 || station >= L2MuonParameters::Chamber::MaxChamber ) return; + if ( sector < 0 || sector > 1 ) return; + + if (sector == 0 ) { + /// Normal sector + + /// minimum Z + zminnAcc( *this ).at( station ) = min; + + /// mazimum Z + zmaxnAcc( *this ).at( station ) = max; + + } else if ( sector == 1 ) { + /// Overlap sector + + /// minimum Z + zminoAcc( *this ).at( station ) = min; + + /// maximum Z + zmaxoAcc( *this ).at( station ) = max; + + } + + return; + } + + /// R range + void L2StandAloneMuon_v1::setRegionR( int station, int sector, float min, float max ) { + + // Make sure that the variables are big enough: + if( rminnAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + rminnAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( rmaxnAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + rmaxnAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( rminoAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + rminoAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( rmaxoAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + rmaxoAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + + // Make sure that the variables are big enough: + if ( station < 0 || station >= L2MuonParameters::Chamber::MaxChamber ) return; + if ( sector < 0 || sector > 1 ) return; + + if (sector == 0 ) { + /// Normal sector + + /// minimum R + rminnAcc( *this ).at( station ) = min; + + /// maximum R + rmaxnAcc( *this ).at( station ) = max; + + } else if ( sector == 1 ) { + /// Overlap sector + + /// minimum R + rminoAcc( *this ).at( station ) = min; + + /// maximum R + rmaxoAcc( *this ).at( station ) = max; + + } + + return; + } + + /// Eta range + void L2StandAloneMuon_v1::setRegionEta( int station, int sector, float min, float max ) { + + // Make sure that the variables are big enough: + if( eminnAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + eminnAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( emaxnAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + emaxnAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( eminoAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + eminoAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + if( emaxoAcc( *this ).size() < L2MuonParameters::Chamber::MaxChamber ) { + emaxoAcc( *this ).resize( L2MuonParameters::Chamber::MaxChamber, 0.0 ); + } + + // Make sure that the variables are big enough: + if ( station < 0 || station >= L2MuonParameters::Chamber::MaxChamber ) return; + if ( sector < 0 || sector > 1 ) return; + + if (sector == 0 ) { + /// Normal sector + + /// minimum eta + eminnAcc( *this ).at( station ) = min; + + /// maximum eta + emaxnAcc( *this ).at( station ) = max; + + } else if ( sector == 1 ) { + /// Overlap sector + + /// minimum eta + eminoAcc( *this ).at( station ) = min; + + /// maximum eta + emaxoAcc( *this ).at( station ) = max; + + } + + return; + } + + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Get the results of TGC fit + AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( L2StandAloneMuon_v1, float, tgcPt, setTgcPt ) + + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcInnEta ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcInnPhi ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcInnR ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcInnZ ) + + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcInnRhoStd ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, long, tgcInnRhoN ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcInnPhiStd ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, long, tgcInnPhiN ) + + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMid1Eta ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMid1Phi ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMid1R ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMid1Z ) + + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMid2Eta ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMid2Phi ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMid2R ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMid2Z ) + + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMidRhoChi2 ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, long, tgcMidRhoN ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, tgcMidPhiChi2 ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, long, tgcMidPhiN ) + + /// Set the results of TGC fit + void L2StandAloneMuon_v1::setTgcInn( float eta, float phi, float r, float z ) { + + static Accessor< float > tieAcc( "tgcInnEta" ); + static Accessor< float > tipAcc( "tgcInnPhi" ); + static Accessor< float > tirAcc( "tgcInnR" ); + static Accessor< float > tizAcc( "tgcInnZ" ); + + tieAcc( *this ) = eta; + tipAcc( *this ) = phi; + tirAcc( *this ) = r; + tizAcc( *this ) = z; + + return; + } + + void L2StandAloneMuon_v1::setTgcInnF( float rhoStd, long rhoN, float phiStd, long phiN ) { + + static Accessor< float > tirsAcc( "tgcInnRhoStd" ); + static Accessor< long > tirnAcc( "tgcInnRhoN" ); + static Accessor< float > tipsAcc( "tgcInnPhiStd" ); + static Accessor< long > tipnAcc( "tgcInnPhiN" ); + + tirsAcc( *this ) = rhoStd; + tirnAcc( *this ) = rhoN; + tipsAcc( *this ) = phiStd; + tipnAcc( *this ) = phiN; + + return; + } + + void L2StandAloneMuon_v1::setTgcMid1( float eta, float phi, float r, float z ) { + + static Accessor< float > tm1eAcc( "tgcMid1Eta" ); + static Accessor< float > tm1pAcc( "tgcMid1Phi" ); + static Accessor< float > tm1rAcc( "tgcMid1R" ); + static Accessor< float > tm1zAcc( "tgcMid1Z" ); + + tm1eAcc( *this ) = eta; + tm1pAcc( *this ) = phi; + tm1rAcc( *this ) = r; + tm1zAcc( *this ) = z; + + return; + } + + void L2StandAloneMuon_v1::setTgcMid2( float eta, float phi, float r, float z ) { + + static Accessor< float > tm2eAcc( "tgcMid2Eta" ); + static Accessor< float > tm2pAcc( "tgcMid2Phi" ); + static Accessor< float > tm2rAcc( "tgcMid2R" ); + static Accessor< float > tm2zAcc( "tgcMid2Z" ); + + tm2eAcc( *this ) = eta; + tm2pAcc( *this ) = phi; + tm2rAcc( *this ) = r; + tm2zAcc( *this ) = z; + + return; + } + + void L2StandAloneMuon_v1::setTgcMidF( float rhoChi2, long rhoN, float phiChi2, long phiN ) { + + static Accessor< float > tmrcAcc( "tgcMidRhoChi2" ); + static Accessor< long > tmrnAcc( "tgcMidRhoN" ); + static Accessor< float > tmpcAcc( "tgcMidPhiChi2" ); + static Accessor< long > tmpnAcc( "tgcMidPhiN" ); + + tmrcAcc( *this ) = rhoChi2; + tmrnAcc( *this ) = rhoN; + tmpcAcc( *this ) = phiChi2; + tmpnAcc( *this ) = phiN; + + return; + } + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Get the results of RPC fit + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, rpc1x) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, rpc1y) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, rpc1z) + + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, rpc2x) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, rpc2y) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, rpc2z) + + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, rpc3x) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, rpc3y) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, float, rpc3z) + + /// Set the results of RPC fit + void L2StandAloneMuon_v1::setRpc1( float x, float y, float z ) { + + static Accessor< float > r1xAcc( "rpc1x" ); + static Accessor< float > r1yAcc( "rpc1y" ); + static Accessor< float > r1zAcc( "rpc1z" ); + + r1xAcc( *this ) = x; + r1yAcc( *this ) = y; + r1zAcc( *this ) = z; + + return; + } + + void L2StandAloneMuon_v1::setRpc2( float x, float y, float z ) { + + static Accessor< float > r2xAcc( "rpc2x" ); + static Accessor< float > r2yAcc( "rpc2y" ); + static Accessor< float > r2zAcc( "rpc2z" ); + + r2xAcc( *this ) = x; + r2yAcc( *this ) = y; + r2zAcc( *this ) = z; + + return; + } + + void L2StandAloneMuon_v1::setRpc3( float x, float y, float z ) { + + static Accessor< float > r3xAcc( "rpc3x" ); + static Accessor< float > r3yAcc( "rpc3y" ); + static Accessor< float > r3zAcc( "rpc3z" ); + + r3xAcc( *this ) = x; + r3yAcc( *this ) = y; + r3zAcc( *this ) = z; + + return; + } + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Object for accessing extenstion variables + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext0Acc( "extension0" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext1Acc( "extension1" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext2Acc( "extension2" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext3Acc( "extension3" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext4Acc( "extension4" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext5Acc( "extension5" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext6Acc( "extension6" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext7Acc( "extension7" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext8Acc( "extension8" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > ext9Acc( "extension9" ); + + /// Object for level 1 emulation info + static SG::AuxElement::Accessor< std::vector< uint32_t > > lvl1eAcc( "lvl1Emulation" ); + + /// Object for ROB info + static SG::AuxElement::Accessor< std::vector< uint32_t > > robidAcc( "robId" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > robrmAcc( "removedRobId" ); + + /// Object for CSM info + static SG::AuxElement::Accessor< std::vector< uint32_t > > csmidAcc( "csmId" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > csmszAcc( "csmSize" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > csmerAcc( "csmError" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > csmrmAcc( "removedCsmId" ); + + /// Object for accessing RPC pad hits + static SG::AuxElement::Accessor< std::vector< uint32_t > > padiAcc( "padHitOnlineId" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > padcAcc( "padHitCode" ); + static SG::AuxElement::Accessor< std::vector< float > > padxAcc( " padHitX" ); + static SG::AuxElement::Accessor< std::vector< float > > padyAcc( " padHitY" ); + static SG::AuxElement::Accessor< std::vector< float > > padzAcc( " padHitZ" ); + static SG::AuxElement::Accessor< std::vector< float > > padrAcc( " padHitR" ); + static SG::AuxElement::Accessor< std::vector< float > > padpAcc( " padHitP" ); + + /// Object for accessing TGC hits + static SG::AuxElement::Accessor< std::vector< float > > tirpAcc( "tgcInnRhoHitPhi" ); + static SG::AuxElement::Accessor< std::vector< float > > tirrAcc( "tgcInnRhoHitR" ); + static SG::AuxElement::Accessor< std::vector< float > > tirzAcc( "tgcInnRhoHitZ" ); + static SG::AuxElement::Accessor< std::vector< float > > tirwAcc( "tgcInnRhoHitWidth" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > tiriAcc( "tgcInnRhoHitInSeg" ); + static SG::AuxElement::Accessor< std::vector< float > > tippAcc( "tgcInnPhiHitPhi" ); + static SG::AuxElement::Accessor< std::vector< float > > tiprAcc( "tgcInnPhiHitR" ); + static SG::AuxElement::Accessor< std::vector< float > > tipzAcc( "tgcInnPhiHitZ" ); + static SG::AuxElement::Accessor< std::vector< float > > tipwAcc( "tgcInnPhiHitWidth" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > tipiAcc( "tgcInnPhiHitInSeg" ); + static SG::AuxElement::Accessor< std::vector< float > > tmrpAcc( "tgcMidRhoHitPhi" ); + static SG::AuxElement::Accessor< std::vector< float > > tmrrAcc( "tgcMidRhoHitR" ); + static SG::AuxElement::Accessor< std::vector< float > > tmrzAcc( "tgcMidRhoHitZ" ); + static SG::AuxElement::Accessor< std::vector< float > > tmrwAcc( "tgcMidRhoHitWidth" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > tmriAcc( "tgcMidRhoHitInSeg" ); + static SG::AuxElement::Accessor< std::vector< float > > tmppAcc( "tgcMidPhiHitPhi" ); + static SG::AuxElement::Accessor< std::vector< float > > tmprAcc( "tgcMidPhiHitR" ); + static SG::AuxElement::Accessor< std::vector< float > > tmpzAcc( "tgcMidPhiHitZ" ); + static SG::AuxElement::Accessor< std::vector< float > > tmpwAcc( "tgcMidPhiHitWidth" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > tmpiAcc( "tgcMidPhiHitInEeg" ); + + /// Object for accessing the MDT tube variables + static SG::AuxElement::Accessor< std::vector< uint32_t > > mdtonAcc( "mdtHitOnlineId" ); + static SG::AuxElement::Accessor< std::vector< uint32_t > > mdtoffAcc( "mdtHitOfflineId" ); + static SG::AuxElement::Accessor< std::vector< int > > mdtcAcc( "mdtHitChamber" ); + static SG::AuxElement::Accessor< std::vector< float > > mdtrAcc( "mdtHitR" ); + static SG::AuxElement::Accessor< std::vector< float > > mdtzAcc( "mdtHitZ" ); + static SG::AuxElement::Accessor< std::vector< float > > mdtresAcc( "mdtHitResidual" ); + static SG::AuxElement::Accessor< std::vector< float > > mdttAcc( "mdtHitTime" ); + static SG::AuxElement::Accessor< std::vector< float > > mdtspcAcc( "mdtHitSpace" ); + static SG::AuxElement::Accessor< std::vector< float > > mdtsigAcc( "mdtHitSigma" ); + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Size of storage to be reserved + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, int, extensionCapacity ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, int, robCapacity ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, int, csmCapacity ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, int, lvl1EmuCapacity ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, int, rpcHitsCapacity ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, int, tgcHitsCapacity ) + AUXSTORE_PRIMITIVE_GETTER( L2StandAloneMuon_v1, int, mdtHitsCapacity ) + + /// Set size of extension stirage + void L2StandAloneMuon_v1::setExtensionCapacity( int value ) { + + static Accessor< int > ecapAcc( "extensionCapacity" ); + ecapAcc( *this ) = value; + + if ( value > 0 ) { + ext0Acc( *this ).reserve( (unsigned int)value ); + ext1Acc( *this ).reserve( (unsigned int)value ); + ext2Acc( *this ).reserve( (unsigned int)value ); + ext3Acc( *this ).reserve( (unsigned int)value ); + ext4Acc( *this ).reserve( (unsigned int)value ); + ext5Acc( *this ).reserve( (unsigned int)value ); + ext6Acc( *this ).reserve( (unsigned int)value ); + ext7Acc( *this ).reserve( (unsigned int)value ); + ext8Acc( *this ).reserve( (unsigned int)value ); + ext9Acc( *this ).reserve( (unsigned int)value ); + } + + return; + } + + /// Set size of ROB storage + void L2StandAloneMuon_v1::setRobCapacity( int value ) { + + static Accessor< int > rcapAcc( "robCapacity" ); + rcapAcc( *this ) = value; + + if ( value > 0 ) { + robidAcc( *this ).reserve( (unsigned int)value ); + robrmAcc( *this ).reserve( (unsigned int)value ); + } + + return; + } + + /// Set size of CSM storage + void L2StandAloneMuon_v1::setCsmCapacity( int value ) { + + static Accessor< int > ccapAcc( "csmCapacity" ); + ccapAcc( *this ) = value; + + if ( value > 0 ) { + csmidAcc( *this ).reserve( (unsigned int)value ); + csmszAcc( *this ).reserve( (unsigned int)value ); + csmerAcc( *this ).reserve( (unsigned int)value ); + csmrmAcc( *this ).reserve( (unsigned int)value ); + } + + return; + } + + /// Set size of L1 emulation storage + void L2StandAloneMuon_v1::setLvl1EmuCapacity( int value ) { + + static Accessor< int > lcapAcc( "lvl1Emuapacity" ); + lcapAcc( *this ) = value; + + if ( value > 0 ) { + lvl1eAcc( *this ).reserve( (unsigned int)value ); + } + + return; + } + + /// Set size of storage for RPC hits + void L2StandAloneMuon_v1::setRpcHitsCapacity( int value ) { + + static Accessor< int > rcapAcc( "rpcHitsCapacity" ); + rcapAcc( *this ) = value; + + if ( value > 0 ) { + padiAcc( *this ).reserve( (unsigned int)value ); + padcAcc( *this ).reserve( (unsigned int)value ); + padxAcc( *this ).reserve( (unsigned int)value ); + padyAcc( *this ).reserve( (unsigned int)value ); + padzAcc( *this ).reserve( (unsigned int)value ); + padrAcc( *this ).reserve( (unsigned int)value ); + padpAcc( *this ).reserve( (unsigned int)value ); + } + + return; + } + + /// Set size of storage for TGC hits + void L2StandAloneMuon_v1::setTgcHitsCapacity( int value ) { + + static Accessor< int > tcapAcc( "tgcHitsCapacity" ); + tcapAcc( *this ) = value; + + if ( value > 0 ) { + tirpAcc( *this ).reserve( (unsigned int)value ); + tirrAcc( *this ).reserve( (unsigned int)value ); + tirzAcc( *this ).reserve( (unsigned int)value ); + tirwAcc( *this ).reserve( (unsigned int)value ); + tiriAcc( *this ).reserve( (unsigned int)value ); + tippAcc( *this ).reserve( (unsigned int)value ); + tiprAcc( *this ).reserve( (unsigned int)value ); + tipzAcc( *this ).reserve( (unsigned int)value ); + tipwAcc( *this ).reserve( (unsigned int)value ); + tipiAcc( *this ).reserve( (unsigned int)value ); + tmrpAcc( *this ).reserve( (unsigned int)value ); + tmrrAcc( *this ).reserve( (unsigned int)value ); + tmrzAcc( *this ).reserve( (unsigned int)value ); + tmrwAcc( *this ).reserve( (unsigned int)value ); + tmriAcc( *this ).reserve( (unsigned int)value ); + tmppAcc( *this ).reserve( (unsigned int)value ); + tmprAcc( *this ).reserve( (unsigned int)value ); + tmpzAcc( *this ).reserve( (unsigned int)value ); + tmpwAcc( *this ).reserve( (unsigned int)value ); + tmpiAcc( *this ).reserve( (unsigned int)value ); + } + + return; + } + + /// Set size of storage for MDT hits + void L2StandAloneMuon_v1::setMdtHitsCapacity( int value ) { + + static Accessor< int > mcapAcc( "mdtHitsCapacity" ); + mcapAcc( *this ) = value; + + if ( value > 0 ) { + mdtonAcc( *this ).reserve( (unsigned int)value ); + mdtoffAcc( *this ).reserve( (unsigned int)value ); + mdtrAcc( *this ).reserve( (unsigned int)value ); + mdtzAcc( *this ).reserve( (unsigned int)value ); + mdtresAcc( *this ).reserve( (unsigned int)value ); + mdttAcc( *this ).reserve( (unsigned int)value ); + mdtspcAcc( *this ).reserve( (unsigned int)value ); + mdtsigAcc( *this ).reserve( (unsigned int)value ); + } + + return; + } + + + void L2StandAloneMuon_v1::setCapacities( int ext, int rob, int csm, int lvl1, int rpc, int tgc, int mdt ) { + + setExtensionCapacity( ext ); + setRobCapacity( rob ); + setCsmCapacity( csm ); + setLvl1EmuCapacity( lvl1 ); + setRpcHitsCapacity( rpc ); + setTgcHitsCapacity( tgc ); + setMdtHitsCapacity( mdt ); + + return; + } + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// Get extension object + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension0 ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension1 ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension2 ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension3 ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension4 ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension5 ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension6 ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension7 ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension8 ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, extension9 ) + + /// Set and get methods for extenstions + void L2StandAloneMuon_v1::setExtension0( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext0Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext0Acc( *this ).push_back( value ); + } + void L2StandAloneMuon_v1::setExtension1( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext1Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext1Acc( *this ).push_back( value ); + } + void L2StandAloneMuon_v1::setExtension2( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext2Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext2Acc( *this ).push_back( value ); + } + void L2StandAloneMuon_v1::setExtension3( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext3Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext3Acc( *this ).push_back( value ); + } + void L2StandAloneMuon_v1::setExtension4( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext4Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext4Acc( *this ).push_back( value ); + } + void L2StandAloneMuon_v1::setExtension5( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext5Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext5Acc( *this ).push_back( value ); + } + void L2StandAloneMuon_v1::setExtension6( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext6Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext6Acc( *this ).push_back( value ); + } + void L2StandAloneMuon_v1::setExtension7( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext7Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext7Acc( *this ).push_back( value ); + } + void L2StandAloneMuon_v1::setExtension8( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext8Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext8Acc( *this ).push_back( value ); + } + void L2StandAloneMuon_v1::setExtension9( uint32_t value ) { + // Make sure that the size of vector is still within the capacity + if ( ext9Acc( *this ).size() >= (unsigned int)extensionCapacity() ) return; + // Set the variables: + ext9Acc( *this ).push_back( value ); + } + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Get level 1 emulation object + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, lvl1Emulation ) + + /// Set level 1 emulation object + void L2StandAloneMuon_v1::setEtaPivot(uint32_t ly0, uint32_t ly1 ) { + + if ( lvl1eAcc( *this ).size() < 2 ) lvl1eAcc( *this ).resize( 2 ); + + lvl1eAcc( *this ).at( 0 ) = ly0; + lvl1eAcc( *this ).at( 1 ) = ly1; + + return; + } + + void L2StandAloneMuon_v1::setEtaLow( uint32_t ly00, uint32_t ly01, uint32_t ly10, uint32_t ly11 ) { + + if ( lvl1eAcc( *this ).size() < 6 ) lvl1eAcc( *this ).resize( 6 ); + + lvl1eAcc( *this ).at( 2 ) = ly00; + lvl1eAcc( *this ).at( 3 ) = ly01; + lvl1eAcc( *this ).at( 4 ) = ly10; + lvl1eAcc( *this ).at( 5 ) = ly11; + + return; + } + + void L2StandAloneMuon_v1::setEtaHigh( uint32_t ly00, uint32_t ly01, uint32_t ly10, uint32_t ly11 ) { + + if ( lvl1eAcc( *this ).size() < 10 ) lvl1eAcc( *this ).resize( 10 ); + + lvl1eAcc( *this ).at( 6 ) = ly00; + lvl1eAcc( *this ).at( 7 ) = ly01; + lvl1eAcc( *this ).at( 8 ) = ly10; + lvl1eAcc( *this ).at( 9 ) = ly11; + + return; + } + + void L2StandAloneMuon_v1::setPhiPivot (uint32_t ly0, uint32_t ly1 ) { + + if ( lvl1eAcc( *this ).size() < 12 ) lvl1eAcc( *this ).resize( 12 ); + + lvl1eAcc( *this ).at( 10 ) = ly0; + lvl1eAcc( *this ).at( 11 ) = ly1; + + return; + } + + void L2StandAloneMuon_v1::setPhiLow( uint32_t ly00, uint32_t ly01, uint32_t ly10, uint32_t ly11 ) { + + if ( lvl1eAcc( *this ).size() < 16 ) lvl1eAcc( *this ).resize( 16 ); + + lvl1eAcc( *this ).at( 12 ) = ly00; + lvl1eAcc( *this ).at( 13 ) = ly01; + lvl1eAcc( *this ).at( 14 ) = ly10; + lvl1eAcc( *this ).at( 15 ) = ly11; + + return; + } + + void L2StandAloneMuon_v1::setPhiHigh( uint32_t ly00, uint32_t ly01, uint32_t ly10, uint32_t ly11 ) { + + if ( lvl1eAcc( *this ).size() < 20 ) lvl1eAcc( *this ).resize( 20 ); + + lvl1eAcc( *this ).at( 16 ) = ly00; + lvl1eAcc( *this ).at( 17 ) = ly01; + lvl1eAcc( *this ).at( 18 ) = ly10; + lvl1eAcc( *this ).at( 19 ) = ly11; + + return; + } + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Get ROB information object + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, robId ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, removedRobId ) + + /// Set ROB information object + void L2StandAloneMuon_v1::setRequestedRob( uint32_t rob ) { + + // Make sure that the size of vector is still within the capacity + if ( robidAcc( *this ).size() >= (unsigned int)robCapacity() ) return; + + // Set the variables: + robidAcc( *this ).push_back( rob ); + + return; + } + + void L2StandAloneMuon_v1::setRemovedRob( uint32_t rob ) { + + // Make sure that the size of vector is still within the capacity + if ( robrmAcc( *this ).size() >= (unsigned int)robCapacity() ) return; + + // Set the variables: + robrmAcc( *this ).push_back( rob ); + + return; + } + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Get CSM information object + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, csmId ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, csmSize ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, csmError ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, removedCsmId ) + + /// Set CSM information object + void L2StandAloneMuon_v1::setConvertedCsm( uint32_t csm, uint32_t sz ) { + + // Make sure that the size of vector is still within the capacity + if ( csmidAcc( *this ).size() >= (unsigned int)csmCapacity() ) return; + + // Set the variables: + csmidAcc( *this ).push_back( csm ); + csmszAcc( *this ).push_back( sz ); + + return; + } + + void L2StandAloneMuon_v1::setCsmError( uint32_t err ) { + + // Make sure that the size of vector is still within the capacity + if ( csmerAcc( *this ).size() >= (unsigned int)csmCapacity() ) return; + + // Set the variables: + csmerAcc( *this ).push_back( err ); + + return; + } + + + void L2StandAloneMuon_v1::setRemovedCsm( uint32_t csm ) { + // Make sure that the size of vector is still within the capacity + if ( csmrmAcc( *this ).size() >= (unsigned int)csmCapacity() ) return; + + // Set the variables: + csmrmAcc( *this ).push_back( csm ); + + return; + } + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Get RPC pad object + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, padHitOnlineId) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, padHitCode) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, padHitX) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, padHitY) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, padHitZ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, padHitR) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, padHitP) + + /// Set RPC pad hits + void L2StandAloneMuon_v1::setPadHit(uint32_t onlineId, uint32_t code, float x, float y, float z, + float r, float p) { + // Make sure that the size of vector is still within the capacity + if ( padiAcc( *this ).size() >= (unsigned int)rpcHitsCapacity() ) return; + + // Set the variables: + padiAcc( *this ).push_back( onlineId ); + padcAcc( *this ).push_back( code ); + padxAcc( *this ).push_back( x ); + padyAcc( *this ).push_back( y ); + padzAcc( *this ).push_back( z ); + padrAcc( *this ).push_back( r ); + padpAcc( *this ).push_back( p ); + + return; + } + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Get TGC hits + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcInnRhoHitPhi) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcInnRhoHitR) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcInnRhoHitZ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcInnRhoHitWidth) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, tgcInnRhoHitInSeg) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcInnPhiHitPhi) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcInnPhiHitR) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcInnPhiHitZ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcInnPhiHitWidth) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, tgcInnPhiHitInSeg) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcMidRhoHitPhi) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcMidRhoHitR) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcMidRhoHitZ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcMidRhoHitWidth) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, tgcMidRhoHitInSeg) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcMidPhiHitPhi) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcMidPhiHitR) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcMidPhiHitZ) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< float >, tgcMidPhiHitWidth) + AUXSTORE_OBJECT_GETTER( L2StandAloneMuon_v1, std::vector< uint32_t >, tgcMidPhiHitInEeg) + + /// Set TGC hits + void L2StandAloneMuon_v1::setTgcInnRhoHit( float phi, float r, float z, float width, uint32_t in_seg ) { + + // Make sure that the size of vector is still within the capacity + if ( tirpAcc( *this ).size() >= (unsigned int)tgcHitsCapacity() ) return; + + // Set the variables: + tirpAcc( *this ).push_back( phi ); + tirrAcc( *this ).push_back( r ); + tirzAcc( *this ).push_back( z ); + tirwAcc( *this ).push_back( width ); + tiriAcc( *this ).push_back( in_seg ); + + return; + } + + void L2StandAloneMuon_v1::setTgcInnPhiHit( float phi, float r, float z, float width, uint32_t in_seg ) { + + // Make sure that the size of vector is still within the capacity + if ( tippAcc( *this ).size() >= (unsigned int)tgcHitsCapacity() ) return; + + // Set the variables: + tippAcc( *this ).push_back( phi ); + tiprAcc( *this ).push_back( r ); + tipzAcc( *this ).push_back( z ); + tipwAcc( *this ).push_back( width ); + tipiAcc( *this ).push_back( in_seg ); + + return; + } + + void L2StandAloneMuon_v1::setTgcMidRhoHit( float phi, float r, float z, float width, uint32_t in_seg ) { + + // Make sure that the size of vector is still within the capacity + if ( tmrpAcc( *this ).size() >= (unsigned int)tgcHitsCapacity() ) return; + + // Set the variables: + tmrpAcc( *this ).push_back( phi ); + tmrrAcc( *this ).push_back( r ); + tmrzAcc( *this ).push_back( z ); + tmrwAcc( *this ).push_back( width ); + tmriAcc( *this ).push_back( in_seg ); + + return; + } + + void L2StandAloneMuon_v1::setTgcMidPhiHit( float phi, float r, float z, float width, uint32_t in_seg ) { + + // Make sure that the size of vector is still within the capacity + if ( tmppAcc( *this ).size() >= (unsigned int)tgcHitsCapacity() ) return; + + // Set the variables: + tmppAcc( *this ).push_back( phi ); + tmprAcc( *this ).push_back( r ); + tmpzAcc( *this ).push_back( z ); + tmpwAcc( *this ).push_back( width ); + tmpiAcc( *this ).push_back( in_seg ); + + return; + } + /// + ///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// + /// + /// Get and set MDT hits + uint32_t L2StandAloneMuon_v1::nMdtHits() const { + return mdtonAcc( *this ).size(); + } + + uint32_t L2StandAloneMuon_v1::mdtHitOnlineId( unsigned int tube ) const { + if( mdtonAcc( *this ).size() > tube ) { + return mdtonAcc( *this ).at( tube ); + } else { + return 0; + } + } + + uint32_t L2StandAloneMuon_v1::mdtHitOfflineId( unsigned int tube ) const { + if( mdtoffAcc( *this ).size() > tube ) { + return mdtoffAcc( *this ).at( tube ); + } else { + return 0; + } + } + + int L2StandAloneMuon_v1::mdtHitChamber( unsigned int tube ) const { + if( mdtcAcc( *this ).size() > tube ) { + return mdtcAcc( *this ).at( tube ); + } else { + return 0; + } + } + + float L2StandAloneMuon_v1::mdtHitR( unsigned int tube ) const { + if( mdtrAcc( *this ).size() > tube ) { + return mdtrAcc( *this ).at( tube ); + } else { + return 0.; + } + } + + float L2StandAloneMuon_v1::mdtHitZ( unsigned int tube ) const { + if( mdtzAcc( *this ).size() > tube ) { + return mdtzAcc( *this ).at( tube ); + } else { + return 0.; + } + } + + float L2StandAloneMuon_v1::mdtHitResidual( unsigned int tube ) const { + if( mdtresAcc( *this ).size() > tube ) { + return mdtresAcc( *this ).at( tube ); + } else { + return 0.; + } + } + + float L2StandAloneMuon_v1::mdtHitTime( unsigned int tube ) const { + if( mdttAcc( *this ).size() > tube ) { + return mdttAcc( *this ).at( tube ); + } else { + return 0.; + } + } + + float L2StandAloneMuon_v1::mdtHitSpace( unsigned int tube ) const { + if( mdtspcAcc( *this ).size() > tube ) { + return mdtspcAcc( *this ).at( tube ); + } else { + return 0.; + } + } + + float L2StandAloneMuon_v1::mdtHitSigma( unsigned int tube ) const { + if( mdtsigAcc( *this ).size() > tube ) { + return mdtsigAcc( *this ).at( tube ); + } else { + return 0.; + } + } + + void L2StandAloneMuon_v1::setMdtHit( uint32_t onlineId, uint32_t offlineId, int chamber, float r, float z, + float residual, float time, float space, float sigma ) { + + // Make sure that the number of MDT hits is still within the capacity + if ( mdtonAcc( *this ).size() >= (unsigned int)mdtHitsCapacity() ) return; + + // Set the variables: + mdtonAcc( *this ).push_back( onlineId ); + mdtoffAcc( *this ).push_back( offlineId ); + mdtcAcc( *this ).push_back( chamber ); + mdtrAcc( *this ).push_back( r ); + mdtzAcc( *this ).push_back( z ); + mdtresAcc( *this ).push_back( residual ); + mdttAcc( *this ).push_back( time ); + mdtspcAcc( *this ).push_back( space ); + mdtsigAcc( *this ).push_back( sigma ); + + return; + } + // + ///////////////////////////////////////////////////////////////////////////// + +} // namespace xAOD + +/// Helper operator for easily printing the properties of a LVL2 muon +/// object for debugging. +/// +std::ostream& operator<< ( std::ostream& out, + const xAOD::L2StandAloneMuon_v1& mu ) { + + out << "roiWord: " << mu.roiWord() << "; "; + out << "sAddress: " << mu.sAddress() << "; "; + out << "pt: " << mu.pt() << "; "; + out << "phi: " << mu.phi() << "; "; + out << "eta: " << mu.eta() << "; "; + out << "rMS: " << mu.rMS() << "; "; + out << "etaMS: " << mu.etaMS() << "; "; + out << "phiMS: " << mu.phiMS() << "; "; + out << "dirPhiMS: " << mu.dirPhiMS() << "; "; + out << "zMS: " << mu.zMS() << "; "; + out << "dirZMS: " << mu.dirZMS() << "; "; + out << "beta: " << mu.beta() << "; "; + out << "barrelRadius: " << mu.barrelRadius() << "; "; + out << "barrelSagitta: " << mu.barrelSagitta() << "; "; + out << "endcapAlpha: " << mu.endcapAlpha() << "; "; + out << "endcapBeta: " << mu.endcapBeta() << "; "; + out << "endcapRadius: " << mu.endcapRadius() << "; "; + out << "etaMap: " << mu.etaMap() << "; "; + out << "phiMap: " << mu.phiMap() << "; "; + out << "etaBin: " << mu.etaBin() << "; "; + out << "phiBin: " << mu.phiBin() << "; "; + out << "isTgcFailure: " << mu.isTgcFailure() << "; "; + out << "isRpcFailure: " << mu.isRpcFailure() << "; "; + out << "deltaPhi: " << mu.deltaPhi() << "; "; + out << "deltaEta: " << mu.deltaEta() << "; "; + out << "algoId: " << mu.algoId() << "; "; + out << "teId: " << mu.teId() << "; "; + out << "lvl1Id: " << mu.lvl1Id() << "; "; + out << "lumiBlock: " << mu.lumiBlock() << "; "; + out << "muonDetMask: " << mu.muonDetMask() << "; "; + out << "roiId: " << mu.roiId() << "; "; + out << "roiSystem: " << mu.roiSystem() << "; "; + out << "roiSubsystem: " << mu.roiSubsystem() << "; "; + out << "roiSector: " << mu.roiSector() << "; "; + out << "roiNumber: " << mu.roiNumber() << "; "; + out << "roiThreshold: " << mu.roiThreshold() << "; "; + out << "roiEta: " << mu.roiEta() << "; "; + out << "roiPhi: " << mu.roiPhi() << "; "; + out << "extensionCapacity: " << mu.extensionCapacity() << "; "; + out << "robCapacity: " << mu.robCapacity() << "; "; + out << "csmCapacity: " << mu.csmCapacity() << "; "; + out << "lvl1EmuCapacity: " << mu.lvl1EmuCapacity() << "; "; + out << "rpcHitsCapacity: " << mu.rpcHitsCapacity() << "; "; + out << "tgcHitsCapacity: " << mu.tgcHitsCapacity() << "; "; + out << "mdtHitsCapacity: " << mu.mdtHitsCapacity() << "; "; + + // Return the stream: + return out; +} diff --git a/Event/xAOD/xAODTrigMuon/Root/dict/ContainerProxies.cxx b/Event/xAOD/xAODTrigMuon/Root/dict/ContainerProxies.cxx new file mode 100644 index 00000000000..5ab497a1a7f --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/Root/dict/ContainerProxies.cxx @@ -0,0 +1,18 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: ContainerProxies.cxx 604163 2014-06-30 10:30:46Z giagu $ + +// EDM include(s): +#include "xAODCore/AddDVProxy.h" + +// Local include(s): +#include "xAODTrigMuon/versions/L2StandAloneMuonContainer_v1.h" +#include "xAODTrigMuon/versions/L2IsoMuonContainer_v1.h" +#include "xAODTrigMuon/versions/L2CombinedMuonContainer_v1.h" + +// Set up the collection proxies: +ADD_NS_DV_PROXY( xAOD, L2StandAloneMuonContainer_v1 ); +ADD_NS_DV_PROXY( xAOD, L2IsoMuonContainer_v1 ); +ADD_NS_DV_PROXY( xAOD, L2CombinedMuonContainer_v1 ); diff --git a/Event/xAOD/xAODTrigMuon/cmt/Makefile.RootCore b/Event/xAOD/xAODTrigMuon/cmt/Makefile.RootCore new file mode 100644 index 00000000000..d4836e7c334 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/cmt/Makefile.RootCore @@ -0,0 +1,24 @@ +# this makefile also gets parsed by shell scripts +# therefore it does not support full make syntax and features +# edit with care + +# for full documentation check: +# https://twiki.cern.ch/twiki/bin/viewauth/Atlas/RootCore#Package_Makefile + +PACKAGE = xAODTrigMuon +PACKAGE_PRELOAD = +PACKAGE_CXXFLAGS = +PACKAGE_OBJFLAGS = +PACKAGE_LDFLAGS = +PACKAGE_BINFLAGS = +PACKAGE_LIBFLAGS = +PACKAGE_DEP = AthContainers AthLinks xAODBase xAODCore +PACKAGE_TRYDEP = +PACKAGE_CLEAN = +PACKAGE_NOGRID = +PACKAGE_PEDANTIC = 0 +PACKAGE_NOOPT = 0 +PACKAGE_NOCC = 0 +PACKAGE_REFLEX = 1 + +include $(ROOTCOREDIR)/Makefile-common diff --git a/Event/xAOD/xAODTrigMuon/cmt/requirements b/Event/xAOD/xAODTrigMuon/cmt/requirements new file mode 100644 index 00000000000..e23d71fc1ed --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/cmt/requirements @@ -0,0 +1,32 @@ +package xAODTrigMuon + +author Masaki Ishitsuka <ishitsuka@phys.titech.ac.jp> +author Stefano Giagu <stefano.giagu@cern.ch> + +public + +use AtlasPolicy AtlasPolicy-* + +use SGTools SGTools-* Control +use AthContainers AthContainers-* Control +use AthLinks AthLinks-* Control + +use xAODBase xAODBase-* Event/xAOD +use xAODCore xAODCore-* Event/xAOD +use xAODTracking xAODTracking-* Event/xAOD + +# Specify the required ROOT components for cmake (transparent to CMT) +apply_pattern cmake_add_command command="find_package(ROOT COMPONENTS Physics)" + +library xAODTrigMuon ../Root/*.cxx +apply_pattern installed_library + +private + +use AtlasReflex AtlasReflex-* External +use AtlasROOT AtlasROOT-* External +use AthLinks AthLinks-* Control + +apply_pattern lcgdict dict=xAODTrigMuon selectionfile=selection.xml \ + headerfiles="../xAODTrigMuon/xAODTrigMuonDict.h" \ + extralibfiles=../Root/dict/*.cxx diff --git a/Event/xAOD/xAODTrigMuon/doc/mainpage.h b/Event/xAOD/xAODTrigMuon/doc/mainpage.h new file mode 100644 index 00000000000..05243910431 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/doc/mainpage.h @@ -0,0 +1,13 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/** + @mainpage xAODTrigMuon Package + + Documentation to be written... + + @htmlinclude used_packages.html + + @include requirements +*/ diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuon.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuon.h new file mode 100644 index 00000000000..2f5b47b7c92 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuon.h @@ -0,0 +1,18 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// L2CombinedMuon.h giagu +#ifndef XAODTRIGMUON_L2COMBINEDMUON_H +#define XAODTRIGMUON_L2COMBINEDMUON_H + +// Local include(s): +#include "xAODTrigMuon/versions/L2CombinedMuon_v1.h" + +/// Namespace holding all the xAOD EDM classes +namespace xAOD { + /// Define the latest version of the muon CB class + typedef L2CombinedMuon_v1 L2CombinedMuon; +} + +#endif // XAODTRIGMUON_L2COMBINEDMUON_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuonAuxContainer.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuonAuxContainer.h new file mode 100644 index 00000000000..7c714ebdf25 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuonAuxContainer.h @@ -0,0 +1,17 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// L2CombinedMuonAuxContainer.h giagu +#ifndef XAODTRIGMUON_L2COMBINEDMUONAUXCONTAINER_H +#define XAODTRIGMUON_L2COMBINEDMUONAUXCONTAINER_H + +// Local include(s): +#include "xAODTrigMuon/versions/L2CombinedMuonAuxContainer_v1.h" + +namespace xAOD { + /// Define the latest version of the muon CB auxiliary container + typedef L2CombinedMuonAuxContainer_v1 L2CombinedMuonAuxContainer; +} + +#endif // XAODTRIGMUON_L2COMBINEDMUONAUXCONTAINER_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuonContainer.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuonContainer.h new file mode 100644 index 00000000000..764696a9017 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2CombinedMuonContainer.h @@ -0,0 +1,18 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// L2CombinedMuonContainer.h giagu +#ifndef XAODTRIGMUON_L2COMBINEDMUONCONTAINER_H +#define XAODTRIGMUON_L2COMBINEDMUONCONTAINER_H + +// Local include(s): +#include "xAODTrigMuon/L2CombinedMuon.h" +#include "xAODTrigMuon/versions/L2CombinedMuonContainer_v1.h" + +namespace xAOD { + /// Define the latest version of the muon CB container + typedef L2CombinedMuonContainer_v1 L2CombinedMuonContainer; +} + +#endif // XAODTRIGMUON_L2COMBINEDMUONCONTAINER_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuon.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuon.h new file mode 100644 index 00000000000..efc913576f9 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuon.h @@ -0,0 +1,18 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// L2IsoMuon.h giagu +#ifndef XAODTRIGMUON_L2ISOMUON_H +#define XAODTRIGMUON_L2ISOMUON_H + +// Local include(s): +#include "xAODTrigMuon/versions/L2IsoMuon_v1.h" + +/// Namespace holding all the xAOD EDM classes +namespace xAOD { + /// Define the latest version of the muon Iso class + typedef L2IsoMuon_v1 L2IsoMuon; +} + +#endif // XAODTRIGMUON_L2ISOMUON_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuonAuxContainer.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuonAuxContainer.h new file mode 100644 index 00000000000..e1c3fce16a5 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuonAuxContainer.h @@ -0,0 +1,17 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// L2IsoMuonAuxContainer.h giagu +#ifndef XAODTRIGMUON_L2ISOMUONAUXCONTAINER_H +#define XAODTRIGMUON_L2ISOMUONAUXCONTAINER_H + +// Local include(s): +#include "xAODTrigMuon/versions/L2IsoMuonAuxContainer_v1.h" + +namespace xAOD { + /// Define the latest version of the muon Iso auxiliary container + typedef L2IsoMuonAuxContainer_v1 L2IsoMuonAuxContainer; +} + +#endif // XAODTRIGMUON_L2ISOMUONAUXCONTAINER_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuonContainer.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuonContainer.h new file mode 100644 index 00000000000..440aae3ff2d --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2IsoMuonContainer.h @@ -0,0 +1,18 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// L2IsoMuonContainer.h giagu +#ifndef XAODTRIGMUON_L2ISOMUONCONTAINER_H +#define XAODTRIGMUON_L2ISOMUONCONTAINER_H + +// Local include(s): +#include "xAODTrigMuon/L2IsoMuon.h" +#include "xAODTrigMuon/versions/L2IsoMuonContainer_v1.h" + +namespace xAOD { + /// Define the latest version of the muon Iso container + typedef L2IsoMuonContainer_v1 L2IsoMuonContainer; +} + +#endif // XAODTRIGMUON_L2ISOMUONCONTAINER_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuon.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuon.h new file mode 100644 index 00000000000..54074e50059 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuon.h @@ -0,0 +1,20 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2StandAloneMuon.h 592605 2014-04-11 14:24:04Z krasznaa $ +#ifndef XAODTRIGMUON_L2STANDALONEMUON_H +#define XAODTRIGMUON_L2STANDALONEMUON_H + +// Local include(s): +#include "xAODTrigMuon/versions/L2StandAloneMuon_v1.h" + +/// Namespace holding all the xAOD EDM classes +namespace xAOD { + /// Define the latest version of the muon SA class + typedef L2StandAloneMuon_v1 L2StandAloneMuon; +} + +#endif // XAODTRIGMUON_L2STANDALONEMUON_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuonAuxContainer.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuonAuxContainer.h new file mode 100644 index 00000000000..0c829b4980a --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuonAuxContainer.h @@ -0,0 +1,19 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2StandAloneMuonAuxContainer.h 592605 2014-04-11 14:24:04Z krasznaa $ +#ifndef XAODTRIGMUON_L2STANDALONEMUONAUXCONTAINER_H +#define XAODTRIGMUON_L2STANDALONEMUONAUXCONTAINER_H + +// Local include(s): +#include "xAODTrigMuon/versions/L2StandAloneMuonAuxContainer_v1.h" + +namespace xAOD { + /// Define the latest version of the muon SA auxiliary container + typedef L2StandAloneMuonAuxContainer_v1 L2StandAloneMuonAuxContainer; +} + +#endif // XAODTRIGMUON_L2STANDALONEMUONAUXCONTAINER_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuonContainer.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuonContainer.h new file mode 100644 index 00000000000..c5c2395ab99 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/L2StandAloneMuonContainer.h @@ -0,0 +1,20 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2StandAloneMuonContainer.h 592605 2014-04-11 14:24:04Z krasznaa $ +#ifndef XAODTRIGMUON_L2STANDALONEMUONCONTAINER_H +#define XAODTRIGMUON_L2STANDALONEMUONCONTAINER_H + +// Local include(s): +#include "xAODTrigMuon/L2StandAloneMuon.h" +#include "xAODTrigMuon/versions/L2StandAloneMuonContainer_v1.h" + +namespace xAOD { + /// Define the latest version of the muon SA container + typedef L2StandAloneMuonContainer_v1 L2StandAloneMuonContainer; +} + +#endif // XAODTRIGMUON_L2STANDALONEMUONCONTAINER_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/TrigMuonDefs.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/TrigMuonDefs.h new file mode 100644 index 00000000000..1f8e9719479 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/TrigMuonDefs.h @@ -0,0 +1,40 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: TrigMuonDefs.h $ +#ifndef XAODTRIGMUON_TRIGMUONDEFS_H +#define XAODTRIGMUON_TRIGMUONDEFS_H + +/// Namespace holding all the xAOD EDM classes +namespace xAOD { + +namespace L2MuonParameters +{ + + /// Define chamber types and locations + enum Chamber { + BarrelInner = 0, ///< Inner station in the barrel spectrometer + BarrelMiddle = 1, ///< Middle station in the barrel spectrometer + BarrelOuter = 2, ///< Outer station in the barrel spectrometer + EndcapInner = 3, ///< Inner station in the endcap spectrometer + EndcapMiddle = 4, ///< Middle station in the endcap spectrometer + EndcapOuter = 5, ///< Outer station in the endcap spectrometer + EndcapExtra = 6, ///< Extra station in the endcap spectrometer + CSC = 7, ///< CSC measurement point + MaxChamber = 8 ///< Number of measurement point definitions + }; + + /// Define algoriths ID + enum L2MuonAlgoId{GEV900ID=0, MUONID=1, HALOID=2, COSMICID=3, + LOOSE_HM=10, MEDIUM_HM=11, TIGHT_HM=12, LOOSE_LM=13, + MEDIUM_LM=14, TIGHT_LM=15, + NULLID=99999}; + +} + +} + +#endif // XAODTRIGMUON_TRIGMUONDEFS_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/selection.xml b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/selection.xml new file mode 100644 index 00000000000..5fc7b30039c --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/selection.xml @@ -0,0 +1,89 @@ +<!-- $Id: selection.xml 604163 2014-06-30 10:30:46Z giagu $ --> +<lcgdict> + + <!-- dictionaries: --> + + <!-- L2StandAloneMuon --> + <class name="xAOD::L2StandAloneMuon_v1" > + <field name="m_p4" transient="true" /> + <field name="m_p4Cached" transient="true" /> + </class> + <read sourceClass="xAOD::L2StandAloneMuon_v1" version="[1-]" + targetClass="xAOD::L2StandAloneMuon_v1" source="" + target="m_p4Cached" > + <![CDATA[ + m_p4Cached = false; + ]]> + </read> + + <class name="xAOD::L2StandAloneMuonContainer_v1" + id="645BDBC3-44EE-486B-8783-96F93FA2550B" /> + <class name="xAOD::L2StandAloneMuonAuxContainer_v1" + id="69F56941-D2B5-4C70-BFBD-605CB64A3DB8" /> + + <class name="DataLink<xAOD::L2StandAloneMuonContainer_v1>" /> + <class name="std::vector<DataLink<xAOD::L2StandAloneMuonContainer_v1> >" /> + + <class name="ElementLink<xAOD::L2StandAloneMuonContainer_v1>" /> + <class name="std::vector<ElementLink<xAOD::L2StandAloneMuonContainer_v1> >" /> + <class name="std::vector<std::vector<ElementLink<xAOD::L2StandAloneMuonContainer_v1> > >" /> + + <!-- L2IsoMuon --> + <class name="xAOD::L2IsoMuon_v1" > + <field name="m_p4" transient="true" /> + <field name="m_p4Cached" transient="true" /> + </class> + <read sourceClass="xAOD::L2IsoMuon_v1" version="[1-]" + targetClass="xAOD::L2IsoMuon_v1" source="" + target="m_p4Cached" > + <![CDATA[ + m_p4Cached = false; + ]]> + </read> + + <class name="xAOD::L2IsoMuonContainer_v1" + id="D3AD2358-29B9-48D1-B181-89D4DA39B5CC" /> + <class name="xAOD::L2IsoMuonAuxContainer_v1" + id="09310901-41D9-49FB-A131-5AC73A9EA455" /> + + <class name="DataLink<xAOD::L2IsoMuonContainer_v1>" /> + <class name="std::vector<DataLink<xAOD::L2IsoMuonContainer_v1> >" /> + + <class name="ElementLink<xAOD::L2IsoMuonContainer_v1>" /> + <class name="std::vector<ElementLink<xAOD::L2IsoMuonContainer_v1> >" /> + <class name="std::vector<std::vector<ElementLink<xAOD::L2IsoMuonContainer_v1> > >" /> + + <!-- L2CombinedMuon --> + <class name="xAOD::L2CombinedMuon_v1" > + <field name="m_p4" transient="true" /> + <field name="m_p4Cached" transient="true" /> + </class> + <read sourceClass="xAOD::L2CombinedMuon_v1" version="[1-]" + targetClass="xAOD::L2CombinedMuon_v1" source="" + target="m_p4Cached" > + <![CDATA[ + m_p4Cached = false; + ]]> + </read> + + <class name="xAOD::L2CombinedMuonContainer_v1" + id="91ECD1FA-3B9F-4F80-BBD1-698DCC7C9477" /> + <class name="xAOD::L2CombinedMuonAuxContainer_v1" + id="0A7A1CB4-A5D3-4447-BE1A-F4DA14D5891B" /> + + <class name="DataLink<xAOD::L2CombinedMuonContainer_v1>" /> + <class name="std::vector<DataLink<xAOD::L2CombinedMuonContainer_v1> >" /> + + <class name="ElementLink<xAOD::L2CombinedMuonContainer_v1>" /> + <class name="std::vector<ElementLink<xAOD::L2CombinedMuonContainer_v1> >" /> + <class name="std::vector<std::vector<ElementLink<xAOD::L2CombinedMuonContainer_v1> > >" /> + + <!-- Suppress the unwanted classes found by ROOT 6. --> + <!-- Hopefully we can remove these extra lines at one point... --> + <exclusion> + <class name="SG::IConstAuxStore" /> + <class name="DataLink<SG::IConstAuxStore>" /> + <class name="DataVector<xAOD::IParticle>" /> + </exclusion> + +</lcgdict> diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuonAuxContainer_v1.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuonAuxContainer_v1.h new file mode 100644 index 00000000000..256c00d5cc0 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuonAuxContainer_v1.h @@ -0,0 +1,71 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2CombinedMuonAuxContainer_v1.h 605591 2014-07-09 12:07:31Z krasznaa $ +#ifndef XAODTRIGMUON_VERSIONS_L2COMBINEDMUONAUXCONTAINER_V1_H +#define XAODTRIGMUON_VERSIONS_L2COMBINEDMUONAUXCONTAINER_V1_H + +// System include(s): +#include <vector> + +// EDM include(s): +#include "AthLinks/ElementLink.h" +#include "xAODCore/AuxContainerBase.h" + +// xAOD include(s): +#include "xAODTracking/TrackParticleContainer.h" + +// Local include(s): +#include "xAODTrigMuon/L2StandAloneMuonContainer.h" + +namespace xAOD { + + /// Auxiliary container for CB muon containers + /// + /// This is a fixed implementation of the CB muon auxiliary store. + /// + /// @author Stefano Giagu <stefano.giagu@cern.ch> + /// + /// V1.0 2014-06-26 + /// + class L2CombinedMuonAuxContainer_v1 : public AuxContainerBase { + + public: + /// Default constructor + L2CombinedMuonAuxContainer_v1(); + + private: + /// @name 4-momentum variables + /// @{ + std::vector< float > pt; + std::vector< float > phi; + std::vector< float > eta; + /// @} + + /// @name L2 muon specific variables + /// @{ + std::vector< float > charge; + std::vector< int > strategy; + std::vector< int > errorFlag; + std::vector< int > matchFlag; + std::vector< float > sigmaPt; + std::vector<ElementLink< xAOD::TrackParticleContainer > > idTrackLink; + std::vector<ElementLink< xAOD::L2StandAloneMuonContainer > > muSATrackLink; + /// @} + + }; // class L2CombinedMuonAuxContainer_v1 + +} // namespace xAOD + +// Set up a CLID and StoreGate inheritance for the class: +#ifndef XAOD_STANDALONE +#include "SGTools/CLASS_DEF.h" +CLASS_DEF( xAOD::L2CombinedMuonAuxContainer_v1 , 1201627828 , 1 ) +#include "SGTools/BaseInfo.h" +SG_BASE( xAOD::L2CombinedMuonAuxContainer_v1, xAOD::AuxContainerBase ); +#endif // not XAOD_STANDALONE + +#endif // XAODTRIGMUON_VERSIONS_L2COMBINEDMUONAUXCONTAINER_V1_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuonContainer_v1.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuonContainer_v1.h new file mode 100644 index 00000000000..587fd461216 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuonContainer_v1.h @@ -0,0 +1,31 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2CombinedMuonContainer_v1.h 605591 2014-07-09 12:07:31Z krasznaa $ +#ifndef XAODTRIGMUON_VERSIONS_L2COMBINEDMUONCONTAINER_V1_H +#define XAODTRIGMUON_VERSIONS_L2COMBINEDMUONCONTAINER_V1_H + +// EDM include(s): +#include "AthContainers/DataVector.h" + +// Local include(s): +#include "xAODTrigMuon/versions/L2CombinedMuon_v1.h" + +// Declare IParticle as a base class of L2CombinedMuon_v1: +DATAVECTOR_BASE( xAOD::L2CombinedMuon_v1, xAOD::IParticle ); + +namespace xAOD { + /// Define the trigger calorimeter cluster container as a simple DataVector + typedef DataVector< L2CombinedMuon_v1 > L2CombinedMuonContainer_v1; +} + +// Set up a CLID for the container: +#ifndef XAOD_STANDALONE +#include "SGTools/CLASS_DEF.h" +CLASS_DEF( xAOD::L2CombinedMuonContainer_v1, 1201561309, 1 ) +#endif // not XAOD_STANDALONE + +#endif // XAODTRIGMUON_VERSIONS_L2COMBINEDMUONCONTAINER_V1_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuon_v1.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuon_v1.h new file mode 100644 index 00000000000..c3e92f611d9 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2CombinedMuon_v1.h @@ -0,0 +1,147 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2CombinedMuon_v1.h 605591 2014-07-09 12:07:31Z krasznaa $ +#ifndef XAODTRIGMUON_VERSIONS_L2COMBINEDMUON_V1_H +#define XAODTRIGMUON_VERSIONS_L2COMBINEDMUON_V1_H + +// System include(s): +extern "C" { +# include <stdint.h> +} +#include <iosfwd> + +// EDM include(s): +#include "AthLinks/ElementLink.h" + +// xAOD include(s): +#include "xAODBase/IParticle.h" +#include "xAODTracking/TrackParticle.h" +#include "xAODTracking/TrackParticleContainer.h" + +// Local include(s): +#include "xAODTrigMuon/L2StandAloneMuonContainer.h" + +namespace xAOD { + + /// Class describing combined muon reconstructed in the LVL2 trigger + /// + /// This is a simple description of the LVL2 CB muon + /// + /// @author Stefano Giagu <stefano.giagu@cern.ch> + /// + /// V1 2014-06-24 + /// + class L2CombinedMuon_v1 : public IParticle { + + public: + /// Constructor + L2CombinedMuon_v1(); + + /// @name Functions implementing the xAOD::IParticle interface + /// @{ + + /// The transverse momentum (\f$p_T\f$) of the particle + virtual double pt() const; + /// The pseudorapidity (\f$\eta\f$) of the particle + virtual double eta() const; + /// The azimuthal angle (\f$\phi\f$) of the particle + virtual double phi() const; + /// The invariant mass of the particle + virtual double m() const; + /// The total energy of the particle + virtual double e() const; + /// The true rapidity (y) of the particle + virtual double rapidity() const; + + /// Definition of the 4-momentum type + typedef TLorentzVector FourMom_t; + + /// The full 4-momentum of the particle + virtual const FourMom_t& p4() const; + + /// The type of the object as a simple enumeration + virtual Type::ObjectType type() const; + + /// @} + + /// @name 4-momentum setter functions + /// @{ + + /// Set the transverse momentum (\f$p_T\f$) of the muon + void setPt( float pt ); + /// Set the pseudorapidity (\f$\eta\f$) of the muon + void setEta( float eta ); + /// Set the azimuthal angle (\f$\phi\f$) of the muon + void setPhi( float phi ); + + /// @} + + /// @name Properties specific to the LVL2 CB muon + /// @{ + + /// get seeding muon charge + float charge() const; + /// set seeding muon charge + void setCharge( float value ); + + /// get algorithm strategy flag + int strategy() const; + /// set algorithm strategy flag + void setStrategy( int value ); + + /// get algorithm error flag + int errorFlag() const; + /// set algorithm error flag + void setErrorFlag( int value ); + + /// get algorithm match flag + int matchFlag() const; + /// set algorithm match flag + void setMatchFlag( int value ); + + /// get sigma combined Pt + float sigmaPt() const; + /// set sigma combined Pt + void setSigmaPt( float value ); + + /// get ID track used to make the CB muon + const ElementLink< xAOD::TrackParticleContainer >& idTrackLink() const; + /// set ID track used to make the CB muon + void setIdTrackLink(const ElementLink< xAOD::TrackParticleContainer >& link); + /// Get the ID track as a bare pointer + const xAOD::TrackParticle* idTrack() const; + + /// get SA muon used to make the CB muon + const ElementLink< xAOD::L2StandAloneMuonContainer >& muSATrackLink() const; + /// set SA muon used to make the CB muon + void setMuSATrackLink(const ElementLink< xAOD::L2StandAloneMuonContainer >& link); + /// Get the SA muon as a bare pointer + const xAOD::L2StandAloneMuon* muSATrack() const; + + /// @} + + private: + /// Cached 4-momentum of the muon + mutable FourMom_t m_p4; + /// Cached state of the internal 4-momentum object + mutable bool m_p4Cached; + + }; // class L2CombinedMuon_v1 + +} // namespace xAOD + +/// Operator for printing the contents of a LVL2 muon +std::ostream& operator<< ( std::ostream& out, + const xAOD::L2CombinedMuon_v1& mu ); + +// Set up a CLID for the object: +#ifndef XAOD_STANDALONE +#include "SGTools/CLASS_DEF.h" +CLASS_DEF( xAOD::L2CombinedMuon_v1 , 221697629 , 1 ) +#endif // not XAOD_STANDALONE + +#endif // XAODTRIGMUON_VERSIONS_L2COMBINEDMUON_V1_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuonAuxContainer_v1.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuonAuxContainer_v1.h new file mode 100644 index 00000000000..6c443c7aeee --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuonAuxContainer_v1.h @@ -0,0 +1,71 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2IsoMuonAuxContainer_v1.h 605591 2014-07-09 12:07:31Z krasznaa $ +#ifndef XAODTRIGMUON_VERSIONS_L2ISOMUONAUXCONTAINER_V1_H +#define XAODTRIGMUON_VERSIONS_L2ISOMUONAUXCONTAINER_V1_H + +// System include(s): +extern "C" { +# include <stdint.h> +} +#include <vector> + +// EDM include(s): +#include "xAODCore/AuxContainerBase.h" + +namespace xAOD { + + /// Auxiliary container for muon iso containers + /// + /// This is a fixed implementation of the muon iso auxiliary store. + /// + /// @author Stefano Giagu <stefano.giagu@cern.ch> + /// + /// V1.0 2014-06-26 + /// + class L2IsoMuonAuxContainer_v1 : public AuxContainerBase { + + public: + /// Default constructor + L2IsoMuonAuxContainer_v1(); + + private: + /// @name 4-momentum variables + /// @{ + std::vector< float > pt; + std::vector< float > phi; + std::vector< float > eta; + /// @} + + /// @name L2 muon specific variables + /// @{ + std::vector< uint32_t > roiWord; + std::vector< float > charge; + std::vector< int > errorFlag; + std::vector< float > sumPt01; + std::vector< float > sumPt02; + std::vector< float > sumPt03; + std::vector< float > sumPt04; + std::vector< float > sumEt01; + std::vector< float > sumEt02; + std::vector< float > sumEt03; + std::vector< float > sumEt04; + /// @} + + }; // class L2IsoMuonAuxContainer_v1 + +} // namespace xAOD + +// Set up a CLID and StoreGate inheritance for the class: +#ifndef XAOD_STANDALONE +#include "SGTools/CLASS_DEF.h" +CLASS_DEF( xAOD::L2IsoMuonAuxContainer_v1, 1128059587, 1 ) +#include "SGTools/BaseInfo.h" +SG_BASE( xAOD::L2IsoMuonAuxContainer_v1, xAOD::AuxContainerBase ); +#endif // not XAOD_STANDALONE + +#endif // XAODTRIGMUON_VERSIONS_L2ISOMUONAUXCONTAINER_V1_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuonContainer_v1.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuonContainer_v1.h new file mode 100644 index 00000000000..98ab7bc8fb3 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuonContainer_v1.h @@ -0,0 +1,31 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2IsoMuonContainer_v1.h 605591 2014-07-09 12:07:31Z krasznaa $ +#ifndef XAODTRIGMUON_VERSIONS_L2ISOMUONCONTAINER_V1_H +#define XAODTRIGMUON_VERSIONS_L2ISOMUONCONTAINER_V1_H + +// EDM include(s): +#include "AthContainers/DataVector.h" + +// Local include(s): +#include "xAODTrigMuon/versions/L2IsoMuon_v1.h" + +// Declare IParticle as a base class of L2IsoMuon_v1: +DATAVECTOR_BASE( xAOD::L2IsoMuon_v1, xAOD::IParticle ); + +namespace xAOD { + /// Define the trigger calorimeter cluster container as a simple DataVector + typedef DataVector< L2IsoMuon_v1 > L2IsoMuonContainer_v1; +} + +// Set up a CLID for the container: +#ifndef XAOD_STANDALONE +#include "SGTools/CLASS_DEF.h" +CLASS_DEF( xAOD::L2IsoMuonContainer_v1, 1103714444, 1 ) +#endif // not XAOD_STANDALONE + +#endif // XAODTRIGMUON_VERSIONS_L2ISOMUONCONTAINER_V1_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuon_v1.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuon_v1.h new file mode 100644 index 00000000000..b95e69c3add --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2IsoMuon_v1.h @@ -0,0 +1,155 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2IsoMuon_v1.h 605591 2014-07-09 12:07:31Z krasznaa $ +#ifndef XAODTRIGMUON_VERSIONS_L2ISOMUON_V1_H +#define XAODTRIGMUON_VERSIONS_L2ISOMUON_V1_H + +// System include(s): +extern "C" { +# include <stdint.h> +} +#include <iosfwd> + +// xAOD include(s): +#include "xAODBase/IParticle.h" + +namespace xAOD { + + /// Class describing isolation info for muons reconstructed in the LVL2 trigger + /// + /// This is a simple description of the LVL2 isolation for muons. + /// + /// @author Stefano Giagu <stefano.giagu@cern.ch> + /// + /// V1 2014-06-24 + /// + class L2IsoMuon_v1 : public IParticle { + + public: + /// Constructor + L2IsoMuon_v1(); + + /// @name Functions implementing the xAOD::IParticle interface + /// @{ + + /// The transverse momentum (\f$p_T\f$) of the particle + virtual double pt() const; + /// The pseudorapidity (\f$\eta\f$) of the particle + virtual double eta() const; + /// The azimuthal angle (\f$\phi\f$) of the particle + virtual double phi() const; + /// The invariant mass of the particle + virtual double m() const; + /// The total energy of the particle + virtual double e() const; + /// The true rapidity (y) of the particle + virtual double rapidity() const; + + /// Definition of the 4-momentum type + typedef TLorentzVector FourMom_t; + + /// The full 4-momentum of the particle + virtual const FourMom_t& p4() const; + + /// The type of the object as a simple enumeration + virtual Type::ObjectType type() const; + + /// @} + + /// @name 4-momentum setter functions + /// @{ + + /// Set the transverse momentum (\f$p_T\f$) of the muon + void setPt( float pt ); + /// Set the pseudorapidity (\f$\eta\f$) of the muon + void setEta( float eta ); + /// Set the azimuthal angle (\f$\phi\f$) of the muon + void setPhi( float phi ); + + /// @} + + /// @name Properties specific to the LVL2 muon isolation + /// @{ + + /// Get the RoI ID of the seeding muon + uint32_t roiWord() const; + /// Set the RoI ID of the seeding muon + void setRoiWord( uint32_t value ); + + /// get seeding muon charge + float charge() const; + /// set seeding muon charge + void setCharge( float value ); + + /// get algorithm error flag + int errorFlag() const; + /// set algorithm error flag + void setErrorFlag( int value ); + + /// get ptcone radius DeltaR<0.1 + float sumPt01() const; + /// set ptcone radius DeltaR<0.1 + void setSumPt01( float value ); + + /// get ptcone radius DeltaR<0.2 + float sumPt02() const; + /// set ptcone radius DeltaR<0.2 + void setSumPt02( float value ); + + /// get ptcone radius DeltaR<0.3 + float sumPt03() const; + /// set ptcone radius DeltaR<0.3 + void setSumPt03( float value ); + + /// get ptcone radius DeltaR<0.4 + float sumPt04() const; + /// set ptcone radius DeltaR<0.4 + void setSumPt04( float value ); + + /// get ptcone radius DeltaR<0.1 + float sumEt01() const; + /// set ptcone radius DeltaR<0.1 + void setSumEt01( float value ); + + /// get etcone radius DeltaR<0.2 + float sumEt02() const; + /// set etcone radius DeltaR<0.2 + void setSumEt02( float value ); + + /// get etcone radius DeltaR<0.3 + float sumEt03() const; + /// set etcone radius DeltaR<0.3 + void setSumEt03( float value ); + + /// get etcone radius DeltaR<0.4 + float sumEt04() const; + /// set etcone radius DeltaR<0.4 + void setSumEt04( float value ); + + /// @} + + private: + /// Cached 4-momentum of the muon + mutable FourMom_t m_p4; + /// Cached state of the internal 4-momentum object + mutable bool m_p4Cached; + + }; // class L2IsoMuon_v1 + +} // namespace xAOD + +/// Operator for printing the contents of a LVL2 muon +std::ostream& operator<< ( std::ostream& out, + const xAOD::L2IsoMuon_v1& mu ); + +// Set up a CLID for the object: +#ifndef XAOD_STANDALONE +#include "SGTools/CLASS_DEF.h" +CLASS_DEF( xAOD::L2IsoMuon_v1, 249627886, 1 ) +#endif // not XAOD_STANDALONE + +#endif // XAODTRIGMUON_VERSIONS_L2ISOMUON_V1_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuonAuxContainer_v1.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuonAuxContainer_v1.h new file mode 100644 index 00000000000..c5ae1d60751 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuonAuxContainer_v1.h @@ -0,0 +1,270 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2StandAloneMuonAuxContainer_v1.h 613775 2014-08-28 07:56:49Z mishitsu $ +#ifndef XAODTRIGMUON_VERSIONS_L2STANDALONEMUONAUXCONTAINER_V1_H +#define XAODTRIGMUON_VERSIONS_L2STANDALONEMUONAUXCONTAINER_V1_H + +// System include(s): +extern "C" { +# include <stdint.h> +} +#include <vector> + +// EDM include(s): +#include "xAODCore/AuxContainerBase.h" + +namespace xAOD { + + /// Auxiliary container for muon SA containers + /// + /// This is a fixed implementation of the muon SA auxiliary store. + /// Defining every possible property that muon SA can have. + /// + /// @author Masaki Ishitsuka <ishitsuka@phys.titech.ac.jp> + /// + /// $Revsision$ + /// $Date: 2014-08-28 09:56:49 +0200 (Thu, 28 Aug 2014) $ + /// + class L2StandAloneMuonAuxContainer_v1 : public AuxContainerBase { + + public: + /// Default constructor + L2StandAloneMuonAuxContainer_v1(); + + private: + /// @name 4-momentum variables + /// @{ + std::vector< float > pt; + std::vector< float > phi; + std::vector< float > eta; + /// @} + + /// @name L2 muon specific variables + /// @{ + /// Outputs of L2 muon standalone algorithm + std::vector< uint32_t > roiWord; + std::vector< int > sAddress; + /// Position at MS + std::vector< float > rMS; + std::vector< float > etaMS; + std::vector< float > phiMS; + std::vector< float > dirPhiMS; + std::vector< float > zMS; + std::vector< float > dirZMS; + std::vector< float > beta; + /// Input measurements to be converted to pT by LUT + std::vector< float > barrelRadius; + std::vector< float > barrelSagitta; + std::vector< float > endcapAlpha; + std::vector< float > endcapBeta; + std::vector< float > endcapRadius; + /// Slope and intercept at inner + std::vector< float > slopeInner; + std::vector< float > interceptInner; + std::vector< float > deltaR; + + /// eta, phi as input to LUT + std::vector< float > etaMap; + std::vector< float > phiMap; + std::vector< int > etaBin; + std::vector< int > phiBin; + /// Flag for RGC and RPC availabilities + std::vector< int > isTgcFailure; + std::vector< int > isRpcFailure; + /// Error of eta and phi + std::vector< float > deltaEta; + std::vector< float > deltaPhi; + + /// Station fit results (superpoints) + std::vector< std::vector< float > > superPointR; + std::vector< std::vector< float > > superPointZ; + std::vector< std::vector< float > > superPointSlope; + std::vector< std::vector< float > > superPointIntercept; + std::vector< std::vector< float > > superPointChi2; + + /// Detailed information + std::vector< int > algoId; + std::vector< uint32_t > teId; + std::vector< uint32_t > lvl1Id; + std::vector< uint32_t > lumiBlock; + std::vector< uint32_t > muonDetMask; + std::vector< uint32_t > roiId; + std::vector< uint32_t > roiSystem; + std::vector< uint32_t > roiSubsystem; + std::vector< uint32_t > roiSector; + std::vector< uint32_t > roiNumber; + std::vector< uint32_t > roiThreshold; + std::vector< uint32_t > roiEta; + std::vector< uint32_t > roiPhi; + + /// pT from different algorithms + std::vector< float > ptBarelRadius; + std::vector< float > ptBarelSagitta; + std::vector< float > ptEndcapAlpha; + std::vector< float > ptEndcapBeta; + std::vector< float > ptEndcapRadius; + + /// Road information + /// Chamber type + std::vector< std::vector< int > > chamberType1Normal; + std::vector< std::vector< int > > chamberType1Overlap; + std::vector< std::vector< int > > chamberType2Normal; + std::vector< std::vector< int > > chamberType2Overlap; + /// Slope + std::vector< std::vector< float > > roadAwNormal; + std::vector< std::vector< float > > roadAwOverlap; + /// Intercept + std::vector< std::vector< float > > roadBwNormal; + std::vector< std::vector< float > > roadBwOverlap; + /// Z + std::vector< std::vector< float > > zMinNormal; + std::vector< std::vector< float > > zMinOverlap; + std::vector< std::vector< float > > zMaxNormal; + std::vector< std::vector< float > > zMaxOverlap; + /// R + std::vector< std::vector< float > > rMinNormal; + std::vector< std::vector< float > > rMinOverlap; + std::vector< std::vector< float > > rMaxNormal; + std::vector< std::vector< float > > rMaxOverlap; + /// Eta + std::vector< std::vector< float > > etaMinNormal; + std::vector< std::vector< float > > etaMinOverlap; + std::vector< std::vector< float > > etaMaxNormal; + std::vector< std::vector< float > > etaMaxOverlap; + + /// TGC fit results + std::vector< float > tgcPt; + + std::vector< float > tgcInnEta; + std::vector< float > tgcInnPhi; + std::vector< float > tgcInnR; + std::vector< float > tgcInnZ; + + std::vector< float > tgcMid1Eta; + std::vector< float > tgcMid1Phi; + std::vector< float > tgcMid1R; + std::vector< float > tgcMid1Z; + + std::vector< float > tgcMid2Eta; + std::vector< float > tgcMid2Phi; + std::vector< float > tgcMid2R; + std::vector< float > tgcMid2Z; + + std::vector< float > tgcInnRhoStd; + std::vector< long > tgcInnRhoN; + std::vector< float > tgcInnPhiStd; + std::vector< long > tgcInnPhiN; + + std::vector< float > tgcMidRhoChi2; + std::vector< long > tgcMidRhoN; + std::vector< float > tgcMidPhiChi2; + std::vector< long > tgcMidPhiN; + + /// RPC fit results + std::vector< float > rpc1x; + std::vector< float > rpc1y; + std::vector< float > rpc1z; + + std::vector< float > rpc2x; + std::vector< float > rpc2y; + std::vector< float > rpc2z; + + std::vector< float > rpc3x; + std::vector< float > rpc3y; + std::vector< float > rpc3z; + + /// Size of hit strages + std::vector< int > extensionCapacity; + std::vector< int > robCapacity; + std::vector< int > csmCapacity; + std::vector< int > lvl1EmuCapacity; + std::vector< int > rpcHitsCapacity; + std::vector< int > tgcHitsCapacity; + std::vector< int > mdtHitsCapacity; + + /// Extensions + std::vector< std::vector< uint32_t > > extension0; + std::vector< std::vector< uint32_t > > extension1; + std::vector< std::vector< uint32_t > > extension2; + std::vector< std::vector< uint32_t > > extension3; + std::vector< std::vector< uint32_t > > extension4; + std::vector< std::vector< uint32_t > > extension5; + std::vector< std::vector< uint32_t > > extension6; + std::vector< std::vector< uint32_t > > extension7; + std::vector< std::vector< uint32_t > > extension8; + std::vector< std::vector< uint32_t > > extension9; + + /// Level 1 emulation info + std::vector< std::vector< uint32_t > > lvl1Emulation; + + /// ROB info + std::vector< std::vector< uint32_t > > robId; + std::vector< std::vector< uint32_t > > removedRobId; + + /// CSM info + std::vector< std::vector< uint32_t > > csmId; + std::vector< std::vector< uint32_t > > csmSize; + std::vector< std::vector< uint32_t > > csmError; + std::vector< std::vector< uint32_t > > removedCsmId; + + /// RPC pad hits + std::vector< std::vector< uint32_t > > padHitOnlineId; + std::vector< std::vector< uint32_t > > padHitCode; + std::vector< std::vector< float > > padHitX; + std::vector< std::vector< float > > padHitY; + std::vector< std::vector< float > > padHitZ; + std::vector< std::vector< float > > padHitR; + std::vector< std::vector< float > > padHitP; + + /// TGC hits + std::vector< std::vector< float > > tgcInnRhoHitPhi; + std::vector< std::vector< float > > tgcInnRhoHitR; + std::vector< std::vector< float > > tgcInnRhoHitZ; + std::vector< std::vector< float > > tgcInnRhoHitWidth; + std::vector< std::vector< uint32_t > > tgcInnRhoHitInSeg; + std::vector< std::vector< float > > tgcInnPhiHitPhi; + std::vector< std::vector< float > > tgcInnPhiHitR; + std::vector< std::vector< float > > tgcInnPhiHitZ; + std::vector< std::vector< float > > tgcInnPhiHitWidth; + std::vector< std::vector< uint32_t > > tgcInnPhiHitInSeg; + std::vector< std::vector< float > > tgcMidRhoHitPhi; + std::vector< std::vector< float > > tgcMidRhoHitR; + std::vector< std::vector< float > > tgcMidRhoHitZ; + std::vector< std::vector< float > > tgcMidRhoHitWidth; + std::vector< std::vector< uint32_t > > tgcMidRhoHitInSeg; + std::vector< std::vector< float > > tgcMidPhiHitPhi; + std::vector< std::vector< float > > tgcMidPhiHitR; + std::vector< std::vector< float > > tgcMidPhiHitZ; + std::vector< std::vector< float > > tgcMidPhiHitWidth; + std::vector< std::vector< uint32_t > > tgcMidPhiHitInEeg; + + /// MDT hits + std::vector< std::vector< uint32_t > > mdtHitOnlineId; + std::vector< std::vector< uint32_t > > mdtHitOfflineId; + std::vector< std::vector< uint32_t > > mdtHitChamber; + std::vector< std::vector< float > > mdtHitR; + std::vector< std::vector< float > > mdtHitZ; + std::vector< std::vector< float > > mdtHitResidual; + std::vector< std::vector< float > > mdtHitTime; + std::vector< std::vector< float > > mdtHitSpace; + std::vector< std::vector< float > > mdtHitSigma; + + /// @} + + }; // class L2StandAloneMuonAuxContainer_v1 + +} // namespace xAOD + +// Set up a CLID and StoreGate inheritance for the class: +#ifndef XAOD_STANDALONE +#include "SGTools/CLASS_DEF.h" +CLASS_DEF( xAOD::L2StandAloneMuonAuxContainer_v1, 1207804085, 1 ) +#include "SGTools/BaseInfo.h" +SG_BASE( xAOD::L2StandAloneMuonAuxContainer_v1, xAOD::AuxContainerBase ); +#endif // not XAOD_STANDALONE + +#endif // XAODTRIGMUON_VERSIONS_L2STANDALONEMUONAUXCONTAINER_V1_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuonContainer_v1.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuonContainer_v1.h new file mode 100644 index 00000000000..b338496cc53 --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuonContainer_v1.h @@ -0,0 +1,31 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2StandAloneMuonContainer_v1.h 592605 2014-04-11 14:24:04Z krasznaa $ +#ifndef XAODTRIGMUON_VERSIONS_L2STANDALONEMUONCONTAINER_V1_H +#define XAODTRIGMUON_VERSIONS_L2STANDALONEMUONCONTAINER_V1_H + +// EDM include(s): +#include "AthContainers/DataVector.h" + +// Local include(s): +#include "xAODTrigMuon/versions/L2StandAloneMuon_v1.h" + +// Declare IParticle as a base class of L2StandAloneMuon_v1: +DATAVECTOR_BASE( xAOD::L2StandAloneMuon_v1, xAOD::IParticle ); + +namespace xAOD { + /// Define the trigger calorimeter cluster container as a simple DataVector + typedef DataVector< L2StandAloneMuon_v1 > L2StandAloneMuonContainer_v1; +} + +// Set up a CLID for the container: +#ifndef XAOD_STANDALONE +#include "SGTools/CLASS_DEF.h" +CLASS_DEF( xAOD::L2StandAloneMuonContainer_v1, 1307619630, 1 ) +#endif // not XAOD_STANDALONE + +#endif // XAODTRIGMUON_VERSIONS_L2STANDALONEMUONCONTAINER_V1_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuon_v1.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuon_v1.h new file mode 100644 index 00000000000..b8d655981cf --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/versions/L2StandAloneMuon_v1.h @@ -0,0 +1,515 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: L2StandAloneMuon_v1.h 615851 2014-09-10 07:56:31Z mishitsu $ +#ifndef XAODTRIGMUON_VERSIONS_L2STANDALONEMUON_V1_H +#define XAODTRIGMUON_VERSIONS_L2STANDALONEMUON_V1_H + +// System include(s): +extern "C" { +# include <stdint.h> +} +#include <iosfwd> + +// xAOD include(s): +#include "xAODBase/IParticle.h" + +namespace xAOD { + + /// Class describing standalone muons reconstructed in the LVL2 trigger + /// + /// This is a simple description of the LVL2 standalone muons, which need + /// much fewer properties than EF or offline muons. + /// + /// @author Masaki Ishitsuka <ishitsuka@phys.titech.ac.jp> + /// @author Attila Krasznahorkay <Attila.Krasznahorkay@cern.ch> + /// + /// $Revision: 615851 $ + /// $Date: 2014-09-10 09:56:31 +0200 (Wed, 10 Sep 2014) $ + /// + class L2StandAloneMuon_v1 : public IParticle { + + public: + /// Constructor + L2StandAloneMuon_v1(); + + /// @name Functions implementing the xAOD::IParticle interface + /// @{ + + /// The transverse momentum (\f$p_T\f$) of the particle + virtual double pt() const; + /// The pseudorapidity (\f$\eta\f$) of the particle + virtual double eta() const; + /// The azimuthal angle (\f$\phi\f$) of the particle + virtual double phi() const; + /// The invariant mass of the particle + virtual double m() const; + /// The total energy of the particle + virtual double e() const; + /// The true rapidity (y) of the particle + virtual double rapidity() const; + + /// Definition of the 4-momentum type + typedef TLorentzVector FourMom_t; + + /// The full 4-momentum of the particle + virtual const FourMom_t& p4() const; + + /// The type of the object as a simple enumeration + virtual Type::ObjectType type() const; + + /// @} + + /// @name 4-momentum setter functions + /// @{ + + /// Set the transverse momentum (\f$p_T\f$) of the muon + void setPt( float pt ); + /// Set the pseudorapidity (\f$\eta\f$) of the muon + void setEta( float eta ); + /// Set the azimuthal angle (\f$\phi\f$) of the muon + void setPhi( float phi ); + + /// @} + + /// @name Properties specific to the LVL2 muon reconstruction + /// @{ + + /// Get the RoI ID of the seeding LVL1 muon + uint32_t roiWord() const; + /// Set the RoI ID of the seeding LVL1 muon + void setRoIWord( uint32_t value ); + + /// Get the station address of the muon + int sAddress() const; + /// Set the station address of the muon + void setSAddress( int value ); + + /// Get the eta at muon spectrometer + float etaMS() const; + /// Set the eta at muon spectrometer + void setEtaMS( float value ); + + /// Get the phi at muon spectrometer + float phiMS() const; + /// Set the phi at muon spectrometer + void setPhiMS( float value ); + + /// Get tan phi at muon spectrometer + float dirPhiMS() const; + /// Set tan phi at muon spectrometer + void setDirPhiMS( float value ); + + /// Get the R at muon spectrometer + float rMS() const; + /// Set the R at muon spectrometer + void setRMS( float value ); + + /// Get the Z at muon spectrometer + float zMS() const; + /// Set the Z at muon spectrometer + void setZMS( float value ); + + /// Get dRdZ at muon spectrometer + float dirZMS() const; + /// Set dRdZ at muon spectrometer + void setDirZMS( float value ); + + /// Get beta + float beta() const; + /// Set beta + void setBeta( float value ); + + /// Get the fitted radius of the muon in the barrel + float barrelRadius() const; + /// Set the fitted radius of the muon in the barrel + void setBarrelRadius( float value ); + + /// Get the fitted sagitta of the muon in the barrel + float barrelSagitta() const; + /// Set the fitted sagitta of the muon in the barrel + void setBarrelSagitta( float value ); + + /// Get the fitted \f$\alpha\f$ value in the endcap + float endcapAlpha() const; + /// Set the fitted \f$\alpha\f$ value in the endcap + void setEndcapAlpha( float value ); + + /// Get the fitted \f$\beta\f$ value in the endcap + float endcapBeta() const; + /// Set the fitted \f$\beta\f$ value in the endcap + void setEndcapBeta( float value ); + + /// Get the fitted radius of the muon in the endcap + float endcapRadius() const; + /// Set the fitted radius of the muon in the endcap + void setEndcapRadius( float value ); + + /// Get the slope at inner + float slopeInner() const; + /// Set the slope at endcap + void setSlopeInner( float value ); + + /// Get the intercept at inner + float interceptInner() const; + /// Set the intercept at endcap + void setInterceptInner( float value ); + + /// Get deltaR + float deltaR() const; + /// Set deltaR + void setDeltaR( float value ); + + /// Get eta used to refer pT LUT + float etaMap() const; + /// Set eta used to refer pT LUT + void setEtaMap( float value ); + + /// Get phi used to refer pT LUT + float phiMap() const; + /// Set phi used to refer pT LUT + void setPhiMap( float value ); + + /// Get eta bin of pT LUT + int etaBin() const; + /// Set eta bin of pT LUT + void setEtaBin( int value ); + + /// Get phi bin of pT LUT + int phiBin() const; + /// Set phi bin of pT LUT + void setPhiBin( int value ); + + /// Get flag to see if TGC is properly read + int isTgcFailure() const; + /// Set flag to record if TGC is properly read + void setIsTgcFailure( int value ); + + /// Get flag to see if RPC is properly read + int isRpcFailure() const; + /// Set flag to record if RPC is properly read + void setIsRpcFailure( int value ); + + /// Get error of eta + float deltaEta() const; + /// Set error of eta + void setDeltaEta( float value ); + + /// Get error of phi + float deltaPhi() const; + /// Set error of phi + void setDeltaPhi( float value ); + + /// Get the measured radious of the muon in one particular super point + float superPointR( int chamber ) const; + /// Get the measured Z position of the muon in one particular super point + float superPointZ( int chamber ) const; + /// Get the measured slope of the muon in one particular super point + float superPointSlope( int chamber ) const; + /// Get the measured intercept of the muon in one particular super point + float superPointIntercept( int chamber ) const; + /// Get the chi2 of the fit in one particular super point + float superPointChi2( int chamber ) const; + /// Set the properties of one particular super point measurement + void setSuperPoint( int chamber, float r, float z, float slope, float intercept=0., float chi2=0. ); + + /// Get and set L2 muon algorithm ID (defined above) + int algoId() const; + void setAlgoId( int value); + + /// Get and set input TE ID + uint32_t teId() const; + void setTeId( uint32_t value); + + /// Get and set extended level-1 ID + uint32_t lvl1Id() const; + void setLvl1Id( uint32_t value ); + + /// Get and set lumi block + uint32_t lumiBlock() const; + void setLumiBlock( uint32_t value ); + + /// Get and set detector mask + uint32_t muonDetMask() const; + void setMuonDetMask( uint32_t value ); + + /// Get and set RoI ID + uint32_t roiId() const; + void setRoiId( uint32_t value ); + + /// Get and set RoI system ID + uint32_t roiSystem() const; + void setRoiSystem(uint32_t value); + + /// Get and set RoI subsystem ID + uint32_t roiSubsystem() const; + void setRoiSubsystem(uint32_t value); + + /// Get and set RoI sector ID + uint32_t roiSector() const; + void setRoiSector( uint32_t value ); + + /// Get and set RoI number + uint32_t roiNumber() const; + void setRoiNumber( uint32_t value ); + + /// Get and set RoI threshold number + uint32_t roiThreshold() const; + void setRoiThreshold( uint32_t value ); + + /// Get and set RoI eta + uint32_t roiEta() const; + void setRoiEta( uint32_t value ); + + /// Get and set RoI phi + uint32_t roiPhi() const; + void setRoiPhi( uint32_t value ); + + /// Set and get pT from different algorithms + float ptBarelRadius() const; + void setPtBarelRadius( float value ); + + float ptBarelSagitta() const; + void setPtBarelSagitta( float value ); + + float ptEndcapAlpha() const; + void setPtEndcapAlpha( float value ); + + float ptEndcapBeta() const; + void setPtEndcapBeta( float value ); + + float ptEndcapRadius() const; + void setPtEndcapRadius( float value ); + + /// Get the muon road information + /// Chamber type + int chamberType1( int station, int sector ) const; + int chamberType2( int station, int sector ) const; + /// Slope + float roadAw( int station, int sector ) const; + /// Intercept + float roadBw( int station, int sector ) const; + /// Z + float zMin( int station, int sector ) const; + float zMax( int station, int sector ) const; + /// R + float rMin( int station, int sector ) const; + float rMax( int station, int sector ) const; + /// Eta + float etaMin( int station, int sector ) const; + float etaMax( int station, int sector ) const; + + /// Set the muon road information + void setChamberType1( int station, int sector, int chamberType); + void setChamberType2( int station, int sector, int chamberType); + void setRoad( int station, int sector, float aw, float bw ); + void setRegionZ( int station, int sector, float min, float max ); + void setRegionR( int station, int sector, float min, float max ); + void setRegionEta( int station, int sector, float min, float max ); + + /// Get the results of TGC fit + float tgcPt() const; + + float tgcInnEta() const; + float tgcInnPhi() const; + float tgcInnR() const; + float tgcInnZ() const; + + float tgcInnRhoStd() const; + long tgcInnRhoN() const; + float tgcInnPhiStd() const; + long tgcInnPhiN() const; + + float tgcMid1Eta() const; + float tgcMid1Phi() const; + float tgcMid1R() const; + float tgcMid1Z() const; + + float tgcMid2Eta() const; + float tgcMid2Phi() const; + float tgcMid2R() const; + float tgcMid2Z() const; + + float tgcMidRhoChi2() const; + long tgcMidRhoN() const; + float tgcMidPhiChi2() const; + long tgcMidPhiN() const; + + /// Set the results of TGC fit + void setTgcPt( float value ); + + void setTgcInn( float eta, float phi, float r, float z ); + void setTgcInnF( float rhoStd, long rhoN, float phiStd, long phiN ); + void setTgcMid1( float eta, float phi, float r, float z ); + void setTgcMid2( float eta, float phi, float r, float z ); + void setTgcMidF( float rhoChi2, long rhoN, float phiChi2, long phiN ); + + /// Get the results of RPC fit + float rpc1x() const; + float rpc1y() const; + float rpc1z() const; + + float rpc2x() const; + float rpc2y() const; + float rpc2z() const; + + float rpc3x() const; + float rpc3y() const; + float rpc3z() const; + + /// Set the results of RPC fit + void setRpc1( float x, float y, float z ); + void setRpc2( float x, float y, float z ); + void setRpc3( float x, float y, float z ); + + /// Get and set maximum size of storages to be reserved + int extensionCapacity() const; + void setExtensionCapacity( int value ); + + int robCapacity() const; + void setRobCapacity( int value ); + + int csmCapacity() const; + void setCsmCapacity( int value ); + + int lvl1EmuCapacity() const; + void setLvl1EmuCapacity( int value ); + + int rpcHitsCapacity() const; + void setRpcHitsCapacity( int value ); + + int tgcHitsCapacity() const; + void setTgcHitsCapacity( int value ); + + int mdtHitsCapacity() const; + void setMdtHitsCapacity( int value ); + + void setCapacities( int ext, int rob, int csm, int lvl1, int rpc, int tgc, int mdt ); + + /// Get extenstion + const std::vector< uint32_t >& extension0() const; + const std::vector< uint32_t >& extension1() const; + const std::vector< uint32_t >& extension2() const; + const std::vector< uint32_t >& extension3() const; + const std::vector< uint32_t >& extension4() const; + const std::vector< uint32_t >& extension5() const; + const std::vector< uint32_t >& extension6() const; + const std::vector< uint32_t >& extension7() const; + const std::vector< uint32_t >& extension8() const; + const std::vector< uint32_t >& extension9() const; + /// Set extenstion + void setExtension0( uint32_t value ); + void setExtension1( uint32_t value ); + void setExtension2( uint32_t value ); + void setExtension3( uint32_t value ); + void setExtension4( uint32_t value ); + void setExtension5( uint32_t value ); + void setExtension6( uint32_t value ); + void setExtension7( uint32_t value ); + void setExtension8( uint32_t value ); + void setExtension9( uint32_t value ); + + /// Level 1 emulation info + const std::vector< uint32_t >& lvl1Emulation() const; + void setEtaPivot(uint32_t ly0, uint32_t ly1 ); + void setEtaLow( uint32_t ly00, uint32_t ly01, uint32_t ly10, uint32_t ly11 ); + void setEtaHigh( uint32_t ly00, uint32_t ly01, uint32_t ly10, uint32_t ly11 ); + void setPhiPivot (uint32_t ly0, uint32_t ly1 ); + void setPhiLow( uint32_t ly00, uint32_t ly01, uint32_t ly10, uint32_t ly11 ); + void setPhiHigh( uint32_t ly00, uint32_t ly01, uint32_t ly10, uint32_t ly11 ); + + /// ROB info + const std::vector< uint32_t >& robId() const; + const std::vector< uint32_t >& removedRobId() const; + void setRequestedRob( uint32_t rob ); + void setRemovedRob( uint32_t rob ); + + /// CSM info + const std::vector< uint32_t >& csmId() const; + const std::vector< uint32_t >& csmSize() const; + const std::vector< uint32_t >& csmError() const; + const std::vector< uint32_t >& removedCsmId() const; + void setConvertedCsm( uint32_t csm, uint32_t sz ); + void setCsmError( uint32_t err ); + void setRemovedCsm( uint32_t csm ); + + /// Get RPC pad hits + const std::vector< uint32_t >& padHitOnlineId() const; + const std::vector< uint32_t >& padHitCode() const; + const std::vector< float >& padHitX() const; + const std::vector< float >& padHitY() const; + const std::vector< float >& padHitZ() const; + const std::vector< float >& padHitR() const; + const std::vector< float >& padHitP() const; + /// Set RPC pad hits + void setPadHit(uint32_t onlineId, uint32_t code, float x, float y, float z, + float r, float p); + + /// Get TGC hits + const std::vector< float >& tgcInnRhoHitPhi() const; + const std::vector< float >& tgcInnRhoHitR() const; + const std::vector< float >& tgcInnRhoHitZ() const; + const std::vector< float >& tgcInnRhoHitWidth() const; + const std::vector< uint32_t >& tgcInnRhoHitInSeg() const; + const std::vector< float >& tgcInnPhiHitPhi() const; + const std::vector< float >& tgcInnPhiHitR() const; + const std::vector< float >& tgcInnPhiHitZ() const; + const std::vector< float >& tgcInnPhiHitWidth() const; + const std::vector< uint32_t >& tgcInnPhiHitInSeg() const; + const std::vector< float >& tgcMidRhoHitPhi() const; + const std::vector< float >& tgcMidRhoHitR() const; + const std::vector< float >& tgcMidRhoHitZ() const; + const std::vector< float >& tgcMidRhoHitWidth() const; + const std::vector< uint32_t >& tgcMidRhoHitInSeg() const; + const std::vector< float >& tgcMidPhiHitPhi() const; + const std::vector< float >& tgcMidPhiHitR() const; + const std::vector< float >& tgcMidPhiHitZ() const; + const std::vector< float >& tgcMidPhiHitWidth() const; + const std::vector< uint32_t >& tgcMidPhiHitInEeg() const; + /// Set TGC hits + void setTgcInnRhoHit( float phi, float r, float z, float width, uint32_t in_seg ); + void setTgcInnPhiHit( float phi, float r, float z, float width, uint32_t in_seg ); + void setTgcMidRhoHit( float phi, float r, float z, float width, uint32_t in_seg ); + void setTgcMidPhiHit( float phi, float r, float z, float width, uint32_t in_seg ); + + /// Get the online ID, offline ID, R, Z, redidual, time, space and sigma of each MDT tube + uint32_t nMdtHits() const; + uint32_t mdtHitOnlineId( unsigned int tube ) const; + uint32_t mdtHitOfflineId( unsigned int tube ) const; + int mdtHitChamber( unsigned int tube ) const; + float mdtHitR( unsigned int tube ) const; + float mdtHitZ( unsigned int tube ) const; + float mdtHitResidual( unsigned int tube ) const; + float mdtHitTime( unsigned int tube ) const; + float mdtHitSpace( unsigned int tube ) const; + float mdtHitSigma( unsigned int tube ) const; + /// Set the properties of each MDT tube + void setMdtHit( uint32_t onlineId, uint32_t offlineId, int chamber, float r, float z, + float residual, float time, float space, float sigma ); + + /// @} + + private: + /// Cached 4-momentum of the muon + mutable FourMom_t m_p4; + /// Cached state of the internal 4-momentum object + mutable bool m_p4Cached; + + }; // class L2StandAloneMuon_v1 + +} // namespace xAOD + +/// Operator for printing the contents of a LVL2 muon +std::ostream& operator<< ( std::ostream& out, + const xAOD::L2StandAloneMuon_v1& mu ); + +// Set up a CLID for the object: +#ifndef XAOD_STANDALONE +#include "SGTools/CLASS_DEF.h" +CLASS_DEF( xAOD::L2StandAloneMuon_v1, 65772484, 1 ) +#endif // not XAOD_STANDALONE + +#endif // XAODTRIGMUON_VERSIONS_L2STANDALONEMUON_V1_H diff --git a/Event/xAOD/xAODTrigMuon/xAODTrigMuon/xAODTrigMuonDict.h b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/xAODTrigMuonDict.h new file mode 100644 index 00000000000..3abd127b36d --- /dev/null +++ b/Event/xAOD/xAODTrigMuon/xAODTrigMuon/xAODTrigMuonDict.h @@ -0,0 +1,56 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id: xAODTrigMuonDict.h 604163 2014-06-30 10:30:46Z giagu $ +#ifndef XAODTRIGMUON_XAODTRIGMUONDICT_H +#define XAODTRIGMUON_XAODTRIGMUONDICT_H + +// STL include(s): +#include <vector> + +// EDM include(s): +#include "AthLinks/DataLink.h" +#include "AthLinks/ElementLink.h" + +// Local include(s): +#include "xAODTrigMuon/versions/L2StandAloneMuon_v1.h" +#include "xAODTrigMuon/versions/L2StandAloneMuonContainer_v1.h" +#include "xAODTrigMuon/versions/L2StandAloneMuonAuxContainer_v1.h" +#include "xAODTrigMuon/versions/L2IsoMuon_v1.h" +#include "xAODTrigMuon/versions/L2IsoMuonContainer_v1.h" +#include "xAODTrigMuon/versions/L2IsoMuonAuxContainer_v1.h" +#include "xAODTrigMuon/versions/L2CombinedMuon_v1.h" +#include "xAODTrigMuon/versions/L2CombinedMuonContainer_v1.h" +#include "xAODTrigMuon/versions/L2CombinedMuonAuxContainer_v1.h" + +namespace{ + struct GCCXML_DUMMY_INSTANTIATION_XAODTRIGMUON { + + xAOD::L2StandAloneMuonContainer_v1 muonsa_c1; + DataLink< xAOD::L2StandAloneMuonContainer_v1 > muonsa_dl1; + std::vector< DataLink< xAOD::L2StandAloneMuonContainer_v1 > > muonsa_dl2; + ElementLink< xAOD::L2StandAloneMuonContainer_v1 > muonsa_el1; + std::vector< ElementLink< xAOD::L2StandAloneMuonContainer_v1 > > muonsa_el2; + std::vector< std::vector< ElementLink< xAOD::L2StandAloneMuonContainer_v1 > > > muonsa_el3; + + xAOD::L2IsoMuonContainer_v1 muoniso_c1; + DataLink< xAOD::L2IsoMuonContainer_v1 > muoniso_dl1; + std::vector< DataLink< xAOD::L2IsoMuonContainer_v1 > > muoniso_dl2; + ElementLink< xAOD::L2IsoMuonContainer_v1 > muoniso_el1; + std::vector< ElementLink< xAOD::L2IsoMuonContainer_v1 > > muoniso_el2; + std::vector< std::vector< ElementLink< xAOD::L2IsoMuonContainer_v1 > > > muoniso_el3; + + xAOD::L2CombinedMuonContainer_v1 muoncb_c1; + DataLink< xAOD::L2CombinedMuonContainer_v1 > muoncb_dl1; + std::vector< DataLink< xAOD::L2CombinedMuonContainer_v1 > > muoncb_dl2; + ElementLink< xAOD::L2CombinedMuonContainer_v1 > muoncb_el1; + std::vector< ElementLink< xAOD::L2CombinedMuonContainer_v1 > > muoncb_el2; + std::vector< std::vector< ElementLink< xAOD::L2CombinedMuonContainer_v1 > > > muoncb_el3; + + }; +} + +#endif // XAODTRIGMUON_XAODTRIGMUONDICT_H -- GitLab