From: sgorbuno Date: Mon, 18 Aug 2014 16:12:26 +0000 (+0200) Subject: Reinitialization methods added to AliFlat* X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=c2ea967ebd86d63ad1829b1cc0fc2540ae6cc929;p=u%2Fmrichter%2FAliRoot.git Reinitialization methods added to AliFlat* --- diff --git a/HLT/global/AliFlatESDEvent.cxx b/HLT/global/AliFlatESDEvent.cxx index db548f8e815..b3ee7adb723 100644 --- a/HLT/global/AliFlatESDEvent.cxx +++ b/HLT/global/AliFlatESDEvent.cxx @@ -67,7 +67,8 @@ #include "AliESDVertex.h" // _______________________________________________________________________________________________________ -AliFlatESDEvent::AliFlatESDEvent() : +AliFlatESDEvent::AliFlatESDEvent() + : AliVVevent(), fContentSize(0), fMagneticField(0), @@ -96,6 +97,74 @@ AliFlatESDEvent::AliFlatESDEvent() : } +AliFlatESDEvent::AliFlatESDEvent( AliVVConstructorReinitialisationFlag f ) + : + AliVVevent( f ), + fContentSize(fContentSize), + fMagneticField(fMagneticField), + fPeriodNumber(fPeriodNumber), + fRunNumber(fRunNumber), + fOrbitNumber(fOrbitNumber), + fTimeStamp(fTimeStamp), + fEventSpecie(fEventSpecie), + fBunchCrossNumber(fBunchCrossNumber), + fPrimaryVertexMask(fPrimaryVertexMask), + fTriggerMask(fTriggerMask), + fTriggerMaskNext50(fTriggerMaskNext50), + fNTriggerClasses(fNTriggerClasses), + fNPrimaryVertices(fNPrimaryVertices), + fNTracks(fNTracks), + fNV0s(fNV0s), + fTriggerPointer(fTriggerPointer), + fPrimaryVertexTracksPointer(fPrimaryVertexTracksPointer), + fPrimaryVertexSPDPointer(fPrimaryVertexSPDPointer), + fTrackTablePointer(fTrackTablePointer), + fTracksPointer(fTracksPointer), + fV0Pointer(fV0Pointer) +{ + // Constructor for reinitialisation of vtable + + + // Reinitialise trigger information + { + AliFlatESDTrigger * trigger = reinterpret_cast< AliFlatESDTrigger*>( fContent + fTriggerPointer ); + for( UInt_t i=0; iReinitialize(); + trigger = trigger->GetNextTriggerNonConst(); + } + } + + // Reinitialise primary vertices + + if( fPrimaryVertexMask & 0x1 ){ + AliFlatESDVertex *vtxSPD = reinterpret_cast(fContent + fPrimaryVertexSPDPointer); + vtxSPD->Reinitialize(); + } + if( fPrimaryVertexMask & 0x2 ){ + AliFlatESDVertex *vtxTracks = reinterpret_cast(fContent + fPrimaryVertexTracksPointer); + vtxTracks->Reinitialize(); + } + + // Reinitialise tracks + { + AliFlatESDTrack *track = reinterpret_cast( fContent + fTracksPointer ); + for( UInt_t i=0; iReinitialize(); + track = track->GetNextTrackNonConst(); + } + } + + // Reinitialise V0s + { + AliFlatESDV0 *v0 = reinterpret_cast( fContent + fV0Pointer ); + for( UInt_t i=0; i < fNV0s; i++){ + v0->Reinitialize(); + v0 = v0->GetNextV0NonConst(); + } + } +} + + TString AliFlatESDEvent::GetFiredTriggerClasses() const { // Fired trigger classes @@ -263,7 +332,7 @@ Int_t AliFlatESDEvent::SetFromESD( const size_t allocatedMemorySize, const AliES trackSize += flatTrack->GetSize(); freeSpace -= flatTrack->GetSize(); nTracks++; - flatTrack = flatTrack->GetNextTrack(); + flatTrack = flatTrack->GetNextTrackNonConst(); } } SetTracksEnd( nTracks, trackSize ); @@ -284,6 +353,7 @@ Int_t AliFlatESDEvent::SetFromESD( const size_t allocatedMemorySize, const AliES nV0s++; v0size += flatV0->GetSize(); freeSpace -= flatV0->GetSize(); + flatV0 = flatV0->GetNextV0NonConst(); } SetV0sEnd( nV0s, v0size ); } diff --git a/HLT/global/AliFlatESDEvent.h b/HLT/global/AliFlatESDEvent.h index 64d95b4f7b8..8c65bf4fe29 100644 --- a/HLT/global/AliFlatESDEvent.h +++ b/HLT/global/AliFlatESDEvent.h @@ -10,6 +10,7 @@ */ #include "Rtypes.h" +#include "AliVVMisc.h" #include "AliVVevent.h" #include "AliFlatESDTrack.h" #include "AliFlatESDVertex.h" @@ -27,6 +28,10 @@ class AliFlatESDEvent :public AliVVevent { AliFlatESDEvent(); ~AliFlatESDEvent() {} + // constructor and method for reinitialisation of virtual table + AliFlatESDEvent( AliVVConstructorReinitialisationFlag ); + void Reinitialize() { new (this) AliFlatESDEvent( AliVVReinitialize ); } + // -------------------------------------------------------------------------------- // Interface to AliVVEvent diff --git a/HLT/global/AliFlatESDTrack.cxx b/HLT/global/AliFlatESDTrack.cxx index f8653ca079c..7fed28cab4f 100644 --- a/HLT/global/AliFlatESDTrack.cxx +++ b/HLT/global/AliFlatESDTrack.cxx @@ -40,6 +40,7 @@ // _______________________________________________________________________________________________________ AliFlatESDTrack::AliFlatESDTrack() : // Default constructor + AliVVtrack(), fTrackParamMask(0), fNTPCClusters(0), fNITSClusters(0), @@ -47,6 +48,17 @@ AliFlatESDTrack::AliFlatESDTrack() : { } +AliFlatESDTrack::AliFlatESDTrack( AliVVConstructorReinitialisationFlag f ) + : + AliVVtrack( f ), + fTrackParamMask(fTrackParamMask ), + fNTPCClusters( fNTPCClusters ), + fNITSClusters( fNITSClusters ), + fContentSize( fContentSize ) +{ + // Constructor for reinitialisation of vtable +} + // _______________________________________________________________________________________________________ diff --git a/HLT/global/AliFlatESDTrack.h b/HLT/global/AliFlatESDTrack.h index fee6e4445fd..cb0ecb4abf7 100644 --- a/HLT/global/AliFlatESDTrack.h +++ b/HLT/global/AliFlatESDTrack.h @@ -17,7 +17,7 @@ Op - Track parameters estimated at the point of maximal radial coordinate reache */ #include "Rtypes.h" - +#include "AliVVMisc.h" #include "AliVVtrack.h" #include "AliFlatExternalTrackParam.h" @@ -32,7 +32,11 @@ class AliFlatESDTrack :public AliVVtrack { AliFlatESDTrack(); ~AliFlatESDTrack() {} - // -------------------------------------------------------------------------------- + // constructor and method for reinitialisation of virtual table + AliFlatESDTrack( AliVVConstructorReinitialisationFlag ); + void Reinitialize() { new (this) AliFlatESDTrack( AliVVReinitialize ); } + + // -------------------------------------------------------------------------------- // -- Set methods Int_t Set( const AliESDtrack* track ); @@ -87,8 +91,9 @@ class AliFlatESDTrack :public AliVVtrack { // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - AliFlatESDTrack *GetNextTrack() {return reinterpret_cast(fContent+fContentSize);} - + const AliFlatESDTrack *GetNextTrack() const { return reinterpret_cast(fContent+fContentSize); } + AliFlatESDTrack *GetNextTrackNonConst() { return reinterpret_cast(fContent+fContentSize); } + // -------------------------------------------------------------------------------- // -- Size methods diff --git a/HLT/global/AliFlatESDTrigger.h b/HLT/global/AliFlatESDTrigger.h index 57d4105e79f..e692263a0dd 100644 --- a/HLT/global/AliFlatESDTrigger.h +++ b/HLT/global/AliFlatESDTrigger.h @@ -13,6 +13,7 @@ */ #include "Rtypes.h" +#include "AliVVMisc.h" #include class AliFlatESDTrigger{ @@ -24,6 +25,10 @@ class AliFlatESDTrigger{ AliFlatESDTrigger(); ~AliFlatESDTrigger(); + // constructor and method for reinitialisation of virtual table + AliFlatESDTrigger( AliVVConstructorReinitialisationFlag ); + void Reinitialize() const {} // no virtual table - do nothing + // -------------------------------------------------------------------------------- // -- Fill / Set methods @@ -82,6 +87,13 @@ inline AliFlatESDTrigger::~AliFlatESDTrigger() // Destructor } +inline AliFlatESDTrigger::AliFlatESDTrigger( AliVVConstructorReinitialisationFlag ) : + fContentSize(fContentSize), + fTriggerIndex(fTriggerIndex) +{ + // do nothing +} + inline Int_t AliFlatESDTrigger::SetTriggerClass( const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize ) { // Set trigger class, returns non-zero when the memory needed exeeeds MaxSize diff --git a/HLT/global/AliFlatESDV0.h b/HLT/global/AliFlatESDV0.h index afcada908bb..61df695dd4b 100644 --- a/HLT/global/AliFlatESDV0.h +++ b/HLT/global/AliFlatESDV0.h @@ -10,14 +10,23 @@ */ #include "Rtypes.h" +#include "AliVVMisc.h" class AliFlatESDV0 { public: + // -- Constructor / Destructors + AliFlatESDV0(): fNegTrackID(-1), fPosTrackID(-1) {} ~AliFlatESDV0(){} - + + // constructor and method for reinitialisation of virtual table + AliFlatESDV0( AliVVConstructorReinitialisationFlag ): fNegTrackID(fNegTrackID), fPosTrackID(fPosTrackID) {} + void Reinitialize() const {} // no virtual table - do nothing + + //-- + static size_t GetSize(){ return sizeof(AliFlatESDV0); } void SetNegTrackID( Int_t id ){ fNegTrackID = id; } @@ -26,6 +35,11 @@ class AliFlatESDV0 Int_t GetNegTrackID() const { return fNegTrackID; } Int_t GetPosTrackID() const { return fPosTrackID; } + // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + + const AliFlatESDV0 *GetNextV0() const { return reinterpret_cast( this+GetSize() ); } + AliFlatESDV0 *GetNextV0NonConst() { return reinterpret_cast( this+GetSize() ); } + private: AliFlatESDV0(const AliFlatESDV0&); diff --git a/HLT/global/AliFlatESDVertex.h b/HLT/global/AliFlatESDVertex.h index 60cf8a929de..e7c6d4749c1 100644 --- a/HLT/global/AliFlatESDVertex.h +++ b/HLT/global/AliFlatESDVertex.h @@ -10,10 +10,21 @@ */ #include "Rtypes.h" +#include "AliVVMisc.h" #include "AliESDVertex.h" struct AliFlatESDVertex { + // -- Constructor / Destructors + + AliFlatESDVertex(); + ~AliFlatESDVertex() {} + + // constructor and method for reinitialisation of virtual table + AliFlatESDVertex( AliVVConstructorReinitialisationFlag ); + void Reinitialize() const {} // no virtual table - do nothing + + //-- Double32_t fPosition[3]; // vertex position Double32_t fCov[6]; // vertex covariance matrix @@ -25,10 +36,6 @@ struct AliFlatESDVertex Char_t fBCID; // BC ID assigned to vertex */ - AliFlatESDVertex() :fNContributors(0), fChi2(0){ - for( int i=0; i<3; i++) fPosition[i] = -9999; - for( int i=0; i<6; i++) fCov[i] = -9999; - } void Set(const AliESDVertex &v ); @@ -93,6 +100,23 @@ struct AliFlatESDVertex }; +inline AliFlatESDVertex::AliFlatESDVertex() : +fNContributors(0), +fChi2(0) +{ + for( int i=0; i<3; i++) fPosition[i] = -9999; + for( int i=0; i<6; i++) fCov[i] = -9999; +} + +inline AliFlatESDVertex::AliFlatESDVertex( AliVVConstructorReinitialisationFlag ): +fNContributors(fNContributors), +fChi2(fChi2) +{ + // do nothing + for( int i=0; i<3; i++) fPosition[i] = fPosition[i]; + for( int i=0; i<6; i++) fCov[i] = fCov[i]; +} + inline void AliFlatESDVertex::Set(const AliESDVertex &v ) { fPosition[0] = v.GetX(); diff --git a/STEER/ESD/AliESDtrack.cxx b/STEER/ESD/AliESDtrack.cxx index 3862c80c8c1..83ee3b9d240 100644 --- a/STEER/ESD/AliESDtrack.cxx +++ b/STEER/ESD/AliESDtrack.cxx @@ -283,6 +283,7 @@ bool AliESDtrack::fgkOnlineMode=false; //_______________________________________________________________________ AliESDtrack::AliESDtrack(const AliESDtrack& track): AliExternalTrackParam(track), + AliVVtrack(), fCp(0), fIp(0), fTPCInner(0), diff --git a/STEER/STEERBase/AliVVevent.h b/STEER/STEERBase/AliVVevent.h index 1ba0faafd8e..68256cb117e 100644 --- a/STEER/STEERBase/AliVVevent.h +++ b/STEER/STEERBase/AliVVevent.h @@ -10,6 +10,8 @@ */ #include "Rtypes.h" #include "TString.h" +#include "AliVVMisc.h" + class TList; //class AliVVvertex; class AliVVtrack; @@ -26,6 +28,9 @@ class AliVVevent{ AliVVevent() {} + // constructor and method for reinitialisation of virtual table + AliVVevent( AliVVConstructorReinitialisationFlag ){} + protected: virtual ~AliVVevent() {} diff --git a/STEER/STEERBase/AliVVtrack.h b/STEER/STEERBase/AliVVtrack.h index 729d8bd8df5..c04ab6c1d72 100644 --- a/STEER/STEERBase/AliVVtrack.h +++ b/STEER/STEERBase/AliVVtrack.h @@ -10,7 +10,7 @@ */ #include "Rtypes.h" - +#include "AliVVMisc.h" class AliExternalTrackParam; class AliVVtrack { @@ -20,6 +20,12 @@ class AliVVtrack { AliVVtrack() {} virtual ~AliVVtrack() {} + // constructor and method for reinitialisation of virtual table + AliVVtrack( AliVVConstructorReinitialisationFlag ) {} + void Reinitialize() { new (this) AliVVtrack( AliVVReinitialize ); } + + // -------------------------------------------------------------------------------- + // -------------------------------------------------------------------------------- // -- Getter methods /*