]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDrecoParam.cxx
Modify Reading of EAs
[u/mrichter/AliRoot.git] / TRD / AliTRDrecoParam.cxx
index 9ff9cd06c37a64b88250afac104485032ff04484..294d074d9c4a2e0261cbb6806130911ca6863226 100644 (file)
@@ -52,6 +52,7 @@ AliTRDrecoParam::AliTRDrecoParam()
   ,fkChi2Y(.25)
   ,fkChi2YSlope(7.73)
   ,fkChi2ZSlope(0.069)
+  ,fChi2Cut(25)
   ,fkChi2YCut(0.5)
   ,fkPhiSlope(10.6)
   ,fkNMeanClusters(20.)
@@ -61,7 +62,8 @@ AliTRDrecoParam::AliTRDrecoParam()
   ,fkTrackLikelihood(-15.)
   ,fNumberOfConfigs(3)
   ,fFlags(0)
-  ,fRawStreamVersion("REAL")
+  ,fRawStreamVersion("DEFAULT")
+  ,fdzdxXcrossFactor(0.)
   ,fMinMaxCutSigma(4.)
   ,fMinLeftRightCutSigma(8.)
   ,fClusMaxThresh(4.5)
@@ -94,11 +96,12 @@ AliTRDrecoParam::AliTRDrecoParam()
   memset(fPIDThreshold, 0, AliTRDCalPID::kNMom*sizeof(Double_t));
   memset(fStreamLevel, 0, kTRDreconstructionTasks * sizeof(Int_t));
 
-  SetPIDNeuralNetwork();
+  SetPIDmethod(AliTRDPIDResponse::kLQ1D);
   SetEightSlices();
   SetImproveTracklets();
   SetLUT();
   SetTailCancelation();
+  SetTrackletParams();
 }
 
 //______________________________________________________________
@@ -108,12 +111,12 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   ,fkMaxTheta(ref.fkMaxTheta)
   ,fkMaxPhi(ref.fkMaxPhi)
   ,fkRoad0y(ref.fkRoad0y)
-  ,fkRoad0z(ref.fkRoad0z) 
+  ,fkRoad0z(ref.fkRoad0z)
   ,fkRoad1y(ref.fkRoad1y)
-  ,fkRoad1z(ref.fkRoad1z)      
+  ,fkRoad1z(ref.fkRoad1z)
   ,fkRoad2y(ref.fkRoad2y)
   ,fkRoad2z(ref.fkRoad2z)
-  ,fkPtThreshold(ref.fkPtThreshold) 
+  ,fkPtThreshold(ref.fkPtThreshold)
   ,fkPlaneQualityThreshold(ref.fkPlaneQualityThreshold)
   ,fkRoadzMultiplicator(ref.fkRoadzMultiplicator)
   ,fkFindable(ref.fkFindable)
@@ -121,6 +124,7 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   ,fkChi2Y(ref.fkChi2Y)
   ,fkChi2YSlope(ref.fkChi2YSlope)
   ,fkChi2ZSlope(ref.fkChi2ZSlope)
+  ,fChi2Cut(ref.fChi2Cut)
   ,fkChi2YCut(ref.fkChi2YCut)
   ,fkPhiSlope(ref.fkPhiSlope)
   ,fkNMeanClusters(ref.fkNMeanClusters)
@@ -131,6 +135,7 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   ,fNumberOfConfigs(ref.fNumberOfConfigs)
   ,fFlags(ref.fFlags)
   ,fRawStreamVersion(ref.fRawStreamVersion)
+  ,fdzdxXcrossFactor(ref.fdzdxXcrossFactor)
   ,fMinMaxCutSigma(ref.fMinMaxCutSigma)
   ,fMinLeftRightCutSigma(ref.fMinLeftRightCutSigma)
   ,fClusMaxThresh(ref.fClusMaxThresh)
@@ -147,6 +152,72 @@ AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
   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));
+
+  // tracklet params
+  memcpy(fdzdxCorrFactor, ref.fdzdxCorrFactor, 2*sizeof(Double_t));
+  memcpy(fdzdxCorrRCbias, ref.fdzdxCorrRCbias, 2*sizeof(Double_t));
+  memcpy(fYcorrTailCancel, ref.fdzdxCorrRCbias, 12*sizeof(Double_t));
+  memcpy(fS2Ycorr, ref.fS2Ycorr, 4*sizeof(Double_t));
+}
+
+//______________________________________________________________
+AliTRDrecoParam& AliTRDrecoParam::operator=(const AliTRDrecoParam &ref)
+{
+  //
+  // assignment operator
+  //
+
+  if(this == &ref) return *this;
+  AliDetectorRecoParam::operator=(ref);
+  fkdNchdy              = ref.fkdNchdy;
+  fkMaxTheta            = ref.fkMaxTheta;
+  fkMaxPhi              = ref.fkMaxPhi;
+  fkRoad0y              = ref.fkRoad0y;
+  fkRoad0z              = ref.fkRoad0z;
+  fkRoad1y              = ref.fkRoad1y;
+  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;
+  fkChi2YSlope          = ref.fkChi2YSlope;
+  fkChi2ZSlope          = ref.fkChi2ZSlope;
+  fChi2Cut            = ref.fChi2Cut;
+  fkChi2YCut            = ref.fkChi2YCut;
+  fkPhiSlope            = ref.fkPhiSlope;
+  fkNMeanClusters       = ref.fkNMeanClusters;
+  fkNSigmaClusters      = ref.fkNSigmaClusters;
+  fkNClusterNoise       = ref.fkNClusterNoise;
+  fkNMeanTracklets      = ref.fkNMeanTracklets;
+  fkTrackLikelihood     = ref.fkTrackLikelihood;
+  fNumberOfConfigs      = ref.fNumberOfConfigs;
+  fFlags                = ref.fFlags;
+  fRawStreamVersion     = ref.fRawStreamVersion;
+  fdzdxXcrossFactor     = ref.fdzdxXcrossFactor;
+  fMinMaxCutSigma       = ref.fMinMaxCutSigma;
+  fMinLeftRightCutSigma = ref.fMinLeftRightCutSigma;
+  fClusMaxThresh        = ref.fClusMaxThresh;
+  fClusSigThresh        = ref.fClusSigThresh;
+  fTCnexp               = ref.fTCnexp;
+  fRecEveryNTB          = ref.fRecEveryNTB;
+  fNumberOfPresamples   = ref.fNumberOfPresamples;
+  fNumberOfPostsamples  = ref.fNumberOfPostsamples;
+
+  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));
+
+  // tracklet params
+  memcpy(fdzdxCorrFactor, ref.fdzdxCorrFactor, 2*sizeof(Double_t));
+  memcpy(fdzdxCorrRCbias, ref.fdzdxCorrRCbias, 2*sizeof(Double_t));
+  memcpy(fYcorrTailCancel, ref.fdzdxCorrRCbias, 12*sizeof(Double_t));
+  memcpy(fS2Ycorr, ref.fS2Ycorr, 4*sizeof(Double_t));
+  return *this;
 }
 
 //______________________________________________________________
