* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.10 2001/10/09 18:00:35 hristov
-Temporary fix to provide unique event number in the simulation (J.Chudoba)
+/* $Id$ */
-Revision 1.9 2001/05/23 08:54:53 hristov
-Typo corrected
+//-----------------------------------------------------------------------
+// Simulation event header class
+// Collaborates with AliRun, AliStack, and AliGenReaderTreeK classes
+// Many other classes depend on it
+// Author:
+//-----------------------------------------------------------------------
-Revision 1.8 2001/05/23 08:50:01 hristov
-Weird inline removed
-Revision 1.7 2001/05/16 14:57:22 alibrary
-New files for folders and Stack
-
-Revision 1.4 2000/10/02 21:28:14 fca
-Removal of useless dependecies via forward declarations
-
-Revision 1.3 2000/07/12 08:56:25 fca
-Coding convention correction and warning removal
-
-Revision 1.2 1999/09/29 09:24:29 fca
-Introduction of the Copyright and cvs Log
-
-*/
+#include <stdio.h>
+#include <TObjArray.h>
+#include "AliLog.h"
#include "AliHeader.h"
-#include <stdio.h>
+#include "AliDetectorEventHeader.h"
+#include "AliGenEventHeader.h"
+
ClassImp(AliHeader)
fEvent(0),
fEventNrInRun(0),
fStack(0),
- fGenHeader(0)
+ fGenHeader(0),
+ fDetHeaders(0)
{
//
// Default constructor
fEvent(0),
fEventNrInRun(0),
fStack(0),
- fGenHeader(0)
+ fGenHeader(0),
+ fDetHeaders(0)
{
//
// Copy constructor
fEvent(event),
fEventNrInRun(0),
fStack(0),
- fGenHeader(0)
+ fGenHeader(0),
+ fDetHeaders(0)
{
//
// Standard constructor
fEvent(event),
fEventNrInRun(evNumber),
fStack(0),
- fGenHeader(0)
+ fGenHeader(0),
+ fDetHeaders(0)
{
//
// Standard constructor
//
}
+AliHeader::~AliHeader()
+{
+ //
+ // Destructor
+ //
+ if (fDetHeaders) {
+ fDetHeaders->Delete();
+ delete fDetHeaders;
+ }
+ delete fGenHeader;
+}
+
+
+
//_______________________________________________________________________
void AliHeader::Reset(Int_t run, Int_t event)
{
fNprimary=0;
fNtrack=0;
fEvent=event;
+ if (fDetHeaders) fDetHeaders->Clear();
}
//_______________________________________________________________________
fNtrack=0;
fEvent=event;
fEventNrInRun=evNumber;
+ if (fDetHeaders) fDetHeaders->Clear();
}
//_______________________________________________________________________
fGenHeader = header;
}
+void AliHeader::AddDetectorEventHeader(AliDetectorEventHeader* header)
+{
+// Add a detector specific header
+//
+// Create the array of headers
+ if (!fDetHeaders) fDetHeaders = new TObjArray(77);
+
+// Some basic checks
+
+ if (!header) {
+ Warning("AddDetectorEventHeader","Detector %s tries to add empty header \n", header->GetName());
+ return;
+ }
+
+ if (strlen(header->GetName()) == 0) {
+ Warning("AddDetectorEventHeader","Detector %s tries to add header without name \n", header->GetName());
+ return;
+ }
+
+ TObject *mod=fDetHeaders->FindObject(header->GetName());
+ if(mod) {
+ Warning("AddDetectorEventHeader","Detector %s tries to add more than one header \n", header->GetName());
+ return;
+ }
+
+
+// Add the header to the list
+ fDetHeaders->Add(header);
+}
+
+AliDetectorEventHeader* AliHeader::GetDetectorEventHeader(const char *name) const
+{
+//
+// Returns detector specific event header
+//
+ 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
{
}
//_______________________________________________________________________
-void AliHeader::Copy(AliHeader&) const
+void AliHeader::Copy(TObject&) const
{
- Fatal("Copy","Not implemented\n");
+ AliFatal("Not implemented");
}