34 InDetTrackSmearingTool::InDetTrackSmearingTool(
const std::string&
name )
35 :
InDet::InDetTrackSystematicsTool(
name )
38 #ifndef XAOD_STANDALONE
39 declareInterface<IInDetTrackSmearingTool>(
this);
50 ATH_MSG_INFO(
"Using seed of " << m_seed <<
" to initialize RNG" );
51 m_rnd = std::make_unique<TRandom3>(m_seed);
53 ATH_MSG_INFO(
"Using dedicated CTIDE smearing maps for tracks in jets" );
56 std::string rootfileName = m_calibFileIP_CTIDE;
58 ATH_CHECK( initObject<TH2>(m_smearD0, rootfileName,
"d0quaddiff_Pt_Eta" ) );
59 ATH_CHECK( initObject<TH2>(m_smearZ0, rootfileName,
"z0quaddiff_Pt_Eta" ) );
65 return StatusCode::SUCCESS;
73 bool isActiveD0Meas = isActive(TRK_RES_D0_MEAS);
75 if (isActiveD0Meas == 0) {
77 return std::sqrt(sigma_D0);
80 TH2* d0hist = m_smearD0.get();
82 if (d0hist ==
nullptr)
ATH_MSG_ERROR(
"d0 histogram is null!" );
84 float d0Smear = readHistogram(d0hist,
pt,
eta);
92 sigma_D0 += d0Smear*d0Smear;
94 return std::sqrt(sigma_D0);
101 float sigma_Z0 = 0.f;
103 bool isActiveZ0Meas = isActive(TRK_RES_Z0_MEAS);
105 if (isActiveZ0Meas == 0) {
107 return std::sqrt(sigma_Z0);
110 TH2* z0hist = m_smearZ0.get();
112 if (z0hist ==
nullptr)
ATH_MSG_ERROR(
"z0 histogram is null!" );
114 float z0Smear = readHistogram(z0hist,
pt,
eta);
122 sigma_Z0 += z0Smear*z0Smear;
124 return std::sqrt(sigma_Z0);
129 float sigmaD0 = GetSmearD0Sigma(
track );
130 float sigmaZ0 = GetSmearZ0Sigma(
track );
136 if ( sigmaD0 > 0. ) accD0(
track ) = m_rnd->Gaus(
track.d0(), sigmaD0 );
137 if ( sigmaZ0 > 0. ) accZ0(
track ) = m_rnd->Gaus(
track.z0(), sigmaZ0 );
145 return TrackCorrTool_t::correctedCopy(in,
out);
150 return TrackCorrTool_t::applyContainerCorrection(cont);
155 return InDetTrackSystematicsTool::isAffectedBySystematic( syst );
160 return RecommendedSystematics;
166 return RecommendedSystematics;
172 return InDetTrackSystematicsTool::applySystematicVariation(systs);
175 float InDetTrackSmearingTool::readHistogram(
const TH2*
histogram,
float pt,
float eta)
const {
177 if(
eta>2.499 )
eta= 2.499;
178 if(
eta<-2.499 )
eta=-2.499;
179 if ( pt < histogram->GetXaxis()->GetXmin() ) {