]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliHeader.cxx
Correct overloading of virtual functions in the derived classes (icc)
[u/mrichter/AliRoot.git] / STEER / AliHeader.cxx
index e9ae2cdf0f78c1cfe691f043f876fa9078041ee8..aa3dc1dea46153a0c9df67780d5152e336e3e34d 100644 (file)
  * 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)
 
@@ -52,7 +43,8 @@ AliHeader::AliHeader():
   fEvent(0),
   fEventNrInRun(0),
   fStack(0),
-  fGenHeader(0)
+  fGenHeader(0),
+  fDetHeaders(0)
 {
   //
   // Default constructor
@@ -69,7 +61,8 @@ AliHeader::AliHeader(const AliHeader& head):
   fEvent(0),
   fEventNrInRun(0),
   fStack(0),
-  fGenHeader(0)
+  fGenHeader(0),
+  fDetHeaders(0)
 {
   //
   // Copy constructor
@@ -86,7 +79,8 @@ AliHeader::AliHeader(Int_t run, Int_t event):
   fEvent(event),
   fEventNrInRun(0),
   fStack(0),
-  fGenHeader(0)
+  fGenHeader(0), 
+  fDetHeaders(0) 
 {
   //
   // Standard constructor
@@ -102,13 +96,28 @@ AliHeader::AliHeader(Int_t run, Int_t event, Int_t evNumber):
   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)
 {
@@ -120,6 +129,7 @@ void AliHeader::Reset(Int_t run, Int_t event)
   fNprimary=0;
   fNtrack=0;
   fEvent=event;
+  if (fDetHeaders) fDetHeaders->Clear();
 }
 
 //_______________________________________________________________________
@@ -134,6 +144,7 @@ void AliHeader::Reset(Int_t run, Int_t event, Int_t evNumber)
   fNtrack=0;
   fEvent=event;
   fEventNrInRun=evNumber;
+  if (fDetHeaders) fDetHeaders->Clear();
 }
 
 //_______________________________________________________________________
@@ -175,6 +186,49 @@ void AliHeader::SetGenEventHeader(AliGenEventHeader* header)
     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
 {
@@ -183,9 +237,9 @@ AliGenEventHeader*  AliHeader::GenEventHeader() const
 }
 
 //_______________________________________________________________________
-void AliHeader::Copy(AliHeader&) const
+void AliHeader::Copy(TObject&) const
 {
-  Fatal("Copy","Not implemented\n");
+  AliFatal("Not implemented");
 }