From 30e59eaca5957f6c5461b5cbedb8dfa592925159 Mon Sep 17 00:00:00 2001 From: marian Date: Mon, 7 May 2012 12:30:37 +0000 Subject: [PATCH] Removing obsolete functions not realted to the calibration --- TPC/AliTPCcalibV0.cxx | 615 ++++++++---------------------------------- TPC/AliTPCcalibV0.h | 13 +- 2 files changed, 120 insertions(+), 508 deletions(-) diff --git a/TPC/AliTPCcalibV0.cxx b/TPC/AliTPCcalibV0.cxx index d35fe1a7d09..66f220d7820 100644 --- a/TPC/AliTPCcalibV0.cxx +++ b/TPC/AliTPCcalibV0.cxx @@ -44,8 +44,7 @@ #include "AliTPCCorrection.h" #include "AliGRPObject.h" #include "AliTPCTransform.h" - - +#include "AliAnalysisManager.h" @@ -94,7 +93,7 @@ AliTPCcalibV0::~AliTPCcalibV0(){ -void AliTPCcalibV0::ProcessESD(AliESDEvent *esd, AliStack *stack){ +void AliTPCcalibV0::ProcessESD(AliESDEvent *esd){ // // // @@ -103,14 +102,6 @@ void AliTPCcalibV0::ProcessESD(AliESDEvent *esd, AliStack *stack){ if (TMath::Abs(AliTracker::GetBz())<1) return; DumpToTree(esd); DumpToTreeHPT(esd); - // - if (stack) { - MakeV0s(); - fStack = stack; - MakeMC(); - }else{ - fStack =0; - } } void AliTPCcalibV0::DumpToTreeHPT(AliESDEvent *esd){ @@ -119,20 +110,18 @@ void AliTPCcalibV0::DumpToTreeHPT(AliESDEvent *esd){ // if (TMath::Abs(AliTracker::GetBz())<1) return; const Int_t kMinCluster=110; - const Float_t kMinPt =3.; + const Float_t kMinPt =4.; AliESDfriend *esdFriend=static_cast(esd->FindListObject("AliESDfriend")); - if (!esdFriend) { - Printf("ERROR: esdFriend not available"); - return; - } +// if (!esdFriend) { +// Printf("ERROR: esdFriend not available"); +// return; +// } // Int_t ntracks=esd->GetNumberOfTracks(); for (Int_t i=0;iGetTrack(i); if (track->GetTPCncls()GetTrack(i); - if (!friendTrack) continue; if (TMath::Abs(AliTracker::GetBz())>1){ // cut on momenta if measured if (track->Pt()>kMinPt) isOK=kTRUE; } @@ -149,8 +138,29 @@ void AliTPCcalibV0::DumpToTreeHPT(AliESDEvent *esd){ if (TMath::Abs(dvertex[0]/TMath::Sqrt(cvertex[0]+0.01))>10) isAccepted=kFALSE; if (TMath::Abs(dvertex[1]/TMath::Sqrt(TMath::Abs(cvertex[2]+0.01)))>10) isAccepted=kFALSE; if (!isAccepted) isOK=kFALSE; + } + if ( track->GetTPCsignal()>100 && track->GetInnerParam()->Pt()>1 ){ + if (track->IsOn(AliESDtrack::kITSin)||track->IsOn(AliESDtrack::kTRDout)||track->IsOn(AliESDtrack::kTOFin)) + isOK=kTRUE; + if (isOK){ + TString filename(AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile()->GetName()); + Int_t eventNumber = esd->GetEventNumberInFile(); + Bool_t hasFriend=(esdFriend) ? (esdFriend->GetTrack(i)!=0):0; + Bool_t hasITS=(track->GetNcls(0)>2); + printf("DUMPIONTrack:%s|%f|%d|%d|%d\n",filename.Data(),track->GetInnerParam()->Pt()*track->GetTPCsignal()/50., eventNumber,hasFriend,hasITS); + } } - + if (!isOK) continue; + TString filename(AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile()->GetName()); + Int_t eventNumber = esd->GetEventNumberInFile(); + Bool_t hasFriend=(esdFriend) ? (esdFriend->GetTrack(i)!=0):0; + Bool_t hasITS=(track->GetNcls(0)>2); + printf("DUMPHPTTrack:%s|%f|%d|%d|%d\n",filename.Data(),track->Pt(), eventNumber,hasFriend,hasITS); + // + if (!esdFriend) continue; + AliESDfriendTrack *friendTrack = esdFriend->GetTrack(i); + if (!friendTrack) continue; + if (!isOK) continue; // @@ -192,10 +202,6 @@ void AliTPCcalibV0::DumpToTree(AliESDEvent *esd){ const Float_t kMinPt =1.0; const Float_t kMinMinPt =0.7; AliESDfriend *esdFriend=static_cast(esd->FindListObject("AliESDfriend")); - if (!esdFriend) { - Printf("ERROR: esdFriend not available"); - return; - } // for (Int_t ivertex=0; ivertexPt(),track1->Pt())>kMinPt) isOK=kTRUE; if (gRandom->Rndm()GetTree()->GetCurrentFile()->GetName()); + Int_t eventNumber = esd->GetEventNumberInFile(); + Bool_t hasITS=(track0->GetNcls(0)+ track1->GetNcls(0)>4); + printf("DUMPHPTV0:%s|%f|%d|%d|%d\n",filename.Data(), (TMath::Min(track0->Pt(),track1->Pt())), eventNumber,(esdFriend!=0), hasITS); + // + if (!esdFriend) continue; + // + // AliESDfriendTrack *ftrack0 = esdFriend->GetTrack(v0->GetIndex(0)); if (!ftrack0) continue; @@ -290,6 +305,7 @@ void AliTPCcalibV0::AddTree(TTree * treeInput){ // Add the content of tree: // Notice automatic copy of tree in ROOT does not work for such complicated tree // + return ; AliESDv0 * v0 = new AliESDv0; Double_t kMinPt=0.8; AliESDtrack * track0 = 0; // negative track @@ -370,6 +386,7 @@ void AliTPCcalibV0::AddTreeHPT(TTree * treeInput){ // Add the content of tree: // Notice automatic copy of tree in ROOT does not work for such complicated tree // + return ; AliESDtrack *track = 0; AliESDfriendTrack *friendTrack = 0; AliTPCseed *seed = 0; @@ -410,167 +427,6 @@ void AliTPCcalibV0::AddTreeHPT(TTree * treeInput){ } -void AliTPCcalibV0::MakeMC(){ - // - // MC comparison - // 1. Select interesting particles - // 2. Assign the recosntructed particles - // - //1. Select interesting particles - const Float_t kMinP = 0.2; - const Float_t kMinPt = 0.1; - const Float_t kMaxR = 0.5; - const Float_t kMaxTan = 1.2; - const Float_t kMaxRad = 150; - // - if (!fParticles) fParticles = new TObjArray; - TParticle *part=0; - // - Int_t entries = fStack->GetNtrack(); - for (Int_t ipart=0; ipartParticle(ipart); - if (!part) continue; - if (part->P()R()>kMaxR) continue; - if (TMath::Abs(TMath::Tan(part->Theta()-TMath::Pi()*0.5))>kMaxTan) continue; - Bool_t isInteresting = kFALSE; - if (part->GetPdgCode()==22) isInteresting =kTRUE; - if (part->GetPdgCode()==310) isInteresting =kTRUE; - if (part->GetPdgCode()==111) isInteresting =kTRUE; - if (TMath::Abs(part->GetPdgCode()==3122)) isInteresting =kTRUE; - - // - if (!isInteresting) continue; - fParticles->AddLast(new TParticle(*part)); - } - if (fParticles->GetEntries()<1) { - return; - } - // - // - // - Int_t sentries=fParticles->GetEntries();; - for (Int_t ipart=0; ipartAt(ipart); - TParticle *p0 = 0; - TParticle *p1 = 0; - - Int_t nold =0; - Int_t nnew =0; - Int_t id0 = part->GetDaughter(0); - Int_t id1 = part->GetDaughter(1); - if (id0>=fStack->GetNtrack() ) id0*=-1; - if (id1>=fStack->GetNtrack() ) id1*=-1; - Bool_t findable = kTRUE; - if (id0<0 || id1<0) findable = kFALSE; - Int_t charge =0; - if (findable){ - p0 = fStack->Particle(id0); - if (p0->R()>kMaxRad) findable = kFALSE; - if (p0->Pt()Vz()>250) findable= kFALSE; - if (TMath::Abs(TMath::Tan(p0->Theta()-TMath::Pi()*0.5))>2) findable=kFALSE; - if (fPdg->GetParticle(p0->GetPdgCode())==0) findable =kFALSE; - else - if (fPdg->GetParticle(p0->GetPdgCode())->Charge()==0) charge++; - - p1 = fStack->Particle(id1); - if (p1->R()>kMaxRad) findable = kFALSE; - if (p1->Pt()Vz())>250) findable= kFALSE; - if (TMath::Abs(TMath::Tan(p1->Theta()-TMath::Pi()*0.5))>2) findable=kFALSE; - if (fPdg->GetParticle(p1->GetPdgCode())==0) findable = kFALSE; - else - if (fPdg->GetParticle(p1->GetPdgCode())->Charge()==0) charge++; - - } - // (*fDebugStream)<<"MC0"<< - // "P.="<Pt(), p1->Pt()); - Int_t type=-1; - - // - // - AliKFVertex primVtx(*(fESD->GetPrimaryVertex())); - for (Int_t ivertex=0; ivertexGetNumberOfV0s(); ivertex++){ - AliESDv0 * v0 = fESD->GetV0(ivertex); - // select coresponding track - AliESDtrack * trackN = fESD->GetTrack(v0->GetIndex(0)); - if (TMath::Abs(trackN->GetLabel())!=id0 && TMath::Abs(trackN->GetLabel())!=id1) continue; - AliESDtrack * trackP = fESD->GetTrack(v0->GetIndex(1)); - if (TMath::Abs(trackP->GetLabel())!=id0 && TMath::Abs(trackP->GetLabel())!=id1) continue; - TParticle *pn = fStack->Particle(TMath::Abs(trackN->GetLabel())); - TParticle *pp = fStack->Particle(TMath::Abs(trackP->GetLabel())); - // - // - if ( v0->GetOnFlyStatus()) nnew++; - if (!v0->GetOnFlyStatus()) nold++; - if (part->GetPdgCode()==22 && TMath::Abs(pn->GetPdgCode())==11 && TMath::Abs(pp->GetPdgCode())==11) - type =1; - if (part->GetPdgCode()==310 && TMath::Abs(pn->GetPdgCode())==211 && TMath::Abs(pp->GetPdgCode())==211) - type =0; - if (part->GetPdgCode()==3122){ - if (TMath::Abs(pn->GetPdgCode())==210 ) type=2; - else type=3; - } - AliKFParticle *v0kf = Fit(primVtx,v0,pn->GetPdgCode(),pp->GetPdgCode()); - v0kf->SetProductionVertex( primVtx ); - AliKFParticle *v0kfc = Fit(primVtx,v0,pn->GetPdgCode(),pp->GetPdgCode()); - v0kfc->SetProductionVertex( primVtx ); - v0kfc->SetMassConstraint(fPdg->GetParticle(part->GetPdgCode())->Mass()); - Float_t chi2 = v0kf->GetChi2(); - Float_t chi2C = v0kf->GetChi2(); - // - // - TTreeSRedirector *cstream = GetDebugStreamer(); - if (cstream){ - (*cstream)<<"MCRC"<< - "P.="<Delete(); - } -} - void AliTPCcalibV0::MakeFitTreeTrack(const TObjArray * corrArray, Double_t ptCut, Int_t /*run*/){ // // Make a fit tree @@ -987,321 +843,6 @@ AliExternalTrackParam * AliTPCcalibV0::RefitTrack(AliTPCseed *seed, AliTPCCorrec // -void AliTPCcalibV0::MakeV0s(){ - // - // - // - const Int_t kMinCluster=40; - const Float_t kMinR =0; - if (! fV0s) fV0s = new TObjArray(10); - fV0s->Clear(); - // - // Old V0 finder - // - for (Int_t ivertex=0; ivertexGetNumberOfV0s(); ivertex++){ - AliESDv0 * v0 = fESD->GetV0(ivertex); - if (v0->GetOnFlyStatus()) continue; - fV0s->AddLast(v0); - } - ProcessV0(0); - fV0s->Clear(0); - // - // MI V0 finder - // - for (Int_t ivertex=0; ivertexGetNumberOfV0s(); ivertex++){ - AliESDv0 * v0 = fESD->GetV0(ivertex); - if (!v0->GetOnFlyStatus()) continue; - fV0s->AddLast(v0); - } - ProcessV0(1); - fV0s->Clear(); - // - // combinatorial - // - Int_t ntracks = fESD->GetNumberOfTracks(); - for (Int_t itrack0=0; itrack0GetTrack(itrack0); - if (track0->GetSign()>0) continue; - if ( track0->GetTPCNcls()GetKinkIndex(0)>0) continue; - // - for (Int_t itrack1=0; itrack1GetTrack(itrack1); - if (track1->GetSign()<0) continue; - if ( track1->GetTPCNcls()GetKinkIndex(0)>0) continue; - // - // AliExternalTrackParam param0(*track0); - // AliExternalTrackParam param1(*track1); - AliV0 vertex; - vertex.SetParamN(*track0); - vertex.SetParamP(*track1); - Float_t xyz[3]; - xyz[0] = fESD->GetPrimaryVertex()->GetXv(); - xyz[1] = fESD->GetPrimaryVertex()->GetYv(); - xyz[2] = fESD->GetPrimaryVertex()->GetZv(); - vertex.Update(xyz); - if (vertex.GetRr()1.) continue; - if (vertex.GetDcaV0Daughters()>0.3*vertex.GetRr()) continue; - // if (vertex.GetPointAngle()<0.9) continue; - vertex.SetIndex(0,itrack0); - vertex.SetIndex(1,itrack1); - fV0s->AddLast(new AliV0(vertex)); - } - } - ProcessV0(2); - for (Int_t i=0;iGetEntries(); i++) delete fV0s->At(i); - fV0s->Clear(); -} - - - - - - - - -void AliTPCcalibV0::ProcessV0(Int_t ftype){ - // - // Obsolete - // - if (! fGammas) fGammas = new TObjArray(10); - fGammas->Clear(); - Int_t nV0s = fV0s->GetEntries(); - if (nV0s==0) return; - AliKFVertex primVtx(*(fESD->GetPrimaryVertex())); - // - for (Int_t ivertex=0; ivertexAt(ivertex); - AliESDtrack * trackN = fESD->GetTrack(v0->GetIndex(0)); // negative track - AliESDtrack * trackP = fESD->GetTrack(v0->GetIndex(1)); // positive track - - const AliExternalTrackParam * paramInNeg = trackN->GetInnerParam(); - const AliExternalTrackParam * paramInPos = trackP->GetInnerParam(); - - if (!paramInPos) continue; // in case the inner paramters do not exist - if (!paramInNeg) continue; - // - // - // - AliKFParticle *v0K0 = Fit(primVtx,v0,-211,211); - AliKFParticle *v0Gamma = Fit(primVtx,v0,11,-11); - AliKFParticle *v0Lambda42 = Fit(primVtx,v0,-2212,211); - AliKFParticle *v0Lambda24 = Fit(primVtx,v0,-211,2212); - //Set production vertex - v0K0->SetProductionVertex( primVtx ); - v0Gamma->SetProductionVertex( primVtx ); - v0Lambda42->SetProductionVertex( primVtx ); - v0Lambda24->SetProductionVertex( primVtx ); - Double_t massK0, massGamma, massLambda42,massLambda24, massSigma; - v0K0->GetMass( massK0,massSigma); - v0Gamma->GetMass( massGamma,massSigma); - v0Lambda42->GetMass( massLambda42,massSigma); - v0Lambda24->GetMass( massLambda24,massSigma); - Float_t chi2K0 = v0K0->GetChi2()/v0K0->GetNDF(); - Float_t chi2Gamma = v0Gamma->GetChi2()/v0Gamma->GetNDF(); - Float_t chi2Lambda42 = v0Lambda42->GetChi2()/v0Lambda42->GetNDF(); - Float_t chi2Lambda24 = v0Lambda24->GetChi2()/v0Lambda24->GetNDF(); - // - // Mass Contrained params - // - AliKFParticle *v0K0C = Fit(primVtx,v0,-211,211); - AliKFParticle *v0GammaC = Fit(primVtx,v0,11,-11); - AliKFParticle *v0Lambda42C = Fit(primVtx,v0,-2212,211); //lambdaBar - AliKFParticle *v0Lambda24C = Fit(primVtx,v0,-211,2212); //lambda - // - v0K0C->SetProductionVertex( primVtx ); - v0GammaC->SetProductionVertex( primVtx ); - v0Lambda42C->SetProductionVertex( primVtx ); - v0Lambda24C->SetProductionVertex( primVtx ); - - v0K0C->SetMassConstraint(fPdg->GetParticle(310)->Mass()); - v0GammaC->SetMassConstraint(0); - v0Lambda42C->SetMassConstraint(fPdg->GetParticle(-3122)->Mass()); - v0Lambda24C->SetMassConstraint(fPdg->GetParticle(3122)->Mass()); - // - Double_t timeK0, sigmaTimeK0; - Double_t timeLambda42, sigmaTimeLambda42; - Double_t timeLambda24, sigmaTimeLambda24; - v0K0C->GetLifeTime(timeK0, sigmaTimeK0); - //v0K0Gamma->GetLifeTime(timeK0, sigmaTimeK0); - v0Lambda42C->GetLifeTime(timeLambda42, sigmaTimeLambda42); - v0Lambda24C->GetLifeTime(timeLambda24, sigmaTimeLambda24); - - - // - Float_t chi2K0C = v0K0C->GetChi2()/v0K0C->GetNDF(); - if (chi2K0C<0) chi2K0C=100; - Float_t chi2GammaC = v0GammaC->GetChi2()/v0GammaC->GetNDF(); - if (chi2GammaC<0) chi2GammaC=100; - Float_t chi2Lambda42C = v0Lambda42C->GetChi2()/v0Lambda42C->GetNDF(); - if (chi2Lambda42C<0) chi2Lambda42C=100; - Float_t chi2Lambda24C = v0Lambda24C->GetChi2()/v0Lambda24C->GetNDF(); - if (chi2Lambda24C<0) chi2Lambda24C=100; - // - Float_t minChi2C=99; - Int_t type =-1; - if (chi2K0CGetP()/fPdg->GetParticle(-211)->Mass(); - betaGamma1 = paramInPos->GetP()/fPdg->GetParticle(211)->Mass(); - break; - case 1: - betaGamma0 = paramInNeg->GetP()/fPdg->GetParticle(11)->Mass(); - betaGamma1 = paramInPos->GetP()/fPdg->GetParticle(-11)->Mass(); - break; - case 2: - betaGamma0 = paramInNeg->GetP()/fPdg->GetParticle(-2212)->Mass(); - betaGamma1 = paramInPos->GetP()/fPdg->GetParticle(211)->Mass(); - break; - case 3: - betaGamma0 = paramInNeg->GetP()/fPdg->GetParticle(-211)->Mass(); - betaGamma1 = paramInPos->GetP()/fPdg->GetParticle(2212)->Mass(); - break; - } - - // cuts and histogram filling - Int_t numCand = 0; // number of particle types which have a chi2 < 10*minChi2 - - if (minChi2C < 2 && ftype == 1) { - // - if (chi2K0C < 10*minChi2C) numCand++; - if (chi2GammaC < 10*minChi2C) numCand++; - if (chi2Lambda42C < 10*minChi2C) numCand++; - if (chi2Lambda24C < 10*minChi2C) numCand++; - // - } - - // - // - // write output tree - if (minChi2>50) continue; - TTreeSRedirector *cstream = GetDebugStreamer(); - if (cstream){ - (*cstream)<<"V0"<< - "ftype="<AddLast(v0); - // - // - // - delete v0K0; - delete v0Gamma; - delete v0Lambda42; - delete v0Lambda24; - delete v0K0C; - delete v0GammaC; - delete v0Lambda42C; - delete v0Lambda24C; - } - ProcessPI0(); -} - - - -void AliTPCcalibV0::ProcessPI0(){ - // - // - // - Int_t nentries = fGammas->GetEntries(); - if (nentries<2) return; - // - Double_t m0[3], m1[3]; - AliKFVertex primVtx(*(fESD->GetPrimaryVertex())); - for (Int_t i0=0; i0At(i0); - v00->GetPxPyPz (m0[0], m0[1], m0[2]); - AliKFParticle *p00 = Fit(primVtx, v00, 11,-11); - p00->SetProductionVertex( primVtx ); - p00->SetMassConstraint(0); - // - for (Int_t i1=i0; i1At(i1); - v01->GetPxPyPz (m1[0], m1[1], m1[2]); - AliKFParticle *p01 = Fit(primVtx, v01, 11,-11); - p01->SetProductionVertex( primVtx ); - p01->SetMassConstraint(0); - if (v00->GetIndex(0) != v01->GetIndex(0) && - v00->GetIndex(1) != v01->GetIndex(1)){ - AliKFParticle pi0( *p00,*p01); - pi0.SetProductionVertex(primVtx); - Double_t n1 = TMath::Sqrt (m0[0]*m0[0] + m0[1]*m0[1] + m0[2]*m0[2]); - Double_t n2 = TMath::Sqrt (m1[0]*m1[0] + m1[1]*m1[1] + m1[2]*m1[2]); - Double_t mass = TMath::Sqrt(2.*(n1*n2 - (m0[0]*m1[0] + m0[1]*m1[1] + m0[2]*m1[2]))); - TTreeSRedirector *cstream = GetDebugStreamer(); - if (cstream){ - (*cstream)<<"PI0"<< - "v00.="<Set(bins, new_bins); - delete [] new_bins; - + delete [] new_bins; } - +void AliTPCcalibV0::FilterV0s(AliESDEvent* event){ + // + // + TDatabasePDG pdg; + const Double_t kChi2Cut=20; + const Double_t kMinR=2; + const Double_t ptCut=0.2; + const Int_t kMinNcl=110; + // + Int_t nv0 = event->GetNumberOfV0s(); + AliESDVertex *vertex= (AliESDVertex *)event->GetPrimaryVertex(); + AliKFVertex kfvertex=*vertex; + // + for (Int_t iv0=0;iv0GetV0(iv0); + if (!v0) continue; + if (v0->GetPindex()<0) continue; + if (v0->GetNindex()<0) continue; + if (TMath::Max(v0->GetPindex(), v0->GetNindex())>event->GetNumberOfTracks()) continue; + // + // + AliExternalTrackParam pp=(v0->GetParamP()->GetSign()>0) ? (*(v0->GetParamP())):(*(v0->GetParamN())); + AliExternalTrackParam pn=(v0->GetParamP()->GetSign()>0) ? (*(v0->GetParamN())):(*(v0->GetParamP())); + AliKFParticle kfp1( pp, 211 ); + AliKFParticle kfp2( pn, -211 ); + AliKFParticle *v0KFK0 = new AliKFParticle(kfp1,kfp2); + AliKFParticle *v0KFK0CV = new AliKFParticle(*v0KFK0); + v0KFK0CV->SetProductionVertex(kfvertex); + v0KFK0CV->TransportToProductionVertex(); + AliKFParticle *v0KFK0CVM = new AliKFParticle(*v0KFK0CV); + v0KFK0CVM->SetMassConstraint(pdg.GetParticle("K_S0")->Mass()); + Double_t chi2K0 = v0KFK0CV->GetChi2(); + Double_t chi2K0M= v0KFK0CVM->GetChi2(); + Double_t massK0=v0KFK0CV->GetMass(); + if (chi2K0>kChi2Cut) continue; + if (v0->GetRr()>kMinR) continue; + // + Double_t maxPt = TMath::Max(v0->GetParamP()->Pt(), v0->GetParamN()->Pt()); + Double_t effMass22=v0->GetEffMass(2,2); + Double_t effMass42=v0->GetEffMass(4,2); + Double_t effMass24=v0->GetEffMass(2,4); + Bool_t isV0= kFALSE; + isV0|=TMath::Abs(effMass22-pdg.GetParticle("K_S0")->Mass())<0.1; + isV0|=TMath::Abs(effMass42-pdg.GetParticle("Lambda0")->Mass())<0.1; + isV0|=TMath::Abs(effMass24-pdg.GetParticle("Lambda0")->Mass())<0.1; + + Double_t sign= v0->GetParamP()->GetSign()* v0->GetParamN()->GetSign(); + if (sign<0&&v0->GetOnFlyStatus()>0.5&&maxPt>ptCut&&isV0){ + AliESDtrack * trackP = event->GetTrack(v0->GetPindex()); + AliESDtrack * trackN = event->GetTrack(v0->GetNindex()); + if (!trackN) continue; + if (!trackP) continue; + Int_t nclP= (Int_t)trackP->GetTPCClusterInfo(2,1); + Int_t nclN= (Int_t)trackN->GetTPCClusterInfo(2,1); + if (TMath::Min(nclP,nclN)Eta()), TMath::Abs(trackN->Eta())); + Double_t ncls = TMath::Min(TMath::Abs(trackP->GetNcls(0)), TMath::Abs(trackN->GetNcls(0))); + if (eta<0.8&&ncls>2){ + // printf("%d\t%f\t%f\t%d\t%d\t%f\t%f\n",i, v0->Pt(), maxPt, v0->GetNindex(),v0->GetPindex(),v0->GetRr(),effMass22); + (*fDebugStreamer)<<"v0tree"<< + "v0.="<