@@ -525,12 +525,13 @@ void DetectorK::AddTPC(Float_t phiResMean, Float_t zResMean, Int_t skip) {
525525 // skip=1: Use every padrow, skip=2: Signal in every 2nd padrow
526526
527527
528- AddLayer ((char *)" tpcIFC" , 77.8 , 0.01367 ); // Inner Field cage
529- AddLayer ((char *)" tpcOFC" , 254.0 , 0.01367 ); // Outer Field cage
528+ AddLayer ((char *)" tpcIFC" , 77.8 , 9.279967e-02 , 3.325701e+00 ); // Inner Field cage
529+ AddLayer ((char *)" tpcOFC" , 254.0 , 9.279967e-02 , 3.325701e+00 ); // Outer Field cage
530530
531531 // % Radiation Lengths ... Average per TPC row (i.e. total/159 )
532532 const int kNPassiveBound = 2 ;
533- const Float_t radLBoubdary[kNPassiveBound ] = {0.05 , 0.0165 };
533+ const Float_t radLBoundary[kNPassiveBound ] = {1.692612e-01 , 8.711904e-02 };
534+ const Float_t xrhoBoundary[kNPassiveBound ] = {6.795774e+00 , 3.111401e+00 };
534535 const Float_t rBoundary[kNPassiveBound ] = {50 , 70.0 }; // cm
535536
536537 Float_t radLPerRow = 0.000036 ;
@@ -551,7 +552,7 @@ void DetectorK::AddTPC(Float_t phiResMean, Float_t zResMean, Int_t skip) {
551552
552553 // add boundaries between ITS and TPC
553554 for (int i=0 ;i<kNPassiveBound ;i++) {
554- AddLayer (Form (" tpc_boundary%d" ,i),rBoundary[i],radLBoubdary [i]); // dummy errors
555+ AddLayer (Form (" tpc_boundary%d" ,i),rBoundary[i],radLBoundary[i], xrhoBoundary [i]); // dummy errors
555556 }
556557
557558 for ( Int_t k = 0 ; k < tpcRows ; k++ ) {
@@ -565,9 +566,9 @@ void DetectorK::AddTPC(Float_t phiResMean, Float_t zResMean, Int_t skip) {
565566 rowRadius = row128Radius + (k-innerRows-middleRows+1 )*tpcOuterRadialPitch ;
566567
567568 if ( k%skip == 0 )
568- AddLayer (Form (" tpc_%d" ,k),rowRadius,radLPerRow,phiResMean,zResMean);
569+ AddLayer (Form (" tpc_%d" ,k),rowRadius,radLPerRow, 0 , phiResMean,zResMean);
569570 else
570- AddLayer (Form (" tpc_%d" ,k),rowRadius,radLPerRow); // non "active" row
571+ AddLayer (Form (" tpc_%d" ,k),rowRadius,radLPerRow, 0 ); // non "active" row
571572
572573
573574 }
@@ -791,12 +792,12 @@ void DetectorK::SolveViaBilloir(Double_t selPt, double ptmin) {
791792 // Calculate track parameters using Billoirs method of matrices
792793
793794 Double_t pt,tgl, lambda, deltaPoverP ;
794- Double_t charge ;
795+ Double_t charge = 1 ;
795796 Int_t printOnce = 1 ;
796797
797798 Int_t mStart =0 ;
798799
799-
800+ if ( TMath::Abs (charge)> 1.2 ) fParticleMass = - TMath::Abs ( fParticleMass );
800801
801802 // Prepare Probability Kombinations
802803 Int_t nLayer = fNumberOfActiveITSLayers ;
@@ -890,7 +891,7 @@ void DetectorK::SolveViaBilloir(Double_t selPt, double ptmin) {
890891 trCov[kY2 ] = trCov[kZ2 ] = trCov[kSnp2 ] = trCov[kTgl2 ] = trCov[kPtI2 ] = 1e-9 ;
891892 //
892893 // find max layer this track can reach
893- double rmx = (TMath::Abs (fBField )>1e-5 ) ? pt*100 ./(0.3 *TMath::Abs (fBField )) : 9999 ;
894+ double rmx = (TMath::Abs (fBField )>1e-5 ) ? TMath::Abs (charge)* pt*100 ./(0.3 *TMath::Abs (fBField )) : 9999 ;
894895 Int_t lastActiveLayer = -1 ;
895896 for (Int_t j=fLayers .GetEntries (); j--;) {
896897 CylLayerK *l = (CylLayerK*) fLayers .At (j);
@@ -928,10 +929,13 @@ void DetectorK::SolveViaBilloir(Double_t selPt, double ptmin) {
928929 lastReached = il;
929930 prepLrOK[il] = 1 .; // flag successfully passed layer
930931 }
931- if ( ((CylLayerK*)fLayers .At (lastReached))->radius < fMinRadTrack ) continue ;
932+ // if ( ((CylLayerK*)fLayers.At(lastReached))->radius < fMinRadTrack) continue;
932933 if (!PropagateToR (&probTr,probTr.GetX () + kTrackingMargin ,bGauss,1 )) continue ;
933- if (probTr.GetX ()<fMinRadTrack ) continue ;
934+ // if (probTr.GetX()<fMinRadTrack) continue;
934935 lastActiveLayer = lastReached;
936+ if (lastActiveLayer<fNumberOfActiveITSLayers ) {
937+ continue ;
938+ }
935939
936940 // if (!PropagateToR(&probTr,last->radius + kTrackingMargin,bGauss,1)) continue;
937941 // if (!probTr.PropagateTo(last->radius,bGauss)) continue;
0 commit comments