X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=MUON%2FAliMUONRecoParam.cxx;h=b238512507dd58ad0b8a03e67c405e690f2fe4c1;hb=c11ea7d4bcf73d08aa4c3719393d0e05d331b712;hp=33f88ecbf528bc8f517f9cc7bad7ce1ec56bdb5a;hpb=9bdbee64017f9c224a09e39ad7a90130ae499ad6;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONRecoParam.cxx b/MUON/AliMUONRecoParam.cxx index 33f88ecbf52..b238512507d 100644 --- a/MUON/AliMUONRecoParam.cxx +++ b/MUON/AliMUONRecoParam.cxx @@ -26,9 +26,10 @@ #include "AliMUONRecoParam.h" +#include "AliMUONPadStatusMaker.h" +#include "AliRecoParam.h" #include "AliLog.h" -#include "AliMUONPadStatusMaker.h" #include @@ -67,15 +68,26 @@ AliMUONRecoParam::AliMUONRecoParam() fCalibrationMode("NOGAIN"), fBypassSt45(0), fPadGoodnessMask(0), - fChargeSigmaCut(4.0) -{ + fChargeSigmaCut(4.0), + fRemoveConnectedTracksInSt12(kFALSE), + fMaxTriggerTracks(0), + fMaxTrackCandidates(0), + fSelectTrackOnSlope(kFALSE), + fMissingPadFractionLimit(0), + fFractionOfBuspatchOutsideOccupancyLimit(0), + fAverageNoisePadCharge(0.22875), + fClusterChargeCut(2.0) +{ /// Constructor - SetNameTitle("MUON","MUON"); - SetDefaultLimits(); - - // use the default parameters for low flux environment - SetLowFluxParam(); + SetNameTitle("Dummy","Dummy"); + for (Int_t iCh = 0; iCh < 10; iCh++) { + fUseChamber[iCh] = kTRUE; + fDefaultNonBendingReso[iCh] = 0.; + fDefaultBendingReso[iCh] = 0.; + } + for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE; + SetDefaultLimits(); } //_____________________________________________________________________________ @@ -104,6 +116,7 @@ AliMUONRecoParam::GetCalibrationMode() const /// NOGAIN : only do pedestal subtraction /// GAIN : do pedestal subtraction, and apply gain correction, but with a /// single capacitance value for all channels + /// INJECTIONGAIN : as GAIN, but with gain values taken as EMELEC factory values /// GAINCONSTANTCAPA : as GAIN, but with a channel-dependent capacitance value return fCalibrationMode.Data(); @@ -142,25 +155,40 @@ AliMUONRecoParam *AliMUONRecoParam::GetCosmicParam() return param; } +//_____________________________________________________________________________ +AliMUONRecoParam *AliMUONRecoParam::GetCalibrationParam() +{ + /// Return default (dummy) reconstruction parameters for calibration environment + + AliMUONRecoParam *param = new AliMUONRecoParam(); + param->SetCalibrationParam(); + + return param; +} + + //_____________________________________________________________________________ void AliMUONRecoParam::SetLowFluxParam() { /// Set reconstruction parameters for low flux environment - fMinBendingMomentum = 1.; - fMaxBendingMomentum = 3000.; + SetNameTitle("Low Flux","Low Flux"); + SetEventSpecie(AliRecoParam::kLowMult); + fMinBendingMomentum = 0.8; + fMaxBendingMomentum = 1.e10; fMaxNonBendingSlope = 0.3; fMaxBendingSlope = 0.4; - fNonBendingVertexDispersion = 10.; - fBendingVertexDispersion = 10.; + fSelectTrackOnSlope = kFALSE; + fNonBendingVertexDispersion = 70.; + fBendingVertexDispersion = 70.; fMaxNonBendingDistanceToTrack = 1.; fMaxBendingDistanceToTrack = 1.; fSigmaCutForTracking = 6.; fSigmaCutForImprovement = 5.; - fSigmaCutForTrigger = 8.; + fSigmaCutForTrigger = 4.; fStripCutForTrigger = 1.; fMaxStripAreaForTrigger = 3.; - fMaxNormChi2MatchTrigger = 16.; + fMaxNormChi2MatchTrigger = fSigmaCutForTrigger * fSigmaCutForTrigger; fCombinedClusterTrackReco = kFALSE; fTrackAllTracks = kTRUE; fRecoverTracks = kTRUE; @@ -168,11 +196,17 @@ void AliMUONRecoParam::SetLowFluxParam() fMakeMoreTrackCandidates = kFALSE; fComplementTracks = kTRUE; fImproveTracks = kTRUE; + fRemoveConnectedTracksInSt12 = kFALSE; fUseSmoother = kTRUE; - for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE; + for (Int_t iCh = 0; iCh < 10; iCh++) { + fUseChamber[iCh] = kTRUE; + fDefaultNonBendingReso[iCh] = 0.144; + fDefaultBendingReso[iCh] = 0.01; + } for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE; fBypassSt45 = 0; - + fMaxTriggerTracks = 100; + fMaxTrackCandidates = 10000; } //_____________________________________________________________________________ @@ -180,20 +214,23 @@ void AliMUONRecoParam::SetHighFluxParam() { /// Set reconstruction parameters for high flux environment - fMinBendingMomentum = 1.; - fMaxBendingMomentum = 3000.; + SetNameTitle("High Flux","High Flux"); + SetEventSpecie(AliRecoParam::kHighMult); + fMinBendingMomentum = 0.8; + fMaxBendingMomentum = 1.e10; fMaxNonBendingSlope = 0.3; fMaxBendingSlope = 0.4; - fNonBendingVertexDispersion = 10.; - fBendingVertexDispersion = 10.; + fSelectTrackOnSlope = kFALSE; + fNonBendingVertexDispersion = 70.; + fBendingVertexDispersion = 70.; fMaxNonBendingDistanceToTrack = 1.; fMaxBendingDistanceToTrack = 1.; fSigmaCutForTracking = 6.; fSigmaCutForImprovement = 5.; - fSigmaCutForTrigger = 8.; + fSigmaCutForTrigger = 4.; fStripCutForTrigger = 1.; fMaxStripAreaForTrigger = 3.; - fMaxNormChi2MatchTrigger = 16.; + fMaxNormChi2MatchTrigger = fSigmaCutForTrigger * fSigmaCutForTrigger; fCombinedClusterTrackReco = kFALSE; fTrackAllTracks = kTRUE; fRecoverTracks = kTRUE; @@ -201,27 +238,17 @@ void AliMUONRecoParam::SetHighFluxParam() fMakeMoreTrackCandidates = kFALSE; fComplementTracks = kTRUE; fImproveTracks = kTRUE; + fRemoveConnectedTracksInSt12 = kFALSE; fUseSmoother = kTRUE; - for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE; + for (Int_t iCh = 0; iCh < 10; iCh++) { + fUseChamber[iCh] = kTRUE; + fDefaultNonBendingReso[iCh] = 0.144; + fDefaultBendingReso[iCh] = 0.01; + } for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE; fBypassSt45 = 0; - -} - -//_____________________________________________________________________________ -UInt_t -AliMUONRecoParam::RequestedStationMask() const -{ - /// Get the mask of the requested station, i.e. an integer where - /// bit n is set to one if the station n was requested - - UInt_t m(0); - - for ( Int_t i = 0; i < 5; ++i ) - { - if ( RequestStation(i) ) m |= ( 1 << i ); - } - return m; + fMaxTriggerTracks = 100; + fMaxTrackCandidates = 10000; } //_____________________________________________________________________________ @@ -229,18 +256,23 @@ void AliMUONRecoParam::SetCosmicParam() { /// Set reconstruction parameters for high flux environment - fMinBendingMomentum = 1.; - fMaxBendingMomentum = 10000000.; + SetNameTitle("Cosmic","Cosmic"); + SetEventSpecie(AliRecoParam::kCosmic); + fMinBendingMomentum = 0.8; + fMaxBendingMomentum = 1.e10; fMaxNonBendingSlope = 0.3; fMaxBendingSlope = 0.4; - fNonBendingVertexDispersion = 10.; - fBendingVertexDispersion = 10.; - fMaxNonBendingDistanceToTrack = 10.; - fMaxBendingDistanceToTrack = 10.; - fSigmaCutForTracking = 20.; - fSigmaCutForImprovement = 20.; - fSigmaCutForTrigger = 8.; - fMaxNormChi2MatchTrigger = 16.; + fSelectTrackOnSlope = kTRUE; + fNonBendingVertexDispersion = 170.; + fBendingVertexDispersion = 170.; + fMaxNonBendingDistanceToTrack = 1.; + fMaxBendingDistanceToTrack = 1.; + fSigmaCutForTracking = 7.; + fSigmaCutForImprovement = 6.; + fSigmaCutForTrigger = 4.; + fStripCutForTrigger = 1.5; + fMaxStripAreaForTrigger = 3.; + fMaxNormChi2MatchTrigger = fSigmaCutForTrigger * fSigmaCutForTrigger; fPercentOfFullClusterInESD = 100.; fCombinedClusterTrackReco = kFALSE; fTrackAllTracks = kTRUE; @@ -249,12 +281,62 @@ void AliMUONRecoParam::SetCosmicParam() fMakeMoreTrackCandidates = kFALSE; fComplementTracks = kTRUE; fImproveTracks = kTRUE; + fRemoveConnectedTracksInSt12 = kTRUE; fUseSmoother = kTRUE; fSaveFullClusterInESD = kTRUE; - for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE; - for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE; + for (Int_t iCh = 0; iCh < 10; iCh++) { + fUseChamber[iCh] = kTRUE; + fDefaultNonBendingReso[iCh] = 0.4; + fDefaultBendingReso[iCh] = 0.4; + } + fRequestStation[0] = kTRUE; + fRequestStation[1] = kTRUE; + fRequestStation[2] = kTRUE; + fRequestStation[3] = kTRUE; + fRequestStation[4] = kTRUE; fBypassSt45 = 0; + fPadGoodnessMask = 0x400BE80; // Ped Mean is Zero | Ped Mean Too Low | Ped Mean Too High | Ped Sigma Too Low | Ped Sigma Too High | Ped is missing | HV is missing | manu occupancy too high + fMaxTriggerTracks = 100; + fMaxTrackCandidates = 10000; + SetPedMeanLimits(20, 700); + SetManuOccupancyLimits(-1.,0.01); // reject manu above occ=1% + + SetBuspatchOccupancyLimits(-1,0.01); + SetMissingPadFractionLimit(0.1); // 10 % + SetFractionOfBuspatchOutsideOccupancyLimit(0.05); // 5 % +} + + +//_____________________________________________________________________________ +void AliMUONRecoParam::SetCalibrationParam() +{ + /// Set (dummy) reconstruction parameters for calibration environment + + SetNameTitle("Calibration","Calibration"); + SetEventSpecie(AliRecoParam::kCalib); + + fPedMeanLimits[0] = 5000; + fPedMeanLimits[1] = 0; + + fPadGoodnessMask = 0x8C00; // Pedestal is missing | is too low | too high + +} + +//_____________________________________________________________________________ +UInt_t +AliMUONRecoParam::RequestedStationMask() const +{ + /// Get the mask of the requested station, i.e. an integer where + /// bit n is set to one if the station n was requested + + UInt_t m(0); + + for ( Int_t i = 0; i < 5; ++i ) + { + if ( RequestStation(i) ) m |= ( 1 << i ); + } + return m; } //_____________________________________________________________________________ @@ -263,7 +345,9 @@ void AliMUONRecoParam::Print(Option_t *option) const /// print reconstruction parameters /// if option = FULL then print also unused parameters - cout< %5.2f",fMinBendingMomentum)<= %7.2f x ( pedestal sigma ) ",ChargeSigmaCut()) << endl; - cout<<"\t-------------------------------------"<