X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliHeader.cxx;h=38703817358de87be9217dec903269dc638597d1;hb=039459364367f289dbf54bad6a559cc83254c4b9;hp=45989c0a41b941dd1cd68d7b497b6744a44c3893;hpb=9e1a0ddb8feb3fb19ca04ee19673f48c265a8fe6;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliHeader.cxx b/STEER/AliHeader.cxx index 45989c0a41b..38703817358 100644 --- a/STEER/AliHeader.cxx +++ b/STEER/AliHeader.cxx @@ -13,53 +13,127 @@ * 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 +#include +#include "AliLog.h" #include "AliHeader.h" -#include +#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(fDetHeaders->FindObject(name)) ; +} + + +//_______________________________________________________________________ +AliGenEventHeader* AliHeader::GenEventHeader() const { // Get pointer to header for generated event return fGenHeader; } + +//_______________________________________________________________________ +void AliHeader::Copy(TObject&) const +{ + AliFatal("Not implemented"); +} + + +