const Double_t AliITSRecoParam::fgkSPDdetxlength=1.298; // 1.410-2*0.056
//_____________________________________________________________________________
-AliITSRecoParam::AliITSRecoParam() : TObject(),
+AliITSRecoParam::AliITSRecoParam() : AliDetectorRecoParam(),
+fTracker(0),
+fITSonly(kFALSE),
+fVertexer(0),
+fClusterFinder(0),
+fPID(0),
+fVtxr3DZCutWide(0.),
+fVtxr3DRCutWide(0.),
+fVtxr3DZCutNarrow(0.),
+fVtxr3DRCutNarrow(0.),
+fVtxr3DPhiCutLoose(0.),
+fVtxr3DPhiCutTight(0.),
+fVtxr3DDCACut(0.),
fMaxSnp(1.),
fNSigmaYLayerForRoadY(0),
fNSigmaRoadY(0),
fNSigma2RoadYC(0),
fNSigma2RoadZNonC(0),
fNSigma2RoadYNonC(0),
+fRoadMisal(0),
fMaxNormChi2NonCForHypothesis(0),
fMaxChi2(0),
fMaxRoad(0),
fMaxDForProlongation(0),
fMaxDZForProlongation(0),
fMinPtForProlongation(0),
-fAddVirtualClustersInDeadZone(kTRUE),
+fAddVirtualClustersInDeadZone(kFALSE),
fZWindowDeadZone(0),
fSigmaXDeadZoneHit2(0),
fSigmaZDeadZoneHit2(0),
fXPassDeadZoneHits(0),
-fUseTGeoInTracker(0),
+fUseTGeoInTracker(3),
+fStepSizeTGeo(0.1),
fAllowSharedClusters(kTRUE),
fClusterErrorsParam(1),
+fComputePlaneEff(kFALSE),
+fHistoPlaneEff(kFALSE),
+fIPlanePlaneEff(0),
+fReadPlaneEffFromOCDB(kFALSE),
+fMinPtPlaneEff(0),
+fMaxMissingClustersPlaneEff(0),
+fRequireClusterInOuterLayerPlaneEff(kFALSE),
+fRequireClusterInInnerLayerPlaneEff(kFALSE),
+fOnlyConstraintPlaneEff(kFALSE),
+fExtendedEtaAcceptance(kFALSE),
+fUseBadZonesFromOCDB(kTRUE),
+fUseSingleBadChannelsFromOCDB(kFALSE),
+fMinFractionOfBadInRoad(0),
+fAllowProlongationWithEmptyRoad(kFALSE),
+fOuterStartLayerSA(0),
+fFactorSAWindowSizes(1.),
+fNLoopsSA(33),
+fMinPhiSA(0.002),
+fMaxPhiSA(0.0145),
+fMinLambdaSA(0.003),
+fMaxLambdaSA(0.008),
+fMinClusterChargeSA(0.),
+fSAOnePointTracks(kFALSE),
+fSAUseAllClusters(kFALSE),
fFindV0s(kTRUE),
-fFactorSAWindowSizes(1.)
+fUseUnfoldingInClusterFinderSPD(kFALSE),
+fUseUnfoldingInClusterFinderSDD(kTRUE),
+fUseUnfoldingInClusterFinderSSD(kTRUE),
+fUseSDDClusterSizeSelection(kFALSE),
+fMinClusterChargeSDD(0.),
+fUseChargeMatchingInClusterFinderSSD(kTRUE),
+fTrackleterOnlyOneTrackletPerC2(kTRUE),
+fTrackleterPhiWindow(0.08),
+fTrackleterZetaWindow(1.00),
+fTrackleterRemoveClustersFromOverlaps(kFALSE),
+fTrackleterPhiOverlapCut(0.005),
+fTrackleterZetaOverlapCut(0.05),
+fUseCosmicRunShiftsSSD(kFALSE)
{
//
// constructor
//
+ SetName("ITS");
+ SetTitle("ITS");
+
SetLayersParameters();
- SetUseTGeoInTracker(0);
+ for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
+ SetUseTGeoInTracker(3);
+ SetStepSizeTGeo(0.1);
SetAllowSharedClusters(kTRUE);
SetFindV0s(kTRUE);
- SetAddVirtualClustersInDeadZone(kTRUE);
+ SetAddVirtualClustersInDeadZone(kFALSE);
SetUseAmplitudeInfo(kTRUE);
SetClusterErrorsParam(1);
+ SetClusterMisalError(0.);
+ SetVertexer3DDefaults();
}
//_____________________________________________________________________________
AliITSRecoParam::~AliITSRecoParam()
// make default reconstruction parameters for hig flux env.
//
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->fMaxDZToUseConstraint = 3.;
param->fMaxDforV0dghtrForProlongation = 30.;
- param->fMaxDForProlongation = 10.;
- param->fMaxDZForProlongation = 20.;
+ 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;
-
return param;
}
//
// 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);
+
+
+ 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;
+ return param;
}
//_____________________________________________________________________________
AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam()
//
AliITSRecoParam *param = new AliITSRecoParam();
- param->SetFactorSAWindowSizes(3.);
+ // vertexer for cosmics
+ param->SetVertexer(2);
+
+ // find independently ITS SA tracks
+ param->SetSAUseAllClusters();
+ param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
+
+ // larger seach windows for SA (in case of large misalignments)
+ param->SetFactorSAWindowSizes(3.);
param->fMaxSnp = 0.95;
return param;
}
//_____________________________________________________________________________
+AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
+{
+ //
+ // make special reconstruction parameters for Plane Efficiency study on layer i
+ //
+ if (i<0 || i>=AliITSgeomTGeo::kNLayers) {
+ printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane not in the range [0,5]\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==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;
+}
+//_____________________________________________________________________________
void AliITSRecoParam::SetLayersParameters()
{
//
return;
}
+//_____________________________________________________________________________
+void AliITSRecoParam::PrintParameters() const
+{
+ //
+ // print parameters
+ //
+ 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;
+}