50 return StatusCode::FAILURE;
58 return StatusCode::SUCCESS;
64 double& combPtInv,
double& combPtRes,
double& deta,
double& dphi,
double& dr)
const
66 double pt = feature->
pt() * Gaudi::Units::GeV;
69 return muComb::drptMatch(pt,
eta,
phi, id_pt, id_eta, id_phi, algo, combPtInv, combPtRes, deta, dphi, dr);
73 double& combPtInv,
double& combPtRes,
double& deta,
double& dphi,
double& dr)
const
80 if (algo < 1 || algo > 4) {
81 ATH_MSG_DEBUG(
" muComb::drptMatch wrong algo parameter, it is: " << algo
82 <<
" while must be in the range [1,4], match failed!!!" );
90 if (algo == 1) combPtInv = ((1. / pt) + (1. / id_pt)) * 0.5;
91 if (algo == 2) combPtInv = 1. / id_pt;
92 if (algo == 3) combPtInv = 1. / pt;
93 if (algo == 4) combPtInv = 1.e-33;
95 double tmp_deta = std::max(
eta, id_eta) - std::min(
eta, id_eta);
96 double tmp_dphi = std::max(
phi, id_phi) - std::min(
phi, id_phi);
97 if (tmp_dphi >=
M_PI) tmp_dphi = 2 *
M_PI - tmp_dphi;
98 double tmp_dr = std::sqrt(tmp_deta * tmp_deta + tmp_dphi * tmp_dphi);
107 if (tmp_dr > winDR) passDR =
false;
109 ATH_MSG_DEBUG(
" REGTEST Angular MU-ID match / dR / threshold / result:"
112 <<
" / " << (passDR ?
"true" :
"false"));
114 if (algo == 1 && winPt > 0) {
115 double tmp_dpt = std::fabs(std::fabs(pt) - std::fabs(id_pt)) / Gaudi::Units::GeV;
116 if (tmp_dpt > winPt) passPt =
false;
117 ATH_MSG_DEBUG(
" REGTEST MU-ID match / dpt (GeV) / threshold (GeV) / result:"
120 <<
" / " << (passPt ?
"true" :
"false"));
123 if (passDR && passPt)
return 0;
137 double theta = 2.*std::atan(std::exp(-feature->
etaMS()));
139 if (std::sin(
theta) != 0) {
140 p = (feature->
pt() * Gaudi::Units::GeV) / std::sin(
theta);
146 double q_over_p = 0.;
149 result.charge = p / std::fabs(p);
154 double pt = feature->
pt() * Gaudi::Units::GeV;
156 double eptinv = feature->
deltaPt() * Gaudi::Units::GeV / pt / pt;
159 double etaShift = (
result.isBarrel ? 0 :
result.charge * 0.01);
172 if ((std::fabs(sp1_R) < 1000.)) {
176 if ((std::fabs(sp2_R) < 1300.)) {
183 if (R == 0. &&
z == 0.) {
185 if (std::fabs(sp2_R) > 1300.) {
187 if (
z == 0.)
z = 7600.;
189 theta = 2.*std::atan(std::exp(-(feature->
etaMS() - etaShift)));
193 double x = R * std::cos(
phi);
194 double y = R * std::sin(
phi);
201 std::unique_ptr<const Trk::TrackParameters> muonPerigee
209 double extr_theta = muonPerigee -> parameters()[
Trk::theta];
211 result.eta = -std::log(std::tan(extr_theta / 2.));
212 if (doFix)
result.eta = -std::log(std::tan(
theta / 2.));
218 if (pt != 0)
result.ptinv = 1. / pt;
232 double id_eta,
double id_phi,
double id_pt,
double id_charge,
double id_eeta,
double id_ephi,
double id_eipt,
233 double& combPtInv,
double& combPtRes,
double& deta,
double& dphi,
double&
chi2,
int& ndof)
const
244 double id_ptinv = 1.0e33;
246 id_ptinv = 1. / id_pt;
251 double id_eptinv = id_eipt;
257 double q_tmp = extr.
charge;
260 if (1. / combPtInv > 50000.) q_tmp = extr.
charge;
261 else q_tmp = id_charge;
268 double ephi_to_use = extr.
ephi;
277 id_eta, 0.0, id_phi, 0.0, id_ptinv, id_eptinv,
true);
279 id_eta, id_eeta, id_phi, id_ephi, id_ptinv, id_eptinv,
m_UseAbsPt);
282 ATH_MSG_DEBUG(
" REGTEST Resolution / OLDIdRes / IdRes / muFastRes / combRes:"
283 <<
" / " << std::setw(11) << id_eptinv_OLD / Gaudi::Units::GeV
284 <<
" / " << std::setw(11) << id_eptinv / Gaudi::Units::GeV
285 <<
" / " << std::setw(11) << extr.
eptinv / Gaudi::Units::GeV
286 <<
" / " << std::setw(11) << combPtRes / Gaudi::Units::GeV );
288 ATH_MSG_DEBUG(
" REGTEST Momentum / IdPt / muFastPt / CombPt :"
289 <<
" / " << std::setw(11) << 1. / id_ptinv / Gaudi::Units::GeV
290 <<
" / " << std::setw(11) << 1. / extr.
ptinv / Gaudi::Units::GeV
291 <<
" / " << std::setw(11) << 1. / combPtInv / Gaudi::Units::GeV );
294 <<
" / " << std::setw(11) <<
chi2
295 <<
" / " << std::setw(11) << ndof
296 <<
" // " << std::setw(11) << chi2_OLD
297 <<
" / " << std::setw(11) << ndof_OLD );
309 ATH_MSG_DEBUG(
" REGTEST DeltaEta / DeltaPhi / WinEta / WinPhi:"
310 <<
" / " << std::setw(11) << std::fabs(deta)
311 <<
" / " << std::setw(11) << std::fabs(dphi)
313 <<
" / " << std::setw(11) <<
m_WeightPhi_g4*winPhiSigma*std::sqrt(ephi_to_use * ephi_to_use) );
318 if (std::fabs(dphi) >
m_WeightPhi_g4 * winPhiSigma * std::sqrt(ephi_to_use * ephi_to_use)) {
322 if (
chi2 > maxChi2)
return 6;
331 double id_eta,
double id_phi,
double id_pt,
double id_charge,
332 double& combPtInv,
double& combPtRes,
double& deta,
double& dphi,
double&
chi2,
int& ndof)
const
339 double pt = feature->
pt() * Gaudi::Units::GeV;
344 bool isTS = ((feature->
rMS() <= 10.) ?
true :
false);
345 bool isBarrel = ((feature->
sAddress() != -1) ?
true :
false);
347 double charge = pt / std::fabs(pt);
348 double ptinv = 1. / pt;
349 double eptinv = feature->
deltaPt() * Gaudi::Units::GeV / pt / pt;
354 double id_ptinv = 1.0e33;
357 id_ptinv = 1. / id_pt;
369 if (1. / combPtInv > 50000.) q_tmp =
charge;
370 else q_tmp = id_charge;
375 double extr_eta = feature->
eta();
376 double extr_eeta = feature->
deltaEta();
377 double extr_phi = feature->
phi();
378 double extr_ephi = feature->
deltaPhi();
379 double extr_ptinv = ptinv;
380 double extr_eptinv = eptinv;
391 id_eta, 0.0, id_phi, 0.0, id_ptinv, id_eptinv,
m_UseAbsPt);
394 ATH_MSG_DEBUG(
" REGTEST Resolution / IdRes / muFastRes / combRes:"
395 <<
" / " << std::setw(11) << id_eptinv / Gaudi::Units::GeV
396 <<
" / " << std::setw(11) << extr_eptinv / Gaudi::Units::GeV
397 <<
" / " << std::setw(11) << combPtRes / Gaudi::Units::GeV );
399 ATH_MSG_DEBUG(
" REGTEST Momentum / IdPt / muFastPt / CombPt :"
400 <<
" / " << std::setw(11) << 1. / id_ptinv / Gaudi::Units::GeV
401 <<
" / " << std::setw(11) << 1. / ptinv / Gaudi::Units::GeV
402 <<
" / " << std::setw(11) << 1. / combPtInv / Gaudi::Units::GeV );
405 <<
" / " << std::setw(11) <<
chi2
406 <<
" / " << std::setw(11) << ndof );
425 if ((id_phi >= -2.60 && id_phi <= -2.10) || (id_phi >= -1.10 && id_phi <= -0.50)) isFT =
true;
432 ATH_MSG_DEBUG(
" REGTEST DeltaEta / DeltaPhi / WinEta / WinPhi:"
433 <<
" / " << std::setw(11) << std::fabs(deta)
434 <<
" / " << std::setw(11) << std::fabs(dphi)
435 <<
" / " << std::setw(11) <<
m_WeightEta*winEtaSigma*std::sqrt(extr_eeta * extr_eeta)
436 <<
" / " << std::setw(11) <<
m_WeightPhi*winPhiSigma*std::sqrt(extr_ephi * extr_ephi) );
438 if (std::fabs(deta) >
m_WeightEta * winEtaSigma * std::sqrt(extr_eeta * extr_eeta)) {
441 if (std::fabs(dphi) >
m_WeightPhi * winPhiSigma * std::sqrt(extr_ephi * extr_ephi)) {
445 if (
chi2 > maxChi2)
return 6;
458 using namespace xAOD;
491 ptID, etaID, phiID, zetaID,
492 ptMC, dEta, dPhi, dZeta, dR,
494 efficiency, StrategyMC, ErrorFlagMC, MatchFlagMC);
505 if (fieldCondObj ==
nullptr) {
507 return StatusCode::FAILURE;
514 ATH_MSG_DEBUG(
"=========== Magnetic Field Status ========== " );
517 ATH_MSG_DEBUG(
" ---> Solenoid : " << ((solenoidOn) ?
"ON" :
"OFF") );
518 ATH_MSG_DEBUG(
" ---> Toroid : " << ((toroidOn) ?
"ON" :
"OFF") );
531 if (toroidOn) usealgo = 3;
537 ATH_MSG_DEBUG(
"=========== Matching windows g4 ========== " );
549 ATH_CHECK( muonCBColl.record (std::make_unique<xAOD::L2CombinedMuonContainer>(),
550 std::make_unique<xAOD::L2CombinedMuonAuxContainer>()) );
557 if (muonColl->size() == 0) {
563 ATH_MSG_DEBUG(
" L2StandAloneMuonContainer empty -> stop processing RoI, no match" );
564 return StatusCode::SUCCESS;
572 for(
uint i_muonSA = 0; i_muonSA < muonColl->size(); i_muonSA++){
586 if (muonSA->
pt() == 0.) {
588 if (usealgo == 2 || usealgo == 4) {
589 ATH_MSG_DEBUG(
" L2StandAloneMuon pt = 0 --> using angular match" );
592 ATH_MSG_DEBUG(
" L2StandAloneMuon pt = 0 --> stop processing RoI, no match" );
594 muonCBColl->push_back(muonCB);
595 return StatusCode::SUCCESS;
606 double eta_ms = -999.;
607 double phi_ms = -999.;
608 double zeta_ms = -999.;
633 eta_ms = muonSA->
etaMS();
634 phi_ms = muonSA->
phiMS();
635 zeta_ms = muonSA->
zMS();
638 <<
" / eta = " <<
eta
639 <<
" / phi = " <<
phi
640 <<
" / etaMS = " << eta_ms
641 <<
" / phiMS = " << phi_ms
642 <<
" / zMS = " << zeta_ms);
649 if (!idTrackParticles.
isValid()){
650 ATH_MSG_DEBUG(
" Failed to get xAOD::TrackParticleContainer --> no match" );
653 muonCBColl->push_back(muonCB);
654 return StatusCode::SUCCESS;
656 if (idTrackParticles->size() < 1){
657 ATH_MSG_DEBUG(
" xAOD::TrackParticleContainer has 0 tracks --> no match" );
660 muonCBColl->push_back(muonCB);
661 return StatusCode::SUCCESS;
664 ATH_MSG_DEBUG(
" Found xAOD::TrackParticleContainer with size: " << idTrackParticles->size() );
667 double ptinv_comb = 0.;
668 double ptres_comb = 0.001;
669 double chi2_comb = 1.0e33;
671 double best_dr = 1.0e33;
672 double best_deta = 1.0e33;
673 double best_dphi = 1.0e33;
674 bool has_match =
false;
676 int matched_trk_idx = -1;
677 int matched_trk_idx_tmp = -1;
688 for(
const auto trkit:(*idTrackParticles)) {
690 matched_trk_idx_tmp++;
691 double ptinv_tmp = 0.;
692 double ptres_tmp = 0.001;
693 double deta_tmp = 0.;
694 double dphi_tmp = 0.;
696 double chi2_tmp = 0.;
698 bool has_match_tmp =
false;
702 double phi_id = (trkit)->
phi();
703 double eta_id = (trkit)->
eta();
704 double qoverp_id = (trkit)->qOverP();
705 double q_id = ((trkit)->qOverP() > 0 ? 1.0 : -1.0);
706 double pt_id = (trkit)->
pt() * q_id;
709 double e_phi_id = std::sqrt((trkit)->definingParametersCovMatrix()(
Trk::phi0,
Trk::phi0));
711 double tanthetaov2 = std::fabs(std::exp(-
eta));
712 double e_eta_id = std::fabs(0.5 * (1./tanthetaov2 + tanthetaov2) * e_theta_id);
714 double e_qoverpt_id = e_qoverp_id;
715 double theta_id = (trkit)->
theta();
716 if (std::sin(theta_id) != 0) e_qoverpt_id /= std::fabs(std::sin(theta_id));
719 <<
" with pt (GeV) = " << pt_id / Gaudi::Units::GeV
721 <<
", eta = " << eta_id
722 <<
", phi = " << phi_id
723 <<
", th = " << theta_id
724 <<
", ephi = " << e_phi_id
725 <<
", eth = " << e_theta_id
726 <<
", eeta = " << e_eta_id
727 <<
", ip = " << qoverp_id
728 <<
", eip = " << e_qoverp_id
729 <<
", eipt = " << e_qoverpt_id );
732 if ((std::fabs(pt_id) / Gaudi::Units::GeV) <
m_PtMinTrk)
continue;
743 imatch_tmp =
drptMatch(muonSA, pt_id, eta_id, phi_id, usealgo, ptinv_tmp, ptres_tmp, deta_tmp, dphi_tmp, chi2_tmp);
745 if (imatch_tmp == 0) has_match_tmp =
true;
748 imatch_tmp =
mfMatch(muonSA, eta_id, phi_id, pt_id, q_id, ptinv_tmp, ptres_tmp, deta_tmp, dphi_tmp, chi2_tmp, ndof_tmp);
749 if (imatch_tmp == 0) has_match_tmp =
true;
751 imatch_tmp =
g4Match(extr, eta_id, phi_id, pt_id, q_id, e_eta_id, e_phi_id, e_qoverpt_id, ptinv_tmp, ptres_tmp, deta_tmp, dphi_tmp, chi2_tmp, ndof_tmp);
752 if (imatch_tmp == 0) has_match_tmp =
true;
757 if (!has_match_tmp)
continue;
760 dr_tmp = std::sqrt(deta_tmp * deta_tmp + dphi_tmp * dphi_tmp);
762 if (chi2_tmp <= chi2_comb) {
764 chi2_comb = chi2_tmp;
765 ndof_comb = ndof_tmp;
766 ptinv_comb = ptinv_tmp;
767 ptres_comb = ptres_tmp;
768 best_deta = deta_tmp;
769 best_dphi = dphi_tmp;
772 matched_trk_idx = matched_trk_idx_tmp;
778 if (usealgo == 0 && std::fabs(
pt) >= 6.) {
786 if (ptMS > 100.) ptMS = 101.5;
787 if (ptMS < -100.) ptMS = -101.5;
788 if (ptFL > 100.) ptFL = 101.5;
789 if (ptFL < -100.) ptFL = -101.5;
794 MatchFlagMC = imatch;
795 if (usealgo == 0 && std::fabs(
pt) >= 6.)
efficiency = 0;
799 muonCBColl->push_back(muonCB);
800 return StatusCode::SUCCESS;
808 double q_id = ((muonCB->
idTrack()->qOverP()) > 0 ? 1.0 : -1.0);
812 double zPos_id = muonCB->
idTrack()->
z0();
817 MatchFlagMC = imatch;
821 if (usealgo == 0 && std::fabs(
pt) >= 6.) {
823 ptID = pt_id / Gaudi::Units::GeV;
827 ptMC = 1. / (ptinv_comb * Gaudi::Units::GeV);
828 dZeta = zeta_ms - zPos_id;
833 if (ptMC > 100.) ptMC = 101.5;
834 if (ptMC < -100.) ptMC = -101.5;
835 if (ptID > 100.) ptID = 101.5;
836 if (ptID < -100.) ptID = -101.5;
843 <<
" usealgo / IdPt (GeV) / muonPt (GeV) / CombPt (GeV) / chi2 / ndof: " <<
" / " << usealgo <<
" / " << pt_id*q_id / Gaudi::Units::GeV <<
" / " << prt_pt <<
" / " << 1. / ptinv_comb / Gaudi::Units::GeV <<
" / " << chi2_comb <<
" / " << ndof_comb );
845 muonCB->
setPt(std::fabs(1. / ptinv_comb));
850 if (ptinv_comb > 0) mcq = 1.0;
854 float mcresu = std::fabs(ptres_comb / (ptinv_comb * ptinv_comb));
855 ATH_MSG_DEBUG(
" SigmaPt (GeV) is: " << mcresu / Gaudi::Units::GeV );
861 muonCBColl->push_back(muonCB);
863 return StatusCode::SUCCESS;
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
Scalar theta() const
theta method
#define ATH_CHECK
Evaluate an expression and check for errors.
double charge(const T &p)
#define CHECK(...)
Evaluate an expression and check for errors.
Header file to be included by clients of the Monitored infrastructure.
An algorithm that can be simultaneously executed in multiple threads.
void getInitializedCache(MagField::AtlasFieldCache &cache) const
get B field cache for evaluation as a function of 2-d or 3-d position.
ElementLink implementation for ROOT usage.
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
bool solenoidOn() const
status of the magnets
Group of local monitoring quantities and retain correlation when filling histograms
Declare a monitored scalar variable.
void makePrivateStore()
Create a new (empty) private store for this object.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Class describing the Line to which the Perigee refers to.
Gaudi::Property< double > m_Chi2Max
Max Chi2 for the combined muon in LUT backextrapolator (Barrel)
Gaudi::Property< double > m_Chi2Weight_g4
Scale factor for the Chi2 1/pt resolutions (MS and ID) (Barrel)
Gaudi::Property< double > m_Chi2Max_g4
Max Chi2 for the combined muon in LUT backextrapolator (Barrel)
Gaudi::Property< double > m_WinEta_g4
Number of sigmas for the Eta matching window LUT backextrapolator (Barrel)
Gaudi::Property< double > m_WinEta
Number of sigmas for the Eta matching window LUT backextrapolator (Barrel)
Gaudi::Property< double > m_WinPhi_TS
Number of sigmas for the Phi matching window LUT backextrapolator (Trigger Stations)
Gaudi::Property< double > m_winPt
max deltaPt for simpified matching
Gaudi::Property< double > m_WeightPhi_g4
Scale factor for the Phi matching window in LUT backextrapolator.
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackParticleContainerKey
Gaudi::Property< int > m_NdofMin
Min Number of DOF to apply the chi2 cut on macthing based on LUT and G4 backextrapolators.
Gaudi::Property< bool > m_UseAbsPt
Use Absolute value of the Pt in chi2 calculation (i.e.
int drptMatch(double, double, double, double, double, double, int, double &, double &, double &, double &, double &) const
Gaudi::Property< bool > m_assumeSolenoidOff
flag to assume B_Solenoid=0 anyway
Gaudi::Property< double > m_WinPhi_EC
Number of sigmas for the Phi matching window LUT backextrapolator (EndCaps)
int mfMatch(const xAOD::L2StandAloneMuon *feature, double, double, double, double, double &, double &, double &, double &, double &, int &) const
Gaudi::Property< double > m_Chi2Max_EC_g4
Max Chi2 for the combined muon in LUT backextrapolator (EndCaps)
Gaudi::Property< double > m_WinEta_FE
Number of sigmas for the Eta matching window LUT backextrapolator (MS Feet region)
Gaudi::Property< double > m_WeightEta_g4
Scale factor for the Eta matching window in LUT backextrapolator.
Gaudi::Property< double > m_WinEta_TS
Number of sigmas for the Eta matching window LUT backextrapolator (Trigger Stations)
virtual StatusCode execute(const EventContext &ctx) const override
execute execute the combined muon FEX.
Gaudi::Property< double > m_WinEta_EC
Number of sigmas for the Eta matching window LUT backextrapolator (EndCaps)
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap2
SG::WriteHandleKey< xAOD::L2CombinedMuonContainer > m_outputCBmuonCollKey
Gaudi::Property< double > m_Chi2Max_TS
Max Chi2 for the combined muon in LUT backextrapolator (Trigger Stations)
Gaudi::Property< double > m_WinPhi_FE
Number of sigmas for the Phi matching window LUT backextrapolator (MS Feet region)
int g4Match(const ExtrapolationResult &extr, double, double, double, double, double, double, double, double &, double &, double &, double &, double &, int &) const
Gaudi::Property< double > m_Chi2Max_EC
Max Chi2 for the combined muon in LUT backextrapolator (EndCaps)
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap3
Gaudi::Property< double > m_PtMinTrk
Min Pt to select the ID track for matching.
Gaudi::Property< double > m_WinPhi_g4
Number of sigmas for the Phi matching window LUT backextrapolator (Barrel)
Gaudi::Property< std::vector< double > > m_IDSCANRes_barrel
Gaudi::Property< double > m_Chi2Max_FE
Max Chi2 for the combined muon in LUT backextrapolator (MS Feet region)
Gaudi::Property< double > m_winDR
max deltaR for simplified matching
ExtrapolationResult getExtrapolatedMuon(const EventContext &ctx, const xAOD::L2StandAloneMuon *feature) const
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap1
Gaudi::Property< double > m_EtaMaxTrk
Max abs(eta) to select the ID track for matching.
Gaudi::Property< int > m_ChargeStrategy
muComb charge assignment strategy: 0: useMuFast 1: use ID 2: use resolution model
Gaudi::Property< double > m_WeightEta
Scale factor for the Eta matching window in LUT backextrapolator.
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap4
Gaudi::Property< bool > m_useBackExtrapolatorG4
flag to switch between G4 and LUT based back-extrapolation
Gaudi::Property< double > m_WinPhi_EC_g4
Number of sigmas for the Phi matching window LUT backextrapolator (EndCaps)
Gaudi::Property< int > m_AlgoStrategy
muComb matching strategy: 0: auto select best option 1: simplified R,(Pt) matching
ToolHandle< GenericMonitoringTool > m_monTool
muComb(const std::string &, ISvcLocator *)
Constructor.
Gaudi::Property< double > m_WeightPhi
Scale factor for the Phi matching window in LUT backextrapolator.
Gaudi::Property< double > m_WinPhi
Number of sigmas for the Phi matching window LUT backextrapolator (Barrel)
Gaudi::Property< bool > m_assumeToroidOff
flag to assume B_Toroid=0 anyway
Gaudi::Property< double > m_WinEta_EC_g4
Number of sigmas for the Eta matching window LUT backextrapolator (EndCaps)
virtual StatusCode initialize() override
initialize.
ToolHandle< Trk::IExtrapolator > m_backExtrapolatorG4
Handle to the G4 backExtrapolator tool.
SG::ReadHandleKey< xAOD::L2StandAloneMuonContainer > m_muonCollKey
void setPt(float pt)
Set the transverse momentum ( ) of the muon.
void setSigmaPt(float value)
set sigma combined Pt
void setStrategy(int value)
set algorithm strategy flag
void setErrorFlag(int value)
set algorithm error flag
void setMatchFlag(int value)
set algorithm match flag
void setIdTrackLink(const ElementLink< xAOD::TrackParticleContainer > &link)
set ID track used to make the CB muon
void setMuSATrackLink(const ElementLink< xAOD::L2StandAloneMuonContainer > &link)
set SA muon used to make the CB muon
void setPhi(float phi)
Set the azimuthal angle ( ) of the muon.
void setEta(float eta)
Set the pseudorapidity ( ) of the muon.
void setCharge(float value)
set seeding muon charge
const xAOD::TrackParticle * idTrack() const
Get the ID track as a bare pointer.
int sAddress() const
Get the station address of the muon.
float deltaPt() const
Get error of pT.
float etaMS() const
Get the eta at muon spectrometer.
float deltaPhi() const
Get error of phi.
float phiMS() const
Get the phi at muon spectrometer.
int isRpcFailure() const
Get flag to see if RPC is properly read.
int isTgcFailure() const
Get flag to see if TGC is properly read.
virtual double pt() const
The transverse momentum ( ) of the particle.
float rMS() const
Get the R at muon spectrometer.
virtual double phi() const
The azimuthal angle ( ) of the particle.
float superPointR(int chamber) const
Get the measured radious of the muon in one particular super point.
float deltaEta() const
Get error of eta.
float zMS() const
Get the Z at muon spectrometer.
virtual double eta() const
The pseudorapidity ( ) of the particle.
float superPointZ(int chamber) const
Get the measured Z position of the muon in one particular super point.
float z0() const
Returns the parameter.
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
virtual double pt() const override final
The transverse momentum ( ) of the particle.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
double chi2(TH1 *h0, TH1 *h1)
void efficiency(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Eigen::Matrix< double, 3, 1 > Vector3D
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
double getIDSCANRes(std::vector< double > barrelvec, std::vector< double > ec1vec, std::vector< double > ec2vec, std::vector< double > ec3vec, std::vector< double > ec4vec, double pt_id, double eta_id)
Get parametrized IDSCAN 1/pt resolution.
double getChi2(int &ndof, double ipt, double eta1, double seta1, double phi1, double sphi1, double ipt1, double sipt1, double eta2, double seta2, double phi2, double sphi2, double ipt2, double sipt2, bool useAbsPt)
Get OLD style (i.e. muFast time) Chi2.
double getCombinedAverage(double p1, double sp1, double p2, double sp2)
Get weighted mean.
double getG4ExtEtaRes(double pt, double eta)
Get parametrized Geant4 Eta resolution (extrapolated)
double getStdChi2(int &ndof, double eta1, double seta1, double phi1, double sphi1, double qOvpt1, double sqOvpt1, double eta2, double seta2, double phi2, double sphi2, double qOvpt2, double sqOvpt2, bool useAbsPt)
Get Std Chi2.
double getCombinedAverageSigma(double sp1, double sp2)
Get sigma of weighted mean.
double getDeltaEta(double eta1, double eta2)
Get DeltaEta.
double getDeltaPhi(double phi1, double phi2)
Get DeltaPhi.
double getG4ExtPhiRes(double pt, double eta)
Get parametrized Geant4 Phi resolution (extrapolated)
@ BarrelInner
Inner station in the barrel spectrometer.
@ BarrelMiddle
Middle station in the barrel spectrometer.
@ EndcapMiddle
Middle station in the endcap spectrometer.
@ EndcapInner
Inner station in the endcap spectrometer.
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
setRcore setEtHad setFside pt
L2CombinedMuon_v1 L2CombinedMuon
Define the latest version of the muon CB class.
L2StandAloneMuon_v2 L2StandAloneMuon
Define the latest version of the muon SA class.