diff --git a/src/DetectorK/DetectorK.cxx b/src/DetectorK/DetectorK.cxx index f441346..647e47c 100644 --- a/src/DetectorK/DetectorK.cxx +++ b/src/DetectorK/DetectorK.cxx @@ -1420,6 +1420,8 @@ Bool_t DetectorK::SolveTrack(TrackSol& ts) { double etaTr = ts.fEta; double mass = ts.fMass; double charge = ts.fCharge; + double phiTr = ts.fPhi; + double radiusTr = ts.fRadius; if (ptTr<0) { printf("Input track is not initialized"); @@ -1473,6 +1475,8 @@ Bool_t DetectorK::SolveTrack(TrackSol& ts) { trPars[kTgl] = TMath::Tan(lambda); // dip trPars[kPtI] = charge/pt; // q/pt // + probTr.SetParamOnly(radiusTr, phiTr, trPars); + // // put tiny errors to propagate to the outer radius trCov[kY2] = trCov[kZ2] = trCov[kSnp2] = trCov[kTgl2] = trCov[kPtI2] = 1e-9; // @@ -1533,7 +1537,7 @@ Bool_t DetectorK::SolveTrack(TrackSol& ts) { TString name(layer->GetName()); Bool_t isVertex = name.Contains("vertex"); // - if (!PropagateToR(&probTr,layer->radius,bGauss,-1)) return kFALSE; // exit(1); + if (!PropagateToR(&probTr,layer->radius,bGauss,-1)) continue; // return kFALSE; // exit(1); // if (!probTr.PropagateTo(last->radius,bGauss)) exit(1); // // rotate to frame with X axis normal to the surface if (!isVertex) { @@ -1555,7 +1559,7 @@ Bool_t DetectorK::SolveTrack(TrackSol& ts) { printf("SaveInw %d (%f) ",j,layer->radius); probTr.Print(); } // - if (!isVertex && !layer->isDead) { + if (!isVertex && !layer->isDead && layer->radius >= radiusTr) { // // create fake measurement with the errors assigned to the layer // account for the measurement there @@ -1618,7 +1622,7 @@ Bool_t DetectorK::SolveTrack(TrackSol& ts) { layer = (CylLayerK*)fLayers.At(j); TString name(layer->GetName()); Bool_t isVertex = name.Contains("vertex"); - if (!PropagateToR(&probTr, layer->radius,bGauss,1)) exit(1); + if (!PropagateToR(&probTr, layer->radius,bGauss,1)) continue; // exit(1); // if (!isVertex) { // rotate to frame with X axis normal to the surface diff --git a/src/DetectorK/DetectorK.h b/src/DetectorK/DetectorK.h index 0341207..5263abd 100644 --- a/src/DetectorK/DetectorK.h +++ b/src/DetectorK/DetectorK.h @@ -54,8 +54,8 @@ class TrackSol: public TObject public: enum {kInw,kOut,kCmb}; // - TrackSol(int nL, double pt, double eta, int q, double m=0.140) - : fPt(nL>0 ? pt : -1), fEta(eta), fMass(m), fCharge(q), + TrackSol(int nL, double pt, double eta, int q, double m=0.140, double phi = 0., double radius = 0.) + : fPt(nL>0 ? pt : -1), fEta(eta), fMass(m), fCharge(q), fPhi(phi), fRadius(radius), fTrackInw("AliExternalTrackParam",nL), fTrackOutB("AliExternalTrackParam",nL), fTrackOutA("AliExternalTrackParam",nL), @@ -77,6 +77,8 @@ class TrackSol: public TObject Double_t fEta; Double_t fMass; Int_t fCharge; + Double_t fPhi; + Double_t fRadius; Double_t fProb[3][2]; // corr/fake prob for inw,out and cmb tracking TClonesArray fTrackInw; TClonesArray fTrackOutB; // outward before update