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
18 class AliFlatESDTrigger{
22 // --------------------------------------------------------------------------------
23 // -- Constructor / Destructors
27 // --------------------------------------------------------------------------------
28 // -- Fill / Set methods
30 Int_t SetTriggerClass( const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize );
32 // --------------------------------------------------------------------------------
35 Int_t GetTriggerIndex() const { return fTriggerIndex; }
37 const Char_t *GetTriggerClassName() const { return reinterpret_cast<const Char_t*>( fContent ); }
39 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
41 const AliFlatESDTrigger *GetNextTrigger() const { return reinterpret_cast<const AliFlatESDTrigger*>(fContent+fContentSize); }
43 AliFlatESDTrigger *GetNextTriggerNonConst() { return reinterpret_cast<AliFlatESDTrigger*>(fContent+fContentSize); }
45 // --------------------------------------------------------------------------------
48 ULong64_t GetSize() {return fContent + fContentSize - reinterpret_cast<Byte_t*>(this) ;}
52 AliFlatESDTrigger(const AliFlatESDTrigger&);
53 AliFlatESDTrigger& operator=(const AliFlatESDTrigger&);
55 // --------------------------------------------------------------------------------
56 // -- Fixed size member objects
58 UInt_t fContentSize; // Size of this object
59 Int_t fTriggerIndex; // trigger index
61 // --------------------------------------------------------------------------------
62 // -- Variable Size Object
64 Byte_t fContent[1]; // Variale size object, which contains all data
69 // _______________________________________________________________________________________________________
70 // inline implementation of some methods
72 inline AliFlatESDTrigger::AliFlatESDTrigger():
76 // Default constructor
80 inline AliFlatESDTrigger::~AliFlatESDTrigger()
85 inline Int_t AliFlatESDTrigger::SetTriggerClass( const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize )
87 // Set trigger class, returns non-zero when the memory needed exeeeds MaxSize
89 size_t len = strlen( TriggerClassName );
91 if( ( fContent + len ) > reinterpret_cast<Byte_t*>(this) + MaxSize ) return -1;
93 fTriggerIndex = TriggerIndex;
95 strcpy( reinterpret_cast<char*>(fContent), TriggerClassName );