@@ -217,6 +288,7 @@ AliTRDrecoParam *AliTRDrecoParam::GetCosmicTestParam()
   par->fSysCovMatrix[1] = 2.; // z direction (1 cm)
   par->fkChi2YSlope     = 0.11853;
   par->fkChi2ZSlope     = 0.04527;
+  par->fkChi2YCut       = 25.;
   par->fkChi2YCut       = 1.;
   par->fkPhiSlope       = 10.; //3.17954;
   par->fkMaxTheta       = 2.1445;
@@ -266,3 +338,56 @@ void AliTRDrecoParam::SetPIDLQslices(Int_t s)
   }
 }
 
+//___________________________________________________
+void  AliTRDrecoParam::SetTrackletParams(Double_t *par)
+{
+  // Load tracklet reconstruction parameters. If none are set use defaults
+  if(par){
+    // correct dzdx for the bias in z
+    fdzdxCorrFactor[0] = par[0];  // !RC 
+    fdzdxCorrFactor[1] = par[1];  // RC
+    // correct dzdx in RC tracklets for the bias in cluster attachment
+    fdzdxCorrRCbias[0] = par[2];   // dz/dx > 0  
+    fdzdxCorrRCbias[1] = par[3];   // dz/dx < 0
+    /// correct x_cross for the bias in dzdx
+    fdzdxXcrossFactor  = par[4];
+    // y correction due to wrong tail cancellation. 
+    fYcorrTailCancel[0][0] = par[5];fYcorrTailCancel[0][1] = par[6];fYcorrTailCancel[0][2] = par[7]; 
+    fYcorrTailCancel[1][0] = par[8];fYcorrTailCancel[1][1] = par[9];fYcorrTailCancel[1][2] = par[10]; 
+    fYcorrTailCancel[2][0] = par[11];fYcorrTailCancel[2][1] = par[12];fYcorrTailCancel[2][3] = par[13];
+    fYcorrTailCancel[3][0] = par[14];fYcorrTailCancel[3][1] = par[15];fYcorrTailCancel[3][3] = par[16];
+    // inflation factor of error parameterization in r-phi due to wrong estimation of residuals. 
+    fS2Ycorr[0] = par[17];
+    fS2Ycorr[1] = par[18];
+    fS2Ycorr[2] = par[19];
+    fS2Ycorr[3] = par[20];
+    
+  } else {
+    // correct dzdx for the bias in z
+    fdzdxCorrFactor[0] = 1.09;  // !RC 
+    fdzdxCorrFactor[1] = 1.05;  // RC
+    // correct dzdx in RC tracklets for the bias in cluster attachment
+    fdzdxCorrRCbias[0] = 0.;     // dz/dx > 0  
+    fdzdxCorrRCbias[1] = -0.012; // dz/dx < 0
+    /// correct x_cross for the bias in dzdx
+    fdzdxXcrossFactor  = 0.14;
+    // y correction due to wrong tail cancellation. 
+        // bz<0 && !RC
+    fYcorrTailCancel[0][0] = 0.04; fYcorrTailCancel[0][1] = 2.151; fYcorrTailCancel[0][2] = 0.013;
+        // bz>0 && !RC
+    fYcorrTailCancel[1][0] = 0.034; fYcorrTailCancel[1][1] = 1.817; fYcorrTailCancel[1][2] = -0.01;
+        // bz<0 && RC
+    fYcorrTailCancel[2][0] = 0.04; fYcorrTailCancel[2][1] = 2.513; fYcorrTailCancel[2][2] = 0.015;
+        // bz>0 && RC
+    fYcorrTailCancel[3][0] = 0.034; fYcorrTailCancel[3][1] = 2.476; fYcorrTailCancel[3][2] = -0.01;
+    // inflation factor of error parameterization in r-phi due to wrong estimation of residuals. 
+        // chg<0 && !RC
+    fS2Ycorr[0] = 5.52; 
+        // chg>0 && !RC
+    fS2Ycorr[1] = 3.61; 
+        // chg<0 && RC
+    fS2Ycorr[2] = 4.84; 
+        // chg>0 && RC
+    fS2Ycorr[3] = 3.24; 
+  }
+}