+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)) ;
+}
+
+