]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Reinitialization methods added to AliFlat*
authorsgorbuno <Sergey.Gorbunov@cern.ch>
Mon, 18 Aug 2014 16:12:26 +0000 (18:12 +0200)
committersgorbuno <Sergey.Gorbunov@cern.ch>
Mon, 18 Aug 2014 16:12:26 +0000 (18:12 +0200)
HLT/global/AliFlatESDEvent.cxx
HLT/global/AliFlatESDEvent.h
HLT/global/AliFlatESDTrack.cxx
HLT/global/AliFlatESDTrack.h
HLT/global/AliFlatESDTrigger.h
HLT/global/AliFlatESDV0.h
HLT/global/AliFlatESDVertex.h
STEER/ESD/AliESDtrack.cxx
STEER/STEERBase/AliVVevent.h
STEER/STEERBase/AliVVtrack.h

index db548f8e815e0f040a2ce752472829b77ae7bc15..b3ee7adb723cbc01e1958e21dd274729b3e35b86 100644 (file)
@@ -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; i<fNTriggerClasses; i++ ){
+      trigger->Reinitialize();
+      trigger = trigger->GetNextTriggerNonConst();
+    }
+  }
+
+  // Reinitialise primary vertices
+
+  if( fPrimaryVertexMask & 0x1 ){
+    AliFlatESDVertex *vtxSPD = reinterpret_cast<AliFlatESDVertex*>(fContent + fPrimaryVertexSPDPointer);
+    vtxSPD->Reinitialize();
+  }
+  if( fPrimaryVertexMask & 0x2 ){
+    AliFlatESDVertex *vtxTracks = reinterpret_cast<AliFlatESDVertex*>(fContent + fPrimaryVertexTracksPointer);
+    vtxTracks->Reinitialize();
+  }
+
+  // Reinitialise tracks 
+  {
+    AliFlatESDTrack *track = reinterpret_cast<AliFlatESDTrack*>( fContent + fTracksPointer );
+    for( UInt_t i=0; i<fNTracks; i++ ){
+      track->Reinitialize();
+      track = track->GetNextTrackNonConst();
+    }
+  }
+
+  // Reinitialise V0s
+  {
+    AliFlatESDV0 *v0 = reinterpret_cast<AliFlatESDV0*>( 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 );
   }
index 64d95b4f7b826058863debda60af2e841d87f93a..8c65bf4fe29032acd5da5d3d3c7b0084ef51d50b 100644 (file)
@@ -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
 
index f8653ca079c1861f0c54b428de79a879c917795c..7fed28cab4f7a62a2e211a00770075c3ea4573dd 100644 (file)
@@ -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
+}
+
 // _______________________________________________________________________________________________________
 
 
index fee6e4445fd48bde87a0ad40caaa6437e42474fd..cb0ecb4abf76772772209dcb403e6fb6795f8fdf 100644 (file)
@@ -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<AliFlatESDTrack*>(fContent+fContentSize);}
-  
+  const AliFlatESDTrack *GetNextTrack() const { return reinterpret_cast<const AliFlatESDTrack*>(fContent+fContentSize); }
+  AliFlatESDTrack *GetNextTrackNonConst() { return reinterpret_cast<AliFlatESDTrack*>(fContent+fContentSize); }
   // --------------------------------------------------------------------------------
   // -- Size methods
 
index 57d4105e79feeba7bf5e9cd84ede52e3414fd221..e692263a0dd8a976b65a30ccbc087a271b217beb 100644 (file)
@@ -13,6 +13,7 @@
 */
 
 #include "Rtypes.h"
+#include "AliVVMisc.h"
 #include <string>
 
 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
index afcada908bb1c371bdeff13f9c61becb020b40db..61df695dd4bbc7836d0faca7471088d768c31973 100644 (file)
  */
 
 #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<const AliFlatESDV0*>( this+GetSize() ); }
+  AliFlatESDV0 *GetNextV0NonConst() { return reinterpret_cast<AliFlatESDV0*>( this+GetSize() ); }
+
  private:
 
   AliFlatESDV0(const AliFlatESDV0&);
index 60cf8a929dec24a120a609b96eff5e98c252528f..e7c6d4749c12c16ff4cf14a31e12e0acc5a1dd52 100644 (file)
  */
 
 #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();
index 3862c80c8c18ef95f70c5b233be373ddfb806fd6..83ee3b9d240f01237502b0329777073fa049bf49 100644 (file)
@@ -283,6 +283,7 @@ bool AliESDtrack::fgkOnlineMode=false;
 //_______________________________________________________________________
 AliESDtrack::AliESDtrack(const AliESDtrack& track):
   AliExternalTrackParam(track),
+  AliVVtrack(),
   fCp(0),
   fIp(0),
   fTPCInner(0),
index 1ba0faafd8e9fd1b41532937c9e0a17d5b1e1c00..68256cb117e9693af46f0224a30403049c73d955 100644 (file)
@@ -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() {}
index 729d8bd8df52e556cba69b5a18d7ead66c95d3fa..c04ab6c1d727e57feadfabeab63e98fa33bcaa05 100644 (file)
@@ -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
   /*