From 0f8cecc493bb6501d91c64f0fd2fa4301f8f5344 Mon Sep 17 00:00:00 2001 From: shahoian Date: Sat, 10 Dec 2011 22:29:56 +0000 Subject: [PATCH] Tag filename was incorrectly composed if reconstruction started not from 1st ev. Added Add method to merge tags of same chunk reconstructed in few steps --- STEER/STEERBase/AliRunTag.cxx | 45 +++++++++++++++++++++++++++++++++-- STEER/STEERBase/AliRunTag.h | 3 ++- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/STEER/STEERBase/AliRunTag.cxx b/STEER/STEERBase/AliRunTag.cxx index ef6a80393be..363494924ce 100644 --- a/STEER/STEERBase/AliRunTag.cxx +++ b/STEER/STEERBase/AliRunTag.cxx @@ -170,7 +170,6 @@ AliRunTag& AliRunTag::operator = (const AliRunTag& tag) { fAliceCalibrationVersion = tag.fAliceCalibrationVersion ; fAliceDataType = tag.fAliceDataType ; // fNumEvents = tag.fNumEvents ; - fNumFiles = tag.fNumFiles; fBeamTriggers = tag.fBeamTriggers; fCollisionTriggers = tag.fCollisionTriggers; fEmptyTriggers = tag.fEmptyTriggers; @@ -204,7 +203,7 @@ AliRunTag& AliRunTag::operator = (const AliRunTag& tag) { fEventSpecies = new Bool_t[fESLength] ; memcpy(fEventSpecies, tag.fEventSpecies, fESLength*sizeof(Bool_t)) ; } - for (int ifl=0; iflGetEntries(); ifile++) @@ -213,6 +212,48 @@ AliRunTag& AliRunTag::operator = (const AliRunTag& tag) { return *this ; } +//___________________________________________________________________________ +Bool_t AliRunTag::Add(const AliRunTag* tag) +{ + // merge two pieces + if (fAliceRunId==-1) { // empty + *this = *tag; + return kTRUE; + } + if (fAliceRunId != tag->fAliceRunId) { + AliWarning(Form("Run IDs are different: %d %d",fAliceRunId,tag->fAliceRunId)); + return kFALSE; + } + // real merging + fBeamTriggers += tag->fBeamTriggers; + fCollisionTriggers += tag->fCollisionTriggers; + fEmptyTriggers += tag->fEmptyTriggers; + fASideTriggers += tag->fASideTriggers; + fCSideTriggers += tag->fCSideTriggers; + fHMTriggers += tag->fHMTriggers; + fMuonTriggers += tag->fMuonTriggers; + AliFileTag* eftag = 0; + // + for (int i=0;ifNumFiles;i++) { + AliFileTag* tftag = (AliFileTag*)tag->GetFileTag(i); + if (fNumFiles>0) eftag = (AliFileTag*)GetFileTag(fNumFiles-1); + else { + eftag = new AliFileTag(); + eftag->SetMD5(""); + eftag->SetTURL(""); + eftag->SetSize(0); + AddFileTag(eftag); + } + int nev = tftag->GetNEvents(); + for (int j=0;jGetEventTag(j); + if (tge) eftag->AddEventTag(*tge); + } + } + + return kTRUE; +} + //___________________________________________________________________________ void AliRunTag::CopyStandardContent(AliRunTag *oldtag) { //function that copies the run, lhc and detector levels diff --git a/STEER/STEERBase/AliRunTag.h b/STEER/STEERBase/AliRunTag.h index deb14f806ec..5f579125c4b 100644 --- a/STEER/STEERBase/AliRunTag.h +++ b/STEER/STEERBase/AliRunTag.h @@ -32,6 +32,7 @@ class AliRunTag : public TObject { virtual ~AliRunTag(); AliRunTag(const AliRunTag& qa) ; AliRunTag& operator = (const AliRunTag& tag) ; + Bool_t Add(const AliRunTag* tag) ; //____________________________________________________// void SetRunId(Int_t Pid) {fAliceRunId = Pid;} void SetMagneticField(Float_t Pmag) {fAliceMagneticField = Pmag;} @@ -117,7 +118,7 @@ class AliRunTag : public TObject { Bool_t * GetEventSpecies() const {return fEventSpecies;} Int_t GetESLength() const { return fESLength ; } Int_t GetFileId(const char *guid); - + Int_t GetNumFiles() const {return fNumFiles;} TString GetActiveTriggerClasses() const {return fActiveTriggerClasses; } //____________________________________________________// -- 2.43.5