1 #ifndef ALIFLATESDTRIGGER_H
2 #define ALIFLATESDTRIGGER_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice *
6 * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli */
9 * See implementation file for documentation
16 #include "AliVVMisc.h"
19 class AliFlatESDTrigger{
23 // --------------------------------------------------------------------------------
24 // -- Constructor / Destructors
28 // constructor and method for reinitialisation of virtual table
29 AliFlatESDTrigger( AliVVConstructorReinitialisationFlag );
30 void Reinitialize() const {} // no virtual table - do nothing
32 // --------------------------------------------------------------------------------
33 // -- Fill / Set methods
35 Int_t SetTriggerClass( const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize );
37 // --------------------------------------------------------------------------------
40 Int_t GetTriggerIndex() const { return fTriggerIndex; }
42 const Char_t *GetTriggerClassName() const { return reinterpret_cast<const Char_t*>( fContent ); }
44 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
46 const AliFlatESDTrigger *GetNextTrigger() const { return reinterpret_cast<const AliFlatESDTrigger*>(fContent+fContentSize); }
48 AliFlatESDTrigger *GetNextTriggerNonConst() { return reinterpret_cast<AliFlatESDTrigger*>(fContent+fContentSize); }
50 // --------------------------------------------------------------------------------
53 ULong64_t GetSize() {return fContent + fContentSize - reinterpret_cast<Byte_t*>(this) ;}
57 AliFlatESDTrigger(const AliFlatESDTrigger&);
58 AliFlatESDTrigger& operator=(const AliFlatESDTrigger&);
60 // --------------------------------------------------------------------------------
61 // -- Fixed size member objects
63 UInt_t fContentSize; // Size of this object
64 Int_t fTriggerIndex; // trigger index
66 // --------------------------------------------------------------------------------
67 // -- Variable Size Object
69 Byte_t fContent[1]; // Variale size object, which contains all data
74 // _______________________________________________________________________________________________________
75 // inline implementation of some methods
77 inline AliFlatESDTrigger::AliFlatESDTrigger():
81 // Default constructor
85 inline AliFlatESDTrigger::~AliFlatESDTrigger()
90 inline AliFlatESDTrigger::AliFlatESDTrigger( AliVVConstructorReinitialisationFlag ) :
91 fContentSize(fContentSize),
92 fTriggerIndex(fTriggerIndex)
97 inline Int_t AliFlatESDTrigger::SetTriggerClass( const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize )
99 // Set trigger class, returns non-zero when the memory needed exeeeds MaxSize
101 size_t len = strlen( TriggerClassName );
103 if( ( fContent + len ) > reinterpret_cast<Byte_t*>(this) + MaxSize ) return -1;
105 fTriggerIndex = TriggerIndex;
107 strcpy( reinterpret_cast<char*>(fContent), TriggerClassName );