X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSRecoParam.cxx;h=6ef34fc73e4c2486e8e69f88ac39e7d66c37d58c;hb=d12f149b9bfba49b2671dff724711f49bf0041c7;hp=9cff51f8e5f29dfd6a72cb75be0540561e1ac9f0;hpb=ae00569a817b0a6717b4341b38553d951fe70be5;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSRecoParam.cxx b/ITS/AliITSRecoParam.cxx index 9cff51f8e5f..6ef34fc73e4 100644 --- a/ITS/AliITSRecoParam.cxx +++ b/ITS/AliITSRecoParam.cxx @@ -14,6 +14,8 @@ **************************************************************************/ #include "AliITSRecoParam.h" +#include "AliESDV0Params.h" +#include "AliLog.h" /* $Id$ */ @@ -29,8 +31,6 @@ ClassImp(AliITSRecoParam) const Int_t AliITSRecoParam::fgkLayersNotToSkip[AliITSgeomTGeo::kNLayers]={0,0,0,0,0,0}; -const Int_t AliITSRecoParam::fgkLastLayerToTrackTo=0; -const Int_t AliITSRecoParam::fgkMaxDetectorPerLayer=1000; const Double_t AliITSRecoParam::fgkriw=80.0; const Double_t AliITSRecoParam::fgkdiw=0.0053; const Double_t AliITSRecoParam::fgkX0iw=30.0; @@ -44,7 +44,7 @@ const Double_t AliITSRecoParam::fgkdm=0.40; const Double_t AliITSRecoParam::fgkrs=50.0; const Double_t AliITSRecoParam::fgkds=0.001; const Double_t AliITSRecoParam::fgkrInsideITSscreen=49.0; -const Double_t AliITSRecoParam::fgkrInsideSPD1=3.7; +const Double_t AliITSRecoParam::fgkrInsideSPD1=3.5; const Double_t AliITSRecoParam::fgkrPipe=3.; const Double_t AliITSRecoParam::fgkrInsidePipe=2.7; const Double_t AliITSRecoParam::fgkrOutsidePipe=3.3; @@ -57,11 +57,24 @@ const Double_t AliITSRecoParam::fgkX0Air=21.82; const Double_t AliITSRecoParam::fgkX0Be=65.19; const Double_t AliITSRecoParam::fgkBoundaryWidth=0.2; const Double_t AliITSRecoParam::fgkDeltaXNeighbDets=0.5; -const Double_t AliITSRecoParam::fgkSPDdetzlength=6.960; // 7.072-2*0.056 -const Double_t AliITSRecoParam::fgkSPDdetxlength=1.298; // 1.410-2*0.056 +const Double_t AliITSRecoParam::fgkSPDdetzlength=6.960; +const Double_t AliITSRecoParam::fgkSPDdetxlength=1.298; //_____________________________________________________________________________ AliITSRecoParam::AliITSRecoParam() : AliDetectorRecoParam(), +fTracker(0), +fITSonly(kFALSE), +fVertexer(0), +fPID(0), +fVtxr3DZCutWide(0.), +fVtxr3DRCutWide(0.), +fVtxr3DZCutNarrow(0.), +fVtxr3DRCutNarrow(0.), +fVtxr3DPhiCutLoose(0.), +fVtxr3DPhiCutTight(0.), +fVtxr3DDCACut(0.), +fVtxr3DPileupAlgo(1), +fVtxr3DHighMultAlgo(1), fMaxSnp(1.), fNSigmaYLayerForRoadY(0), fNSigmaRoadY(0), @@ -71,11 +84,13 @@ fNSigma2RoadZC(0), fNSigma2RoadYC(0), fNSigma2RoadZNonC(0), fNSigma2RoadYNonC(0), +fRoadMisal(0), fMaxNormChi2NonCForHypothesis(0), fMaxChi2(0), fMaxRoad(0), fMaxChi2In(0), fChi2PerCluster(0), +fSearchForExtras(kTRUE), fXV(0), fYV(0), fZV(0), @@ -94,18 +109,137 @@ fZWindowDeadZone(0), fSigmaXDeadZoneHit2(0), fSigmaZDeadZoneHit2(0), fXPassDeadZoneHits(0), +fSkipSubdetsNotInTriggerCluster(kTRUE), fUseTGeoInTracker(3), +fStepSizeTGeo(5.), fAllowSharedClusters(kTRUE), fClusterErrorsParam(1), fComputePlaneEff(kFALSE), +fHistoPlaneEff(kFALSE), +fUseTrackletsPlaneEff(kFALSE), +fMCTrackletsPlaneEff(kFALSE), +fBkgTrackletsPlaneEff(kFALSE), +fTrackleterPhiWindowL1(0.10), +fTrackleterPhiWindowL2(0.07), +fTrackleterZetaWindowL1(0.6), +fTrackleterZetaWindowL2(0.4), +fUpdateOncePerEventPlaneEff(kTRUE), +fMinContVtxPlaneEff(3), +fIPlanePlaneEff(0), +fReadPlaneEffFromOCDB(kFALSE), +fMinPtPlaneEff(0), +fMaxMissingClustersPlaneEff(5), +fMaxMissingClustersOutPlaneEff(5), +fRequireClusterInOuterLayerPlaneEff(kFALSE), +fRequireClusterInInnerLayerPlaneEff(kFALSE), +fOnlyConstraintPlaneEff(kFALSE), +fNSigXFromBoundaryPlaneEff(0.), +fNSigZFromBoundaryPlaneEff(0.), +fDistXFromBoundaryPlaneEff(0.), +fDistZFromBoundaryPlaneEff(0.), +fSwitchOnMaxDistNSigFrmBndPlaneEff(kFALSE), +fSwitchOffStdSearchClusPlaneEff(kFALSE), +fNSigXSearchClusterPlaneEff(0.), +fNSigZSearchClusterPlaneEff(0.), +fDistXSearchClusterPlaneEff(0.), +fDistZSearchClusterPlaneEff(0.), +fSwitchOnMaxDistNSigSrhClusPlaneEff(kFALSE), +fDCACutPlaneEff(999.), +fVertexChi2CutPlaneEff(999999999.), +fImproveWithVertex(kFALSE), fExtendedEtaAcceptance(kFALSE), -fUseDeadZonesFromOCDB(kFALSE), +fUseBadZonesFromOCDB(kTRUE), +fUseSingleBadChannelsFromOCDB(kFALSE), +fMinFractionOfBadInRoad(0), fAllowProlongationWithEmptyRoad(kFALSE), +fInwardFlagSA(kFALSE), +fOuterStartLayerSA(2), +fInnerStartLayerSA(3), +fMinNPointsSA(3), fFactorSAWindowSizes(1.), +fNLoopsSA(32), +fMinPhiSA(0.002), +fMaxPhiSA(0.0145), +fMinLambdaSA(0.003), +fMaxLambdaSA(0.008), +fMinClusterChargeSA(0.), +fSAOnePointTracks(kFALSE), +fSAUseAllClusters(kFALSE), +fMaxSPDcontrForSAToUseAllClusters(1000000), +fSAUsedEdxInfo(kFALSE), +fSelectBestMIP03(kFALSE), +fFlagFakes(kFALSE), +fUseImproveKalman(kFALSE), fFindV0s(kTRUE), +fStoreLikeSignV0s(kFALSE), fUseUnfoldingInClusterFinderSPD(kFALSE), fUseUnfoldingInClusterFinderSDD(kTRUE), -fUseUnfoldingInClusterFinderSSD(kTRUE) +fUseUnfoldingInClusterFinderSSD(kFALSE), +fUseBadChannelsInClusterFinderSSD(kFALSE), +fUseSDDCorrectionMaps(kTRUE), +fUseSDDClusterSizeSelection(kFALSE), +fMinClusterChargeSDD(0.), +fUseChargeMatchingInClusterFinderSSD(kTRUE), +fTrackleterPhiWindow(0.08), +fTrackleterThetaWindow(0.025), +fTrackleterPhiShift(0.0045), +fTrackleterRemoveClustersFromOverlaps(kFALSE), +fTrackleterPhiOverlapCut(0.005), +fTrackleterZetaOverlapCut(0.05), +fTrackleterPhiRotationAngle(0.0), +fTrackleterNStdDev(1.5), +fScaleDTBySin2T(kFALSE), +fTrackleterStoreSPD2SingleCl(kFALSE), +fTrackleterBuildCl2TrkRefs(kTRUE), +// +fUseCosmicRunShiftsSSD(kFALSE), +fSPDRemoveNoisyFlag(kTRUE), +fSPDRemoveDeadFlag(kTRUE), +fVertexerFastSmearX(0.005), +fVertexerFastSmearY(0.005), +fVertexerFastSmearZ(0.01), +fAlignFilterCosmics(kFALSE), +fAlignFilterCosmicMergeTracks(kTRUE), +fAlignFilterMinITSPoints(4), +fAlignFilterMinITSPointsMerged(4), +fAlignFilterOnlyITSSATracks(kTRUE), +fAlignFilterOnlyITSTPCTracks(kFALSE), +fAlignFilterSkipExtra(kFALSE), +fAlignFilterMaxMatchingAngle(0.085), +fAlignFilterMinAngleWrtModulePlanes(0.52), +fAlignFilterMinPt(0.), +fAlignFilterMaxPt(1.e10), +fAlignFilterFillQANtuples(kTRUE), +// +fMultCutPxDrSPDin(0.1), +fMultCutPxDrSPDout(0.15), +fMultCutPxDz(0.2), +fMultCutDCArz(0.5), +fMultCutMinElectronProbTPC(0.5), +fMultCutMinElectronProbESD(0.1), +fMultCutMinP(0.05), +fMultCutMinRGamma(2.), +fMultCutMinRK0(1.), +fMultCutMinPointAngle(0.98), +fMultCutMaxDCADauther(0.5), +fMultCutMassGamma(0.03), +fMultCutMassGammaNSigma(5.), +fMultCutMassK0(0.03), +fMultCutMassK0NSigma(5.), +fMultCutChi2cGamma(2.), +fMultCutChi2cK0(2.), +fMultCutGammaSFromDecay(-10.), +fMultCutK0SFromDecay(-10.), +fMultCutMaxDCA(1.), +// +fCorrectLorentzAngleSPD(kTRUE), +fTanLorentzAngleHolesSPD(0.017455), // tan(1 degree) +fCorrectLorentzAngleSSD(kTRUE), +fTanLorentzAngleHolesSSD(0.016), // tan(0.94 degrees) +fTanLorentzAngleElectronsSSD(0.068), // tan(3.98 degrees) +// +fOptReco("All"), +fESDV0Params(NULL) { // // constructor @@ -116,11 +250,73 @@ fUseUnfoldingInClusterFinderSSD(kTRUE) SetLayersParameters(); for(Int_t i=0; iSetMaxDist0(0.1); + fESDV0Params->SetMaxDist1(0.1); + fESDV0Params->SetMaxDist(1.); + fESDV0Params->SetMinPointAngle(0.85); + fESDV0Params->SetMinPointAngle2(0.99); + fESDV0Params->SetMinR(0.5); + fESDV0Params->SetMaxR(220.); + fESDV0Params->SetMinPABestConst(0.9999); + fESDV0Params->SetMaxRBestConst(10.); + fESDV0Params->SetCausality0Cut(0.19); + fESDV0Params->SetLikelihood01Cut(0.45); + fESDV0Params->SetLikelihood1Cut(0.5); + fESDV0Params->SetCombinedCut(0.55); + fESDV0Params->SetMinClFullTrk(5.0); + fESDV0Params->SetMinTgl0(1.05); + fESDV0Params->SetMinRTgl0(40.0); + + fESDV0Params->SetMinNormDistForbTgl0(3.0); + fESDV0Params->SetMinClForb0(4.5); + fESDV0Params->SetMinNormDistForb1(3.0); + fESDV0Params->SetMinNormDistForb2(2.0); + fESDV0Params->SetMinNormDistForb3(1.0); + fESDV0Params->SetMinNormDistForb4(4.0); + fESDV0Params->SetMinNormDistForb5(5.0); + fESDV0Params->SetMinNormDistForbProt(2.0); + fESDV0Params->SetMaxPidProbPionForb(0.5); + + fESDV0Params->SetMinRTPCdensity(40.); + fESDV0Params->SetMaxRTPCdensity0(110.); + fESDV0Params->SetMaxRTPCdensity10(120.); + fESDV0Params->SetMaxRTPCdensity20(130.); + fESDV0Params->SetMaxRTPCdensity30(140.); + + fESDV0Params->SetMinTPCdensity(0.6); + fESDV0Params->SetMinTgl1(1.1); + fESDV0Params->SetMinTgl2(1.0); + fESDV0Params->SetMinchi2before0(16.); + fESDV0Params->SetMinchi2before1(16.); + fESDV0Params->SetMinchi2after0(16.); + fESDV0Params->SetMinchi2after1(16.); + fESDV0Params->SetAddchi2SharedCl(18.); + fESDV0Params->SetAddchi2NegCl0(25.); + fESDV0Params->SetAddchi2NegCl1(30.); + fESDV0Params->SetSigp0Par0(0.0001); + fESDV0Params->SetSigp0Par1(0.001); + fESDV0Params->SetSigp0Par2(0.1); + fESDV0Params->SetSigpPar0(0.5); + fESDV0Params->SetSigpPar1(0.6); + fESDV0Params->SetSigpPar2(0.4); + fESDV0Params->SetMaxDcaLh0(0.5); + fESDV0Params->SetStreamLevel(0); + fESDV0Params->SetChi2KF(100); + fESDV0Params->SetRobustChi2KF(100); + } //_____________________________________________________________________________ AliITSRecoParam::~AliITSRecoParam() @@ -128,6 +324,10 @@ AliITSRecoParam::~AliITSRecoParam() // // destructor // + if(fESDV0Params){ + delete fESDV0Params; + fESDV0Params=NULL; + } } //_____________________________________________________________________________ AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() @@ -136,6 +336,19 @@ AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() // make default reconstruction parameters for hig flux env. // AliITSRecoParam *param = new AliITSRecoParam(); + param->SetVertexer3DDefaults(); + param->SetSPDVertexerPileupAlgoOff(); + // use of bads from OCDB + param->SetUseBadZonesFromOCDB(kTRUE); + param->SetUseSingleBadChannelsFromOCDB(kFALSE); + // use pointing to vertex during prolongation + param->SetImproveWithVertex(kTRUE); + // extended eta acceptance + param->SetExtendedEtaAcceptance(kFALSE); + // allow to skip layer if no cluster and no bad + param->SetAllowProlongationWithEmptyRoad(kFALSE); + // set event specie + param->SetEventSpecie(AliRecoParam::kHighMult); param->fMaxSnp = 0.95; @@ -192,8 +405,10 @@ AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() param->fMaxChi2sR[4] = 30.; param->fMaxChi2sR[5] = 40.; + param->fChi2PerCluster = 9.; // not used + param->fSearchForExtras = kFALSE; param->fXV = 0.; param->fYV = 0.; @@ -216,8 +431,38 @@ AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() param->fSigmaXDeadZoneHit2 = 0.004/12.; param->fSigmaZDeadZoneHit2 = 0.001/12.; param->fXPassDeadZoneHits = 0.018; - - + // + // mult reco + param->fMultCutPxDrSPDin = 0.1; + param->fMultCutPxDrSPDout = 0.15; + param->fMultCutPxDz = 0.2; + param->fMultCutDCArz = 0.5; + param->fMultCutMinElectronProbTPC = 0.5; + param->fMultCutMinElectronProbESD = 0.1; + param->fMultCutMinP = 0.05; + param->fMultCutMinRGamma = 2.; + param->fMultCutMinRK0 = 1.; + param->fMultCutMinPointAngle = 0.98; + param->fMultCutMaxDCADauther = 0.5; + param->fMultCutMassGamma = 0.03; + param->fMultCutMassGammaNSigma = 5.; + param->fMultCutMassK0 = 0.03; + param->fMultCutMassK0NSigma = 5.; + param->fMultCutChi2cGamma = 2.; + param->fMultCutChi2cK0 = 2.; + param->fMultCutGammaSFromDecay = -10.; + param->fMultCutK0SFromDecay = -10.; + param->fMultCutMaxDCA = 1.; + // + // trackleter + param->fTrackleterPhiWindow = 0.06; + param->fTrackleterBuildCl2TrkRefs = kFALSE; + param->fScaleDTBySin2T = kTRUE; + // + param->fSelectBestMIP03 = kFALSE;//kTRUE; + param->fFlagFakes = kTRUE; + param->fUseImproveKalman= kFALSE; + // return param; } //_____________________________________________________________________________ @@ -226,7 +471,142 @@ AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() // // make default reconstruction parameters for low flux env. // - return GetHighFluxParam(); + AliITSRecoParam *param = new AliITSRecoParam(); + param->SetVertexer3DDefaults(); + + // full use of bads from OCDB + param->SetUseBadZonesFromOCDB(kTRUE); + param->SetUseSingleBadChannelsFromOCDB(kTRUE); + // extended eta acceptance + param->SetExtendedEtaAcceptance(kTRUE); + // allow to skip layer if no cluster and no bad + param->SetAllowProlongationWithEmptyRoad(kTRUE); + // set event specie + param->SetEventSpecie(AliRecoParam::kLowMult); + + param->fMaxSnp = 0.95; + + param->fNSigmaYLayerForRoadY = 4.; + param->fNSigmaRoadY = 7.5; + param->fNSigmaZLayerForRoadZ = 4.; + param->fNSigmaRoadZ = 7.5; + + param->fNSigma2RoadZC = 60.; //7.75^2 + param->fNSigma2RoadYC = 60.; //7.75^2 + param->fNSigma2RoadZNonC = 50.; //7.07^2 + param->fNSigma2RoadYNonC = 50.; //7.07^2 + + param->fMaxChi2PerCluster[0] = 11.; //7 + param->fMaxChi2PerCluster[1] = 12.; //5 + param->fMaxChi2PerCluster[2] = 12.; //8 + param->fMaxChi2PerCluster[3] = 5.; //8 + param->fMaxChi2PerCluster[4] = 12.; //6.5 + + param->fMaxNormChi2NonC[0] = 7.; + param->fMaxNormChi2NonC[1] = 8.; + param->fMaxNormChi2NonC[2] = 8.; + param->fMaxNormChi2NonC[3] = 11.; + param->fMaxNormChi2NonC[4] = 14.; + param->fMaxNormChi2NonC[5] = 25.; + + param->fMaxNormChi2C[0] = 11.; + param->fMaxNormChi2C[1] = 13.; + param->fMaxNormChi2C[2] = 15.; + param->fMaxNormChi2C[3] = 18.; + param->fMaxNormChi2C[4] = 30.; + param->fMaxNormChi2C[5] = 35.; + + param->fMaxNormChi2NonCForHypothesis = 7.; + + param->fMaxChi2 = 35.; + + param->fMaxChi2s[0] = 25.; //40 + param->fMaxChi2s[1] = 25.; //40 + param->fMaxChi2s[2] = 25.; //40 + param->fMaxChi2s[3] = 25.; //40 + param->fMaxChi2s[4] = 40.; //40 + param->fMaxChi2s[5] = 50.; //40 + + param->fMaxRoad = 6.; + + // not used + param->fMaxChi2In = 16.; + + param->fMaxChi2sR[0] = 10.; + param->fMaxChi2sR[1] = 10.; + param->fMaxChi2sR[2] = 10.; + param->fMaxChi2sR[3] = 10.; + param->fMaxChi2sR[4] = 30.; + param->fMaxChi2sR[5] = 40.; + + param->fChi2PerCluster = 9.; + // not used + + param->fXV = 0.; + param->fYV = 0.; + param->fZV = 0.; + param->fSigmaXV = 0.0050; + param->fSigmaYV = 0.0050; + param->fSigmaZV = 0.0100; + + param->fVertexCut = 25.; + + param->fMaxDZforPrimTrk = 0.4; + param->fMaxDZToUseConstraint = 3.; + + param->fMaxDforV0dghtrForProlongation = 30.; + param->fMaxDForProlongation = 40.;//10.; + param->fMaxDZForProlongation = 60.;//20.; + param->fMinPtForProlongation = 0.120; + + param->fZWindowDeadZone = 2.0; + param->fSigmaXDeadZoneHit2 = 0.004/12.; + param->fSigmaZDeadZoneHit2 = 0.001/12.; + param->fXPassDeadZoneHits = 0.018; + param->SetNLoopsSA(20); + param->fMaxPhiSA = 0.07; + param->fMaxLambdaSA = 0.04; + + param->GetESDV0Params()->SetMinRTgl0(0.5); + param->GetESDV0Params()->SetMaxDist(1.5); + param->GetESDV0Params()->SetMaxDcaLh0(1.5); + param->GetESDV0Params()->SetMaxRBestConst(80); + param->GetESDV0Params()->SetMinPABestConst(0.99); + param->GetESDV0Params()->SetMinNormDistForbTgl0(1.); + param->GetESDV0Params()->SetMinNormDistForb1(2.); + param->GetESDV0Params()->SetMinNormDistForbProt(1.); + param->GetESDV0Params()->SetMaxPidProbPionForb(0.7); + param->GetESDV0Params()->SetLikelihood01Cut(0.3); + param->GetESDV0Params()->SetLikelihood1Cut(0.35); + param->GetESDV0Params()->SetCombinedCut(0.4); + + // trackleter + param->fTrackleterBuildCl2TrkRefs = kTRUE; + + // mult reco + param->fMultCutPxDrSPDin = 0.1; + param->fMultCutPxDrSPDout = 0.15; + param->fMultCutPxDz = 0.2; + param->fMultCutDCArz = 0.5; + param->fMultCutMinElectronProbTPC = 0.5; + param->fMultCutMinElectronProbESD = 0.1; + param->fMultCutMinP = 0.05; + param->fMultCutMinRGamma = 2.; + param->fMultCutMinRK0 = 1.; + param->fMultCutMinPointAngle = 0.98; + param->fMultCutMaxDCADauther = 0.5; + param->fMultCutMassGamma = 0.03; + param->fMultCutMassGammaNSigma = 5.; + param->fMultCutMassK0 = 0.03; + param->fMultCutMassK0NSigma = 5.; + param->fMultCutChi2cGamma = 2.; + param->fMultCutChi2cK0 = 2.; + param->fMultCutGammaSFromDecay = -10.; + param->fMultCutK0SFromDecay = -10.; + param->fMultCutMaxDCA = 1.; + // + + return param; } //_____________________________________________________________________________ AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() @@ -236,8 +616,63 @@ AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() // AliITSRecoParam *param = new AliITSRecoParam(); + // vertexer for cosmics + param->SetVertexer(2); + + param->SetClusterErrorsParam(2); + param->SetFindV0s(kFALSE); + param->SetAddVirtualClustersInDeadZone(kFALSE); + param->SetUseAmplitudeInfo(kFALSE); + + // set event specie + param->SetEventSpecie(AliRecoParam::kCosmic); + + // full use of bads from OCDB + param->SetUseBadZonesFromOCDB(kTRUE); + param->SetUseSingleBadChannelsFromOCDB(kTRUE); + + // find independently ITS SA tracks + param->SetSAUseAllClusters(); + param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2); + + //****** COSMICS 2009 (same as COSMICS 2008) ********************* + + // to maximize efficiency + param->SetAllowProlongationWithEmptyRoad(); + param->SetMinNPointsSA(2); + // larger seach windows for SA (in case of large misalignments) - param->SetFactorSAWindowSizes(3.); + param->SetNLoopsSA(32); + param->SetFactorSAWindowSizes(20); + + // additional error due to misal (B off) + param->SetClusterMisalErrorY(1.0,1.0,1.0,1.0,1.0,1.0); // [cm] + param->SetClusterMisalErrorZ(1.0,1.0,1.0,1.0,1.0,1.0); // [cm] + // additional error due to misal (B on) + param->SetClusterMisalErrorYBOn(0.0,0.0,0.1,0.1,0.1,0.1); // [cm] + param->SetClusterMisalErrorZBOn(0.1,0.1,0.1,0.1,0.1,0.1); // [cm] + + + // SDD configuration + param->fUseSDDCorrectionMaps = kFALSE; + param->fUseSDDClusterSizeSelection=kTRUE; + param->fMinClusterChargeSDD=30.; + + + // alignment data filter + param->SetAlignFilterCosmics(kTRUE); + param->SetAlignFilterCosmicMergeTracks(kTRUE); + param->SetAlignFilterMinITSPoints(1); + param->SetAlignFilterMinITSPointsMerged(3); + param->SetAlignFilterOnlyITSSATracks(kTRUE); + param->SetAlignFilterOnlyITSTPCTracks(kFALSE); + param->SetAlignFilterSkipExtra(kFALSE); + param->SetAlignFilterMaxMatchingAngle(0.085/*5deg*/); + param->SetAlignFilterMinPt(0.2); + param->SetAlignFilterMaxPt(1.e10); + param->SetAlignFilterFillQANtuples(kTRUE); + + //****************************************************************** param->fMaxSnp = 0.95; @@ -319,21 +754,115 @@ AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() param->fSigmaZDeadZoneHit2 = 0.001/12.; param->fXPassDeadZoneHits = 0.018; - + // trackleter + param->fTrackleterBuildCl2TrkRefs = kFALSE; + return param; } //_____________________________________________________________________________ AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i) { // - // make special reconstruction parameters for Plane Efficiency study on layer i + // make special reconstruction parameters for Plane Efficiency study on layer i (0,5) + // + // if i=-1, then the evaluation for both pixel layers is tried with the tracklet method // - AliITSRecoParam *param; - param = GetHighFluxParam(); - param->SetComputePlaneEff(); - param->SetLayerToSkip(i); - return param; + if (i<-1 || i>=AliITSgeomTGeo::kNLayers) { + printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane nor in the range [0,5] neither =-1\n"); + printf("returning null pointer"); + return NULL; + } + if(i>=0) { // Method using tracks (remove given plane from tracking) + AliITSRecoParam *param; + param = GetLowFluxParam(); + param->SetClusterErrorsParam(2); + // find independently ITS SA tracks + param->SetSAUseAllClusters(); + param->SetOuterStartLayerSA(2); + param->SetAllowProlongationWithEmptyRoad(kTRUE); + // larger seach windows for SA (in case of large misalignments) + param->SetFactorSAWindowSizes(2); + + // Misalignment syst errors decided at ITS meeting 25.03.2010 + // additional error due to misal (B off) + param->SetClusterMisalErrorY(0.0010,0.0010,0.0300,0.0300,0.0020,0.0020); // [cm] + param->SetClusterMisalErrorZ(0.0100,0.0100,0.0100,0.0100,0.0500,0.0500); // [cm] + // additional error due to misal (B on) + param->SetClusterMisalErrorYBOn(0.0010,0.0030,0.0500,0.0500,0.0020,0.0020); // [cm] + param->SetClusterMisalErrorZBOn(0.0100,0.0100,0.0100,0.0100,0.0500,0.0500); // [cm] + //---- + + // SDD configuration + param->SetUseSDDCorrectionMaps(kTRUE); // changed 30.04.2010 + param->SetUseSDDClusterSizeSelection(kTRUE); + param->SetMinClusterChargeSDD(30.); + param->SetUseUnfoldingInClusterFinderSDD(kFALSE); + // + param->SetComputePlaneEff(); + param->SetLayerToSkip(i); + param->SetIPlanePlaneEff(i); + param->fNSigXFromBoundaryPlaneEff= 1.; + param->fNSigZFromBoundaryPlaneEff= 1.; + // optimized setting for SPD0 (i==0) + if (i==0) { + param->fMinPtPlaneEff = 0.200; // high pt particles + param->fMaxMissingClustersPlaneEff = 2; // at most 2 layers out of 5 without cluster + param->fMaxMissingClustersOutPlaneEff = 2; // at most 2 layers out of 5 external ones without cluster + param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be + //param->fOnlyConstraintPlaneEff = kTRUE; + } + if (i==1 ) { + param->fMinPtPlaneEff = 0.200; // high pt particles + param->fMaxMissingClustersPlaneEff = 2; // at most 2 layer out of 5 without cluster + param->fMaxMissingClustersOutPlaneEff = 2; // at most 2 layer out of 4 external ones without cluster + //param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SSD1 must be + } + if (i==2) { + param->fMinPtPlaneEff = 0.200; // high pt particles + param->fMaxMissingClustersPlaneEff = 2; // at most 2 layer out of 5 without cluster + param->fMaxMissingClustersOutPlaneEff = 2; // at most 2 layer out of 3 external ones without cluster + //param->fRequireClusterInOuterLayerPlaneEff = kTRUE; + //param->fOnlyConstraintPlaneEff = kTRUE; + } + if (i==3) { + param->fMinPtPlaneEff = 0.200; // high pt particles + param->fMaxMissingClustersPlaneEff = 2; // at most 2 layer out of 5 without cluster + param->fMaxMissingClustersOutPlaneEff = 1; // at most 1 layer out of 2 external ones without cluster + } + if (i==4) { + param->fMinPtPlaneEff = 0.200; // high pt particles + param->fMaxMissingClustersPlaneEff = 2; // at most 2 layer out of 5 without cluster + param->fMaxMissingClustersOutPlaneEff = 1; // at most 1 layer out of 1 external ones without cluster + // param->fRequireClusterInOuterLayerPlaneEff = kTRUE; + //param->fOnlyConstraintPlaneEff = kTRUE; + } + if (i==5) { + param->fMinPtPlaneEff = 0.200; // high pt particles + param->fMaxMissingClustersPlaneEff = 2; // at most 2 layer out of 5 without cluster + } + // + return param; + } + else if (i==-1) { // Method using tracklets + AliITSRecoParam *param; + param = GetLowFluxParam(); + param->SetIPlanePlaneEff(i); + param->SetComputePlaneEff(kTRUE,kFALSE); + param->SetUseTrackletsPlaneEff(kTRUE); + param->SetTrackleterPhiWindowL2(0.07); + param->SetTrackleterZetaWindowL2(0.4); + param->SetTrackleterPhiWindowL1(0.10); + param->SetTrackleterZetaWindowL1(0.6); + param->SetUpdateOncePerEventPlaneEff(kTRUE); + param->SetMinContVtxPlaneEff(3); + return param; + } + else { + AliErrorGeneral("AliITSRecoParam",Form("Unrecognised value of i %d\n",i)); + return 0; + } } + //_____________________________________________________________________________ void AliITSRecoParam::SetLayersParameters() { @@ -359,4 +888,49 @@ void AliITSRecoParam::SetLayersParameters() return; } +//_____________________________________________________________________________ +void AliITSRecoParam::PrintParameters() const +{ + // + // print parameters + // + + printf("============================= AliITSRecoParam::PrintParameters "); + printf("============================= \n\n"); + for(Int_t i=0; i