X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDrecoParam.cxx;h=0716dc7f51cdac723cf015b279dc00655bc7218b;hb=e048e148214a983b8bc603cfdc113ce06082bb55;hp=885c4e9987018aefa73879bff04de5e9fefd13ac;hpb=56b32fd7cc24d855301881554ec385801eeab3a2;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDrecoParam.cxx b/TRD/AliTRDrecoParam.cxx index 885c4e99870..0716dc7f51c 100644 --- a/TRD/AliTRDrecoParam.cxx +++ b/TRD/AliTRDrecoParam.cxx @@ -25,14 +25,17 @@ // // /////////////////////////////////////////////////////////////////////////////// +#include "AliLog.h" + #include "AliTRDrecoParam.h" -#include "AliTRDrawStreamBase.h" ClassImp(AliTRDrecoParam) + //______________________________________________________________ AliTRDrecoParam::AliTRDrecoParam() :AliDetectorRecoParam() + ,fkdNchdy(12.) ,fkMaxTheta(1.0) ,fkMaxPhi(2.0) ,fkRoad0y(6.0) @@ -41,82 +44,161 @@ AliTRDrecoParam::AliTRDrecoParam() ,fkRoad1z(20.0) ,fkRoad2y(3.0) ,fkRoad2z(20.0) + ,fkPtThreshold(2.0) ,fkPlaneQualityThreshold(5.0)// 4.2? under Investigation + ,fkRoadzMultiplicator(1.5) ,fkFindable(.333) ,fkChi2Z(30./*14.*//*12.5*/) ,fkChi2Y(.25) - ,fkChi2YCut(7.73) - ,fkChi2ZCut(0.069) - ,fkPhiCut(10.6) - ,fkMeanNclusters(72) - ,fkSigmaNclusters(5.2632) + ,fkChi2YSlope(7.73) + ,fkChi2ZSlope(0.069) + ,fkChi2YCut(0.5) + ,fkPhiSlope(10.6) + ,fkNMeanClusters(20.) + ,fkNSigmaClusters(2.) + ,fkNClusterNoise(0.) + ,fkNMeanTracklets(5.5) ,fkTrackLikelihood(-15.) + ,fNumberOfConfigs(3) + ,fFlags(0) + ,fRawStreamVersion("DEFAULT") ,fMinMaxCutSigma(4.) ,fMinLeftRightCutSigma(8.) ,fClusMaxThresh(4.5) ,fClusSigThresh(3.5) ,fTCnexp(1) + ,fRecEveryNTB(1) ,fNumberOfPresamples(0) ,fNumberOfPostsamples(0) { // // Default constructor // - SetTailCancelation(); - SetLUT(); - SetClusterSharing(kFALSE); - SetVertexConstrained(); - SetImproveTracklets(kFALSE); - - fSysCovMatrix[0] = 1.; // y direction (1 cm) - fSysCovMatrix[1] = 1.; // z direction (1 cm) + fSysCovMatrix[0] = 0.; // y direction (1 cm) + fSysCovMatrix[1] = 0.; // z direction (1 cm) fSysCovMatrix[2] = 0.; // snp fSysCovMatrix[3] = 0.; // tgl fSysCovMatrix[4] = 0.; // 1/pt + // Xe tail cancellation parameters + fTCParams[0] = 1.156; // r1 + fTCParams[1] = 0.130; // r2 + fTCParams[2] = 0.114; // c1 + fTCParams[3] = 0.624; // c2 + // Ar tail cancellation parameters + fTCParams[4] = 6.; // r1 + fTCParams[5] = 0.62; // r2 + fTCParams[6] = 0.0087;// c1 + fTCParams[7] = 0.07; // c2 + memset(fPIDThreshold, 0, AliTRDCalPID::kNMom*sizeof(Double_t)); + memset(fStreamLevel, 0, kTRDreconstructionTasks * sizeof(Int_t)); + + SetPIDmethod(AliTRDPIDResponse::kLQ1D); + SetEightSlices(); + SetImproveTracklets(); + SetLUT(); + SetTailCancelation(); } //______________________________________________________________ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref) :AliDetectorRecoParam(ref) + ,fkdNchdy(ref.fkdNchdy) ,fkMaxTheta(ref.fkMaxTheta) ,fkMaxPhi(ref.fkMaxPhi) ,fkRoad0y(ref.fkRoad0y) - ,fkRoad0z(ref.fkRoad0z) + ,fkRoad0z(ref.fkRoad0z) ,fkRoad1y(ref.fkRoad1y) - ,fkRoad1z(ref.fkRoad1z) + ,fkRoad1z(ref.fkRoad1z) ,fkRoad2y(ref.fkRoad2y) ,fkRoad2z(ref.fkRoad2z) + ,fkPtThreshold(ref.fkPtThreshold) ,fkPlaneQualityThreshold(ref.fkPlaneQualityThreshold) + ,fkRoadzMultiplicator(ref.fkRoadzMultiplicator) ,fkFindable(ref.fkFindable) ,fkChi2Z(ref.fkChi2Z) ,fkChi2Y(ref.fkChi2Y) + ,fkChi2YSlope(ref.fkChi2YSlope) + ,fkChi2ZSlope(ref.fkChi2ZSlope) ,fkChi2YCut(ref.fkChi2YCut) - ,fkChi2ZCut(ref.fkChi2ZCut) - ,fkPhiCut(ref.fkPhiCut) - ,fkMeanNclusters(ref.fkMeanNclusters) - ,fkSigmaNclusters(ref.fkSigmaNclusters) + ,fkPhiSlope(ref.fkPhiSlope) + ,fkNMeanClusters(ref.fkNMeanClusters) + ,fkNSigmaClusters(ref.fkNSigmaClusters) + ,fkNClusterNoise(ref.fkNClusterNoise) + ,fkNMeanTracklets(ref.fkNMeanTracklets) ,fkTrackLikelihood(ref.fkTrackLikelihood) + ,fNumberOfConfigs(ref.fNumberOfConfigs) + ,fFlags(ref.fFlags) + ,fRawStreamVersion(ref.fRawStreamVersion) ,fMinMaxCutSigma(ref.fMinMaxCutSigma) ,fMinLeftRightCutSigma(ref.fMinLeftRightCutSigma) ,fClusMaxThresh(ref.fClusMaxThresh) ,fClusSigThresh(ref.fClusSigThresh) ,fTCnexp(ref.fTCnexp) + ,fRecEveryNTB(ref.fRecEveryNTB) ,fNumberOfPresamples(ref.fNumberOfPresamples) ,fNumberOfPostsamples(ref.fNumberOfPostsamples) { // // Copy constructor // - SetClusterSharing(ref.IsClusterSharing()); - SetVertexConstrained(ref.IsVertexConstrained()); - SetLUT(ref.IsLUT()); - SetTailCancelation(ref.IsTailCancelation()); - SetImproveTracklets(ref.HasImproveTracklets()); + memcpy(fSysCovMatrix, ref.fSysCovMatrix, 5*sizeof(Double_t)); + memcpy(fTCParams, ref.fTCParams, 8*sizeof(Double_t)); + memcpy(fPIDThreshold, ref.fPIDThreshold, AliTRDCalPID::kNMom*sizeof(Double_t)); + memcpy(fStreamLevel, ref.fStreamLevel, kTRDreconstructionTasks * sizeof(Int_t)); +} + +//______________________________________________________________ +AliTRDrecoParam& AliTRDrecoParam::operator=(const AliTRDrecoParam &ref) +{ + // + // assignment operator + // + + if(this == &ref) return *this; + AliDetectorRecoParam::operator=(ref); + fkdNchdy = ref.fkdNchdy; + fkMaxTheta = ref.fkMaxTheta; + fkMaxPhi = ref.fkMaxPhi; + fkRoad0y = ref.fkRoad0y; + fkRoad0z = ref.fkRoad0z; + fkRoad1y = ref.fkRoad1y; + fkRoad1z = ref.fkRoad1z; + fkRoad2y = ref.fkRoad2y; + fkRoad2z = ref.fkRoad2z; + fkPtThreshold = ref.fkPtThreshold; + fkPlaneQualityThreshold= ref.fkPlaneQualityThreshold; + fkRoadzMultiplicator = ref.fkRoadzMultiplicator; + fkFindable = ref.fkFindable; + fkChi2Z = ref.fkChi2Z; + fkChi2Y = ref.fkChi2Y; + fkChi2YSlope = ref.fkChi2YSlope; + fkChi2ZSlope = ref.fkChi2ZSlope; + fkChi2YCut = ref.fkChi2YCut; + fkPhiSlope = ref.fkPhiSlope; + fkNMeanClusters = ref.fkNMeanClusters; + fkNSigmaClusters = ref.fkNSigmaClusters; + fkNClusterNoise = ref.fkNClusterNoise; + fkNMeanTracklets = ref.fkNMeanTracklets; + fkTrackLikelihood = ref.fkTrackLikelihood; + fNumberOfConfigs = ref.fNumberOfConfigs; + fFlags = ref.fFlags; + fRawStreamVersion = ref.fRawStreamVersion; + fMinMaxCutSigma = ref.fMinMaxCutSigma; + fMinLeftRightCutSigma = ref.fMinLeftRightCutSigma; + fClusMaxThresh = ref.fClusMaxThresh; + fClusSigThresh = ref.fClusSigThresh; + fTCnexp = ref.fTCnexp; + fRecEveryNTB = ref.fRecEveryNTB; + fNumberOfPresamples = ref.fNumberOfPresamples; + fNumberOfPostsamples = ref.fNumberOfPostsamples; memcpy(fSysCovMatrix, ref.fSysCovMatrix, 5*sizeof(Double_t)); + memcpy(fTCParams, ref.fTCParams, 8*sizeof(Double_t)); memcpy(fPIDThreshold, ref.fPIDThreshold, AliTRDCalPID::kNMom*sizeof(Double_t)); + memcpy(fStreamLevel, ref.fStreamLevel, kTRDreconstructionTasks * sizeof(Int_t)); + return *this; } //______________________________________________________________ @@ -126,7 +208,24 @@ AliTRDrecoParam *AliTRDrecoParam::GetLowFluxParam() // Parameters for the low flux environment // - return new AliTRDrecoParam(); + AliTRDrecoParam *rec = new AliTRDrecoParam(); + rec->fkdNchdy = 12.; // pp in TRD + rec->SetVertexConstrained(); + rec->SetCheckTimeConsistency(); + return rec; + +} + +//______________________________________________________________ +AliTRDrecoParam *AliTRDrecoParam::GetLowFluxHLTParam() +{ + // + // Parameters for the high flux environment in HLT + // + + AliTRDrecoParam *rec = GetLowFluxParam(); + rec->fNumberOfConfigs = 2; + return rec; } @@ -138,7 +237,22 @@ AliTRDrecoParam *AliTRDrecoParam::GetHighFluxParam() // AliTRDrecoParam *rec = new AliTRDrecoParam(); - rec->SetImproveTracklets(kTRUE); + rec->fkdNchdy = 4000.; // PbPb in TRD + rec->SetVertexConstrained(); + rec->SetCheckTimeConsistency(); + return rec; + +} + +//______________________________________________________________ +AliTRDrecoParam *AliTRDrecoParam::GetHighFluxHLTParam() +{ + // + // Parameters for the high flux environment in HLT + // + + AliTRDrecoParam *rec = GetHighFluxParam(); + rec->fNumberOfConfigs = 1; return rec; } @@ -150,15 +264,57 @@ AliTRDrecoParam *AliTRDrecoParam::GetCosmicTestParam() // Parameters for the cosmics data // - AliTRDrawStreamBase::SetRawStreamVersion("TB"); AliTRDrecoParam *par = new AliTRDrecoParam(); - par->SetVertexConstrained(kFALSE); - par->SetChi2YCut(1.136); - par->SetChi2ZCut(0.069); - par->SetMaxTheta(2.1445); - par->SetMaxPhi(2.7475); - par->SetMeanNclusters(48.1197); - par->SetSigmaNclusters(8.59347); + par->fSysCovMatrix[0] = 2.; // y direction (1 cm) + par->fSysCovMatrix[1] = 2.; // z direction (1 cm) + par->fkChi2YSlope = 0.11853; + par->fkChi2ZSlope = 0.04527; + par->fkChi2YCut = 1.; + par->fkPhiSlope = 10.; //3.17954; + par->fkMaxTheta = 2.1445; + par->fkMaxPhi = 2.7475; + par->fkNMeanClusters = 12.89; + par->fkNSigmaClusters = 2.095; + par->fkRoadzMultiplicator = 3.; + par->fStreamLevel[kTracker] = 1; + par->SetCheckTimeConsistency(); return par; } + + +//______________________________________________________________ +Float_t AliTRDrecoParam::GetNClusters() const +{ + // Estimate the number of clusters in the TRD detector + + Float_t nclusters = (fkNMeanClusters + 2*fkNSigmaClusters)*fkNMeanTracklets*fkdNchdy; + nclusters *= 1.+fkNClusterNoise; + return nclusters; +} + +//______________________________________________________________ +void AliTRDrecoParam::SetPIDLQslices(Int_t s) +{ +// Setting number of slices used by the PID LQ method s={1, 2} +// If PID NN is set this function will change to PID LQ. + + if(IsPIDNeuralNetwork()){ + AliWarning("PID set to NN. Changing to LQ."); + SetPIDNeuralNetwork(kFALSE); + } + + switch(s){ + case 1: + if(TESTBIT(fFlags, kLQ2D)) CLRBIT(fFlags, kLQ2D); + break; + case 2: + SETBIT(fFlags, kLQ2D); + break; + default: + AliWarning(Form("N[%d] PID LQ slices not implemented. Using default 2.", s)); + SETBIT(fFlags, kLQ2D); + break; + } +} +