6 #ifndef ADF_AgataKeyFactory
9 #ifndef ADF_AgataFrameFactory
27 ConfAgent::theGlobalAgent();
29 const UInt_t MaxSizeFrame = 100u*
aMByte;
30 const UInt_t MaxSizeMessage = 20u*
aByte;
32 FILE *fp = fopen(name,
"r");
33 if ( fp == NULL ) {
printf(
"File %s does not exist \n",name);
return; }
36 KeyFactory &main_key_factory = KeyFactory::theMainFactory();
37 KeyFactory::Register(
"Agata");
47 Char_t message[MaxSizeMessage];
52 TTree *tree =
new TTree(
"AnalyzerPrimary",name);
53 tree->Branch(
"key",&akey,
"FrameLength/i:EventNumber/i:TimeStamp/l:MessageType/C");
59 memset(&akey,0,
sizeof(akey));
62 akey.lengthframe = fBuffer.
Import(fp,
sizeof(akey.lengthframe));
63 if ( akey.lengthframe !=
sizeof(akey.lengthframe) )
66 fBuffer.
SetOffset(); fBuffer >> akey.lengthframe;
67 if ( akey.lengthframe > MaxSizeFrame ) {
68 cout <<
" limit for a frame to MaxSizeFrame="
69 << MaxSizeFrame/aMByte
70 <<
" MBytes, likely to be the wrong endian " <<
endl;
73 if ( akey.lengthframe == 0u )
return;
76 fBuffer.
Import(fp,akey.lengthframe-
sizeof(akey.lengthframe));
81 if ( fBuffer.
FreeSize() >=
sizeof(akey.lengthframe) )
82 fBuffer >> akey.lengthframe;
83 if ( fBuffer.
FreeSize() >=
sizeof(messagetype) )
84 fBuffer >> messagetype;
85 if ( fBuffer.
FreeSize() >=
sizeof(akey.eventnumber) )
86 fBuffer >> akey.eventnumber;
87 if ( fBuffer.
FreeSize() >=
sizeof(akey.timestamp) )
88 fBuffer >> akey.timestamp;
89 strcpy(akey.message,AgataKeyFactory::theFactory()->GetMessage(messagetype));
93 cout <<
"Entries in the tree " << tree->GetEntries() <<
endl;
96 ConfAgent::KilltheGlobalAgent();
107 const char *keytype =
"agata", UShort_t v1 = 0,UShort_t v2 = 0)
109 ConfAgent::theGlobalAgent();
111 const UInt_t MaxSizeFrame = 100u*
aMByte;
112 const UInt_t MaxSizeMessage = 20u*
aByte;
const Int_t MaxKey = 10u;
114 FILE *fp = fopen(name,
"r");
115 if ( fp == NULL ) {
printf(
"File %s does not exist \n",name);
return; }
118 KeyFactory &main_key_factory = KeyFactory::theMainFactory();
119 KeyFactory::Register(
"Agata");
123 {
printf(
"AgataKey %s [%d,%d] does not exist \n",keytype,v1,v2);
return; }
133 Char_t message[MaxSizeMessage];
137 UInt_t lengthframe[MaxKey];
138 UInt_t eventnumber[MaxKey];
139 ULong64_t timestamp[MaxKey];
140 Char_t message[MaxKey][MaxSizeMessage];
144 TTree *tree =
new TTree(
"AnalyserEmbedded",name);
145 tree->Branch(
"PrimaryKey",&akey,
"FrameLength/i:EventNumber/i:TimeStamp/l:MessageType/C");
146 tree->Branch(
"NEmbedded",&N,
"NEmbedded/i");
147 tree->Branch(
"EmbFrameLength",lengthframe,
"EmbFrameLength[NEmbedded]/i");
148 tree->Branch(
"EmbEventNumber",eventnumber,
"EmbEventNumber[NEmbedded]/i");
149 tree->Branch(
"EmbTimeStamp",timestamp,
"EmbEventNumber[NEmbedded]/l");
151 for (Int_t i = 0u; i < MaxKey; i++ ) {
152 TString tmp1 =
"EmbMessageType", tmp2 =
"EmbMessageType";
154 tmp2 += i; tmp2 +=
"/C";
155 tree->Branch(tmp1.Data(),message[i],tmp2.Data());
162 memset(&akey,0,
sizeof(akey));
163 memset(lengthframe,0,MaxKey*
sizeof(lengthframe[0]));
164 memset(eventnumber,0,MaxKey*
sizeof(eventnumber[0]));
165 memset(timestamp,0,MaxKey*
sizeof(timestamp[0]));
166 memset(message,0,MaxKey*MaxSizeMessage);
185 strcpy(akey.message,AgataKeyFactory::theFactory()->GetMessage(messagetype));
187 if ( akey.lengthframe > MaxSizeFrame ) {
188 cout <<
" limit for a frame to MaxSizeFrame="
189 << MaxSizeFrame/aMByte
190 <<
" MBytes, likely to be the wrong endian " <<
endl;
198 if ( gDebug == 1) pkey->
Print();
205 UInt_t current = fBuffer.
Offset();
207 if ( fBuffer.
FreeSize() >=
sizeof(tmpkey.lengthframe) )
208 { fBuffer >> tmpkey.lengthframe; }
210 if ( tmpkey.lengthframe == 0u )
212 if ( fBuffer.
FreeSize() >=
sizeof(messagetype) )
213 { fBuffer >> messagetype; }
215 if ( fBuffer.
FreeSize() >=
sizeof(tmpkey.eventnumber) )
216 { fBuffer >> tmpkey.eventnumber; }
218 if ( fBuffer.
FreeSize() >=
sizeof(tmpkey.timestamp) )
219 { fBuffer >> tmpkey.timestamp; }
224 if ( fBuffer.
IsStatus(BaseBuffer::kGood) ) {
225 lengthframe[N] = tmpkey.lengthframe;
226 eventnumber[N] = tmpkey.eventnumber;
227 timestamp[N] = tmpkey.timestamp;
228 strcpy(message[N],AgataKeyFactory::theFactory()->GetMessage(messagetype));
233 fBuffer.
SetOffset(current+tmpkey.lengthframe);
236 else {
printf(
"NO\n");
break; }
238 if ( N > 0u ) tree->Fill();
240 cout <<
"Entries in the tree " << tree->GetEntries() <<
endl;
243 ConfAgent::KilltheGlobalAgent();
printf("******************************************************************** \n")
void SetStatus(BufferIO::EStatus s=BaseBuffer::kGood)
header file for AgataFrameFactory.cpp
virtual Bool_t Copy(const Char_t *, UInt_t)
Copy an external buffer to this key.
virtual void Print(std::ostream &out=std::cout) const
Print the content of the key.
virtual ULong64_t GetTimeStamp() const =0
To set the timestamp.
UInt_t Offset() const
it returns the current position in the buffer
void ADFAnalyzerEmbbeded(const char *name, const char *keytype="agata", UShort_t v1=0, UShort_t v2=0)
virtual UInt_t GetKeyLength() const
Unique number corresponding to a type of Key.
virtual UInt_t GetEventNumber() const =0
To get the event number encoded.
void ADFAnalyzerPrimary(const char *name)
Base class for version numbers.
virtual UInt_t GetDataLength() const
header file for BufferIO.cpp
UInt_t FreeSize() const
it returns the number of free bytes to the end
const Char_t * GetAddress() const
Pointer to the current underlying array of bytes.
header file for AgataKeyFactory.cpp
virtual Key * New(const FactoryItem &)
build a key using item.
ADF::LogMessage & endl(ADF::LogMessage &log)
header file for ConfAgent.cpp
UInt_t Import(const Char_t *from, UInt_t size_ext_buf)
Import the given array in this buffer.
virtual UInt_t GetFrameLength() const
Bool_t IsStatus(BufferIO::EStatus s) const
virtual UInt_t GetMessage() const =0
To get the message type encoded.
UInt_t SetOffset(UInt_t off=0u) const
change the current position.