#include "AliFlatESDFriend.h"
#include "AliFlatESDFriendTrack.h"
#include "Riostream.h"
+#include "AliESDfriend.h"
// _______________________________________________________________________________________________________
AliFlatESDFriend::AliFlatESDFriend() :
}
// _______________________________________________________________________________________________________
-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
// 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();
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;
+}
+