]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliHeader.cxx
Using the event range in the selectors mode as well. To be used in CAF reco in order...
[u/mrichter/AliRoot.git] / STEER / AliHeader.cxx
index 88f76e54cf797521d3915b8aa0edbd1af15893ee..622eae9c55c01fbdb417eb5a35dff577d93ec700 100644 (file)
+/**************************************************************************
+ * 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$ */
+
+//-----------------------------------------------------------------------
+//     Simulation event header class
+//     Collaborates with AliRun, AliStack, and AliGenReaderTreeK classes
+//     Many other classes depend on it
+//     Author:
+//-----------------------------------------------------------------------
+
+
+#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)
 {
-  fRun=0;      
-  fNvertex=0;
-  fNprimary=0;
-  fNtrack=0;
-  fEvent=0;
+  //
+  // Default constructor
+  //
+ }
+
+//_______________________________________________________________________
+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;
+  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
+  //
   fRun=run;    
   fNvertex=0;
   fNprimary=0;
   fNtrack=0;
   fEvent=event;
+  fEventNrInRun=evNumber;
+  if (fDetHeaders) fDetHeaders->Clear();
 }
 
-void AliHeader::Dump()
+//_______________________________________________________________________
+void AliHeader::Print(const char*) const
 {
+  //
+  // Dumps header content
+  //
   printf(
 "\n=========== Header for run %d Event %d = beginning ======================================\n",
   fRun,fEvent);
@@ -41,4 +162,85 @@ void AliHeader::Dump()
   printf(
   "=========== Header for run %d Event %d = end ============================================\n\n",
   fRun,fEvent);
+
+}
+
+//_______________________________________________________________________
+AliStack* AliHeader::Stack() const
+{
+// Return pointer to stack
+    return fStack;
+}
+
+//_______________________________________________________________________
+void AliHeader::SetStack(AliStack* stack)
+{
+// Set pointer to stack
+    fStack = stack;
+}
+
+//_______________________________________________________________________
+void AliHeader::SetGenEventHeader(AliGenEventHeader* header)
+{
+// Set pointer to header for generated event
+    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
+{
+// Get pointer to header for generated event
+    return fGenHeader;
+}
+
+//_______________________________________________________________________
+void AliHeader::Copy(TObject&) const
+{
+  AliFatal("Not implemented");
+}
+
+
+