,fActiveLrOuter(0)
,fAllowLayers(0)
,fNLayers(0)
+ ,fMaxClus(0)
,fMaxITSTPCMatchChi2(fgkMaxMatchChi2)
,fClSharing(0)
,fMaxBranches(0)
,fActiveLrOuter(src.fActiveLrOuter)
,fAllowLayers(src.fAllowLayers)
,fNLayers(0)
+ ,fMaxClus(0)
,fMaxITSTPCMatchChi2(src.fMaxITSTPCMatchChi2)
,fClSharing(0)
,fMaxBranches(0)
{
// copy c-tor
SetNLayers(src.fNLayers);
+ fMaxClus = src.fMaxClus;
for (int i=fNLayers;i--;) {
SetMaxBranches(i,src.GetMaxBranches(i));
SetMaxCandidates(i,src.GetMaxCandidates(i));
SetNSigmaRoadY(i,src.GetNSigmaRoadY(i));
SetNSigmaRoadZ(i,src.GetNSigmaRoadZ(i));
SetClSharing(i,src.GetClSharing(i));
- SetMaxITSSAChi2(1+2*i,src.GetMaxITSSAChi2(1+2*i));
- SetMaxITSSAChi2(1+2*i+1,src.GetMaxITSSAChi2(1+2*i+1));
}
+ //
+ for (int i=fMaxClus;i--;) SetMaxITSSAChi2(1+i,src.GetMaxITSSAChi2(1+i));
+ //
}
//______________________________________________________________
SetNSigmaRoadY(i,src.GetNSigmaRoadY(i));
SetNSigmaRoadZ(i,src.GetNSigmaRoadZ(i));
SetClSharing(i,src.GetClSharing(i));
- SetMaxITSSAChi2(1+2*i,src.GetMaxITSSAChi2(1+2*i));
- SetMaxITSSAChi2(1+2*i+1,src.GetMaxITSSAChi2(1+2*i+1));
}
+ for (int i=fMaxClus;i--;) SetMaxITSSAChi2(1+i,src.GetMaxITSSAChi2(1+i));
+ //
fAuxData = src.fAuxData;
}
return *this;
delete[] fMaxITSSAChi2;
}
fNLayers = nLayers;
+ fMaxClus = 2*fNLayers;
fAllowLayers = 0;
//
if (fNLayers>0) {
fMissPenalty = new Float_t[fNLayers];
fNSigmaRoadY = new Float_t[fNLayers];
fNSigmaRoadZ = new Float_t[fNLayers];
- fMaxITSSAChi2 = new Float_t[2*fNLayers];
+ fMaxITSSAChi2 = new Float_t[fMaxClus];
for (int i=fNLayers;i--;) {
fAllowLayers |= 0x1<<i;
SetClSharing(i,fgkClSharing);
SetMaxTr2ClChi2(i,fgkMaxTr2ClChi2);
SetMaxChi2GloNrm(i,fgkMaxChi2GloNrm);
SetMissPenalty(i,fgkMissPenalty);
- SetMaxITSSAChi2(1+2*i,fgkMaxITSSAChi2);
- SetMaxITSSAChi2(1+2*i+1,fgkMaxITSSAChi2);
SetNSigmaRoadY(i,-1); // force recalculation
SetNSigmaRoadZ(i,-1); // force recalculation
}
+ for (int i=fMaxClus;i--;) SetMaxITSSAChi2(1+i,fgkMaxITSSAChi2);
}
else {
fClSharing = 0;
//
printf("ITS/TPC matching MaxChi2: %.3f\n",fMaxITSTPCMatchChi2);
printf("ITS_SA BWD fit MaxChi2 vs Ncl :");
- for (int i=1;i<=2*fNLayers;i++) if (GetMaxITSSAChi2(i)>1e-6) printf("\t%d: %.2f",i,GetMaxITSSAChi2(i)); printf("\n");
+ for (int i=1;i<=fMaxClus;i++) if (GetMaxITSSAChi2(i)>1e-6) printf("\t%d: %.2f",i,GetMaxITSSAChi2(i)); printf("\n");
//
}
float nsig = Sqrt(2*GetMaxTr2ClChi2(ilr));
if (GetNSigmaRoadY(ilr)<0) SetNSigmaRoadY(ilr,nsig);
if (GetNSigmaRoadZ(ilr)<0) SetNSigmaRoadZ(ilr,nsig);
- if (GetMaxITSSAChi2(1+2*ilr)<1e-6) SetMaxITSSAChi2(1+2*ilr,fgkMaxITSSAChi2);
- if (GetMaxITSSAChi2(1+2*ilr+1)<1e-6) SetMaxITSSAChi2(1+2*ilr+1,fgkMaxITSSAChi2);
//
}
+ for (int i=fMaxClus;i--;) if (GetMaxITSSAChi2(1+1)<1e-6) SetMaxITSSAChi2(1+i,fgkMaxMatchChi2);
if (fMaxITSTPCMatchChi2<1e-6) SetMaxITSTPCMatchChi2(fgkMaxMatchChi2);
//
fInitDone = kTRUE;
Char_t fActiveLrOuter; // outermose active layer to consider
UShort_t fAllowLayers; // pattern of active layers to be checked
Int_t fNLayers; // total number of layers
+ Int_t fMaxClus; // max number of clusters in track (by default, 2*fNLayers)
Float_t fMaxITSTPCMatchChi2; // max chi2 for ITS/TPC matching
Char_t* fClSharing; // [fNLayers] is cluster sharing allowed
Short_t* fMaxBranches; // [fNLayers] max allowed branches per seed on each layer
Short_t* fMaxCandidates; // [fNLayers] max allowed candidates per TPC seed on each layer
- Float_t* fMaxITSSAChi2; // [fNLayers] max chi2 for ITS standalone fit (backward) vs N cl
+ Float_t* fMaxITSSAChi2; // [fMaxClus] max chi2 for ITS standalone fit (backward) vs N cl
Float_t* fMaxTr2ClChi2; // [fNLayers] max track-to-cluster chi2
Float_t* fMaxChi2GloNrm; // [fNLayers] max norm global chi2
Float_t* fMissPenalty; // [fNLayers] chi2 penalty for missing hit on the layer
static Float_t fgkMaxMatchChi2; // max acceptable matching chi2
static Float_t fgkMaxITSSAChi2; // max acceptable standalone ITS backward fit chi2
//
- ClassDef(AliITSUTrackCond,9) // set of requirements on track hits pattern
+ ClassDef(AliITSUTrackCond,10) // set of requirements on track hits pattern
};
}
//
const Bool_t kAllowDiagCl = kFALSE;
+ const Bool_t kUseLUT[3] = {kTRUE,kTRUE,kFALSE}; // use TGeo mat.queries only for RefitInward
//
// long tracks
/*
// short tracks from decays
int c1nBranch[7] = {0,0,0,4,6,6,10}; // max branching for the seed on layer
- int c1nCands[7] = {0,0,0,5,5,5,8}; // max candidates for the TPC seed
+ int c1nCands[7] = {0,0,0,7,7,7,8}; // max candidates for the TPC seed
float c1tr2clChi2[7] = {0,0,0,20,20,20,30}; // cut on cluster to track chi2
float c1gloChi2[7] = {0,0,0,16,40,35,30}; // cut on seed global norm chi2
float c1missPen[7] = {0.,0.,0.,2.,2.,2.,2.}; // missing cluster penalty
recoParamArray->AddLast(itsRecoParam);
//******************************************************************
for (int i=0;i<nLr;i++) itsRecoParam->SetAllowDiagonalClusterization(i,kAllowDiagCl);
+ for (int i=AliITSURecoParam::kNTrackingPhases;i--;) itsRecoParam->SetUseMatLUT(i,kUseLUT[i]);
//
// Add tracking conditions >>>
trCond = new AliITSUTrackCond();
recoParamArray->AddLast(itsRecoParam);
//******************************************************************
for (int i=0;i<nLr;i++) itsRecoParam->SetAllowDiagonalClusterization(i,kAllowDiagCl);
+ for (int i=AliITSURecoParam::kNTrackingPhases;i--;) itsRecoParam->SetUseMatLUT(i,kUseLUT[i]);
//
// Add tracking conditions >>>
trCond = new AliITSUTrackCond();