]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/global/AliFlatESDTrigger.h
Reinitialization methods added to AliFlat*
[u/mrichter/AliRoot.git] / HLT / global / AliFlatESDTrigger.h
1 #ifndef ALIFLATESDTRIGGER_H
2 #define ALIFLATESDTRIGGER_H
3
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     */
7
8 /*
9  * See implementation file for documentation
10  */
11
12 /*
13 */
14
15 #include "Rtypes.h"
16 #include "AliVVMisc.h"
17 #include <string>
18
19 class AliFlatESDTrigger{
20
21  public:
22
23   // --------------------------------------------------------------------------------
24   // -- Constructor / Destructors
25   AliFlatESDTrigger();   
26   ~AliFlatESDTrigger();
27
28   // constructor and method for reinitialisation of virtual table
29   AliFlatESDTrigger( AliVVConstructorReinitialisationFlag );
30   void Reinitialize() const {} // no virtual table - do nothing
31
32   // --------------------------------------------------------------------------------
33   // -- Fill / Set methods
34
35   Int_t SetTriggerClass(  const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize );
36   
37   // --------------------------------------------------------------------------------
38   // -- Getter methods
39
40   Int_t GetTriggerIndex() const { return fTriggerIndex; } 
41   
42   const Char_t *GetTriggerClassName() const { return reinterpret_cast<const Char_t*>( fContent ); } 
43   
44   // --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  
45   
46   const AliFlatESDTrigger *GetNextTrigger() const { return reinterpret_cast<const AliFlatESDTrigger*>(fContent+fContentSize); }
47  
48   AliFlatESDTrigger *GetNextTriggerNonConst() { return reinterpret_cast<AliFlatESDTrigger*>(fContent+fContentSize); }
49  
50   // --------------------------------------------------------------------------------
51   // -- Size methods
52
53   ULong64_t GetSize()  {return fContent + fContentSize -  reinterpret_cast<Byte_t*>(this) ;}
54     
55  private:
56
57   AliFlatESDTrigger(const AliFlatESDTrigger&);
58   AliFlatESDTrigger& operator=(const AliFlatESDTrigger&);
59
60   // --------------------------------------------------------------------------------
61   // -- Fixed size member objects
62   
63   UInt_t fContentSize;                      // Size of this object
64   Int_t  fTriggerIndex; // trigger index  
65    
66   // --------------------------------------------------------------------------------
67   // -- Variable Size Object
68
69   Byte_t fContent[1];                  // Variale size object, which contains all data
70
71 };
72
73
74 // _______________________________________________________________________________________________________
75 // inline implementation of some methods 
76
77 inline AliFlatESDTrigger::AliFlatESDTrigger():
78   fContentSize(1),
79   fTriggerIndex(0)
80 {   
81   // Default constructor
82   fContent[0] = '\0';
83 }
84
85 inline AliFlatESDTrigger::~AliFlatESDTrigger() 
86 {
87   // Destructor  
88 }
89
90 inline AliFlatESDTrigger::AliFlatESDTrigger( AliVVConstructorReinitialisationFlag ) :
91   fContentSize(fContentSize),
92   fTriggerIndex(fTriggerIndex)
93 {
94   // do nothing
95 }
96  
97 inline Int_t AliFlatESDTrigger::SetTriggerClass(  const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize )
98 {
99   // Set trigger class, returns non-zero when the memory needed exeeeds MaxSize
100
101   size_t len = strlen( TriggerClassName );
102
103   if( ( fContent + len ) > reinterpret_cast<Byte_t*>(this) + MaxSize ) return -1;
104   
105   fTriggerIndex = TriggerIndex;
106   fContentSize = len;
107   strcpy( reinterpret_cast<char*>(fContent), TriggerClassName );
108   return 0;
109 }
110
111 #endif