X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=ITS%2FAliITSRecoParam.cxx;h=cefa97babefdbf6dd9843a6a3eebabfe84fe7d91;hp=176bbde817987a17dc2f68d2b6fbcadec7d08b27;hb=b0e25852769a15330f327ed7af0c652a80fdb908;hpb=3733ccd2379c46392bcf12253bfeb00fdf7be8ed diff --git a/ITS/AliITSRecoParam.cxx b/ITS/AliITSRecoParam.cxx index 176bbde8179..cefa97babef 100644 --- a/ITS/AliITSRecoParam.cxx +++ b/ITS/AliITSRecoParam.cxx @@ -14,6 +14,7 @@ **************************************************************************/ #include "AliITSRecoParam.h" +#include "AliLog.h" /* $Id$ */ @@ -44,7 +45,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; @@ -74,6 +75,7 @@ fVtxr3DRCutNarrow(0.), fVtxr3DPhiCutLoose(0.), fVtxr3DPhiCutTight(0.), fVtxr3DDCACut(0.), +fVtxr3DPileupAlgo(1), fMaxSnp(1.), fNSigmaYLayerForRoadY(0), fNSigmaRoadY(0), @@ -108,11 +110,20 @@ fSigmaXDeadZoneHit2(0), fSigmaZDeadZoneHit2(0), fXPassDeadZoneHits(0), fUseTGeoInTracker(3), -fStepSizeTGeo(0.1), +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), @@ -125,7 +136,10 @@ fUseBadZonesFromOCDB(kTRUE), fUseSingleBadChannelsFromOCDB(kFALSE), fMinFractionOfBadInRoad(0), fAllowProlongationWithEmptyRoad(kFALSE), -fOuterStartLayerSA(0), +fInwardFlagSA(kFALSE), +fOuterStartLayerSA(2), +fInnerStartLayerSA(3), +fMinNPointsSA(3), fFactorSAWindowSizes(1.), fNLoopsSA(33), fMinPhiSA(0.002), @@ -136,17 +150,40 @@ fMinClusterChargeSA(0.), fSAOnePointTracks(kFALSE), fSAUseAllClusters(kFALSE), fFindV0s(kTRUE), +fStoreLikeSignV0s(kFALSE), fUseUnfoldingInClusterFinderSPD(kFALSE), fUseUnfoldingInClusterFinderSDD(kTRUE), -fUseUnfoldingInClusterFinderSSD(kTRUE), +fUseUnfoldingInClusterFinderSSD(kFALSE), +fUseBadChannelsInClusterFinderSSD(kFALSE), +fUseSDDCorrectionMaps(kTRUE), +fUseSDDClusterSizeSelection(kFALSE), +fMinClusterChargeSDD(0.), fUseChargeMatchingInClusterFinderSSD(kTRUE), -fTrackleterOnlyOneTrackletPerC2(kTRUE), fTrackleterPhiWindow(0.08), -fTrackleterZetaWindow(1.00), +fTrackleterThetaWindow(0.025), +fTrackleterPhiShift(0.0045), fTrackleterRemoveClustersFromOverlaps(kFALSE), fTrackleterPhiOverlapCut(0.005), fTrackleterZetaOverlapCut(0.05), -fUseCosmicRunShiftsSSD(kFALSE) +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), +fESDV0Params(NULL) { // // constructor @@ -157,14 +194,71 @@ fUseCosmicRunShiftsSSD(kFALSE) 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->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() @@ -172,6 +266,10 @@ AliITSRecoParam::~AliITSRecoParam() // // destructor // + if(fESDV0Params){ + delete fESDV0Params; + fESDV0Params=NULL; + } } //_____________________________________________________________________________ AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() @@ -270,6 +368,8 @@ AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() param->fSigmaXDeadZoneHit2 = 0.004/12.; param->fSigmaZDeadZoneHit2 = 0.001/12.; param->fXPassDeadZoneHits = 0.018; + + return param; } @@ -373,6 +473,21 @@ AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 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()->SetLikelihood01Cut(0.3); + param->GetESDV0Params()->SetLikelihood1Cut(0.35); + param->GetESDV0Params()->SetCombinedCut(0.4); + + + return param; } //_____________________________________________________________________________ @@ -386,12 +501,56 @@ AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() // vertexer for cosmics param->SetVertexer(2); + param->SetClusterErrorsParam(2); + param->SetFindV0s(kFALSE); + param->SetAddVirtualClustersInDeadZone(kFALSE); + param->SetUseAmplitudeInfo(kFALSE); + + // 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(); + // larger seach windows for SA (in case of large misalignments) - param->SetFactorSAWindowSizes(3.); + param->SetNLoopsSA(33); + 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; @@ -473,49 +632,70 @@ AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() param->fSigmaZDeadZoneHit2 = 0.001/12.; param->fXPassDeadZoneHits = 0.018; - 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 // - if (i<0 || i>=AliITSgeomTGeo::kNLayers) { - printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane not in the range [0,5]\n"); + 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; } - AliITSRecoParam *param; - param = GetHighFluxParam(); - param->SetComputePlaneEff(); - param->SetLayerToSkip(i); - param->SetIPlanePlaneEff(i); - // optimized setting for SPD0 (i==0) - if (i==0 || i==1) { - param->fMinPtPlaneEff = 0.200; // high pt particles - param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster - param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be - //param->fOnlyConstraintPlaneEff = kTRUE; - } - if (i==2 || i==3) { - param->fMinPtPlaneEff = 0.200; // high pt particles - param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster - param->fRequireClusterInOuterLayerPlaneEff = kTRUE; - //param->fOnlyConstraintPlaneEff = kTRUE; + if(i>=0) { // Method using tracks (remove given plane from tracking) + AliITSRecoParam *param; + param = GetHighFluxParam(); + param->SetComputePlaneEff(); + param->SetLayerToSkip(i); + param->SetIPlanePlaneEff(i); + // optimized setting for SPD0 (i==0) + if (i==0 || i==1) { + param->fMinPtPlaneEff = 0.200; // high pt particles + param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster + param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be + //param->fOnlyConstraintPlaneEff = kTRUE; + } + if (i==2 || i==3) { + param->fMinPtPlaneEff = 0.200; // high pt particles + param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster + param->fRequireClusterInOuterLayerPlaneEff = kTRUE; + //param->fOnlyConstraintPlaneEff = kTRUE; + } + if (i==4) { + param->fMinPtPlaneEff = 0.200; // high pt particles + param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster + param->fRequireClusterInOuterLayerPlaneEff = kTRUE; + //param->fOnlyConstraintPlaneEff = kTRUE; + } + if (i==5) { + param->fMinPtPlaneEff = 0.200; // high pt particles + } + // + return param; } - if (i==4) { - param->fMinPtPlaneEff = 0.200; // high pt particles - param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster - param->fRequireClusterInOuterLayerPlaneEff = kTRUE; - //param->fOnlyConstraintPlaneEff = kTRUE; + 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; } - if (i==5) { - param->fMinPtPlaneEff = 0.200; // high pt particles + else { + AliErrorGeneral("AliITSRecoParam",Form("Unrecognised value of i %d\n",i)); + return 0; } - // - return param; } //_____________________________________________________________________________ void AliITSRecoParam::SetLayersParameters() @@ -573,3 +753,4 @@ void AliITSRecoParam::PrintParameters() const return; } +