]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliHeader.cxx
Coding rule violations fixed.
[u/mrichter/AliRoot.git] / STEER / AliHeader.cxx
index 45989c0a41b941dd1cd68d7b497b6744a44c3893..38703817358de87be9217dec903269dc638597d1 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.4  2000/10/02 21:28:14  fca
-Removal of useless dependecies via forward declarations
+/* $Id$ */
 
-Revision 1.3  2000/07/12 08:56:25  fca
-Coding convention correction and warning removal
+//-----------------------------------------------------------------------
+//     Simulation event header class
+//     Collaborates with AliRun, AliStack, and AliGenReaderTreeK classes
+//     Many other classes depend on it
+//     Author:
+//-----------------------------------------------------------------------
 
-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)
 
-AliHeader::AliHeader()
+//_______________________________________________________________________
+AliHeader::AliHeader():
+  fRun(-1),
+  fNvertex(0),
+  fNprimary(0),
+  fNtrack(0),
+  fEvent(0),
+  fEventNrInRun(0),
+  fStack(0),
+  fGenHeader(0),
+  fDetHeaders(0)
 {
   //
   // Default constructor
   //
-  fRun=0;      
-  fNvertex=0;
-  fNprimary=0;
-  fNtrack=0;
-  fEvent=0;
-  fStack=0;
-  fGenHeader = 0;
+ }
+
+//_______________________________________________________________________
+AliHeader::AliHeader(const AliHeader& head):
+  TObject(head),
+  fRun(-1),
+  fNvertex(0),
+  fNprimary(0),
+  fNtrack(0),
+  fEvent(0),
+  fEventNrInRun(0),
+  fStack(0),
+  fGenHeader(0),
+  fDetHeaders(0)
+{
+  //
+  // Copy constructor
+  //
+  head.Copy(*this);
+}
+
+//_______________________________________________________________________
+AliHeader::AliHeader(Int_t run, Int_t event):
+  fRun(run),
+  fNvertex(0),
+  fNprimary(0),
+  fNtrack(0),
+  fEvent(event),
+  fEventNrInRun(0),
+  fStack(0),
+  fGenHeader(0), 
+  fDetHeaders(0) 
+{
+  //
+  // Standard constructor
+  //
 }
 
-AliHeader::AliHeader(Int_t run, Int_t event)
+//_______________________________________________________________________
+AliHeader::AliHeader(Int_t run, Int_t event, Int_t evNumber):
+  fRun(run),
+  fNvertex(0),
+  fNprimary(0),
+  fNtrack(0),
+  fEvent(event),
+  fEventNrInRun(evNumber),
+  fStack(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)
+{
+  //
+  // Resets the header with new run and event number
+  //
   fRun=run;    
   fNvertex=0;
   fNprimary=0;
   fNtrack=0;
   fEvent=event;
-  fStack=0;
-  fGenHeader = 0;
+  if (fDetHeaders) fDetHeaders->Delete();
 }
 
-void AliHeader::Reset(Int_t run, Int_t event)
+//_______________________________________________________________________
+void AliHeader::Reset(Int_t run, Int_t event, Int_t evNumber)
 {
   //
   // Resets the header with new run and event number
@@ -69,9 +143,12 @@ void AliHeader::Reset(Int_t run, Int_t event)
   fNprimary=0;
   fNtrack=0;
   fEvent=event;
+  fEventNrInRun=evNumber;
+  if (fDetHeaders) fDetHeaders->Clear();
 }
 
-void AliHeader::Print(const char* option)
+//_______________________________________________________________________
+void AliHeader::Print(const char*) const
 {
   //
   // Dumps header content
@@ -88,26 +165,82 @@ void AliHeader::Print(const char* option)
 
 }
 
-inline AliStack* AliHeader::Stack() const
+//_______________________________________________________________________
+AliStack* AliHeader::Stack() const
 {
 // Return pointer to stack
     return fStack;
 }
 
-inline void AliHeader::SetStack(AliStack* stack)
+//_______________________________________________________________________
+void AliHeader::SetStack(AliStack* stack)
 {
 // Set pointer to stack
     fStack = stack;
 }
 
-inline void AliHeader::SetGenEventHeader(AliGenEventHeader* header)
+//_______________________________________________________________________
+void AliHeader::SetGenEventHeader(AliGenEventHeader* header)
 {
 // Set pointer to header for generated event
     fGenHeader = header;
 }
 
-inline  AliGenEventHeader*  AliHeader::GenEventHeader() const
+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 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;
+    }
+    
+
+//  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
 {
 // Get pointer to header for generated event
     return fGenHeader;
 }
+
+//_______________________________________________________________________
+void AliHeader::Copy(TObject&) const
+{
+  AliFatal("Not implemented");
+}
+
+
+