]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDrecoParam.cxx
Add a protection against division by 0 (which may occur when a track exit from the...
[u/mrichter/AliRoot.git] / TRD / AliTRDrecoParam.cxx
index e149312123d6c1349ea8204ea3100566721f8f2f..78f8ae63f0d80f3344b990e6858eb9dbf750bf74 100644 (file)
@@ -30,6 +30,7 @@
 
 ClassImp(AliTRDrecoParam)
 
+
 //______________________________________________________________
 AliTRDrecoParam::AliTRDrecoParam()
   :AliDetectorRecoParam()
@@ -42,7 +43,9 @@ AliTRDrecoParam::AliTRDrecoParam()
   ,fkRoad1z(20.0)      
   ,fkRoad2y(3.0)
   ,fkRoad2z(20.0)
+  ,fkPtThreshold(2.0) 
   ,fkPlaneQualityThreshold(5.0)// 4.2? under Investigation
+  ,fkRoadzMultiplicator(1.5)
   ,fkFindable(.333)
   ,fkChi2Z(30./*14.*//*12.5*/)
   ,fkChi2Y(.25)
@@ -55,6 +58,8 @@ AliTRDrecoParam::AliTRDrecoParam()
   ,fkNClusterNoise(0.)
   ,fkNMeanTracklets(5.5)
   ,fkTrackLikelihood(-15.)
+  ,fFlags(0)
+  ,fRawStreamVersion("REAL")
   ,fMinMaxCutSigma(4.)
   ,fMinLeftRightCutSigma(8.)
   ,fClusMaxThresh(4.5)
@@ -66,19 +71,31 @@ AliTRDrecoParam::AliTRDrecoParam()
   //
   // Default constructor
   //
-  SetTailCancelation();
-  SetLUT();
-  SetClusterSharing(kFALSE);
-  SetVertexConstrained();
-  SetImproveTracklets(kFALSE);
-
-  fSysCovMatrix[0] = 1.; // y direction (1 cm)
-  fSysCovMatrix[1] = 1.; // z direction (1 cm)
+  fSysCovMatrix[0] = 0.; // y direction (1 cm)
+  fSysCovMatrix[1] = 0.; // z direction (1 cm)
   fSysCovMatrix[2] = 0.; // snp
   fSysCovMatrix[3] = 0.; // tgl
   fSysCovMatrix[4] = 0.; // 1/pt
 
+  // Xe tail cancellation parameters
+  fTCParams[0] = 1.156; // r1
+  fTCParams[1] = 0.130; // r2
+  fTCParams[2] = 0.114; // c1
+  fTCParams[3] = 0.624; // c2
+  // Ar tail cancellation parameters
+  fTCParams[4] = 6.;    // r1
+  fTCParams[5] = 0.62;  // r2
+  fTCParams[6] = 0.0087;// c1
+  fTCParams[7] = 0.07;  // c2
+
   memset(fPIDThreshold, 0, AliTRDCalPID::kNMom*sizeof(Double_t));
+  memset(fStreamLevel, 0, kTRDreconstructionTasks * sizeof(Int_t));
+
+  SetPIDNeuralNetwork();
+  SetEightSlices();
+  SetImproveTracklets();
+  SetLUT();
+  SetTailCancelation();
 }
 
 //______________________________________________________________
@@ -93,7 +110,9 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   ,fkRoad1z(ref.fkRoad1z)      
   ,fkRoad2y(ref.fkRoad2y)
   ,fkRoad2z(ref.fkRoad2z)
+  ,fkPtThreshold(ref.fkPtThreshold) 
   ,fkPlaneQualityThreshold(ref.fkPlaneQualityThreshold)
+  ,fkRoadzMultiplicator(ref.fkRoadzMultiplicator)
   ,fkFindable(ref.fkFindable)
   ,fkChi2Z(ref.fkChi2Z)
   ,fkChi2Y(ref.fkChi2Y)
@@ -106,6 +125,8 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   ,fkNClusterNoise(ref.fkNClusterNoise)
   ,fkNMeanTracklets(ref.fkNMeanTracklets)
   ,fkTrackLikelihood(ref.fkTrackLikelihood)
