**************************************************************************/
#include "AliITSRecoParam.h"
+#include "AliLog.h"
/* $Id$ */
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;
fVtxr3DPhiCutLoose(0.),
fVtxr3DPhiCutTight(0.),
fVtxr3DDCACut(0.),
+fVtxr3DPileupAlgo(1),
fMaxSnp(1.),
fNSigmaYLayerForRoadY(0),
fNSigmaRoadY(0),
fSigmaZDeadZoneHit2(0),
fXPassDeadZoneHits(0),
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),
fRequireClusterInInnerLayerPlaneEff(kFALSE),
fOnlyConstraintPlaneEff(kFALSE),
fExtendedEtaAcceptance(kFALSE),
-fUseBadZonesFromOCDB(kFALSE),
+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),
fMaxPhiSA(0.0145),
fMinLambdaSA(0.003),
fMaxLambdaSA(0.008),
+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)
+fTrackleterZetaOverlapCut(0.05),
+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
SetLayersParameters();
for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
SetUseTGeoInTracker(3);
+ SetStepSizeTGeo(5.);
SetAllowSharedClusters(kTRUE);
SetFindV0s(kTRUE);
SetAddVirtualClustersInDeadZone(kFALSE);
SetUseAmplitudeInfo(kTRUE);
SetClusterErrorsParam(1);
SetClusterMisalError(0.);
+ SetClusterMisalErrorBOn(0.);
SetVertexer3DDefaults();
+
+ for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fAlignFilterUseLayer[i]=kTRUE;
+ fESDV0Params = new AliESDV0Params();
+
+ fESDV0Params->SetMaxDist0(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()
//
// destructor
//
+ if(fESDV0Params){
+ delete fESDV0Params;
+ fESDV0Params=NULL;
+ }
}
//_____________________________________________________________________________
AliITSRecoParam *AliITSRecoParam::GetHighFluxParam()
AliITSRecoParam *param = new AliITSRecoParam();
param->SetVertexerZ();
+ // use of bads from OCDB
+ param->SetUseBadZonesFromOCDB(kTRUE);
+ param->SetUseSingleBadChannelsFromOCDB(kFALSE);
+ // extended eta acceptance
+ param->SetExtendedEtaAcceptance(kFALSE);
+ // allow to skip layer if no cluster and no bad
+ param->SetAllowProlongationWithEmptyRoad(kFALSE);
+
+
param->fMaxSnp = 0.95;
param->fNSigmaYLayerForRoadY = 4.;
param->fSigmaXDeadZoneHit2 = 0.004/12.;
param->fSigmaZDeadZoneHit2 = 0.001/12.;
param->fXPassDeadZoneHits = 0.018;
+
+
return param;
}
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);
+
+
param->fMaxSnp = 0.95;
param->fNSigmaYLayerForRoadY = 4.;
param->fSigmaXDeadZoneHit2 = 0.004/12.;
param->fSigmaZDeadZoneHit2 = 0.001/12.;
param->fXPassDeadZoneHits = 0.018;
- param->SetNLoopsSA(10);
+ 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;
}
// 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;
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()
return;
}
+