]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/global/AliFlatESDFriend.cxx
fix compiler warning (empty body of if statement)
[u/mrichter/AliRoot.git] / HLT / global / AliFlatESDFriend.cxx
index 41ece91b7d09073ce34e7678c5ca7f5190b840e1..ac68d2b7e3a0aa78cd38d7d2f556299fca725a52 100644 (file)
@@ -36,6 +36,7 @@
 #include "AliFlatESDFriend.h"
 #include "AliFlatESDFriendTrack.h"
 #include "Riostream.h"
+#include "AliESDfriend.h"
 
 // _______________________________________________________________________________________________________
 AliFlatESDFriend::AliFlatESDFriend() :
@@ -69,13 +70,15 @@ void AliFlatESDFriend::Reset()
 }
  
 // _______________________________________________________________________________________________________
-AliFlatESDFriend::AliFlatESDFriend(AliFlatESDSpecialConstructorFlag f) :
-  fContentSize(),
-  fBitFlags(),
-  fNTracks(),
-  fNTrackEntries(),
-  fTrackTablePointer(),
-  fTracksPointer()
+AliFlatESDFriend::AliFlatESDFriend(AliVConstructorReinitialisationFlag f)
+:
+AliVfriendEvent()
+//  fContentSize(),
+//  fBitFlags(),
+//  fNTracks(),
+//  fNTrackEntries(),
+//  fTrackTablePointer(),
+//  fTracksPointer()
 {
   //special constructor, used to restore the vtable pointer
   //uses the special dummy constructors of contained objects
@@ -83,7 +86,7 @@ AliFlatESDFriend::AliFlatESDFriend(AliFlatESDSpecialConstructorFlag f) :
   // the vtable pointer for this AliFlatESDFriend object is already reset when this constructor is called
   // we should only initialise vtable pointers for all contained objects
 
-  if(f == AliFlatESDReinitialize){   
+  if(f == AliVReinitialize){   
     for( int i=0; i<fNTracks; i++ ){
       AliFlatESDFriendTrack  *tr = GetFlatTrackNonConst(i);
       if( tr ) tr->Reinitialize();
@@ -100,3 +103,61 @@ void AliFlatESDFriend::Ls() const
   cout<<"  N tracks: "<<fNTracks<<endl;
   cout<<"  N track entries: "<<fNTrackEntries<<endl;
 }
+
+
+// _______________________________________________________________________________________________________
+Int_t AliFlatESDFriend::SetFromESDfriend( const size_t allocatedMemorySize, const AliESDfriend *esdFriend )
+{
+  // Fill flat ESD friend from ALiESDfriend
+  if( allocatedMemorySize < sizeof(AliFlatESDFriend ) ) return -1;
+
+  Reset();
+  
+  if( !esdFriend ) return 0;
+  
+  Int_t err = 0;
+  size_t freeSpace = allocatedMemorySize - GetSize();
+
+  // fill event info
+  {
+    SetSkipBit( esdFriend->TestSkipBit() );
+    for( int iSector=0; iSector<72; iSector++ ){
+      SetNclustersTPC( iSector, esdFriend->GetNclustersTPC(iSector) );
+      SetNclustersTPCused( iSector, esdFriend->GetNclustersTPCused(iSector) );
+    }
+  }
+  // fill track friends
+  {
+   size_t trackSize = 0;
+   int nTracks = 0;
+   int nTrackEntries = 0;
+   Long64_t *table = NULL;
+   AliFlatESDFriendTrack *flatTrack = NULL;
+   err = SetTracksStart( flatTrack, table, esdFriend->GetNumberOfTracks(), freeSpace );
+   if( err!=0 ) return err;
+   freeSpace = allocatedMemorySize - GetSize();
+   
+   for (Int_t idxTrack = 0; idxTrack < esdFriend->GetNumberOfTracks(); ++idxTrack) {
+     const AliESDfriendTrack *esdTrack = esdFriend->GetTrack(idxTrack);
+     table[idxTrack] = -1;
+     if (esdTrack) {
+       table[idxTrack] = trackSize;
+       if( freeSpace<flatTrack->EstimateSize() ) return -1;
+       new (flatTrack) AliFlatESDFriendTrack;       
+       //flatTrack->SetFromESDTrack( esdTrack );
+       trackSize += flatTrack->GetSize();
+       freeSpace -= flatTrack->GetSize();
+       nTrackEntries++;
+       flatTrack = flatTrack->GetNextTrackNonConst();
+     }
+     nTracks++;
+    }
+   
+   SetTracksEnd( nTracks, nTrackEntries, trackSize );
+  }
+
+  return 0;
+}
+