From 6cac9a69bdf88378b2569a11b4f2afaa9d55bed9 Mon Sep 17 00:00:00 2001 From: shahoian Date: Mon, 2 Jun 2014 12:55:00 +0200 Subject: [PATCH] Distinguish seed creation for backpropagation from refitInward. In former case alsways use external seed from ESDtrack (after dedicated chi2 check) --- TPC/Rec/AliTPCtrack.cxx | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/TPC/Rec/AliTPCtrack.cxx b/TPC/Rec/AliTPCtrack.cxx index 4a63d6aeeda..09b8ede9cb7 100644 --- a/TPC/Rec/AliTPCtrack.cxx +++ b/TPC/Rec/AliTPCtrack.cxx @@ -157,29 +157,36 @@ AliTPCtrack::AliTPCtrack(const AliESDtrack& t, TTreeSRedirector *pcstream) : const AliExternalTrackParam *tpcout=(t.GetFriendTrack())? ((AliESDfriendTrack*)(t.GetFriendTrack()))->GetTPCOut():0; const AliExternalTrackParam *tpcin = t.GetInnerParam(); const AliExternalTrackParam *tpc=(tpcout)?tpcout:tpcin; + Bool_t isBackProp = tpcout==0; // is this backpropagation? if (!tpc) tpc=¶m; - //Bool_t isOK=kTRUE;// RS recoParam->GetUseOuterDetectors(); - Bool_t isOK=recoParam->GetUseOuterDetectors(); - if (param.GetCovariance()[0]>kmaxC[0]*kmaxC[0]) isOK=kFALSE; - if (param.GetCovariance()[2]>kmaxC[1]*kmaxC[1]) isOK=kFALSE; - if (param.GetCovariance()[5]>kmaxC[2]*kmaxC[2]) isOK=kFALSE; - if (param.GetCovariance()[9]>kmaxC[3]*kmaxC[3]) isOK=kFALSE; - param.Rotate(tpc->GetAlpha()); + + Bool_t isOK = (recoParam->GetUseOuterDetectors() && t.IsOn(AliESDtrack::kTRDrefit)) || isBackProp; + if (param.GetCovariance()[0]>kmaxC[0]*kmaxC[0] || + param.GetCovariance()[2]>kmaxC[1]*kmaxC[1] || + param.GetCovariance()[5]>kmaxC[2]*kmaxC[2] || + param.GetCovariance()[9]>kmaxC[3]*kmaxC[3]) isOK=kFALSE; + // + if (isOK) isOK &= param.Rotate(tpc->GetAlpha()); // using external seed Double_t oldX=param.GetX(), oldY=param.GetY(), oldZ=param.GetZ(); if (!isOK ){ param=*tpc; isOK=kTRUE; reject=1; } - param.Rotate(tpc->GetAlpha()); - isOK=AliTracker::PropagateTrackToBxByBz(¶m,tpc->GetX(),t.GetMass(),2.,kFALSE); - if (param.GetCovariance()[0]>kmaxC[0]*kmaxC[0]) isOK=kFALSE; - if (param.GetCovariance()[2]>kmaxC[1]*kmaxC[1]) isOK=kFALSE; - if (param.GetCovariance()[5]>kmaxC[2]*kmaxC[2]) isOK=kFALSE; - if (param.GetCovariance()[9]>kmaxC[3]*kmaxC[3]) isOK=kFALSE; - Double_t chi2= param.GetPredictedChi2(tpc); - if (chi2>recoParam->GetMaxChi2TPCTRD()){ - isOK=kFALSE; + else { // using external seed + // param.Rotate(tpc->GetAlpha()); // not needed + if (!AliTracker::PropagateTrackToBxByBz(¶m,tpc->GetX(),t.GetMass(),2.,kFALSE) || + param.GetCovariance()[0]>kmaxC[0]*kmaxC[0] || + param.GetCovariance()[2]>kmaxC[1]*kmaxC[1] || + param.GetCovariance()[5]>kmaxC[2]*kmaxC[2] || + param.GetCovariance()[9]>kmaxC[3]*kmaxC[3]) isOK=kFALSE; + } + if (isOK) { + Double_t chi2= param.GetPredictedChi2(tpc); + if (isBackProp) { + if (chi2>recoParam->GetMaxChi2TPCITS()) isOK=kFALSE; // protection against outliers in the ITS + } + else if (chi2>recoParam->GetMaxChi2TPCTRD()) isOK=kFALSE; // protection against outliers in the TRD } if (!isOK){ -- 2.43.0