--- /dev/null
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+/* $Id$ */
+
+//---------------------------------------------------------------------
+// Event header base class for detectors.
+// Stores detector specific information
+// per event.
+//
+// Author: andreas.morsch@cern.ch
+//---------------------------------------------------------------------
+
+#include "AliDetectorEventHeader.h"
+ClassImp(AliDetectorEventHeader)
+
+
+//_______________________________________________________________________
+AliDetectorEventHeader::AliDetectorEventHeader()
+{
+ //
+ // Default Constructor
+ //
+}
+
+//_______________________________________________________________________
+AliDetectorEventHeader::AliDetectorEventHeader(const char * name):
+ TNamed(name, "Detector Event Header")
+{
+ //
+ // Constructor
+ //
+}
--- /dev/null
+#ifndef ALIDETECTOREVENTHEADER_H
+#define ALIDETECTOREVENTHEADER_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/* $Id$ */
+
+//---------------------------------------------------------------------
+// Event header base class for detetors
+// Stores detector specific information
+// Author: andreas.morsch@cern.ch
+//---------------------------------------------------------------------
+
+#include <TNamed.h>
+class AliDetectorEventHeader : public TNamed
+{
+ public:
+
+ AliDetectorEventHeader(const char* name);
+ AliDetectorEventHeader();
+ virtual ~AliDetectorEventHeader() {}
+protected:
+ ClassDef(AliDetectorEventHeader,0) // Event header for detectors
+};
+
+#endif
// Author:
//-----------------------------------------------------------------------
+
#include <stdio.h>
+#include <TObjArray.h>
#include "AliLog.h"
#include "AliHeader.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
{
class AliStack;
class AliGenEventHeader;
-
+class AliDetectorEventHeader;
+class TObjArray;
+
class AliHeader : public TObject {
public:
AliHeader();
AliHeader(const AliHeader& head);
AliHeader(Int_t run, Int_t event);
AliHeader(Int_t run, Int_t eventSerialNr, Int_t evNrInRun);
- virtual ~AliHeader() {}
+ virtual ~AliHeader();
+
virtual void Reset(Int_t run, Int_t event);
virtual void Reset(Int_t run, Int_t eventSerialNr, Int_t evNrInRun);
virtual void SetGenEventHeader(AliGenEventHeader* header);
virtual AliGenEventHeader* GenEventHeader() const;
+ virtual void AddDetectorEventHeader(AliDetectorEventHeader* header);
+ virtual AliDetectorEventHeader* GetDetectorEventHeader(const char *name) const;
+
+
virtual void Print(const char *opt=0) const;
AliHeader& operator=(const AliHeader& head)
void Copy(TObject& head) const;
- Int_t fRun; //Run number
- Int_t fNvertex; //Number of vertices
- Int_t fNprimary; //Number of primary tracks
- Int_t fNtrack; //Number of tracks
- Int_t fEvent; //Event number (serial in the file)
- Int_t fEventNrInRun; //Unique Event number within the run
- AliStack *fStack; //Pointer to stack
- AliGenEventHeader* fGenHeader; //Event Header for Generator
-
- ClassDef(AliHeader,2) //Alice event header
+ Int_t fRun; //Run number
+ Int_t fNvertex; //Number of vertices
+ Int_t fNprimary; //Number of primary tracks
+ Int_t fNtrack; //Number of tracks
+ Int_t fEvent; //Event number (serial in the file)
+ Int_t fEventNrInRun; //Unique Event number within the run
+ AliStack *fStack; //Pointer to stack
+ AliGenEventHeader* fGenHeader; //Event Header for Generator
+ TObjArray* fDetHeaders; //Event Headers for detector specific information
+
+ ClassDef(AliHeader,3) //Alice event header
};
#endif
#pragma link C++ class AliReconstruction+;
#pragma link C++ class AliVertexGenFile+;
#pragma link C++ class AliVertexer+;
+#pragma link C++ class AliDetectorEventHeader+;
#endif
AliMemoryWatcher.cxx \
AliVertexer.cxx \
AliMC.cxx AliSimulation.cxx AliReconstruction.cxx AliVertexGenFile.cxx \
-AliReconstructor.cxx
+AliReconstructor.cxx \
+AliDetectorEventHeader.cxx
HDRS:= $(SRCS:.cxx=.h)