X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliExternalComparison.cxx;h=dc90c5cb265ed5797cc0808bc4b37b013e9c932a;hb=4c2c255c9f7c4256ced5820dfe710eb26113badd;hp=71fb685da400682f8919ca0c06716d68091af6c1;hpb=d73981ad2f559535e4b1b4b17137e60f60a1ae8e;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliExternalComparison.cxx b/TPC/AliExternalComparison.cxx index 71fb685da40..dc90c5cb265 100644 --- a/TPC/AliExternalComparison.cxx +++ b/TPC/AliExternalComparison.cxx @@ -61,6 +61,31 @@ AliExternalComparison::AliExternalComparison(const Text_t *name, const Text_t *t // } +AliExternalComparison::AliExternalComparison(const AliExternalComparison& comp) + :TNamed(comp.fName,comp.fTitle), + 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) +{ + // + // + // + SetName(comp.GetName()); + SetTitle(comp.GetTitle()); + 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 +97,7 @@ AliExternalComparison::~AliExternalComparison(){ delete fResolHistos; // resolution histogram delete fPullHistos; // pull histogram delete fRangeMatrix; // range matrix + delete fCutMatrix; // range matrix } @@ -122,14 +148,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 +294,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 +326,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 +393,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;