Skip to content
Snippets Groups Projects
Commit 47230be8 authored by Vakhtang Tsulaia's avatar Vakhtang Tsulaia
Browse files

Merge branch 'r22_TRT_dEdx_Bugfixes' into 'master'

Fixed quality hit selection, truncation and masking of last 4 bits for r22

See merge request atlas/athena!16632

Former-commit-id: 4b9f2e86
parents 46ead426 9632af1d
No related branches found
No related tags found
No related merge requests found
......@@ -699,16 +699,15 @@ bool TRT_ToT_dEdx::isGood_Hit(const Trk::TrackStateOnSurface *itr, bool divideBy
double Trt_RHit = fabs(driftcircle->localParameters()[Trk::driftRadius]);
double Trt_HitTheta = trkP->parameters()[Trk::theta];
double Trt_HitPhi = trkP->parameters()[Trk::phi];
double error2 = 2*driftcircle->localCovariance()(Trk::driftRadius,Trk::driftRadius);
double distance2 = (Trt_Rtrack - Trt_RHit)*(Trt_Rtrack - Trt_RHit);
double error = sqrt(driftcircle->localCovariance()(Trk::driftRadius,Trk::driftRadius));
Identifier DCId = driftcircle->identify();
int HitPart = m_trtId->barrel_ec(DCId);
const InDetDD::TRT_BaseElement* element = m_trtman->getElement(DCId);
double strawphi = element->center(DCId).phi();
if ( m_useZeroRHitCut && Trt_RHit==0) return false; // tube hit
if ( itr->type(Trk::TrackStateOnSurface::Outlier) ) return false; //Outliers
if ( m_useZeroRHitCut && Trt_RHit==0 && error>1.) return false; //Select precision hits only
if ( (Trt_Rtrack >= m_trackConfig_maxRtrack) || (Trt_Rtrack <= m_trackConfig_minRtrack) )return false; // drift radius close to wire or wall
if (distance2 > error2) return false; // Select precision hit only
if (std::abs(HitPart)==1) { //Barrel
m_L = 2*sqrt(4-Trt_Rtrack*Trt_Rtrack)*1./fabs(sin(Trt_HitTheta));
......@@ -888,8 +887,14 @@ double TRT_ToT_dEdx::dEdx(const Trk::Track* track, bool divideByL, bool useHThit
{
int trunkGas = kUnset;
double maxToT = 0.;
if(nhitsXe>0 && vecToT_Xe.at(nhitsXe-1)>maxToT) trunkGas = kXenon;
if(nhitsAr>0 && vecToT_Ar.at(nhitsAr-1)>maxToT) trunkGas = kArgon;
if(nhitsXe>0 && vecToT_Xe.at(nhitsXe-1)>maxToT){
trunkGas = kXenon;
maxToT = vecToT_Xe.at(nhitsXe-1);
}
if(nhitsAr>0 && vecToT_Ar.at(nhitsAr-1)>maxToT){
trunkGas = kArgon;
maxToT = vecToT_Ar.at(nhitsAr-1);
}
if(nhitsKr>0 && vecToT_Kr.at(nhitsKr-1)>maxToT) trunkGas = kKrypton;
if(trunkGas==kXenon) nhitsXe-=ntrunk;
......@@ -1741,9 +1746,13 @@ double TRT_ToT_dEdx::getToTlargerIsland(unsigned int BitPattern) const
unsigned int current_length = 0;
unsigned int k = 0;
//Set 4 last bits to zero (to match data and MC bitmasks)
unsigned int mask_last_bits=0xFFFFFF0; // 1 1 11111111 1 11111111 1 11110000
unsigned int BitPattern0 =BitPattern & mask_last_bits;
//shift bitmask to the right until end;
while (true) {
if (BitPattern & mask) {
if (BitPattern0 & mask) {
++current_length;
}
else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment