From: jgrosseo Date: Fri, 22 Aug 2008 16:40:50 +0000 (+0000) Subject: redoing of TPC vertex when flag is set X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=85737496bf29ca72906d2bc084c5ee76f3c6d454 redoing of TPC vertex when flag is set --- diff --git a/PWG0/AliPWG0Helper.cxx b/PWG0/AliPWG0Helper.cxx index ba01ff76cbd..9593f8e67db 100644 --- a/PWG0/AliPWG0Helper.cxx +++ b/PWG0/AliPWG0Helper.cxx @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -78,7 +79,7 @@ Bool_t AliPWG0Helper::IsEventTriggered(ULong64_t triggerMask, Trigger trigger) } //____________________________________________________________________ -const AliESDVertex* AliPWG0Helper::GetVertex(const AliESDEvent* aEsd, AnalysisMode analysisMode, Bool_t debug) +const AliESDVertex* AliPWG0Helper::GetVertex(AliESDEvent* aEsd, AnalysisMode analysisMode, Bool_t debug,Bool_t bRedoTPC) { // Get the vertex from the ESD and returns it if the vertex is valid // @@ -96,8 +97,21 @@ const AliESDVertex* AliPWG0Helper::GetVertex(const AliESDEvent* aEsd, AnalysisMo } else if (analysisMode == kTPC) { + if(bRedoTPC){ + Double_t kBz = aEsd->GetMagneticField(); + AliVertexerTracks vertexer(kBz); + vertexer.SetTPCMode(); + AliESDVertex *vTPC = vertexer.FindPrimaryVertex(aEsd); + aEsd->SetPrimaryVertexTPC(vTPC); + for (Int_t i=0; iGetNumberOfTracks(); i++) { + AliESDtrack *t = aEsd->GetTrack(i); + t->RelateToVertexTPC(vTPC, kBz, kVeryBig); + } + delete vTPC; + } + vertex = aEsd->GetPrimaryVertexTPC(); - requiredZResolution = 0.6; + requiredZResolution = 10.; if (debug) Printf("AliPWG0Helper::GetVertex: Returning vertex from tracks"); } @@ -112,8 +126,11 @@ const AliESDVertex* AliPWG0Helper::GetVertex(const AliESDEvent* aEsd, AnalysisMo // check Ncontributors if (vertex->GetNContributors() <= 0) { - if (debug) - Printf("AliPWG0Helper::GetVertex: NContributors() <= 0"); + if (debug){ + Printf("AliPWG0Helper::GetVertex: NContributors() <= 0: %d",vertex->GetNContributors()); + Printf("AliPWG0Helper::GetVertex: NIndices(): %d",vertex->GetNIndices()); + + } return 0; } @@ -127,7 +144,10 @@ const AliESDVertex* AliPWG0Helper::GetVertex(const AliESDEvent* aEsd, AnalysisMo } if (debug) - Printf("AliPWG0Helper::GetVertex: Returning valid vertex"); + { + Printf("AliPWG0Helper::GetVertex: Returning valid vertex: %s", vertex->GetTitle()); + vertex->Print(); + } return vertex; } @@ -153,6 +173,7 @@ Bool_t AliPWG0Helper::IsPrimaryCharged(TParticle* aParticle, Int_t aTotalPrimari } Int_t pdgCode = TMath::Abs(aParticle->GetPdgCode()); + // skip quarks and gluon if (pdgCode <= 10 || pdgCode == 21) @@ -162,6 +183,14 @@ Bool_t AliPWG0Helper::IsPrimaryCharged(TParticle* aParticle, Int_t aTotalPrimari return kFALSE; } + Int_t status = aParticle->GetStatusCode(); + // skip non final state particles.. + if(status!=1){ + if (adebug) + printf("Dropping particle because it is not a final state particle.\n"); + return kFALSE; + } + if (strcmp(aParticle->GetName(),"XXX") == 0) { Printf("WARNING: There is a particle named XXX (pdg code %d).", pdgCode); diff --git a/PWG0/AliPWG0Helper.h b/PWG0/AliPWG0Helper.h index 4439ee66b35..55132c370fe 100644 --- a/PWG0/AliPWG0Helper.h +++ b/PWG0/AliPWG0Helper.h @@ -29,7 +29,7 @@ class AliPWG0Helper : public TObject static Bool_t IsEventTriggered(const AliESD* aEsd, Trigger trigger = kMB2); static Bool_t IsEventTriggered(ULong64_t triggerMask, Trigger trigger = kMB2); - static const AliESDVertex* GetVertex(const AliESDEvent* aEsd, AnalysisMode analysisMethod, Bool_t debug = kFALSE); + static const AliESDVertex* GetVertex(AliESDEvent* aEsd, AnalysisMode analysisMethod, Bool_t debug = kFALSE,Bool_t bRedoTPC = false); static Bool_t IsPrimaryCharged(TParticle* aParticle, Int_t aTotalPrimaries, Bool_t adebug = kFALSE);