#include "AliITSURecoParam.h"
#include "AliLog.h"
-
+#include "AliITSUTrackCond.h"
///////////////////////////////////////////////////////////////////////////////
// //
const Double_t AliITSURecoParam::fgkMinPtForProlongation = 0.0;
const Double_t AliITSURecoParam::fgkNSigmaRoadY = 5.;
const Double_t AliITSURecoParam::fgkNSigmaRoadZ = 5.;
-const Double_t AliITSURecoParam::fgkSigmaRoadY = 1000e-4;
-const Double_t AliITSURecoParam::fgkSigmaRoadZ = 1000e-4;
-const Double_t AliITSURecoParam::fgkMaxTr2ClChi2 = 15.;;
+const Double_t AliITSURecoParam::fgkSigmaRoadY = 1.;//1000e-4;
+const Double_t AliITSURecoParam::fgkSigmaRoadZ = 1.;//1000e-4;
+const Double_t AliITSURecoParam::fgkMaxTr2ClChi2 = 15.;
const Double_t AliITSURecoParam::fgkTanLorentzAngle = 0;
+const Double_t AliITSURecoParam::fgkMissPenalty = 2.0;
+const Bool_t AliITSURecoParam::fgkAllowDiagonalClusterization = kFALSE;
//
+// hardwired params for TPC-ITS border layer
+const Double_t AliITSURecoParam::fgkTPCITSWallRMin = 50.;
+const Double_t AliITSURecoParam::fgkTPCITSWallRMax = 80.;
+const Double_t AliITSURecoParam::fgkTPCITSWallZSpanH = 250.;
+const Double_t AliITSURecoParam::fgkTPCITSWallMaxStep = 6.;
+
+//
//_____________________________________________________________________________
AliITSURecoParam::AliITSURecoParam()
: fNLayers(0)
,fMaxDforV0dghtrForProlongation(fgkMaxDforV0dghtrForProlongation)
,fMaxDForProlongation(fgkMaxDForProlongation)
,fMaxDZForProlongation(fgkMaxDZForProlongation)
- ,fMinPtForProlongation(fgkMaxDForProlongation)
+ ,fMinPtForProlongation(fgkMinPtForProlongation)
,fNSigmaRoadY(fgkNSigmaRoadY)
,fNSigmaRoadZ(fgkNSigmaRoadZ)
//
+ ,fTPCITSWallRMin(fgkTPCITSWallRMin)
+ ,fTPCITSWallRMax(fgkTPCITSWallRMax)
+ ,fTPCITSWallZSpanH(fgkTPCITSWallZSpanH)
+ ,fTPCITSWallMaxStep(fgkTPCITSWallMaxStep)
+ //
+ ,fAllowDiagonalClusterization(0)
,fTanLorentzAngle(0)
,fSigmaY2(0)
,fSigmaZ2(0)
,fMaxTr2ClChi2(0)
+ ,fMissPenalty(0)
+ ,fTrackingConditions(0)
{
// def c-tor
SetName("ITS");
,fMaxDforV0dghtrForProlongation(fgkMaxDforV0dghtrForProlongation)
,fMaxDForProlongation(fgkMaxDForProlongation)
,fMaxDZForProlongation(fgkMaxDZForProlongation)
- ,fMinPtForProlongation(fgkMaxDForProlongation)
+ ,fMinPtForProlongation(fgkMinPtForProlongation)
,fNSigmaRoadY(fgkNSigmaRoadY)
,fNSigmaRoadZ(fgkNSigmaRoadZ)
//
+ ,fTPCITSWallRMin(fgkTPCITSWallRMin)
+ ,fTPCITSWallRMax(fgkTPCITSWallRMax)
+ ,fTPCITSWallZSpanH(fgkTPCITSWallZSpanH)
+ ,fTPCITSWallMaxStep(fgkTPCITSWallMaxStep)
+ //
+ ,fAllowDiagonalClusterization(0)
,fTanLorentzAngle(0)
,fSigmaY2(0)
,fSigmaZ2(0)
,fMaxTr2ClChi2(0)
+ ,fMissPenalty(0)
+ ,fTrackingConditions(0)
{
// def c-tor
SetName("ITS");
delete[] fSigmaY2;
delete[] fSigmaZ2;
delete[] fMaxTr2ClChi2;
+ delete[] fMissPenalty;
+ delete[] fAllowDiagonalClusterization;
+ fTrackingConditions.Delete();
}
//_____________________________________________________________________________
fSigmaY2 = new Double_t[n];
fSigmaZ2 = new Double_t[n];
fMaxTr2ClChi2 = new Double_t[n];
+ fMissPenalty = new Double_t[n];
+ fAllowDiagonalClusterization = new Bool_t[n];
//
for (int i=n;i--;) {
+ fAllowDiagonalClusterization[i] = fgkAllowDiagonalClusterization;
fTanLorentzAngle[i] = fgkTanLorentzAngle;
fSigmaY2[i] = fgkSigmaRoadY*fgkSigmaRoadY;
fSigmaZ2[i] = fgkSigmaRoadZ*fgkSigmaRoadZ;
fMaxTr2ClChi2[i] = fgkMaxTr2ClChi2;
+ fMissPenalty[i] = fgkMissPenalty;
}
//
}
if (lr>=fNLayers) AliFatal(Form("Number of defined layers is %d",fNLayers));
fMaxTr2ClChi2[lr] = v;
}
+
+//_____________________________________________________________________________
+void AliITSURecoParam::SetMissPenalty(Int_t lr, Double_t v)
+{
+ // set Lorentz angle value
+ if (lr>=fNLayers) AliFatal(Form("Number of defined layers is %d",fNLayers));
+ fMissPenalty[lr] = v;
+}
+
+//_____________________________________________________________________________
+void AliITSURecoParam::SetAllowDiagonalClusterization(Int_t lr, Bool_t v)
+{
+ // set Lorentz angle value
+ if (lr>=fNLayers) AliFatal(Form("Number of defined layers is %d",fNLayers));
+ fAllowDiagonalClusterization[lr] = v;
+}
+
+//========================================================================
+//_____________________________________________________________________________
+void AliITSURecoParam::Print(Option_t *) const
+{
+ // print params
+ printf("%s: %s %s\n",ClassName(),GetName(),GetTitle());
+ printf("%-30s\t%f\n","fMaxDforV0dghtrForProlongation",fMaxDforV0dghtrForProlongation);
+ printf("%-30s\t%f\n","fMaxDForProlongation",fMaxDForProlongation);
+ printf("%-30s\t%f\n","fMaxDZForProlongation",fMaxDZForProlongation);
+ printf("%-30s\t%f\n","fMinPtForProlongation",fMinPtForProlongation);
+ printf("%-30s\t%f\n","fNSigmaRoadY",fNSigmaRoadY);
+ printf("%-30s\t%f\n","fNSigmaRoadZ",fNSigmaRoadZ);
+ //
+ printf("TPC-ITS wall: %.3f<R<%.3f DZ/2=%.3f MaxStep=%.3f\n",
+ fTPCITSWallRMin,fTPCITSWallRMax,fTPCITSWallZSpanH,fTPCITSWallMaxStep);
+ //
+ printf("N.Layers: %d\n",fNLayers);
+ if (fNLayers>0) {
+ printf("Layer-wise data:\n");
+ printf("%-30s\t:","fTanLorentzAngle"); for (int i=0;i<fNLayers;i++) printf(" %+.2e",fTanLorentzAngle[i]); printf("\n");
+ printf("%-30s\t:","fSigmaY2"); for (int i=0;i<fNLayers;i++) printf(" %+.2e",fSigmaY2[i]); printf("\n");
+ printf("%-30s\t:","fSigmaZ2"); for (int i=0;i<fNLayers;i++) printf(" %+.2e",fSigmaZ2[i]); printf("\n");
+ printf("%-30s\t:","fMaxTr2ClChi2"); for (int i=0;i<fNLayers;i++) printf(" %+.2e",fMaxTr2ClChi2[i]); printf("\n");
+ printf("%-30s\t:","fMissPenalty"); for (int i=0;i<fNLayers;i++) printf(" %+.2e",fMissPenalty[i]); printf("\n");
+ }
+ //
+ int nTrCond = GetNTrackingConditions();
+ printf("%d tracking conditions defined\n",nTrCond);
+ for (int itc=0;itc<nTrCond;itc++) {
+ printf("Tracking condition %d\n",itc);
+ GetTrackingCondition(itc)->Print();
+ }
+}
+
+//__________________________________________________
+void AliITSURecoParam::AddTrackingCondition(AliITSUTrackCond* cond)
+{
+ // Add new tracking condition
+ fTrackingConditions.AddLast(cond);
+}