]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/global/AliFlatESDTrigger.h
57d4105e79feeba7bf5e9cd84ede52e3414fd221
[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 <string>
17
18 class AliFlatESDTrigger{
19
20  public:
21
22   // --------------------------------------------------------------------------------
23   // -- Constructor / Destructors
24   AliFlatESDTrigger();   
25   ~AliFlatESDTrigger();
26
27   // --------------------------------------------------------------------------------
28   // -- Fill / Set methods
29
30   Int_t SetTriggerClass(  const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize );
31   
32   // --------------------------------------------------------------------------------
33   // -- Getter methods
34
35   Int_t GetTriggerIndex() const { return fTriggerIndex; } 
36   
37   const Char_t *GetTriggerClassName() const { return reinterpret_cast<const Char_t*>( fContent ); } 
38   
39   // --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  
40   
41   const AliFlatESDTrigger *GetNextTrigger() const { return reinterpret_cast<const AliFlatESDTrigger*>(fContent+fContentSize); }
42  
43   AliFlatESDTrigger *GetNextTriggerNonConst() { return reinterpret_cast<AliFlatESDTrigger*>(fContent+fContentSize); }
44  
45   // --------------------------------------------------------------------------------
46   // -- Size methods
47
48   ULong64_t GetSize()  {return fContent + fContentSize -  reinterpret_cast<Byte_t*>(this) ;}
49     
50  private:
51
52   AliFlatESDTrigger(const AliFlatESDTrigger&);
53   AliFlatESDTrigger& operator=(const AliFlatESDTrigger&);
54
55   // --------------------------------------------------------------------------------
56   // -- Fixed size member objects
57   
58   UInt_t fContentSize;                      // Size of this object
59   Int_t  fTriggerIndex; // trigger index  
60    
61   // --------------------------------------------------------------------------------
62   // -- Variable Size Object
63
64   Byte_t fContent[1];                  // Variale size object, which contains all data
65
66 };
67
68
69 // _______________________________________________________________________________________________________
70 // inline implementation of some methods 
71
72 inline AliFlatESDTrigger::AliFlatESDTrigger():
73   fContentSize(1),
74   fTriggerIndex(0)
75 {   
76   // Default constructor
77   fContent[0] = '\0';
78 }
79
80 inline AliFlatESDTrigger::~AliFlatESDTrigger() 
81 {
82   // Destructor  
83 }
84
85 inline Int_t AliFlatESDTrigger::SetTriggerClass(  const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize )
86 {
87   // Set trigger class, returns non-zero when the memory needed exeeeds MaxSize
88
89   size_t len = strlen( TriggerClassName );
90
91   if( ( fContent + len ) > reinterpret_cast<Byte_t*>(this) + MaxSize ) return -1;
92   
93   fTriggerIndex = TriggerIndex;
94   fContentSize = len;
95   strcpy( reinterpret_cast<char*>(fContent), TriggerClassName );
96   return 0;
97 }
98
99 #endif