#include <stdio.h>
#include <TObjArray.h>
#include "AliLog.h"
#include "AliHeader.h"
#include "AliDetectorEventHeader.h"
#include "AliGenEventHeader.h"
ClassImp(AliHeader)
AliHeader::AliHeader():
fRun(-1),
fNvertex(0),
fNprimary(0),
fNtrack(0),
fEvent(0),
fEventNrInRun(0),
fTimeStamp(0),
fStack(0),
fGenHeader(0),
fDetHeaders(0)
{
}
AliHeader::AliHeader(const AliHeader& head):
TObject(head),
fRun(-1),
fNvertex(0),
fNprimary(0),
fNtrack(0),
fEvent(0),
fEventNrInRun(0),
fTimeStamp(0),
fStack(0),
fGenHeader(0),
fDetHeaders(0)
{
head.Copy(*this);
}
AliHeader::AliHeader(Int_t run, Int_t event):
fRun(run),
fNvertex(0),
fNprimary(0),
fNtrack(0),
fEvent(event),
fEventNrInRun(0),
fTimeStamp(0),
fStack(0),
fGenHeader(0),
fDetHeaders(0)
{
}
AliHeader::AliHeader(Int_t run, Int_t event, Int_t evNumber):
fRun(run),
fNvertex(0),
fNprimary(0),
fNtrack(0),
fEvent(event),
fEventNrInRun(evNumber),
fTimeStamp(0),
fStack(0),
fGenHeader(0),
fDetHeaders(0)
{
}
AliHeader::~AliHeader()
{
if (fDetHeaders) {
fDetHeaders->Delete();
delete fDetHeaders;
}
delete fGenHeader;
}
void AliHeader::Reset(Int_t run, Int_t event)
{
fRun=run;
fNvertex=0;
fNprimary=0;
fNtrack=0;
fEvent=event;
fTimeStamp=0;
if (fDetHeaders) fDetHeaders->Delete();
}
void AliHeader::Reset(Int_t run, Int_t event, Int_t evNumber)
{
fRun=run;
fNvertex=0;
fNprimary=0;
fNtrack=0;
fEvent=event;
fEventNrInRun=evNumber;
fTimeStamp=0;
if (fDetHeaders) fDetHeaders->Clear();
}
void AliHeader::Print(const char*) const
{
printf(
"\n=========== Header for run %d Event %d = beginning ======================================\n",
fRun,fEvent);
printf(" Number of Vertex %d\n",fNvertex);
printf(" Number of Primary %d\n",fNprimary);
printf(" Number of Tracks %d\n",fNtrack);
printf(" Time-stamp %ld\n",fTimeStamp);
printf(
"=========== Header for run %d Event %d = end ============================================\n\n",
fRun,fEvent);
}
AliStack* AliHeader::Stack() const
{
return fStack;
}
void AliHeader::SetStack(AliStack* stack)
{
fStack = stack;
}
void AliHeader::SetGenEventHeader(AliGenEventHeader* header)
{
fGenHeader = header;
}
void AliHeader::AddDetectorEventHeader(AliDetectorEventHeader* header)
{
if (!fDetHeaders) fDetHeaders = new TObjArray(77);
if (!header) {
Warning("AddDetectorEventHeader","Detector tries to add empty header \n");
return;
}
if (strlen(header->GetName()) == 0) {
Warning("AddDetectorEventHeader","Detector tries to add header without name \n");
return;
}
TObject *mod=fDetHeaders->FindObject(header->GetName());
if(mod) {
Warning("AddDetectorEventHeader","Detector %s tries to add more than one header \n", header->GetName());
return;
}
fDetHeaders->Add(header);
}
AliDetectorEventHeader* AliHeader::GetDetectorEventHeader(const char *name) const
{
if (!fDetHeaders) {
Warning("GetDetectorEventHeader","There are no detector specific headers for this event");
return 0x0;
}
return dynamic_cast<AliDetectorEventHeader*>(fDetHeaders->FindObject(name)) ;
}
AliGenEventHeader* AliHeader::GenEventHeader() const
{
return fGenHeader;
}
void AliHeader::Copy(TObject&) const
{
AliFatal("Not implemented");
}