]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliExternalComparison.cxx
Due to a wrongly overloaded function need to call SetDistToBadChannel, rather than...
[u/mrichter/AliRoot.git] / TPC / AliExternalComparison.cxx
index 71fb685da400682f8919ca0c06716d68091af6c1..731ebe4a6ca441f62ad7d6cfbf021815a4c058ef 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-
-
-
-
-*/
-
-
+/* $Id:$ */
 
 #include "AliExternalComparison.h"
 #include "AliExternalTrackParam.h"
@@ -61,6 +54,32 @@ AliExternalComparison::AliExternalComparison(const Text_t *name, const Text_t *t
   //
 }
 
+AliExternalComparison::AliExternalComparison(const AliExternalComparison& comp)
+  :TNamed(comp),
+   fResolHistos(new TObjArray(*(comp.fResolHistos))),
+   fPullHistos(new TObjArray(*(comp.fPullHistos))),
+   fRangeMatrix(new TMatrixD(*(comp.fRangeMatrix))),
+   fCutMatrix(new TMatrixD(*(comp.fCutMatrix)))
+{
+  //
+  // copy constructor
+  //
+}
+
+AliExternalComparison& AliExternalComparison::operator=(const AliExternalComparison& comp)
+{
+  //
+  //
+  //
+  if(this != &comp) {
+    TNamed::operator=(comp);
+    fResolHistos=new TObjArray(*(comp.fResolHistos));
+    fPullHistos=new TObjArray(*(comp.fPullHistos));
+    fRangeMatrix=new TMatrixD(*(comp.fRangeMatrix));
+    fCutMatrix=new TMatrixD(*(comp.fCutMatrix));
+  }
+  return *this;
+}
 
 
 AliExternalComparison::~AliExternalComparison(){
@@ -72,6 +91,7 @@ AliExternalComparison::~AliExternalComparison(){
   delete fResolHistos;             // resolution histogram
   delete fPullHistos;              // pull       histogram
   delete fRangeMatrix;            // range matrix
+  delete fCutMatrix;            // range matrix
 }
  
 
@@ -82,7 +102,7 @@ void AliExternalComparison::Analyze() {
 }
 
 
-Long64_t AliExternalComparison::Merge(TCollection *li) {
+Long64_t AliExternalComparison::Merge(TCollection *const li) {
   //
   //
   //   
@@ -100,7 +120,7 @@ Long64_t AliExternalComparison::Merge(TCollection *li) {
   return 0;  
 }
 
-void  AliExternalComparison:: Add(AliExternalComparison*comp){
+void  AliExternalComparison::Add(AliExternalComparison *const comp){
   //
   // Add comparison object
   //
@@ -122,14 +142,10 @@ void   AliExternalComparison::Process(const AliExternalTrackParam *param0, const
   // Process- fill histogram with residuals
   //    Tracks has to be in the same local X 
   //    
-  const Double_t kDeltaX=0.2;
-  const Double_t kDeltaA=0.01;
   if (!AcceptPair(param0,param1)) return;
   //
   if (!fResolHistos) MakeHistos(); 
   //
-  if (TMath::Abs(param0->GetX()-param1->GetX())>kDeltaX) return;
-  if (TMath::Abs(param0->GetAlpha()-param1->GetAlpha())>kDeltaA) return;
   //
   const Double_t *p0 = param0->GetParameter();
   const Double_t *p1 = param1->GetParameter();
@@ -272,7 +288,7 @@ void  AliExternalComparison::SetDefaultRange(Float_t scale,Float_t arm, Int_t nb
   mat(4,0)=-3;     mat(4,1)=3;    mat(4,2)=50;   // sqrt(P4) -sqrt(1/pt) range  
   //
   mat(5,0)= 0;     mat(5,1)=250;  mat(5,2)=50;   // R  range  
-  mat(6,0)= TMath::Pi();   mat(6,1)=TMath::Pi();    mat(6,2)=18*4;   // fi range  
+  mat(6,0)= -TMath::Pi();   mat(6,1)=TMath::Pi();    mat(6,2)=18*4;   // fi range  
   //
   // Resolution
   //
@@ -304,6 +320,28 @@ void  AliExternalComparison::SetDefaultCuts(){
   //
 }
 
+void AliExternalComparison::SetParameterRange(Int_t param, Float_t min, Float_t max, Int_t nbins){
+  //
+  //
+  // 
+  if (!fRangeMatrix) SetDefaultRange();
+  TMatrixD & mat = *fRangeMatrix; 
+  if (param<0) return;
+  if (param>6) return;
+  mat(param,0)=min;      mat(param,1)=max;   mat(param,2)=nbins; 
+}
+
+void AliExternalComparison::SetResolRange(Int_t param, Float_t min, Float_t max, Int_t nbins){
+  //
+  //
+  //
+  if (!fRangeMatrix) SetDefaultRange();
+  TMatrixD & mat = *fRangeMatrix; 
+  if (param<0) return;
+  if (param>4) return;
+  mat(7+param,0)=min;      mat(7+param,1)=max;   mat(7+param,2)=nbins;
+}
+
 void AliExternalComparison::SetDistCut(Float_t dP0, Float_t dP1,Float_t dP2,Float_t dP3, Float_t dP4){
   //
   // Set diff cuts
@@ -349,6 +387,12 @@ Bool_t   AliExternalComparison::AcceptPair(const AliExternalTrackParam *param0,
   if (TMath::Abs(p0[2]-p1[2])>mat(2,0)) return kFALSE;
   if (TMath::Abs(p0[3]-p1[3])>mat(3,0)) return kFALSE;
   if (TMath::Abs(p0[4]-p1[4])>mat(4,0)) return kFALSE;
+  if ((c0[0]+c1[0])<0) return kFALSE;
+  if ((c0[2]+c1[2])<0) return kFALSE;
+  if ((c0[5]+c1[5])<0) return kFALSE;
+  if ((c0[9]+c1[9])<0) return kFALSE;
+  if ((c0[14]+c1[14])<0) return kFALSE;
+  
   if (TMath::Abs((p0[0]-p1[0])/TMath::Sqrt(c0[0]+c1[0]))>mat(5,0)) return kFALSE;
   if (TMath::Abs((p0[1]-p1[1])/TMath::Sqrt(c0[2]+c1[2]))>mat(6,0)) return kFALSE;
   if (TMath::Abs((p0[2]-p1[2])/TMath::Sqrt(c0[5]+c1[5]))>mat(7,0)) return kFALSE;