X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliHeader.cxx;h=9e1a49ab309c9e911a0855c1ec8733f9a12b9ddf;hb=6c75395673b08bc963b26f6362007c7fce798e0b;hp=84a0f80f5d7d8aa4bb2f83eef21b9258ec9c2c67;hpb=94de381804dbc3c6cc154b06fc58284dc8266705;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliHeader.cxx b/STEER/AliHeader.cxx index 84a0f80f5d7..9e1a49ab309 100644 --- a/STEER/AliHeader.cxx +++ b/STEER/AliHeader.cxx @@ -13,46 +13,127 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* -$Log$ -Revision 1.3 2000/07/12 08:56:25 fca -Coding convention correction and warning removal +/* $Id$ */ -Revision 1.2 1999/09/29 09:24:29 fca -Introduction of the Copyright and cvs Log +//----------------------------------------------------------------------- +// Simulation event header class +// Collaborates with AliRun, AliStack, and AliGenReaderTreeK classes +// Many other classes depend on it +// Author: +//----------------------------------------------------------------------- -*/ +#include +#include + +#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; } -AliHeader::AliHeader(Int_t run, Int_t event) +//_______________________________________________________________________ +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, 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 @@ -62,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 *) +//_______________________________________________________________________ +void AliHeader::Print(const char*) const { // // Dumps header content @@ -78,4 +162,85 @@ void AliHeader::Print(const char *) 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(fDetHeaders->FindObject(name)) ; +} + + +//_______________________________________________________________________ +AliGenEventHeader* AliHeader::GenEventHeader() const +{ +// Get pointer to header for generated event + return fGenHeader; +} + +//_______________________________________________________________________ +void AliHeader::Copy(TObject&) const +{ + AliFatal("Not implemented"); +} + + +