15 const std::string&
name,
28 return StatusCode::SUCCESS;
37 m_use_mcLUT = use_mcLUT;
48 if (trackPattern.
etaBin < -1)
49 return StatusCode::SUCCESS;
55 return StatusCode::SUCCESS;
60 const int side = (trackPattern.
etaMap <= 0.0) ? 0 : 1;
66 if (
charge == 0) mdtPt = -mdtPt;
69 const float ALPHA_TO_BETA_PT = 10;
70 const float ALPHA_TO_BETA_RATIO = 0.5;
71 const float ALPHA_TO_CSC_RATIO = 0.3;
72 const float ALPHA_TO_CSC_RATIO_PT = 0.025;
79 if (
charge == 0) betaPt = -betaPt;
83 if ( std::abs((betaPt - mdtPt) / mdtPt) < ALPHA_TO_BETA_RATIO ) {
86 if( std::abs(betaPt) > std::abs(mdtPt) || (std::abs((
tgcPt-mdtPt)/mdtPt) > std::abs((
tgcPt-betaPt)/betaPt)) ) mdtPt = betaPt;
93 if (trackPattern.
etaBin<8){
102 if (
charge == 0) cscPt = -cscPt;
103 trackPattern.
ptCSC = cscPt;
106 trackPattern.
pt = std::abs(mdtPt);
107 trackPattern.
charge = mdtPt / std::abs(mdtPt);
114 const float &cscPt = trackPattern.
ptCSC;
115 const int &etabin = trackPattern.
etaBin;
116 const bool validrange = (20<=etabin && etabin<=27) || (etabin==20 && std::abs(
side-
charge)!=1);
117 const bool validchamber = !m_avoid_misaligned_cscs || (16!=trackPattern.
hashID_CSC && 17!=trackPattern.
hashID_CSC);
118 if( etabin !=23 && etabin!=24 && validrange && validchamber){
120 && std::abs((cscPt - mdtPt) / mdtPt)<ALPHA_TO_CSC_RATIO && std::abs(1./cscPt-1./mdtPt)<ALPHA_TO_CSC_RATIO_PT ){
121 trackPattern.
pt = std::abs(cscPt);
136 double tmpbetaPt = 0.;
140 double tmp_pt = (*m_ptEndcapLUT)->ptcombined(trackPattern.
etaBin, trackPattern.
phiBin, tmpalphaPt,tmpbetaPt, Co_APt, Co_BPt);
143 if(std::abs(Co_APt)>
ZERO_LIMIT && std::abs(Co_BPt)>
ZERO_LIMIT && std::abs(Co_BPt-Co_APt)/std::abs(Co_APt) < 0.5){
148 if(final_pt == 0.)final_pt =
tgcPt;
151 ATH_MSG_DEBUG(
"pT determined from alpha and beta: endcapAlpha/endcapBeta/endcapRadius3P/cscGamma/pT/charge/s_address="
155 ATH_MSG_DEBUG(
"ptEndcapAlpha/ptEndcapBeta/tgcPt/ptEndcapRadius/ptCSC="
159 return StatusCode::SUCCESS;