#include <AliESD.h>
#include <AliESDEvent.h>
#include <AliESDVertex.h>
+#include <AliVertexerTracks.h>
#include <AliGenEventHeader.h>
#include <AliGenPythiaEventHeader.h>
}
//____________________________________________________________________
-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
//
}
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; i<aEsd->GetNumberOfTracks(); 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");
}
// 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;
}
}
if (debug)
- Printf("AliPWG0Helper::GetVertex: Returning valid vertex");
+ {
+ Printf("AliPWG0Helper::GetVertex: Returning valid vertex: %s", vertex->GetTitle());
+ vertex->Print();
+ }
return vertex;
}
}
Int_t pdgCode = TMath::Abs(aParticle->GetPdgCode());
+
// skip quarks and gluon
if (pdgCode <= 10 || pdgCode == 21)
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);
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);