+  ,fFlags(ref.fFlags)
+  ,fRawStreamVersion(ref.fRawStreamVersion)
   ,fMinMaxCutSigma(ref.fMinMaxCutSigma)
   ,fMinLeftRightCutSigma(ref.fMinLeftRightCutSigma)
   ,fClusMaxThresh(ref.fClusMaxThresh)
@@ -117,14 +138,10 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   //
   // Copy constructor
   //
-  SetClusterSharing(ref.IsClusterSharing());
-  SetVertexConstrained(ref.IsVertexConstrained());
-  SetLUT(ref.IsLUT());
-  SetTailCancelation(ref.IsTailCancelation());
-  SetImproveTracklets(ref.HasImproveTracklets());
-
   memcpy(fSysCovMatrix, ref.fSysCovMatrix, 5*sizeof(Double_t));
+  memcpy(fTCParams, ref.fTCParams, 8*sizeof(Double_t));
   memcpy(fPIDThreshold, ref.fPIDThreshold, AliTRDCalPID::kNMom*sizeof(Double_t));
+  memcpy(fStreamLevel, ref.fStreamLevel, kTRDreconstructionTasks * sizeof(Int_t));
 }
 
 //______________________________________________________________
@@ -136,6 +153,8 @@ AliTRDrecoParam *AliTRDrecoParam::GetLowFluxParam()
 
   AliTRDrecoParam *rec = new AliTRDrecoParam();
   rec->fkdNchdy = 12.; // pp in TRD
+  rec->SetVertexConstrained();
+  rec->SetCheckTimeConsistency();
   return rec;
 
 }
@@ -149,8 +168,8 @@ AliTRDrecoParam *AliTRDrecoParam::GetHighFluxParam()
 
   AliTRDrecoParam *rec = new AliTRDrecoParam();
   rec->fkdNchdy = 4000.; // PbPb in TRD
-  rec->SetImproveTracklets(kTRUE);
-
+  rec->SetVertexConstrained();
+  rec->SetCheckTimeConsistency();
   return rec;
 
 }
@@ -162,17 +181,20 @@ AliTRDrecoParam *AliTRDrecoParam::GetCosmicTestParam()
   // Parameters for the cosmics data
   //
 
-  AliTRDrawStreamBase::SetRawStreamVersion("TB");
   AliTRDrecoParam *par = new AliTRDrecoParam();
-  par->SetVertexConstrained(kFALSE);
-  par->fkChi2YSlope       = 0.11853;
-  par->fkChi2ZSlope       = 0.04527;
-       par->fkChi2YCut                                 = 1.;
-       par->fkPhiSlope                                 = 3.17954;
+  par->fSysCovMatrix[0] = 2.; // y direction (1 cm)
+  par->fSysCovMatrix[1] = 2.; // z direction (1 cm)
+  par->fkChi2YSlope     = 0.11853;
+  par->fkChi2ZSlope     = 0.04527;
+  par->fkChi2YCut       = 1.;
+  par->fkPhiSlope       = 10.; //3.17954;
   par->fkMaxTheta       = 2.1445;
   par->fkMaxPhi         = 2.7475;
   par->fkNMeanClusters  = 12.89;
   par->fkNSigmaClusters = 2.095;
+  par->fkRoadzMultiplicator = 3.;
+  par->fStreamLevel[kTracker] = 1;
+  par->SetCheckTimeConsistency();
   return par;
 
 }
@@ -187,3 +209,29 @@ Float_t AliTRDrecoParam::GetNClusters() const
   nclusters *= 1.+fkNClusterNoise;
   return nclusters;
 }
+
+//______________________________________________________________
+void AliTRDrecoParam::SetPIDLQslices(Int_t s)
+{
+// Setting number of slices used by the PID LQ method s={1, 2}
+// If PID NN is set this function will change to PID LQ.
+  if(IsPIDNeuralNetwork()){
+    AliWarning("PID set to NN. Changing to LQ.");
+    SetPIDNeuralNetwork(kFALSE);
+  } 
+
+  switch(s){
+  case 1: 
+    if(TESTBIT(fFlags, kLQ2D)) CLRBIT(fFlags, kLQ2D);
+    break;
+  case 2:
+    SETBIT(fFlags, kLQ2D);
+    break;
+  default:
+    AliWarning(Form("N[%d] PID LQ slices not implemented. Using default 2.", s));
+    SETBIT(fFlags, kLQ2D);
+    break;
+  }
+}
+