#include "AliITSRecoParam.h"
#include "AliESDV0Params.h"
#include "AliLog.h"
ClassImp(AliITSRecoParam)
const Int_t AliITSRecoParam::fgkLayersNotToSkip[AliITSgeomTGeo::kNLayers]={0,0,0,0,0,0};
const Double_t AliITSRecoParam::fgkriw=80.0;
const Double_t AliITSRecoParam::fgkdiw=0.0053;
const Double_t AliITSRecoParam::fgkX0iw=30.0;
const Double_t AliITSRecoParam::fgkrcd=61.0;
const Double_t AliITSRecoParam::fgkdcd=0.0053;
const Double_t AliITSRecoParam::fgkX0cd=30.0;
const Double_t AliITSRecoParam::fgkyr=12.8;
const Double_t AliITSRecoParam::fgkdr=0.03;
const Double_t AliITSRecoParam::fgkzm=0.2;
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.5;
const Double_t AliITSRecoParam::fgkrPipe=3.;
const Double_t AliITSRecoParam::fgkrInsidePipe=2.7;
const Double_t AliITSRecoParam::fgkrOutsidePipe=3.3;
const Double_t AliITSRecoParam::fgkdPipe=0.0028;
const Double_t AliITSRecoParam::fgkrInsideShield[2]={7.5,25.0};
const Double_t AliITSRecoParam::fgkrOutsideShield[2]={10.5,30.0};
const Double_t AliITSRecoParam::fgkdshield[2]={0.0097,0.0034};
const Double_t AliITSRecoParam::fgkX0shield[2]={38.6,42.0};
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;
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),
fNSigmaZLayerForRoadZ(0),
fNSigmaRoadZ(0),
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),
fSigmaXV(0),
fSigmaYV(0),
fSigmaZV(0),
fVertexCut(0),
fMaxDZforPrimTrk(0),
fMaxDZToUseConstraint(0),
fMaxDforV0dghtrForProlongation(0),
fMaxDForProlongation(0),
fMaxDZForProlongation(0),
fMinPtForProlongation(0),
fAddVirtualClustersInDeadZone(kFALSE),
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),
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(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),
fCorrectLorentzAngleSSD(kTRUE),
fTanLorentzAngleHolesSSD(0.016),
fTanLorentzAngleElectronsSSD(0.068),
fOptReco("All"),
fESDV0Params(NULL)
{
SetName("ITS");
SetTitle("ITS");
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->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()
{
if(fESDV0Params){
delete fESDV0Params;
fESDV0Params=NULL;
}
}
AliITSRecoParam *AliITSRecoParam::GetHighFluxParam()
{
AliITSRecoParam *param = new AliITSRecoParam();
param->SetVertexer3DDefaults();
param->SetSPDVertexerPileupAlgoOff();
param->SetUseBadZonesFromOCDB(kTRUE);
param->SetUseSingleBadChannelsFromOCDB(kFALSE);
param->SetImproveWithVertex(kTRUE);
param->SetExtendedEtaAcceptance(kFALSE);
param->SetAllowProlongationWithEmptyRoad(kFALSE);
param->SetEventSpecie(AliRecoParam::kHighMult);
param->fMaxSnp = 0.95;
param->fNSigmaYLayerForRoadY = 4.;
param->fNSigmaRoadY = 7.5;
param->fNSigmaZLayerForRoadZ = 4.;
param->fNSigmaRoadZ = 7.5;
param->fNSigma2RoadZC = 60.;
param->fNSigma2RoadYC = 60.;
param->fNSigma2RoadZNonC = 50.;
param->fNSigma2RoadYNonC = 50.;
param->fMaxChi2PerCluster[0] = 11.;
param->fMaxChi2PerCluster[1] = 12.;
param->fMaxChi2PerCluster[2] = 12.;
param->fMaxChi2PerCluster[3] = 5.;
param->fMaxChi2PerCluster[4] = 12.;
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.;
param->fMaxChi2s[1] = 25.;
param->fMaxChi2s[2] = 25.;
param->fMaxChi2s[3] = 25.;
param->fMaxChi2s[4] = 40.;
param->fMaxChi2s[5] = 50.;
param->fMaxRoad = 6.;
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.;
param->fSearchForExtras = kFALSE;
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.;
param->fMaxDZForProlongation = 60.;
param->fMinPtForProlongation = 0.120;
param->fZWindowDeadZone = 2.0;
param->fSigmaXDeadZoneHit2 = 0.004/12.;
param->fSigmaZDeadZoneHit2 = 0.001/12.;
param->fXPassDeadZoneHits = 0.018;
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.;
param->fTrackleterPhiWindow = 0.06;
param->fTrackleterBuildCl2TrkRefs = kFALSE;
param->fScaleDTBySin2T = kTRUE;
param->fSelectBestMIP03 = kFALSE;
param->fFlagFakes = kTRUE;
param->fUseImproveKalman= kFALSE;
return param;
}
AliITSRecoParam *AliITSRecoParam::GetLowFluxParam()
{
AliITSRecoParam *param = new AliITSRecoParam();
param->SetVertexer3DDefaults();
param->SetUseBadZonesFromOCDB(kTRUE);
param->SetUseSingleBadChannelsFromOCDB(kTRUE);
param->SetExtendedEtaAcceptance(kTRUE);
param->SetAllowProlongationWithEmptyRoad(kTRUE);
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.;
param->fNSigma2RoadYC = 60.;
param->fNSigma2RoadZNonC = 50.;
param->fNSigma2RoadYNonC = 50.;
param->fMaxChi2PerCluster[0] = 11.;
param->fMaxChi2PerCluster[1] = 12.;
param->fMaxChi2PerCluster[2] = 12.;
param->fMaxChi2PerCluster[3] = 5.;
param->fMaxChi2PerCluster[4] = 12.;
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.;
param->fMaxChi2s[1] = 25.;
param->fMaxChi2s[2] = 25.;
param->fMaxChi2s[3] = 25.;
param->fMaxChi2s[4] = 40.;
param->fMaxChi2s[5] = 50.;
param->fMaxRoad = 6.;
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.;
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.;
param->fMaxDZForProlongation = 60.;
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);
param->fTrackleterBuildCl2TrkRefs = kTRUE;
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()
{
AliITSRecoParam *param = new AliITSRecoParam();
param->SetVertexer(2);
param->SetClusterErrorsParam(2);
param->SetFindV0s(kFALSE);
param->SetAddVirtualClustersInDeadZone(kFALSE);
param->SetUseAmplitudeInfo(kFALSE);
param->SetEventSpecie(AliRecoParam::kCosmic);
param->SetUseBadZonesFromOCDB(kTRUE);
param->SetUseSingleBadChannelsFromOCDB(kTRUE);
param->SetSAUseAllClusters();
param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
param->SetAllowProlongationWithEmptyRoad();
param->SetMinNPointsSA(2);
param->SetNLoopsSA(32);
param->SetFactorSAWindowSizes(20);
param->SetClusterMisalErrorY(1.0,1.0,1.0,1.0,1.0,1.0);
param->SetClusterMisalErrorZ(1.0,1.0,1.0,1.0,1.0,1.0);
param->SetClusterMisalErrorYBOn(0.0,0.0,0.1,0.1,0.1,0.1);
param->SetClusterMisalErrorZBOn(0.1,0.1,0.1,0.1,0.1,0.1);
param->fUseSDDCorrectionMaps = kFALSE;
param->fUseSDDClusterSizeSelection=kTRUE;
param->fMinClusterChargeSDD=30.;
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);
param->SetAlignFilterMinPt(0.2);
param->SetAlignFilterMaxPt(1.e10);
param->SetAlignFilterFillQANtuples(kTRUE);
param->fMaxSnp = 0.95;
param->fNSigmaYLayerForRoadY = 4.;
param->fNSigmaRoadY = 7.5;
param->fNSigmaZLayerForRoadZ = 4.;
param->fNSigmaRoadZ = 7.5;
param->fNSigma2RoadZC = 60.;
param->fNSigma2RoadYC = 60.;
param->fNSigma2RoadZNonC = 50.;
param->fNSigma2RoadYNonC = 50.;
param->fMaxChi2PerCluster[0] = 11.;
param->fMaxChi2PerCluster[1] = 12.;
param->fMaxChi2PerCluster[2] = 12.;
param->fMaxChi2PerCluster[3] = 5.;
param->fMaxChi2PerCluster[4] = 12.;
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.;
param->fMaxChi2s[1] = 25.;
param->fMaxChi2s[2] = 25.;
param->fMaxChi2s[3] = 25.;
param->fMaxChi2s[4] = 40.;
param->fMaxChi2s[5] = 50.;
param->fMaxRoad = 6.;
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.;
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 = 10.;
param->fMaxDZForProlongation = 20.;
param->fMinPtForProlongation = 0.120;
param->fZWindowDeadZone = 2.0;
param->fSigmaXDeadZoneHit2 = 0.004/12.;
param->fSigmaZDeadZoneHit2 = 0.001/12.;
param->fXPassDeadZoneHits = 0.018;
param->fTrackleterBuildCl2TrkRefs = kFALSE;
return param;
}
AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
{
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) {
AliITSRecoParam *param;
param = GetLowFluxParam();
param->SetClusterErrorsParam(2);
param->SetSAUseAllClusters();
param->SetOuterStartLayerSA(2);
param->SetAllowProlongationWithEmptyRoad(kTRUE);
param->SetFactorSAWindowSizes(2);
param->SetClusterMisalErrorY(0.0010,0.0010,0.0300,0.0300,0.0020,0.0020);
param->SetClusterMisalErrorZ(0.0100,0.0100,0.0100,0.0100,0.0500,0.0500);
param->SetClusterMisalErrorYBOn(0.0010,0.0030,0.0500,0.0500,0.0020,0.0020);
param->SetClusterMisalErrorZBOn(0.0100,0.0100,0.0100,0.0100,0.0500,0.0500);
param->SetUseSDDCorrectionMaps(kTRUE);
param->SetUseSDDClusterSizeSelection(kTRUE);
param->SetMinClusterChargeSDD(30.);
param->SetUseUnfoldingInClusterFinderSDD(kFALSE);
param->SetComputePlaneEff();
param->SetLayerToSkip(i);
param->SetIPlanePlaneEff(i);
param->fNSigXFromBoundaryPlaneEff= 1.;
param->fNSigZFromBoundaryPlaneEff= 1.;
if (i==0) {
param->fMinPtPlaneEff = 0.200;
param->fMaxMissingClustersPlaneEff = 2;
param->fMaxMissingClustersOutPlaneEff = 2;
param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
}
if (i==1 ) {
param->fMinPtPlaneEff = 0.200;
param->fMaxMissingClustersPlaneEff = 2;
param->fMaxMissingClustersOutPlaneEff = 2;
}
if (i==2) {
param->fMinPtPlaneEff = 0.200;
param->fMaxMissingClustersPlaneEff = 2;
param->fMaxMissingClustersOutPlaneEff = 2;
}
if (i==3) {
param->fMinPtPlaneEff = 0.200;
param->fMaxMissingClustersPlaneEff = 2;
param->fMaxMissingClustersOutPlaneEff = 1;
}
if (i==4) {
param->fMinPtPlaneEff = 0.200;
param->fMaxMissingClustersPlaneEff = 2;
param->fMaxMissingClustersOutPlaneEff = 1;
}
if (i==5) {
param->fMinPtPlaneEff = 0.200;
param->fMaxMissingClustersPlaneEff = 2;
}
return param;
}
else if (i==-1) {
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()
{
fSigmaY2[0]=1.44e-6;
fSigmaY2[1]=1.44e-6;
fSigmaY2[2]=1.444e-5;
fSigmaY2[3]=1.444e-5;
fSigmaY2[4]=4.0e-6;
fSigmaY2[5]=4.0e-6;
fSigmaZ2[0]=1.44e-4;
fSigmaZ2[1]=1.44e-4;
fSigmaZ2[2]=7.84e-6;
fSigmaZ2[3]=7.84e-6;
fSigmaZ2[4]=6.889e-3;
fSigmaZ2[5]=6.889e-3;
return;
}
void AliITSRecoParam::PrintParameters() const
{
printf("============================= AliITSRecoParam::PrintParameters ");
printf("============================= \n\n");
for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
if(!fLayersToSkip[i]) {
printf("ITS Traking: using layer %d\n",i);
} else {
printf("ITS Traking: skipping layer %d\n",i);
}
}
for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
if(fUseAmplitudeInfo[i]) {
printf("ITS Traking: use amplitude info for layer %d\n",i);
} else {
printf("ITS Traking: don't use amplitude info for layer %d\n",i);
}
}
for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
printf("Layer %d:\n sigmaY2 %f, sigmaZ2 %f\n sigmaMisalY %f, sigmaMisalZ %f\n max norm chi2 for non constrained tracks %f\n max norm chi2 for constrained tracks %f\n max predicted chi2 (cluster & track prol.) %f\n",i,fSigmaY2[i],fSigmaZ2[i],fClusterMisalErrorY[i],fClusterMisalErrorZ[i],fMaxNormChi2NonC[i],fMaxNormChi2C[i],fMaxChi2s[i]);
Dump();
return;
}
Bool_t AliITSRecoParam::SetOptReco(TString r){
Bool_t isFine = kFALSE;
if(r.Contains("All") || r.Contains("SPD") || r.Contains("SDD")
|| r.Contains("SSD")){
isFine = kTRUE;
fOptReco=r;
}
return isFine;
}