From fe0af2550d3cdb2570fa09852391f9849ba4954d Mon Sep 17 00:00:00 2001 From: sgorbuno Date: Wed, 28 Oct 2009 04:12:10 +0000 Subject: [PATCH] Creation of vertex constrained track parameters is moved to AliHLTVertexer, Reading of the corresponding configuration flag fixed --- .../AliHLTGlobalEsdConverterComponent.cxx | 19 +++++----- HLT/global/AliHLTVertexer.cxx | 36 ++++++++++++++++--- HLT/global/AliHLTVertexer.h | 3 ++ 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/HLT/global/AliHLTGlobalEsdConverterComponent.cxx b/HLT/global/AliHLTGlobalEsdConverterComponent.cxx index 19bc1cb2fc5..5f9172017f4 100644 --- a/HLT/global/AliHLTGlobalEsdConverterComponent.cxx +++ b/HLT/global/AliHLTGlobalEsdConverterComponent.cxx @@ -86,7 +86,7 @@ int AliHLTGlobalEsdConverterComponent::Configure(const char* arguments) TObjArray* pTokens=allArgs.Tokenize(" "); if (pTokens) { for (int i=0; iGetEntries() && iResult>=0; i++) { - argument=((TObjString*)pTokens->At(i))->GetString(); + argument=((TObjString*)pTokens->At(i))->GetString(); if (argument.IsNull()) continue; if (argument.CompareTo("-solenoidBz")==0) { @@ -95,7 +95,7 @@ int AliHLTGlobalEsdConverterComponent::Configure(const char* arguments) fSolenoidBz=((TObjString*)pTokens->At(i))->GetString().Atof(); continue; } - else if (argument.CompareTo("-fitTracks2Vertex")==0) { + else if (argument.CompareTo("-fitTracksToVertex")==0) { if ((bMissingParam=(++i>=pTokens->GetEntries()))) break; HLTInfo("Filling of vertex constrained tracks is set set to: %s", ((TObjString*)pTokens->At(i))->GetString().Data()); fFillVtxConstrainedTracks=((TObjString*)pTokens->At(i))->GetString().Atoi(); @@ -184,7 +184,11 @@ int AliHLTGlobalEsdConverterComponent::DoInit(int argc, const char** argv) // -tree } else if (argument.CompareTo("-tree")==0) { fWriteTree=1; - + }else if (argument.CompareTo("-fitTracksToVertex")==0) { + if ((bMissingParam=(++i>=argc))) break; + argument = argv[i]; + HLTInfo("Filling of vertex constrained tracks is set set to: %s", argument.Data()); + fFillVtxConstrainedTracks=argument.Atoi(); } else { HLTError("unknown argument %s", argument.Data()); break; @@ -451,16 +455,9 @@ int AliHLTGlobalEsdConverterComponent::ProcessBlocks(TTree* pTree, AliESDEvent* AliHLTVertexer vertexer; vertexer.SetESD( pESD ); + vertexer.SetFillVtxConstrainedTracks( fFillVtxConstrainedTracks ); vertexer.FindPrimaryVertex(); vertexer.FindV0s(); - - // relate the tracks to vertex - if( fFillVtxConstrainedTracks ){ - for( Int_t i = 0; iGetNumberOfTracks(); i++){ - if( !vertexer.TrackInfos()[i].fPrimUsedFlag ) continue; - pESD->GetTrack(i)->RelateToVertex( pESD->GetPrimaryVertex(), fESD->GetMagneticField(),5. ); - } - } if (iAddedDataBlocks>0 && pTree) { pTree->Fill(); diff --git a/HLT/global/AliHLTVertexer.cxx b/HLT/global/AliHLTVertexer.cxx index 96787a1e028..39042aa4060 100644 --- a/HLT/global/AliHLTVertexer.cxx +++ b/HLT/global/AliHLTVertexer.cxx @@ -29,14 +29,16 @@ ClassImp(AliHLTVertexer) AliHLTVertexer::AliHLTVertexer(): fESD(0), fTrackInfos(0), - fPrimaryVtx() + fPrimaryVtx(), + fFillVtxConstrainedTracks(1) { } AliHLTVertexer::AliHLTVertexer(const AliHLTVertexer & ): fESD(0), fTrackInfos(0), - fPrimaryVtx() + fPrimaryVtx(), + fFillVtxConstrainedTracks(1) { } @@ -72,7 +74,6 @@ void AliHLTVertexer::SetESD( AliESDEvent *event ) } } - void AliHLTVertexer::FindPrimaryVertex( ) { //* Find event primary vertex @@ -90,7 +91,7 @@ void AliHLTVertexer::FindPrimaryVertex( ) Int_t nSelected = 0; for( Int_t i = 0; iGetTrack(i)->GetTPCNcls()<60 ) continue; + //if( fESD->GetTrack(i)->GetTPCNcls()<60 ) continue; const AliKFParticle &p = fTrackInfos[i].fParticle; Double_t chi = p.GetDeviationFromVertex( fPrimaryVtx ); if( chi > 3.5 ) continue; @@ -106,6 +107,16 @@ void AliHLTVertexer::FindPrimaryVertex( ) if( fPrimaryVtx.GetNContributors()>3 ){ AliESDVertex vESD( fPrimaryVtx.Parameters(), fPrimaryVtx.CovarianceMatrix(), fPrimaryVtx.GetChi2(), fPrimaryVtx.GetNContributors() ); fESD->SetPrimaryVertexTracks( &vESD ); + + // relate the tracks to vertex + + if( fFillVtxConstrainedTracks ){ + for( Int_t i = 0; iGetTrack(i)->RelateToVertex( &vESD, fESD->GetMagneticField(),100. ); + } + } + } else { for( Int_t i = 0; iGetPrimaryVertexTracks() ); AliKFVertex &primVtx = fPrimaryVtx; if( primVtx.GetNContributors()<3 ) return; + + bool *constrainedV0 = new bool[nTracks]; for( Int_t iTr = 0; iTrGetTrack( iTr ), iTr, *fESD->GetTrack( jTr ), jTr ); fESD->AddV0( &v0ESD ); + + // relate the tracks to vertex + + if( fFillVtxConstrainedTracks ){ + if( constrainedV0[iTr] || constrainedV0[jTr] + || info.fPrimDeviation < 4. || jnfo.fPrimDeviation <4. ) continue; + AliESDVertex vESD(v0.Parameters(), v0.CovarianceMatrix(), v0.GetChi2(), 2); + fESD->GetTrack(iTr)->RelateToVertex( &vESD, fESD->GetMagneticField(),100. ); + fESD->GetTrack(jTr)->RelateToVertex( &vESD, fESD->GetMagneticField(),100. ); + constrainedV0[iTr] = 1; + constrainedV0[jTr] = 1; + } } } + delete[] constrainedV0; } diff --git a/HLT/global/AliHLTVertexer.h b/HLT/global/AliHLTVertexer.h index 7348b921475..c15ecf304bf 100644 --- a/HLT/global/AliHLTVertexer.h +++ b/HLT/global/AliHLTVertexer.h @@ -34,6 +34,7 @@ public: void SetESD( AliESDEvent *event ); void FindPrimaryVertex(); void FindV0s(); + void SetFillVtxConstrainedTracks( bool v ){ fFillVtxConstrainedTracks = v; } const AliESDTrackInfo *TrackInfos(){ return fTrackInfos; } private: @@ -44,6 +45,8 @@ public: AliESDEvent *fESD; // pointer to esd event AliESDTrackInfo *fTrackInfos; // information about esd tracks AliKFVertex fPrimaryVtx; // reconstructed KF primary vertex + bool fFillVtxConstrainedTracks; // flag to fill vtx constrained tracks to esd + ClassDef(AliHLTVertexer,0) //HLT vertex finder }; -- 2.39.3