#include <TSystem.h>
#include <TTimeStamp.h>
+#include <TBranch.h>
#include "AliESD.h"
}
}
+static void BranchResetBit(TBranch *b)
+{
+ // Reset MapObject on this branch and all the sub-branches
+
+ b->ResetBit( kBranchObject | kBranchAny ); // Or in newer ROOT: b->ResetBit( kMapObject )
+ TIter next( b->GetListOfBranches() );
+ TBranch *sub = 0;
+ while ( (sub = (TBranch*)next() ) ) {
+ BranchResetBit( sub );
+ }
+}
+
//______________________________________________________________________________
Bool_t AliTagDB::Create(const char* fileName)
{
Int_t bufsize = 32000;
Int_t split = 1;
const char *tagname = fEventTag->GetName();
- fTree->Branch("TAG", tagname, &fEventTag, bufsize, split);
+ TBranch * b = fTree->Branch("TAG", tagname, &fEventTag, bufsize, split);
+ BranchResetBit(b);
return kTRUE;
}
// Return filename based on hostname and date and time. This will make
// each file unique. The tags will be stored in the /data1/tags directory.
- static char fname[1024];
+ static TString fname;
const char *fs = fFS;
// check that fs exists (crude check fails if fs is a file)
if (header) runNumber = header->Get("RunNb");
}
- char hostname[1024];
- strcpy(hostname, gSystem->HostName());
-
- char *s;
- if ((s = strchr(hostname, '.')))
- *s = 0;
+ TString hostname;
+ hostname.Form("%s",gSystem->HostName());
+ if ( hostname.First('.') > 0 ) hostname.Resize(hostname.First('.'));
TTimeStamp ts;
- sprintf(fname, "%s/Run%d.%s_%d_%d_%d.RAW.tag.root", fs, runNumber, hostname,
- ts.GetDate(), ts.GetTime(), ts.GetNanoSec());
+ fname.Form("%s/Run%d.%s_%d_%d_%d.RAW.tag.root", fs, runNumber, hostname.Data(),
+ ts.GetDate(), ts.GetTime(), ts.GetNanoSec());
- return fname;
+ return fname.Data();
}