* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-
-
-
-
-*/
-
-
+/* $Id:$ */
#include "AliExternalComparison.h"
#include "AliExternalTrackParam.h"
//
}
+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(){
delete fResolHistos; // resolution histogram
delete fPullHistos; // pull histogram
delete fRangeMatrix; // range matrix
+ delete fCutMatrix; // range matrix
}
}
-Long64_t AliExternalComparison::Merge(TCollection *li) {
+Long64_t AliExternalComparison::Merge(TCollection *const li) {
//
//
//
return 0;
}
-void AliExternalComparison:: Add(AliExternalComparison*comp){
+void AliExternalComparison::Add(AliExternalComparison *const comp){
//
// Add comparison object
//
// 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();
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
//
//
}
+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
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;