]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/global/AliFlatESDEvent.h
fix compiler warning (empty body of if statement)
[u/mrichter/AliRoot.git] / HLT / global / AliFlatESDEvent.h
index 9e2a9aa07b80b695654a1c2eaa77bb342b8bd28f..a92c4e8cd1d661fba4408983266684ec43e09868 100644 (file)
  */
 
 #include "Rtypes.h"
-#include "AliVVevent.h"
+#include "AliVMisc.h"
+#include "AliVEvent.h"
+#include "AliFlatESDTrack.h"
 #include "AliFlatESDVertex.h"
+#include "AliFlatESDFriend.h"
+#include "AliESDVertex.h"
 
-class AliFlatESDTrack;
 class AliFlatESDV0;
 class AliFlatESDTrigger;
 
 class AliESDEvent;
 class AliESDVertex;
-class AliESDtrack;
-class AliESDfriendTrack;
-class AliESDv0;
 
-class AliFlatESDEvent :public AliVVevent {
+class AliFlatESDEvent :public AliVEvent {
  public:
   // --------------------------------------------------------------------------------
   // -- Constructor / Destructors
   AliFlatESDEvent();
-  ~AliFlatESDEvent();
+  ~AliFlatESDEvent() {}
 
-  // Interface to AliVVEvent
+  // constructor and method for reinitialisation of virtual table
+  AliFlatESDEvent( AliVConstructorReinitialisationFlag );
+  void Reinitialize() { new (this) AliFlatESDEvent( AliVReinitialize ); }
 
-  void Reset(){}
+  // --------------------------------------------------------------------------------
 
   Double_t  GetMagneticField() const { return fMagneticField; }
   UInt_t    GetPeriodNumber()  const { return fPeriodNumber; }
   Int_t     GetRunNumber()     const { return fRunNumber; }
   UInt_t    GetOrbitNumber()   const { return fOrbitNumber; }
   UShort_t  GetBunchCrossNumber() const { return fBunchCrossNumber; }
-  UInt_t    GetTimeStamp()     const { return fTimeStamp; }
-  ULong64_t GetTriggerMask()   const { return fTriggerMask; }
-  
-  TString GetFiredTriggerClasses() const { TString s; return s; } //!!
-  UInt_t GetEventSpecie() const { return 0; }  //!!
-
+  ULong64_t GetTriggerMask()      const { return fTriggerMask; }  
+  ULong64_t GetTriggerMaskNext50()   const { return fTriggerMaskNext50; }  
+  TString   GetFiredTriggerClasses() const ;
   Int_t GetNumberOfTracks() const { return fNTracks; }
-  Int_t GetNumberOfV0s() const { return fNV0s; }
-  Int_t GetNumberOfKinks() const { return 0; }  
+  Int_t GetNumberOfV0s()    const { return fNV0s; }
+
+  void Reset();
+  void ConnectTracks(){} // initialisation, needed by the ESD event, part of VVevent interface
+
+  UInt_t GetTimeStamp()     const { return fTimeStamp; }
+  UInt_t GetEventSpecie()   const { return fEventSpecie; }
+  Int_t  GetNumberOfKinks() const { return 0; }  
 
-  AliVVtrack* GetTrack(Int_t /*i*/) const { return NULL; }
   AliESDkink* GetKink(Int_t /*i*/) const { return NULL;}
 
-  void ConnectTracks(){} // initialisation, needed by the ESD event, part of VVevent interface
+  Int_t GetPrimaryVertexSPD( AliESDVertex &v ) const ;
+  Int_t GetPrimaryVertexTracks( AliESDVertex &v ) const ;
+
+  AliVfriendEvent* FindFriend() const { return fFriendEvent; }
 
   // --------------------------------------------------------------------------------
-  // -- Fill / Set methods
-  void Init();
+  // Own methods 
 
-  Int_t FillFromESD( const size_t allocatedMemorySize, const AliESDEvent *esd, const Bool_t useESDFriends = kTRUE, const Bool_t fillV0s=kTRUE );
+  // -- Set methods
+
+  Int_t SetFromESD( size_t allocatedMemorySize, const AliESDEvent *esd, const Bool_t fillV0s=kTRUE );
+
+  void SetFriendEvent( AliFlatESDFriend *f ) { fFriendEvent=f; }
 
   void  SetMagneticField( Double_t mf ){ fMagneticField = mf; }
   void  SetPeriodNumber( Int_t n ) { fPeriodNumber = n; }
@@ -66,26 +77,27 @@ class AliFlatESDEvent :public AliVVevent {
   void  SetOrbitNumber( UInt_t n ) { fOrbitNumber = n; }
   void  SetBunchCrossNumber( UShort_t n ) { fBunchCrossNumber = n; }
   void  SetTimeStamp( UInt_t timeStamp ){ fTimeStamp = timeStamp; }
+  void  SetEventSpecie(UInt_t eventSpecie){ fEventSpecie = eventSpecie; }
   void  SetTriggerMask(ULong64_t n) { fTriggerMask = n; }
+  void  SetTriggerMaskNext50(ULong64_t n) { fTriggerMaskNext50 = n; }
   
-  AliFlatESDTrigger *FillTriggersStart();
-  void FillTriggersEnd( Int_t nTriggerClasses, size_t triggersSize );
+  Int_t  SetPrimaryVertexTracks( const AliESDVertex *v, size_t allocatedVtxMemory );
+  Int_t  SetPrimaryVertexSPD( const AliESDVertex *v, size_t allocatedVtxMemory  );
 
-  void FillPrimaryVertices( const AliESDVertex *vertexSPD, const AliESDVertex *vertexTracks );
+  AliFlatESDTrigger *SetTriggersStart();
+  void SetTriggersEnd( Int_t nTriggerClasses, size_t triggersSize );
 
-  AliFlatESDTrack *FillTracksStart();
-  void FillTracksEnd( Int_t nTracks, size_t tracksSize );
-
-  AliFlatESDV0 *FillV0sStart();
-  void FillV0sEnd( Int_t nV0s, size_t v0sSize );  
+  Int_t SetTracksStart( AliFlatESDTrack* &t, Long64_t* &table, Int_t nTracks, size_t freeMem);
+  void SetTracksEnd( Int_t nTracks, size_t tracksSize );
 
+  AliFlatESDV0 *SetV0sStart();
+  void SetV0sEnd( Int_t nV0s, size_t v0sSize );
 
   // --------------------------------------------------------------------------------
   // -- Getter methods
 
-
-  const AliFlatESDVertex* GetPrimaryVertexSPD() const ;
-  const AliFlatESDVertex* GetPrimaryVertexTracks() const ;
+  const AliFlatESDVertex* GetFlatPrimaryVertexSPD() const ;
+  const AliFlatESDVertex* GetFlatPrimaryVertexTracks() const ;
 
   Int_t GetNumberOfTriggerClasses() const { return fNTriggerClasses; }
    
@@ -93,28 +105,53 @@ class AliFlatESDEvent :public AliVVevent {
   const AliFlatESDTrack   *GetTracks() const { return reinterpret_cast<const AliFlatESDTrack*>( fContent + fTracksPointer ); }
   const AliFlatESDV0      *GetV0s() const { return reinterpret_cast<const AliFlatESDV0*>( fContent + fV0Pointer ); }
 
+  const AliFlatESDTrack  *GetFlatTrack( Int_t i ) const ;
+
   // --------------------------------------------------------------------------------
   // -- Size methods
 
   ULong64_t  GetSize()  const { return fContent + fContentSize - reinterpret_cast<const Byte_t*>(this); }
 
-  static ULong64_t EstimateSize(AliESDEvent*esd, Bool_t useESDFriends = kTRUE, Bool_t fillV0s=kTRUE );
+  static ULong64_t EstimateSize(AliESDEvent*esd, Bool_t fillV0s=kTRUE );
+
+  // --------------------------------------------------------------------------------
+  // AliVEvent interface
+  virtual void Print(Option_t *option="") const {if (option){}; return;}
+  virtual void AddObject(TObject* /*obj*/) {}
+  virtual TObject* FindListObject(const char* /*name*/) const {return NULL;}
+  virtual TList* GetList() const {return NULL;}
+  virtual void CreateStdContent() {}
+  virtual void GetStdContent() {}
+  virtual void ReadFromTree(TTree* /*tree*/, Option_t* /*opt*/) {}
+  virtual void WriteToTree(TTree* /*tree*/) const {}
+  virtual void SetStdNames() {}
+  virtual AliVHeader* GetHeader() const {return NULL;}
+  virtual void SetPeriodNumber(UInt_t) {}
+  virtual void SetEventType(UInt_t) {}
+  virtual void SetTriggerCluster(UChar_t) {}
+  virtual UInt_t GetEventType() const {return 0;}
+  virtual UChar_t GetTriggerCluster() const {return 0;}
+  virtual Double_t GetZDCN1Energy() const {return 0.;}
+  virtual Double_t GetZDCP1Energy() const {return 0.;}
+  virtual Double_t GetZDCN2Energy() const {return 0.;}
+  virtual Double_t GetZDCP2Energy() const {return 0.;}
+  virtual Double_t GetZDCEMEnergy(Int_t) const {return 0.;}
+  virtual AliVParticle* GetTrack(Int_t) const {return NULL;}
+  virtual Int_t GetNumberOfCascades() const {return 0;}
+  virtual AliCentrality* GetCentrality() {return NULL;}
+  virtual AliEventplane* GetEventplane() {return NULL;}
+  virtual Int_t EventIndex(Int_t) const {return 0;}
+  virtual Int_t EventIndexForCaloCluster(Int_t) const {return 0;}
+  virtual Int_t EventIndexForPHOSCell(Int_t) const {return 0;}
+  virtual Int_t EventIndexForEMCALCell(Int_t) const {return 0;}
+  virtual AliVVZERO* GetVZEROData() const {return NULL;}
+  virtual AliVZDC   *GetZDCData() const {return NULL;}
 
  private:
 
   AliFlatESDEvent( const AliFlatESDEvent& );
   AliFlatESDEvent& operator=( const AliFlatESDEvent& );
 
-  Int_t AddTriggerClass(  const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize );
-  void  FillPrimaryVertex(const AliESDVertex *v, Byte_t flag);
-  Int_t FillNextTrack( const AliESDtrack* esdTrack,  AliESDfriendTrack* friendTrack);
-  Int_t FillNextV0( const AliESDv0 *v0);
-
-  const AliFlatESDVertex* GetFirstPrimaryVertex() const ;
-  Byte_t    *GetEndOfContent(){ return fContent + fContentSize; }
-
-  UInt_t CountBits(Byte_t field, UInt_t mask) const;
-
   // --------------------------------------------------------------------------------
 
   // -- Fixed size member objects ( try to align in memory )
@@ -125,9 +162,11 @@ class AliFlatESDEvent :public AliVVevent {
   Int_t      fRunNumber;       // Run Number
   UInt_t     fOrbitNumber;     // Orbit Number
   UInt_t     fTimeStamp;         // Time stamp
+  UInt_t     fEventSpecie;       // Reconstruction event specie (1-default,2-lowM,4-highM,8-cosmic,16-cal)
   UShort_t   fBunchCrossNumber;  // Bunch Crossing Number
   Byte_t     fPrimaryVertexMask;            // Bit mask specfifying which primary vertices are present
-  ULong64_t  fTriggerMask;      // Trigger mask
+  ULong64_t  fTriggerMask;      // Trigger mask, first 50 bits
+  ULong64_t  fTriggerMaskNext50;      // Trigger mask, next 50 bits
 
   UInt_t  fNTriggerClasses;  // N trigger classes
   UInt_t  fNPrimaryVertices; // Number of primary vertices in array
@@ -137,72 +176,103 @@ class AliFlatESDEvent :public AliVVevent {
   // Pointers to specific data in fContent
   
   size_t fTriggerPointer;        // position of the first trigger description in fContent
-  size_t fPrimaryVertexPointer;  // position of the first primary vertex in fContent
+  size_t fPrimaryVertexTracksPointer; // position of primary vertex tracks in fContent
+  size_t fPrimaryVertexSPDPointer;  // position of primary vertex SPD in fContent
+  size_t fTrackTablePointer;     // position of the first track pointer in fContent
   size_t fTracksPointer;         // position of the first track in fContent
   size_t fV0Pointer;             // position of the first V0 in fContent  
+  
+  //
+  AliFlatESDFriend *fFriendEvent;
 
   // --------------------------------------------------------------------------------
 
   // -- Variable Size Object
 
   Byte_t fContent[1];                  // Variale size object, which contains all data
-  
 };
 
 // Inline implementations 
 
-inline AliFlatESDTrack *AliFlatESDEvent::FillTracksStart()
+inline const AliFlatESDTrack  *AliFlatESDEvent::GetFlatTrack( Int_t i ) const 
+{ 
+  const Long64_t *table = reinterpret_cast<const Long64_t*> (fContent + fTrackTablePointer);
+  if( i<0 || i>(int) fNTracks || table[i]<0 ) return NULL;
+  return reinterpret_cast<const AliFlatESDTrack*>( fContent + table[i] );
+}
+
+
+inline Int_t AliFlatESDEvent::SetTracksStart( AliFlatESDTrack* &t, Long64_t* &table, Int_t nTracks, size_t freeMem)
 {
   fNTracks = 0;
+  if( nTracks*sizeof(Long64_t)  > freeMem ) return -1;
+  fTrackTablePointer = fContentSize;
+  fContentSize += nTracks*sizeof(Long64_t);
   fTracksPointer = fContentSize;
-  return reinterpret_cast< AliFlatESDTrack* >( fContent + fContentSize );
+  table = reinterpret_cast< Long64_t* >( fContent + fTrackTablePointer );
+  t = reinterpret_cast< AliFlatESDTrack* >( fContent + fTracksPointer );
+  return 0;
 }
 
-inline void AliFlatESDEvent::FillTracksEnd( Int_t nTracks, size_t tracksSize )
+inline void AliFlatESDEvent::SetTracksEnd( Int_t nTracks, size_t tracksSize )
 {
+  if( nTracks<0 ) return;
+  Long64_t *table = reinterpret_cast< Long64_t*> (fContent + fTrackTablePointer);
+  for( int i=0; i<nTracks; i++ ) table[i]+=fTracksPointer;
   fNTracks = nTracks;
   fContentSize += tracksSize;
 }
 
-inline AliFlatESDV0 *AliFlatESDEvent::FillV0sStart()
+inline AliFlatESDV0 *AliFlatESDEvent::SetV0sStart()
 {
   fNV0s = 0;
   fV0Pointer = fContentSize;
   return reinterpret_cast< AliFlatESDV0* >( fContent + fContentSize );
 }
    
-inline void AliFlatESDEvent::FillV0sEnd( Int_t nV0s, size_t v0sSize )
+inline void AliFlatESDEvent::SetV0sEnd( Int_t nV0s, size_t v0sSize )
 {
   fNV0s = nV0s;
   fContentSize += v0sSize;
 }
   
-inline AliFlatESDTrigger *AliFlatESDEvent::FillTriggersStart()
+inline AliFlatESDTrigger *AliFlatESDEvent::SetTriggersStart()
 {
   fNTriggerClasses = 0;
   fTriggerPointer = fContentSize;
   return reinterpret_cast< AliFlatESDTrigger* >( fContent + fContentSize );
 }
 
-inline void AliFlatESDEvent::FillTriggersEnd( Int_t nTriggerClasses, size_t triggersSize )
+inline void AliFlatESDEvent::SetTriggersEnd( Int_t nTriggerClasses, size_t triggersSize )
 {
   fNTriggerClasses = nTriggerClasses;
   fContentSize += triggersSize;
 }
 
-inline const AliFlatESDVertex* AliFlatESDEvent::GetFirstPrimaryVertex() const 
+inline const AliFlatESDVertex* AliFlatESDEvent::GetFlatPrimaryVertexSPD() const 
 {
-  return reinterpret_cast<const AliFlatESDVertex*>(fContent + fPrimaryVertexPointer);
-}
-inline const AliFlatESDVertex* AliFlatESDEvent::GetPrimaryVertexSPD() const 
-{
-  return (fPrimaryVertexMask & 0x1) ? GetFirstPrimaryVertex() : NULL;
+  return (fPrimaryVertexMask & 0x1) ? reinterpret_cast<const AliFlatESDVertex*>(fContent + fPrimaryVertexSPDPointer) : NULL;
 } 
 
-inline const AliFlatESDVertex* AliFlatESDEvent::GetPrimaryVertexTracks() const 
+inline const AliFlatESDVertex* AliFlatESDEvent::GetFlatPrimaryVertexTracks() const 
 { 
-  return (fPrimaryVertexMask & 0x2) ? (GetFirstPrimaryVertex() + (fPrimaryVertexMask & 0x1) ) : NULL;
+  return (fPrimaryVertexMask & 0x2) ? (reinterpret_cast<const AliFlatESDVertex*>(fContent + fPrimaryVertexTracksPointer)  ) : NULL;
 } 
 
+inline Int_t AliFlatESDEvent::GetPrimaryVertexSPD( AliESDVertex &v ) const 
+{
+  const AliFlatESDVertex* flatVertex = GetFlatPrimaryVertexSPD();
+  if( !flatVertex ) return -1;
+  flatVertex->GetESDVertex( v );
+  return 0;
+}
+
+inline Int_t AliFlatESDEvent::GetPrimaryVertexTracks( AliESDVertex &v ) const 
+{
+  const AliFlatESDVertex* flatVertex = GetFlatPrimaryVertexTracks();
+  if( !flatVertex ) return -1;
+  flatVertex->GetESDVertex( v );
+  return 0;
+}
+
 #endif