Creation of vertex constrained track parameters is moved to AliHLTVertexer,
authorsgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 28 Oct 2009 04:12:10 +0000 (04:12 +0000)
committersgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 28 Oct 2009 04:12:10 +0000 (04:12 +0000)
Reading of the corresponding configuration flag fixed

HLT/global/AliHLTGlobalEsdConverterComponent.cxx
HLT/global/AliHLTVertexer.cxx
HLT/global/AliHLTVertexer.h

index 19bc1cb..5f91720 100644 (file)
@@ -86,7 +86,7 @@ int AliHLTGlobalEsdConverterComponent::Configure(const char* arguments)
   TObjArray* pTokens=allArgs.Tokenize(" ");
   if (pTokens) {
     for (int i=0; i<pTokens->GetEntries() && 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; i<pESD->GetNumberOfTracks(); i++){
-         if( !vertexer.TrackInfos()[i].fPrimUsedFlag ) continue;
-         pESD->GetTrack(i)->RelateToVertex( pESD->GetPrimaryVertex(), fESD->GetMagneticField(),5. );
-       }
-      }
       
       if (iAddedDataBlocks>0 && pTree) {
        pTree->Fill();
index 96787a1..39042aa 100644 (file)
@@ -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; i<nTracks; i++){ 
     if(!fTrackInfos[i].fOK ) continue;
-    if( fESD->GetTrack(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; i<nTracks; i++ ){
+       if( !fTrackInfos[i].fPrimUsedFlag ) continue;   
+       fESD->GetTrack(i)->RelateToVertex( &vESD, fESD->GetMagneticField(),100. );
+      }
+    }
+
   } else {
     for( Int_t i = 0; i<nTracks; i++)
       fTrackInfos[i].fPrimUsedFlag = 0;
@@ -125,10 +136,14 @@ void AliHLTVertexer::FindV0s(  )
   //AliKFVertex primVtx( *fESD->GetPrimaryVertexTracks() );
   AliKFVertex &primVtx = fPrimaryVtx;
   if( primVtx.GetNContributors()<3 ) return;
+
+  bool *constrainedV0   = new bool[nTracks];
   for( Int_t iTr = 0; iTr<nTracks; iTr++ ){ 
     AliESDTrackInfo &info = fTrackInfos[iTr];
     info.fPrimDeviation = info.fParticle.GetDeviationFromVertex( primVtx );
+    constrainedV0[iTr] = 0;
   }
+  
 
   for( Int_t iTr = 0; iTr<nTracks; iTr++ ){ //* first daughter
 
@@ -193,7 +208,20 @@ void AliHLTVertexer::FindV0s(  )
       
       AliESDv0 v0ESD( *fESD->GetTrack( 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;
 }
 
index 7348b92..c15ecf3 100644 (file)
@@ -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
 };