From 4663da9f6a27a26e2ae81c1db72952ce0ed288b2 Mon Sep 17 00:00:00 2001 From: ivana Date: Tue, 3 Nov 2009 10:54:49 +0000 Subject: [PATCH] In reconstruction: Add the possibility to adjust chamber by chamber the x/x0 value used in the computation of Multiple Coulomb Scattering effets (driven by the fact that it is ~2 times higher for St1&2 than for others). The choice of these values has a little effect on the resolution of the tracking, but it can change significantly the size of the area where we search for new clusters to be attached to the track. (Philippe P.) --- MUON/AliMUONConstants.cxx | 2 +- MUON/AliMUONConstants.h | 4 +-- MUON/AliMUONTrack.cxx | 8 ++--- MUON/AliMUONTrackReconstructor.cxx | 19 +++++----- MUON/AliMUONTrackReconstructorK.cxx | 20 +++++------ MUON/AliMUONVTrackReconstructor.cxx | 55 +++++++++++++++++++---------- MUON/AliMUONVTrackReconstructor.h | 2 +- 7 files changed, 63 insertions(+), 47 deletions(-) diff --git a/MUON/AliMUONConstants.cxx b/MUON/AliMUONConstants.cxx index bece423d1fe..5f39ed13792 100644 --- a/MUON/AliMUONConstants.cxx +++ b/MUON/AliMUONConstants.cxx @@ -108,7 +108,7 @@ const Double_t AliMUONConstants::fgkMuonFilterZEnd = -1471.-120.; const Double_t AliMUONConstants::fgkMuonFilterX0 = 1.76; // Defaults parameters for track reconstruction -Double_t AliMUONConstants::fgChamberThicknessInX0 = 0.045; +Double_t AliMUONConstants::fgChamberThicknessInX0[10] = {0.065, 0.065, 0.075, 0.075, 0.035, 0.035, 0.035, 0.035, 0.035, 0.035}; const Double_t AliMUONConstants::fgkMostProbBendingMomentum = 2.0; diff --git a/MUON/AliMUONConstants.h b/MUON/AliMUONConstants.h index 4726e0cf1fc..921b59c4058 100644 --- a/MUON/AliMUONConstants.h +++ b/MUON/AliMUONConstants.h @@ -81,7 +81,7 @@ class AliMUONConstants : public TObject { /// Return z-position of absorber end static Double_t AbsZEnd() {return fgkAbsZEnd;} /// Return chamber thickness in X0 - static Double_t ChamberThicknessInX0() {return fgChamberThicknessInX0;} + static Double_t ChamberThicknessInX0(Int_t chId) {return (chId >= 0 && chId < 10) ? fgChamberThicknessInX0[chId] : 0.;} /// Return Trigger ToF Limit (75 ns) static Float_t TriggerTofLimit() {return fgkTriggerTofLimit;} /// Return default trigger chamber resolution in non bending direction @@ -131,7 +131,7 @@ class AliMUONConstants : public TObject { static Float_t fgPitch; ///< Wire pitch for St2 & Slats static Float_t fgPitchSt1; ///< Wire pitch for Station 1 - static Double_t fgChamberThicknessInX0; ///< default chamber thickness in X0 for reconstruction + static Double_t fgChamberThicknessInX0[10]; ///< default chamber thickness in X0 for reconstruction static Double_t fgCoilZ; ///< Coil z-position static Double_t fgCoilL; ///< Coil lenght diff --git a/MUON/AliMUONTrack.cxx b/MUON/AliMUONTrack.cxx index d402a983df3..202c0b67745 100644 --- a/MUON/AliMUONTrack.cxx +++ b/MUON/AliMUONTrack.cxx @@ -444,7 +444,7 @@ Bool_t AliMUONTrack::UpdateCovTrackParamAtCluster() trackParamAtCluster->SetCovariances(startingTrackParam->GetCovariances()); // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(expectedChamber-1),-1.); // add MCS in missing chambers if any currentChamber = trackParamAtCluster->GetClusterPtr()->GetChamberId(); @@ -452,7 +452,7 @@ Bool_t AliMUONTrack::UpdateCovTrackParamAtCluster() // extrapolation to the missing chamber if (!AliMUONTrackExtrap::ExtrapToZCov(trackParamAtCluster, AliMUONConstants::DefaultChamberZ(expectedChamber))) extrapStatus = kFALSE; // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(expectedChamber),-1.); expectedChamber++; } @@ -958,7 +958,7 @@ void AliMUONTrack::ComputeMCSCovariances(TMatrixD& mcsCovariances) const AliMUONTrackExtrap::ExtrapToZ(&extrapTrackParam, zMCS[size]); // Save multiple scattering dispersion angle in missing chamber - mcsAngle2[size] = AliMUONTrackExtrap::GetMCSAngle2(extrapTrackParam,AliMUONConstants::ChamberThicknessInX0(),1.); + mcsAngle2[size] = AliMUONTrackExtrap::GetMCSAngle2(extrapTrackParam,AliMUONConstants::ChamberThicknessInX0(expectedChamber),1.); } else mcsAngle2[size] = 0.; @@ -970,7 +970,7 @@ void AliMUONTrack::ComputeMCSCovariances(TMatrixD& mcsCovariances) const zMCS[size] = trackParamAtCluster->GetZ(); // Save multiple scattering dispersion angle in current chamber - mcsAngle2[size] = AliMUONTrackExtrap::GetMCSAngle2(*trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(),1.); + mcsAngle2[size] = AliMUONTrackExtrap::GetMCSAngle2(*trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(currentChamber),1.); // Save indice in zMCS array corresponding to the current cluster indices[iCluster] = size; diff --git a/MUON/AliMUONTrackReconstructor.cxx b/MUON/AliMUONTrackReconstructor.cxx index d0319d2014d..303af9148c0 100644 --- a/MUON/AliMUONTrackReconstructor.cxx +++ b/MUON/AliMUONTrackReconstructor.cxx @@ -488,16 +488,16 @@ Bool_t AliMUONTrackReconstructor::FollowTrackInChamber(AliMUONTrack &trackCandid } // Add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId(); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.); // Add MCS in the missing chamber(s) if any - Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId(); while (currentChamber > nextChamber + 1) { // extrapolation to the missing chamber currentChamber--; if (!AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(currentChamber))) return kFALSE; // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.); } //Extrapolate trackCandidate to chamber @@ -645,16 +645,16 @@ Bool_t AliMUONTrackReconstructor::FollowTrackInStation(AliMUONTrack &trackCandid } // Add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId(); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.); // Add MCS in the missing chamber(s) if any - Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId(); while (ch1 < ch2 && currentChamber > ch2 + 1) { // extrapolation to the missing chamber currentChamber--; if (!AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(currentChamber))) return kFALSE; // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.); } //Extrapolate trackCandidate to chamber "ch2" @@ -709,7 +709,7 @@ Bool_t AliMUONTrackReconstructor::FollowTrackInStation(AliMUONTrack &trackCandid } // add MCS effect for next step - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCluster2,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCluster2,AliMUONConstants::ChamberThicknessInX0(ch2),-1.); // copy new track parameters for next step extrapTrackParam = extrapTrackParamAtCluster2; @@ -802,7 +802,7 @@ Bool_t AliMUONTrackReconstructor::FollowTrackInStation(AliMUONTrack &trackCandid if (GetRecoParam()->TrackAllTracks() || !foundTwoClusters) { // add MCS effect for next step - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(ch2),-1.); //Extrapolate trackCandidate to chamber "ch1" Bool_t normalExtrap = AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(ch1)); @@ -949,9 +949,6 @@ Double_t AliMUONTrackReconstructor::TryTwoClusters(const AliMUONTrackParam &trac // copy track parameters at first cluster for jacobian calculation AliMUONTrackParam trackParam(trackParamAtCluster1); - // add MCS effect to the covariance matrix at first cluster - AliMUONTrackExtrap::AddMCSEffect(&trackParam,AliMUONConstants::ChamberThicknessInX0(),-1.); - // Get the pointer to the parameter covariance matrix at first cluster const TMatrixD& kParamCov = trackParam.GetCovariances(); diff --git a/MUON/AliMUONTrackReconstructorK.cxx b/MUON/AliMUONTrackReconstructorK.cxx index cf9a3719226..8c265ba3b3b 100644 --- a/MUON/AliMUONTrackReconstructorK.cxx +++ b/MUON/AliMUONTrackReconstructorK.cxx @@ -370,7 +370,7 @@ Bool_t AliMUONTrackReconstructorK::RetracePartialTrack(AliMUONTrack &trackCandid trackParamAtCluster->SetCovariances(startingTrackParam->GetCovariances()); // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(expectedChamber+1),-1.); // reset propagator for smoother if (GetRecoParam()->UseSmoother()) trackParamAtCluster->ResetPropagator(); @@ -382,7 +382,7 @@ Bool_t AliMUONTrackReconstructorK::RetracePartialTrack(AliMUONTrack &trackCandid if (!AliMUONTrackExtrap::ExtrapToZCov(trackParamAtCluster, AliMUONConstants::DefaultChamberZ(expectedChamber), GetRecoParam()->UseSmoother())) extrapStatus = kFALSE; // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(expectedChamber),-1.); expectedChamber--; } @@ -533,20 +533,20 @@ Bool_t AliMUONTrackReconstructorK::FollowTrackInChamber(AliMUONTrack &trackCandi } // Add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId(); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.); // reset propagator for smoother if (GetRecoParam()->UseSmoother()) extrapTrackParamAtCh.ResetPropagator(); // Add MCS in the missing chamber(s) if any - Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId(); while (currentChamber > nextChamber + 1) { // extrapolation to the missing chamber currentChamber--; if (!AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(currentChamber), GetRecoParam()->UseSmoother())) return kFALSE; // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.); } //Extrapolate trackCandidate to chamber @@ -712,20 +712,20 @@ Bool_t AliMUONTrackReconstructorK::FollowTrackInStation(AliMUONTrack &trackCandi } // Add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId(); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.); // reset propagator for smoother if (GetRecoParam()->UseSmoother()) extrapTrackParamAtCh.ResetPropagator(); // Add MCS in the missing chamber(s) if any - Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId(); while (ch1 < ch2 && currentChamber > ch2 + 1) { // extrapolation to the missing chamber currentChamber--; if (!AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(currentChamber), GetRecoParam()->UseSmoother())) return kFALSE; // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.); } //Extrapolate trackCandidate to chamber "ch2" @@ -798,7 +798,7 @@ Bool_t AliMUONTrackReconstructorK::FollowTrackInStation(AliMUONTrack &trackCandi extrapTrackParam = extrapTrackParamAtCluster2; // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParam,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParam,AliMUONConstants::ChamberThicknessInX0(ch2),-1.); // reset propagator for smoother if (GetRecoParam()->UseSmoother()) extrapTrackParam.ResetPropagator(); @@ -913,7 +913,7 @@ Bool_t AliMUONTrackReconstructorK::FollowTrackInStation(AliMUONTrack &trackCandi if (GetRecoParam()->TrackAllTracks() || !foundTwoClusters) { // add MCS effect for next step - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(ch2),-1.); //Extrapolate trackCandidate to chamber "ch1" Bool_t normalExtrap = AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(ch1), diff --git a/MUON/AliMUONVTrackReconstructor.cxx b/MUON/AliMUONVTrackReconstructor.cxx index c18c2951116..dfeafabd9bb 100644 --- a/MUON/AliMUONVTrackReconstructor.cxx +++ b/MUON/AliMUONVTrackReconstructor.cxx @@ -101,7 +101,7 @@ fRecTracksPtr(0x0), fNRecTracks(0), fClusterServer(clusterServer), fkRecoParam(recoParam), -fMaxMCSAngle2(0.) +fMaxMCSAngle2(0x0) { /// Constructor for class AliMUONVTrackReconstructor /// WARNING: if clusterServer=0x0, no clusterization will be possible at this level @@ -116,7 +116,9 @@ fMaxMCSAngle2(0.) AliMUONTrackParam param; Double_t inverseBendingP = (GetRecoParam()->GetMinBendingMomentum() > 0.) ? 1./GetRecoParam()->GetMinBendingMomentum() : 1.; param.SetInverseBendingMomentum(inverseBendingP); - fMaxMCSAngle2 = AliMUONTrackExtrap::GetMCSAngle2(param, AliMUONConstants::ChamberThicknessInX0(), 1.); + fMaxMCSAngle2 = new Double_t [AliMUONConstants::NTrackingCh()]; + for (Int_t iCh=0; iChSelectOnTrackSlope()) for (Int_t iCh=0; iCh<=chamber; iCh++) - impactMCS2 += AliMUONConstants::DefaultChamberZ(chamber) * AliMUONConstants::DefaultChamberZ(chamber) * angleMCS2; + if (AliMUONTrackExtrap::IsFieldON() && chamber < 6) { + + // track momentum is known + for (Int_t iCh=0; iCh<=chamber; iCh++) { + Double_t localMCS2 = AliMUONTrackExtrap::GetMCSAngle2(trackParam, AliMUONConstants::ChamberThicknessInX0(iCh), 1.); + angleMCS2 += localMCS2; + impactMCS2 += AliMUONConstants::DefaultChamberZ(chamber) * AliMUONConstants::DefaultChamberZ(chamber) * localMCS2; + } + + } else { + + // track momentum is unknown + for (Int_t iCh=0; iCh<=chamber; iCh++) { + angleMCS2 += fMaxMCSAngle2[iCh]; + impactMCS2 += AliMUONConstants::DefaultChamberZ(chamber) * AliMUONConstants::DefaultChamberZ(chamber) * fMaxMCSAngle2[iCh]; + } + + } // ------ track selection in non bending direction ------ if (GetRecoParam()->SelectOnTrackSlope()) { // check if non bending slope is within tolerances - Double_t nonBendingSlopeErr = TMath::Sqrt(kParamCov(1,1) + (chamber + 1.) * angleMCS2); + Double_t nonBendingSlopeErr = TMath::Sqrt(kParamCov(1,1) + angleMCS2); if ((TMath::Abs(trackParam.GetNonBendingSlope()) - sigmaCut * nonBendingSlopeErr) > GetRecoParam()->GetMaxNonBendingSlope()) return kFALSE; } else { @@ -235,7 +251,7 @@ Bool_t AliMUONVTrackReconstructor::IsAcceptable(AliMUONTrackParam &trackParam) if (GetRecoParam()->SelectOnTrackSlope()) { // check if bending slope is within tolerances - Double_t bendingSlopeErr = TMath::Sqrt(kParamCov(3,3) + (chamber + 1.) * angleMCS2); + Double_t bendingSlopeErr = TMath::Sqrt(kParamCov(3,3) + angleMCS2); if ((TMath::Abs(trackParam.GetBendingSlope()) - sigmaCut * bendingSlopeErr) > GetRecoParam()->GetMaxBendingSlope()) return kFALSE; } else { @@ -269,9 +285,12 @@ TClonesArray* AliMUONVTrackReconstructor::MakeSegmentsBetweenChambers(const AliM Double_t bendingSlope = 0., bendingSlopeErr = 0., bendingImpactParam = 0., bendingImpactParamErr = 0., bendingImpactParamErr2 = 0.; Double_t bendingMomentum = 0., bendingMomentumErr = 0.; Double_t bendingVertexDispersion2 = GetRecoParam()->GetBendingVertexDispersion() * GetRecoParam()->GetBendingVertexDispersion(); - Double_t impactMCS2 = 0; // maximum impact parameter dispersion**2 due to MCS in chamber - if (!GetRecoParam()->SelectOnTrackSlope() || AliMUONTrackExtrap::IsFieldON()) for (Int_t iCh=0; iCh<=ch1; iCh++) - impactMCS2 += AliMUONConstants::DefaultChamberZ(iCh) * AliMUONConstants::DefaultChamberZ(iCh) * fMaxMCSAngle2; + Double_t angleMCS2 = 0.; // maximum angular dispersion**2 due to MCS in chamber + Double_t impactMCS2 = 0.; // maximum impact parameter dispersion**2 due to MCS in chamber + for (Int_t iCh=0; iCh<=ch1; iCh++) { + angleMCS2 += fMaxMCSAngle2[iCh]; + impactMCS2 += AliMUONConstants::DefaultChamberZ(iCh) * AliMUONConstants::DefaultChamberZ(iCh) * fMaxMCSAngle2[iCh]; + } Double_t sigmaCut = GetRecoParam()->GetSigmaCutForTracking(); // Create iterators to loop over clusters in both chambers @@ -298,7 +317,7 @@ TClonesArray* AliMUONVTrackReconstructor::MakeSegmentsBetweenChambers(const AliM if (GetRecoParam()->SelectOnTrackSlope()) { // check if non bending slope is within tolerances - nonBendingSlopeErr = TMath::Sqrt((cluster1->GetErrX2() + cluster2->GetErrX2()) / dZ / dZ + (ch1 + 1.) * fMaxMCSAngle2); + nonBendingSlopeErr = TMath::Sqrt((cluster1->GetErrX2() + cluster2->GetErrX2()) / dZ / dZ + angleMCS2); if ((TMath::Abs(nonBendingSlope) - sigmaCut * nonBendingSlopeErr) > GetRecoParam()->GetMaxNonBendingSlope()) continue; } else { @@ -327,7 +346,7 @@ TClonesArray* AliMUONVTrackReconstructor::MakeSegmentsBetweenChambers(const AliM if (GetRecoParam()->SelectOnTrackSlope()) { // check if bending slope is within tolerances - bendingSlopeErr = TMath::Sqrt((cluster1->GetErrY2() + cluster2->GetErrY2()) / dZ / dZ + (ch1 + 1.) * fMaxMCSAngle2); + bendingSlopeErr = TMath::Sqrt((cluster1->GetErrY2() + cluster2->GetErrY2()) / dZ / dZ + angleMCS2); if ((TMath::Abs(bendingSlope) - sigmaCut * bendingSlopeErr) > GetRecoParam()->GetMaxBendingSlope()) continue; } else { @@ -746,7 +765,7 @@ Bool_t AliMUONVTrackReconstructor::FollowLinearTrackInChamber(AliMUONTrack &trac } // Add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&trackParam,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&trackParam,AliMUONConstants::ChamberThicknessInX0(trackParam.GetClusterPtr()->GetChamberId()),-1.); // Printout for debuging if ((AliLog::GetDebugLevel("MUON","AliMUONVTrackReconstructor") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) { @@ -893,7 +912,7 @@ Bool_t AliMUONVTrackReconstructor::FollowLinearTrackInStation(AliMUONTrack &trac } // Add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&trackParam,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&trackParam,AliMUONConstants::ChamberThicknessInX0(trackParam.GetClusterPtr()->GetChamberId()),-1.); // Printout for debuging if ((AliLog::GetDebugLevel("MUON","AliMUONVTrackReconstructor") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) { @@ -928,7 +947,7 @@ Bool_t AliMUONVTrackReconstructor::FollowLinearTrackInStation(AliMUONTrack &trac } // add MCS effect - AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCluster2,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCluster2,AliMUONConstants::ChamberThicknessInX0(ch2),-1.); // reset cluster iterator of chamber 1 nextInCh1.Reset(); @@ -1031,7 +1050,7 @@ Bool_t AliMUONVTrackReconstructor::FollowLinearTrackInStation(AliMUONTrack &trac AliMUONTrackExtrap::LinearExtrapToZCov(&trackParam, AliMUONConstants::DefaultChamberZ(ch2)); // add MCS effect for next step - AliMUONTrackExtrap::AddMCSEffect(&trackParam,AliMUONConstants::ChamberThicknessInX0(),-1.); + AliMUONTrackExtrap::AddMCSEffect(&trackParam,AliMUONConstants::ChamberThicknessInX0(ch2),-1.); // reset cluster iterator of chamber 1 nextInCh1.Reset(); diff --git a/MUON/AliMUONVTrackReconstructor.h b/MUON/AliMUONVTrackReconstructor.h index 48b1a33ac17..90721cdfefe 100644 --- a/MUON/AliMUONVTrackReconstructor.h +++ b/MUON/AliMUONVTrackReconstructor.h @@ -64,7 +64,7 @@ class AliMUONVTrackReconstructor : public TObject { const AliMUONRecoParam* fkRecoParam; ///< reference to reco parameters - Double_t fMaxMCSAngle2; ///< maximum angle dispersion due to MCS + Double_t* fMaxMCSAngle2; ///< maximum angle dispersion due to MCS // Functions AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs); ///< copy constructor -- 2.43.0