#include <Riostream.h>
#include <TFile.h>
#include <TString.h>
#include <TTree.h>
#include <TSystem.h>
#include <TChain.h>
#include <TList.h>
#include <TObjString.h>
#include <TLorentzVector.h>
#include <TMap.h>
#include <TTimeStamp.h>
#include <TRefArray.h>
#include <TGrid.h>
#include <TGridResult.h>
#include "AliRunTag.h"
#include "AliEventTag.h"
#include "AliESD.h"
#include "AliESDEvent.h"
#include "AliESDVertex.h"
#include "AliLog.h"
#include "AliGRPObject.h"
#include "AliESDTagCreator.h"
using std::ifstream;
ClassImp(AliESDTagCreator)
AliESDTagCreator::AliESDTagCreator() :
AliTagCreator(),
fChain(new TChain("esdTree")), fGUIDList(new TList()),
fMD5List(new TList()), fTURLList(new TList()), fBranches(""),
meminfo(new MemInfo_t) {
}
AliESDTagCreator::~AliESDTagCreator() {
delete fChain;
delete fGUIDList;
delete fMD5List;
delete fTURLList;
delete meminfo;
}
Bool_t AliESDTagCreator::ReadGridCollection(TGridResult *fresult) {
Int_t nEntries = fresult->GetEntries();
TString alienUrl;
Int_t counter = 0;
for(Int_t i = 0; i < nEntries; i++) {
alienUrl = fresult->GetKey(i,"turl");
fChain->Add(alienUrl);
counter += 1;
}
if (fChain->GetEntries() > 0) {
AliInfo(Form("ESD chain created......."));
AliInfo(Form("Chain entries: %lld",fChain->GetEntries()));
} else {
AliWarning(Form("No ESD files found !"));
return kFALSE;
}
SwitchOffBranches();
CreateTag(fChain,"grid");
return kTRUE;
}
Bool_t AliESDTagCreator::ReadLocalCollection(const char *localpath) {
void *dira = gSystem->OpenDirectory(localpath);
Char_t fPath[512];
const char * dirname = 0x0;
const char * filename = 0x0;
const char * pattern = "AliESDs.root";
Int_t counter = 0;
while((dirname = gSystem->GetDirEntry(dira))) {
snprintf(fPath, 512,"%s/%s",localpath,dirname);
void *dirb = gSystem->OpenDirectory(fPath);
while((filename = gSystem->GetDirEntry(dirb))) {
if(strstr(filename,pattern)) {
TString fESDFileName;
fESDFileName = fPath;
fESDFileName += "/";
fESDFileName += pattern;
fChain->Add(fESDFileName);
counter += 1;
}
}
}
AliInfo(Form("ESD chain created......."));
AliInfo(Form("Chain entries: %lld",fChain->GetEntries()));
SwitchOffBranches();
CreateTag(fChain,"local");
return kTRUE;
}
Bool_t AliESDTagCreator::ReadCAFCollection(const char *filename) {
ifstream in;
in.open(filename);
Int_t counter = 0;
TString esdfile;
while(in.good()) {
in >> esdfile;
if (!esdfile.Contains("root")) continue;
fChain->Add(esdfile);
counter += 1;
}
AliInfo(Form("ESD chain created......."));
AliInfo(Form("Chain entries: %lld",fChain->GetEntries()));
SwitchOffBranches();
CreateTag(fChain,"proof");
return kTRUE;
}
void AliESDTagCreator::CreateTag(TChain* chain, const char *type) {
TString fSession = type;
TString fguid, fmd5, fturl, foldguid;
TString fTempGuid;
Int_t iRunNumber = 0;
AliInfo(Form("Creating the ESD tags......."));
Int_t firstEvent = 0,lastEvent = 0;
AliESDEvent *esd = new AliESDEvent();
esd->ReadFromTree(chain);
Int_t iInitRunNumber = -1;
chain->GetEntry(0);
TFile *f = chain->GetFile();
fTempGuid = f->GetUUID().AsString();
TString localFileName = "Run"; localFileName += esd->GetRunNumber();
localFileName += ".Event"; localFileName += firstEvent; localFileName += "_"; localFileName += chain->GetEntries();
localFileName += ".ESD.tag.root";
TString fileName;
if(fStorage == 0) {
fileName = localFileName.Data();
AliInfo(Form("Writing tags to local file: %s",fileName.Data()));
}
else if(fStorage == 1) {
TString alienLocation = "/alien";
alienLocation += gGrid->Pwd();
alienLocation += fgridpath.Data();
alienLocation += "/";
alienLocation += localFileName;
alienLocation += "?se=";
alienLocation += fSE.Data();
fileName = alienLocation.Data();
AliInfo(Form("Writing tags to grid file: %s",fileName.Data()));
}
TFile* ftag = TFile::Open(fileName, "recreate");
AliRunTag *tag = new AliRunTag();
AliEventTag *evTag = new AliEventTag();
TTree * ttag = new TTree("T","A Tree with event tags");
TBranch * btag = ttag->Branch("AliTAG", &tag);
btag->SetCompressionLevel(9);
tag->SetMagneticField(esd->GetMagneticField());
tag->SetBeamEnergy(esd->GetBeamEnergy());
tag->SetBeamType(TString(esd->GetBeamType()));
tag->SetActiveTriggerClasses(esd->GetESDRun()->GetActiveTriggerClasses());
foldguid = "";
for(Int_t iEventNumber = 0; iEventNumber < chain->GetEntries(); iEventNumber++) {
FillEventTag(chain, evTag, iEventNumber, esd);
if(iEventNumber == 0) iInitRunNumber = esd->GetRunNumber();
iRunNumber = esd->GetRunNumber();
if(iRunNumber != iInitRunNumber) AliFatal("Inconsistency of run numbers in the AliESD - You are trying to merge different runs!!!");
TFile *file = chain->GetFile();
fguid = file->GetUUID().AsString();
if (foldguid == fguid) {
tag->AddEventTag(*evTag);
}
else {
AliFileTag *nftag = new AliFileTag();
nftag->SetGUID(fguid);
fturl = file->GetName();
if(fSession == "grid") {
nftag->SetMD5("");
nftag->SetTURL(fturl);
nftag->SetSize(0);
}
else {
nftag->SetPath(fturl);
nftag->SetSize(0);
nftag->SetMD5("");
nftag->SetTURL(fturl);
}
foldguid = fguid;
if (tag->GetFileId(fguid) > -1)
AliFatal("Adding a file which is already in the RunTag.");
tag->AddFileTag(nftag);
}
tag->SetRunId(iInitRunNumber);
if(iEventNumber+1 == chain->GetEntries()) {
ttag->Fill();
tag->Clear("");
}
}
lastEvent = chain->GetEntries();
ftag->cd();
tag->Clear();
ttag->Write();
ftag->Close();
delete esd;
delete tag;
}
void AliESDTagCreator::CreateTag(TFile* file, const char *guid, const char *md5, const char *turl, Long64_t size, Int_t Counter) {
TString fguid = guid;
TString fmd5 = md5;
TString fturl = turl;
Bool_t fIsSim = kTRUE;
Int_t iRunNumber = 0;
AliRunTag *tag = new AliRunTag();
AliEventTag *evTag = new AliEventTag();
TTree * ttag = new TTree("T","A Tree with event tags");
TBranch * btag = ttag->Branch("AliTAG", &tag);
btag->SetCompressionLevel(9);
gSystem->GetMemInfo(meminfo);
AliInfo(Form("After the tag initialization - Memory used: %d MB",meminfo->fMemUsed));
Int_t tempmem = meminfo->fMemUsed;
AliInfo(Form("Creating the ESD tags......."));
Int_t firstEvent = 0,lastEvent = 0;
TTree *t = (TTree*) file->Get("esdTree");
AliESDEvent *esd = new AliESDEvent();
esd->ReadFromTree(t);
gSystem->GetMemInfo(meminfo);
AliInfo(Form("After the esd initialization - Memory used: %d MB - Increase: %d MB",meminfo->fMemUsed,meminfo->fMemUsed - tempmem));
tempmem = meminfo->fMemUsed;
t->GetEntry(0);
Int_t iInitRunNumber = esd->GetRunNumber();
tag->SetMagneticField(esd->GetMagneticField());
tag->SetBeamEnergy(esd->GetBeamEnergy());
tag->SetBeamType(TString(esd->GetBeamType()));
tag->SetActiveTriggerClasses(esd->GetESDRun()->GetActiveTriggerClasses());
AliFileTag *eftag = new AliFileTag();
eftag->SetMD5(md5);
eftag->SetTURL(fturl);
eftag->SetSize(size);
tag->AddFileTag(eftag);
Int_t iNumberOfEvents = (Int_t)t->GetEntries();
for (Int_t iEventNumber = 0; iEventNumber < iNumberOfEvents; iEventNumber++) {
FillEventTag(t, evTag, iEventNumber, esd);
iRunNumber = esd->GetRunNumber();
if(iRunNumber != iInitRunNumber) AliFatal("Inconsistency of run numbers in the AliESD!!!");
tag->SetRunId(iInitRunNumber);
if(fIsSim) tag->SetDataType(0);
else tag->SetDataType(1);
tag->AddEventTag(*evTag);
}
lastEvent = iNumberOfEvents;
gSystem->GetMemInfo(meminfo);
AliInfo(Form("After the event and track loop - Memory used: %d MB - Increase: %d MB",meminfo->fMemUsed,meminfo->fMemUsed - tempmem));
tempmem = meminfo->fMemUsed;
t->Delete("");
gSystem->GetMemInfo(meminfo);
AliInfo(Form("After the t->Delete - Memory used: %d MB - Increase: %d MB",meminfo->fMemUsed,meminfo->fMemUsed - tempmem));
tempmem = meminfo->fMemUsed;
TString localFileName = "Run"; localFileName += tag->GetRunId();
localFileName += ".Event"; localFileName += firstEvent; localFileName += "_"; localFileName += lastEvent; localFileName += "."; localFileName += Counter;
localFileName += ".ESD.tag.root";
TString fileName;
if(fStorage == 0) {
fileName = localFileName.Data();
AliInfo(Form("Writing tags to local file: %s",fileName.Data()));
}
else if(fStorage == 1) {
TString alienLocation = "/alien";
alienLocation += gGrid->Pwd();
alienLocation += fgridpath.Data();
alienLocation += "/";
alienLocation += localFileName;
alienLocation += "?se=";
alienLocation += fSE.Data();
fileName = alienLocation.Data();
AliInfo(Form("Writing tags to grid file: %s",fileName.Data()));
}
TFile* ftag = TFile::Open(fileName, "recreate");
ftag->cd();
ttag->Fill();
tag->Clear();
ttag->Write();
ftag->Close();
gSystem->GetMemInfo(meminfo);
AliInfo(Form("After the file closing - Memory used: %d MB - Increase: %d MB",meminfo->fMemUsed,meminfo->fMemUsed - tempmem));
tempmem = meminfo->fMemUsed;
delete ftag;
delete esd;
delete tag;
gSystem->GetMemInfo(meminfo);
AliInfo(Form("After the delete objects - Memory used: %d MB - Increase: %d MB",meminfo->fMemUsed,meminfo->fMemUsed - tempmem));
}
void AliESDTagCreator::CreateTag(TFile* file, const char *filepath, Int_t Counter) {
Int_t iRunNumber = 0;
AliRunTag *tag = new AliRunTag();
AliEventTag *evTag = new AliEventTag();
TTree * ttag = new TTree("T","A Tree with event tags");
TBranch * btag = ttag->Branch("AliTAG", &tag);
btag->SetCompressionLevel(9);
AliInfo(Form("Creating the ESD tags......."));
Int_t firstEvent = 0,lastEvent = 0;
TTree *t = (TTree*) file->Get("esdTree");
AliESDEvent *esd = new AliESDEvent();
esd->ReadFromTree(t);
t->GetEntry(0);
Int_t iInitRunNumber = esd->GetRunNumber();
tag->SetMagneticField(esd->GetMagneticField());
tag->SetBeamEnergy(esd->GetBeamEnergy());
tag->SetBeamType(TString(esd->GetBeamType()));
tag->SetActiveTriggerClasses(esd->GetESDRun()->GetActiveTriggerClasses());
AliFileTag *eftag = new AliFileTag();
eftag->SetPath(filepath);
eftag->SetTURL(Form("local://%s", filepath));
eftag->SetSize(0);
eftag->SetMD5("");
tag->AddFileTag(eftag);
Int_t iNumberOfEvents = (Int_t)t->GetEntries();
for (Int_t iEventNumber = 0; iEventNumber < iNumberOfEvents; iEventNumber++) {
FillEventTag(t, evTag, iEventNumber, esd);
iRunNumber = esd->GetRunNumber();
if(iRunNumber != iInitRunNumber) AliFatal("Inconsistency of run numbers in the AliESD!!!");
tag->SetRunId(iInitRunNumber);
tag->AddEventTag(*evTag);
}
lastEvent = iNumberOfEvents;
t->Delete("");
TString localFileName = "Run"; localFileName += tag->GetRunId();
localFileName += ".Event"; localFileName += firstEvent; localFileName += "_"; localFileName += lastEvent; localFileName += "."; localFileName += Counter;
localFileName += ".ESD.tag.root";
TString fileName;
if(fStorage == 0) {
fileName = localFileName.Data();
AliInfo(Form("Writing tags to local file: %s",fileName.Data()));
}
else if(fStorage == 1) {
TString alienLocation = "/alien";
alienLocation += gGrid->Pwd();
alienLocation += fgridpath.Data();
alienLocation += "/";
alienLocation += localFileName;
alienLocation += "?se=";
alienLocation += fSE.Data();
fileName = alienLocation.Data();
AliInfo(Form("Writing tags to grid file: %s",fileName.Data()));
}
TFile* ftag = TFile::Open(fileName, "recreate");
ftag->cd();
ttag->Fill();
tag->Clear();
ttag->Write();
ftag->Close();
delete ftag;
delete esd;
delete tag;
}
void AliESDTagCreator::CreateESDTags(Int_t fFirstEvent, Int_t fLastEvent, AliGRPObject *grpData, ULong_t * qa, Bool_t * es, Int_t qalength, Int_t eslength) {
Float_t lhcLuminosity = 0.0;
TString lhcState = "test";
Int_t detectorMask = 0;
detectorMask = grpData->GetDetectorMask();
time_t startTime = grpData->GetTimeStart();
TTimeStamp t1(startTime);
time_t endTime = grpData->GetTimeEnd();
TTimeStamp t2(endTime);
const char* beamtype = grpData->GetBeamType();
Float_t beamenergy = grpData->GetBeamEnergy();
Int_t iRunNumber = 0;
TString fguid, fmd5, fturl;
AliInfo(Form("Creating the ESD tags......."));
TFile *esdfile = TFile::Open("AliESDs.root");
if (!esdfile || !esdfile->IsOpen()) {
AliError(Form("opening failed"));
delete esdfile;
return ;
}
Int_t lastEvent = 0;
TTree *b = (TTree*) esdfile->Get("esdTree");
AliESDEvent *esd = new AliESDEvent();
esd->ReadFromTree(b);
b->GetEntry(0);
Int_t iInitRunNumber = esd->GetRunNumber();
Int_t iNumberOfEvents = (Int_t)b->GetEntries();
if ((fLastEvent == -1) || ((Int_t) b->GetEntries() < fLastEvent))
lastEvent = fFirstEvent + (Int_t)b->GetEntries() - 1;
else lastEvent = fLastEvent;
char fileName[256];
snprintf(fileName, 256, "Run%d.Event%d_%d.ESD.tag.root",
iInitRunNumber,fFirstEvent,lastEvent);
AliInfo(Form("writing tags to file %s", fileName));
AliDebug(1, Form("writing tags to file %s", fileName));
TFile* ftag = TFile::Open(fileName, "recreate");
AliRunTag *tag = new AliRunTag();
AliEventTag *evTag = new AliEventTag();
TTree * ttag = new TTree("T","A Tree with event tags");
TBranch * btag = ttag->Branch("AliTAG", &tag);
btag->SetCompressionLevel(9);
if ((fLastEvent != -1) && ((Int_t) b->GetEntries() > fLastEvent))
iNumberOfEvents = fLastEvent + 1;
AliFileTag *eftag = new AliFileTag();
tag->AddFileTag(eftag);
for (Int_t iEventNumber = fFirstEvent; iEventNumber < iNumberOfEvents; iEventNumber++) {
FillEventTag(b, evTag, iEventNumber, esd);
iRunNumber = esd->GetRunNumber();
if(iRunNumber != iInitRunNumber) AliFatal("Inconsistency of run numbers in the AliESD!!!");
if (iEventNumber == fFirstEvent) {
TFile *file = b->GetCurrentFile();
fguid = file->GetUUID().AsString();
fturl = file->GetName();
((AliFileTag *) tag->GetFileTag(tag->GetNFiles()-1))->SetGUID(fguid);
if(fStorage == 1) {
((AliFileTag *) tag->GetFileTag(tag->GetNFiles()-1))->SetMD5("");
((AliFileTag *) tag->GetFileTag(tag->GetNFiles()-1))->SetTURL(fturl);
((AliFileTag *) tag->GetFileTag(tag->GetNFiles()-1))->SetSize(0);
}
else {
((AliFileTag *) tag->GetFileTag(tag->GetNFiles()-1))->SetPath(fturl);
((AliFileTag *) tag->GetFileTag(tag->GetNFiles()-1))->SetMD5("");
((AliFileTag *) tag->GetFileTag(tag->GetNFiles()-1))->SetSize(0);
}
}
tag->AddEventTag(*evTag);
}
tag->SetLHCTag(lhcLuminosity,lhcState);
tag->SetDetectorTag(esd->GetESDRun()->GetDetectorsInDAQ(), esd->GetESDRun()->GetDetectorsInReco());
tag->SetActiveTriggerClasses(esd->GetESDRun()->GetActiveTriggerClasses());
Bool_t ok = kTRUE;
Float_t l3Current = grpData->GetL3Current((AliGRPObject::Stats)0);
if (l3Current == AliGRPObject::GetInvalidFloat()) {
AliError("GRP/GRP/Data entry: missing value for the L3 current !");
ok = kFALSE;
}
Char_t l3Polarity = grpData->GetL3Polarity();
if (l3Polarity == AliGRPObject::GetInvalidChar()) {
AliError("GRP/GRP/Data entry: missing value for the L3 polarity !");
ok = kFALSE;
}
Float_t diCurrent = grpData->GetDipoleCurrent((AliGRPObject::Stats)0);
if (diCurrent == AliGRPObject::GetInvalidFloat()) {
AliError("GRP/GRP/Data entry: missing value for the dipole current !");
ok = kFALSE;
}
Char_t diPolarity = grpData->GetDipolePolarity();
if (diPolarity == AliGRPObject::GetInvalidChar()) {
AliError("GRP/GRP/Data entry: missing value for the dipole polarity !");
ok = kFALSE;
}
if (ok && grpData->IsPolarityConventionLHC()) {
if ((TMath::Abs(l3Current) > 29000.0) && (l3Polarity == 1))
tag->SetMagneticField(-0.5);
if ((TMath::Abs(l3Current) > 29000.0) && (l3Polarity == 0))
tag->SetMagneticField(0.5);
if (TMath::Abs(l3Current) < 2000.0)
tag->SetMagneticField(0.0);
if ((TMath::Abs(diCurrent) > 5900.0) && (diPolarity == 1))
tag->SetDipoleField(-0.2);
if ((TMath::Abs(diCurrent) > 5900.0) && (diPolarity == 0))
tag->SetDipoleField(0.2);
if (TMath::Abs(diCurrent) < 500.0)
tag->SetDipoleField(0.0);
}
tag->SetRunId(iInitRunNumber);
tag->SetRunStartTime(t1.GetDate());
tag->SetRunStopTime(t2.GetDate());
tag->SetBeamEnergy(beamenergy);
tag->SetBeamType(beamtype);
tag->SetQAArray(qa, qalength) ;
tag->SetEventSpecies(es, eslength) ;
ftag->cd();
ttag->Fill();
tag->Clear();
ttag->Write();
ftag->Close();
esdfile->cd();
delete esdfile;
delete ftag;
delete esd;
delete tag;
delete evTag;
}
void AliESDTagCreator::CreateESDTagsFullRun(TTree *chain, AliGRPObject *grpData, ULong_t * qa, Bool_t * es, Int_t qalength, Int_t eslength)
{
Float_t lhcLuminosity = 0.0;
TString lhcState = "test";
Int_t detectorMask = 0;
detectorMask = grpData->GetDetectorMask();
time_t startTime = grpData->GetTimeStart();
TTimeStamp t1(startTime);
time_t endTime = grpData->GetTimeEnd();
TTimeStamp t2(endTime);
const char* beamtype = grpData->GetBeamType();
Float_t beamenergy = grpData->GetBeamEnergy();
Int_t iRunNumber = 0;
TString fguid, fmd5, fturl;
TString fturlold;
AliInfo(Form("Creating the ESD tags......."));
AliESDEvent *esd = new AliESDEvent();
esd->ReadFromTree(chain);
chain->GetEntry(0);
Int_t iInitRunNumber = esd->GetRunNumber();
Int_t iNumberOfEvents = (Int_t)chain->GetEntries();
Int_t iFirstEvent = 0;
char fileName[256];
snprintf(fileName, 256, "Run%d.Event%d_%d.ESD.tag.root",
iInitRunNumber,iFirstEvent,iNumberOfEvents);
AliInfo(Form("writing tags to file %s", fileName));
AliDebug(1, Form("writing tags to file %s", fileName));
TFile* ftag = TFile::Open(fileName, "recreate");
AliRunTag *tag = new AliRunTag();
AliEventTag *evTag = new AliEventTag();
TTree * ttag = new TTree("T","A Tree with event tags");
TBranch * btag = ttag->Branch("AliTAG", &tag);
btag->SetCompressionLevel(9);
for (Int_t iEventNumber = iFirstEvent; iEventNumber < iNumberOfEvents; iEventNumber++) {
FillEventTag(chain, evTag, iEventNumber, esd);
iRunNumber = esd->GetRunNumber();
if(iRunNumber != iInitRunNumber) AliFatal("Inconsistency of run numbers in the AliESD!!!");
TFile *file = chain->GetCurrentFile();
fguid = file->GetUUID().AsString();
fturl = file->GetName();
if (fturl.CompareTo(fturlold)) {
AliFileTag *eftag = new AliFileTag();
eftag->SetGUID(fguid);
if(fStorage == 1) {
eftag->SetPath("");
eftag->SetMD5("");
eftag->SetTURL(fturl);
eftag->SetSize(0);
}
else {
eftag->SetPath(fturl);
eftag->SetTURL(fturl);
eftag->SetMD5("");
eftag->SetSize(0);
}
tag->AddFileTag(eftag);
fturlold = fturl;
}
else {
}
tag->AddEventTag(*evTag);
}
tag->SetLHCTag(lhcLuminosity,lhcState);
tag->SetDetectorTag(esd->GetESDRun()->GetDetectorsInDAQ(), esd->GetESDRun()->GetDetectorsInReco());
tag->SetActiveTriggerClasses(esd->GetESDRun()->GetActiveTriggerClasses());
Bool_t ok = kTRUE;
Float_t l3Current = grpData->GetL3Current((AliGRPObject::Stats)0);
if (l3Current == AliGRPObject::GetInvalidFloat()) {
AliError("GRP/GRP/Data entry: missing value for the L3 current !");
ok = kFALSE;
}
Char_t l3Polarity = grpData->GetL3Polarity();
if (l3Polarity == AliGRPObject::GetInvalidChar()) {
AliError("GRP/GRP/Data entry: missing value for the L3 polarity !");
ok = kFALSE;
}
Float_t diCurrent = grpData->GetDipoleCurrent((AliGRPObject::Stats)0);
if (diCurrent == AliGRPObject::GetInvalidFloat()) {
AliError("GRP/GRP/Data entry: missing value for the dipole current !");
ok = kFALSE;
}
Char_t diPolarity = grpData->GetDipolePolarity();
if (diPolarity == AliGRPObject::GetInvalidChar()) {
AliError("GRP/GRP/Data entry: missing value for the dipole polarity !");
ok = kFALSE;
}
if (ok && grpData->IsPolarityConventionLHC()) {
if ((TMath::Abs(l3Current) > 29000.0) && (l3Polarity == 1))
tag->SetMagneticField(-0.5);
if ((TMath::Abs(l3Current) > 29000.0) && (l3Polarity == 0))
tag->SetMagneticField(0.5);
if (TMath::Abs(l3Current) < 2000.0)
tag->SetMagneticField(0.0);
if ((TMath::Abs(diCurrent) > 5900.0) && (diPolarity == 1))
tag->SetDipoleField(-0.2);
if ((TMath::Abs(diCurrent) > 5900.0) && (diPolarity == 0))
tag->SetDipoleField(0.2);
if (TMath::Abs(diCurrent) < 500.0)
tag->SetDipoleField(0.0);
}
tag->SetRunId(iInitRunNumber);
tag->SetRunStartTime(t1.GetDate());
tag->SetRunStopTime(t2.GetDate());
tag->SetBeamEnergy(beamenergy);
tag->SetBeamType(beamtype);
tag->SetQAArray(qa, qalength) ;
tag->SetEventSpecies(es, eslength) ;
ftag->cd();
ttag->Fill();
tag->Clear();
ttag->Write();
ftag->Close();
delete ftag;
delete esd;
delete tag;
delete evTag;
}
void AliESDTagCreator::SwitchOffBranches() const {
TObjArray * tokens = fBranches.Tokenize(" ");
Int_t ntok = tokens->GetEntries();
for (Int_t i = 0; i < ntok; i++) {
TString str = ((TObjString*) tokens->At(i))->GetString();
fChain->SetBranchStatus(Form("%s%s%s","*", str.Data(), "*"), 0);
AliInfo(Form("Branch %s switched off \n", str.Data()));
}
delete tokens;
}
void AliESDTagCreator::FillEventTag(TTree *chain, AliEventTag *evTag, Int_t iEventNumber, AliESDEvent *esd)
{
AliESD *esdold = 0x0;
TString fTempGuid;
Double_t fMUONMASS = 0.105658369;
Double_t fX,fY,fZ ;
Double_t fThetaX, fThetaY, fPyz, fChisquare;
Double_t fPxRec, fPyRec, fPzRec, fEnergy;
Int_t fCharge;
TLorentzVector fEPvector;
Float_t fLowPtCut = 1.0;
Float_t fHighPtCut = 3.0;
Float_t fVeryHighPtCut = 10.0;
Double_t partFrac[5] = {0.01, 0.01, 0.85, 0.10, 0.05};
Bool_t fIsSim = kTRUE;
Int_t ntrack;
Int_t nProtons, nKaons, nPions, nMuons, nElectrons, nFWMuons, nFWMatchedMuons;
Int_t nPos, nNeg, nNeutr;
Int_t nK0s, nLambdas, nNeutrons, nPi0s, nGamas;
Int_t nCh1GeV, nCh3GeV, nCh10GeV;
Int_t nMu1GeV, nMu3GeV, nMu10GeV;
Int_t nEl1GeV, nEl3GeV, nEl10GeV;
Float_t maxPt = .0, etamaxPt = -999., phimaxPt = -999., meanPt = .0, totalP = .0;
Int_t fVertexflag;
TString fVertexName;
TRefArray tmp;
ntrack = 0; nPos = 0; nNeg = 0; nNeutr =0;
nK0s = 0; nLambdas = 0; nNeutrons = 0; nPi0s = 0;
nGamas = 0; nProtons = 0; nKaons = 0;
nPions = 0; nMuons = 0; nElectrons = 0; nFWMuons = 0; nFWMatchedMuons = 0;
nCh1GeV = 0; nCh3GeV = 0; nCh10GeV = 0;
nMu1GeV = 0; nMu3GeV = 0; nMu10GeV = 0;
nEl1GeV = 0; nEl3GeV = 0; nEl10GeV = 0;
maxPt = .0; etamaxPt = -999.; phimaxPt = -999.; meanPt = .0; totalP = .0;
fVertexflag = 1;
chain->GetEntry(iEventNumber);
esdold = esd->GetAliESDOld();
if(esdold) esd->CopyFromOldESD();
const AliESDVertex * vertexIn = esd->GetVertex();
fVertexName = vertexIn->GetName();
if(fVertexName == "default") fVertexflag = 0;
for (Int_t iTrackNumber = 0; iTrackNumber < esd->GetNumberOfTracks(); iTrackNumber++) {
AliESDtrack * esdTrack = esd->GetTrack(iTrackNumber);
if(esdTrack->GetLabel() != 0) fIsSim = kTRUE;
else if(esdTrack->GetLabel() == 0) fIsSim = kFALSE;
UInt_t status = esdTrack->GetStatus();
if ((status&AliESDtrack::kITSrefit)==0) continue;
if ((status&AliESDtrack::kTPCrefit)==0) continue;
if ((status&AliESDtrack::kESDpid)==0) continue;
Double_t p[3];
esdTrack->GetPxPyPz(p);
Double_t pt2 = p[0]*p[0]+p[1]*p[1];
Double_t momentum = TMath::Sqrt(pt2+p[2]*p[2]);
Double_t fPt = TMath::Sqrt(pt2);
totalP += momentum;
meanPt += fPt;
if(fPt > maxPt) {
maxPt = fPt;
phimaxPt = esdTrack->Phi();
etamaxPt = esdTrack->Eta();
}
if(esdTrack->GetSign() > 0) {
nPos++;
if(fPt > fLowPtCut) nCh1GeV++;
if(fPt > fHighPtCut) nCh3GeV++;
if(fPt > fVeryHighPtCut) nCh10GeV++;
}
if(esdTrack->GetSign() < 0) {
nNeg++;
if(fPt > fLowPtCut) nCh1GeV++;
if(fPt > fHighPtCut) nCh3GeV++;
if(fPt > fVeryHighPtCut) nCh10GeV++;
}
if(esdTrack->GetSign() == 0) nNeutr++;
Double_t prob[5];
esdTrack->GetESDpid(prob);
Double_t rcc = 0.0;
for(Int_t i = 0; i < AliPID::kSPECIES; i++) rcc += prob[i]*partFrac[i];
if(rcc == 0.0) continue;
Double_t w[5];
for(Int_t i = 0; i < AliPID::kSPECIES; i++) w[i] = prob[i]*partFrac[i]/rcc;
if ((w[4]>w[3])&&(w[4]>w[2])&&(w[4]>w[1])&&(w[4]>w[0])) nProtons++;
if ((w[3]>w[4])&&(w[3]>w[2])&&(w[3]>w[1])&&(w[3]>w[0])) nKaons++;
if ((w[2]>w[4])&&(w[2]>w[3])&&(w[2]>w[1])&&(w[2]>w[0])) nPions++;
if ((w[0]>w[4])&&(w[0]>w[3])&&(w[0]>w[2])&&(w[0]>w[1])) {
nElectrons++;
if(fPt > fLowPtCut) nEl1GeV++;
if(fPt > fHighPtCut) nEl3GeV++;
if(fPt > fVeryHighPtCut) nEl10GeV++;
}
ntrack++;
}
Int_t nMuonTracks = esd->GetNumberOfMuonTracks();
for (Int_t iTrack = 0; iTrack < nMuonTracks; iTrack++) {
AliESDMuonTrack* muonTrack = esd->GetMuonTrack(iTrack);
if (muonTrack == 0x0) continue;
fZ = muonTrack->GetZ();
fY = muonTrack->GetBendingCoor();
fX = muonTrack->GetNonBendingCoor();
fThetaX = muonTrack->GetThetaX();
fThetaY = muonTrack->GetThetaY();
fPyz = 1./TMath::Abs(muonTrack->GetInverseBendingMomentum());
fPzRec = - fPyz / TMath::Sqrt(1.0 + TMath::Tan(fThetaY)*TMath::Tan(fThetaY));
fPxRec = fPzRec * TMath::Tan(fThetaX);
fPyRec = fPzRec * TMath::Tan(fThetaY);
fCharge = Int_t(TMath::Sign(1.,muonTrack->GetInverseBendingMomentum()));
fChisquare = muonTrack->GetChi2()/(2.0 * muonTrack->GetNHit() - 5);
fEnergy = TMath::Sqrt(fMUONMASS * fMUONMASS + fPxRec * fPxRec + fPyRec * fPyRec + fPzRec * fPzRec);
fEPvector.SetPxPyPzE(fPxRec, fPyRec, fPzRec, fEnergy);
if (muonTrack->GetMatchTrigger()>0) nFWMatchedMuons++;
nMuons++;
nFWMuons++;
if(fEPvector.Pt() > fLowPtCut) {
nMu1GeV++;
if(fEPvector.Pt() > fHighPtCut) {
nMu3GeV++;
if (fEPvector.Pt() > fVeryHighPtCut) {
nMu10GeV++;
}
}
}
}
if(ntrack != 0) meanPt = meanPt/ntrack;
const AliMultiplicity *spdMult = esd->GetMultiplicity();
evTag->SetNumberOfFiredChipsLayer1(spdMult->GetNumberOfFiredChips(0));
evTag->SetNumberOfFiredChipsLayer2(spdMult->GetNumberOfFiredChips(1));
evTag->SetNumberOfSPDTracklets(spdMult->GetNumberOfTracklets());
AliESDVZERO *vzeroData = esd->GetVZEROData();
evTag->SetMTotV0A(vzeroData->GetMTotV0A());
evTag->SetMTotV0C(vzeroData->GetMTotV0C());
evTag->SetNbPMV0A(vzeroData->GetNbPMV0A());
evTag->SetNbPMV0C(vzeroData->GetNbPMV0C());
evTag->SetPeriodNumber(esd->GetPeriodNumber());
evTag->SetOrbitNumber(esd->GetOrbitNumber());
evTag->SetBunchCrossNumber(esd->GetBunchCrossNumber());
evTag->SetVertexX(vertexIn->GetX());
evTag->SetVertexY(vertexIn->GetY());
evTag->SetVertexZ(vertexIn->GetZ());
evTag->SetVertexZError(vertexIn->GetZRes());
evTag->SetVertexFlag(fVertexflag);
evTag->SetT0VertexZ(esd->GetT0zVertex());
evTag->SetTriggerMask(esd->GetTriggerMask());
evTag->SetTriggerCluster(esd->GetTriggerCluster());
evTag->SetEventType(esd->GetEventType());
evTag->SetZDCNeutron1Energy(esd->GetZDCN1Energy());
evTag->SetZDCProton1Energy(esd->GetZDCP1Energy());
evTag->SetZDCEMEnergy(esd->GetZDCEMEnergy(0),esd->GetZDCEMEnergy(1));
evTag->SetZDCNeutron2Energy(esd->GetZDCN2Energy());
evTag->SetZDCProton2Energy(esd->GetZDCP2Energy());
evTag->SetNumOfParticipants(esd->GetZDCParticipants());
evTag->SetNumOfTracks(esd->GetNumberOfTracks());
evTag->SetNumOfPosTracks(nPos);
evTag->SetNumOfNegTracks(nNeg);
evTag->SetNumOfNeutrTracks(nNeutr);
evTag->SetNumOfV0s(esd->GetNumberOfV0s());
evTag->SetNumOfCascades(esd->GetNumberOfCascades());
evTag->SetNumOfKinks(esd->GetNumberOfKinks());
evTag->SetNumOfPMDTracks(esd->GetNumberOfPmdTracks());
evTag->SetNumOfProtons(nProtons);
evTag->SetNumOfKaons(nKaons);
evTag->SetNumOfPions(nPions);
evTag->SetNumOfMuons(nMuons);
evTag->SetNumOfFWMuons(nFWMuons);
evTag->SetNumOfFWMatchedMuons(nFWMatchedMuons);
evTag->SetNumOfElectrons(nElectrons);
evTag->SetNumOfPhotons(nGamas);
evTag->SetNumOfPi0s(nPi0s);
evTag->SetNumOfNeutrons(nNeutrons);
evTag->SetNumOfKaon0s(nK0s);
evTag->SetNumOfLambdas(nLambdas);
evTag->SetNumOfChargedAbove1GeV(nCh1GeV);
evTag->SetNumOfChargedAbove3GeV(nCh3GeV);
evTag->SetNumOfChargedAbove10GeV(nCh10GeV);
evTag->SetNumOfMuonsAbove1GeV(nMu1GeV);
evTag->SetNumOfMuonsAbove3GeV(nMu3GeV);
evTag->SetNumOfMuonsAbove10GeV(nMu10GeV);
evTag->SetNumOfElectronsAbove1GeV(nEl1GeV);
evTag->SetNumOfElectronsAbove3GeV(nEl3GeV);
evTag->SetNumOfElectronsAbove10GeV(nEl10GeV);
tmp.Clear();
evTag->SetNumOfPHOSClusters(esd->GetPHOSClusters(&tmp));
tmp.Clear();
evTag->SetNumOfEMCALClusters(esd->GetEMCALClusters(&tmp));
evTag->SetTotalMomentum(totalP);
evTag->SetMeanPt(meanPt);
evTag->SetMaxPt(maxPt);
evTag->SetEtaMaxPt(etamaxPt);
evTag->SetPhiMaxPt(phimaxPt);
evTag->SetPhysicsFlag(kTRUE);
evTag->SetBackgroungFlag(kFALSE);
}
void AliESDTagCreator::CreateESDRunTagSummary(TTree *chain)
{
AliRunTag *rtag;
chain->SetBranchAddress("AliTAG", &rtag);
TFile* ftag = TFile::Open("RunTagSummary.tag.root", "recreate");
AliRunTag *tag = new AliRunTag();
TTree * ttag = new TTree("T","A Tree with event tags");
TBranch * btag = ttag->Branch("AliTAG", &tag);
btag->SetCompressionLevel(9);
for (int itag=0; itag<chain->GetEntries(); itag++) {
chain->GetEntry(itag);
tag->CopyStandardContent(rtag);
ttag->Fill();
tag->Clear();
}
ftag->cd();
ttag->Write();
ftag->Close();
}
AliESDTagCreator.cxx:1000 AliESDTagCreator.cxx:1001 AliESDTagCreator.cxx:1002 AliESDTagCreator.cxx:1003 AliESDTagCreator.cxx:1004 AliESDTagCreator.cxx:1005 AliESDTagCreator.cxx:1006 AliESDTagCreator.cxx:1007 AliESDTagCreator.cxx:1008 AliESDTagCreator.cxx:1009 AliESDTagCreator.cxx:1010 AliESDTagCreator.cxx:1011 AliESDTagCreator.cxx:1012 AliESDTagCreator.cxx:1013 AliESDTagCreator.cxx:1014 AliESDTagCreator.cxx:1015 AliESDTagCreator.cxx:1016 AliESDTagCreator.cxx:1017 AliESDTagCreator.cxx:1018 AliESDTagCreator.cxx:1019 AliESDTagCreator.cxx:1020 AliESDTagCreator.cxx:1021 AliESDTagCreator.cxx:1022 AliESDTagCreator.cxx:1023 AliESDTagCreator.cxx:1024 AliESDTagCreator.cxx:1025 AliESDTagCreator.cxx:1026 AliESDTagCreator.cxx:1027 AliESDTagCreator.cxx:1028 AliESDTagCreator.cxx:1029 AliESDTagCreator.cxx:1030 AliESDTagCreator.cxx:1031 AliESDTagCreator.cxx:1032 AliESDTagCreator.cxx:1033 AliESDTagCreator.cxx:1034 AliESDTagCreator.cxx:1035 AliESDTagCreator.cxx:1036 AliESDTagCreator.cxx:1037 AliESDTagCreator.cxx:1038 AliESDTagCreator.cxx:1039 AliESDTagCreator.cxx:1040 AliESDTagCreator.cxx:1041 AliESDTagCreator.cxx:1042 AliESDTagCreator.cxx:1043 AliESDTagCreator.cxx:1044 AliESDTagCreator.cxx:1045 AliESDTagCreator.cxx:1046 AliESDTagCreator.cxx:1047 AliESDTagCreator.cxx:1048 AliESDTagCreator.cxx:1049 AliESDTagCreator.cxx:1050 AliESDTagCreator.cxx:1051 AliESDTagCreator.cxx:1052 AliESDTagCreator.cxx:1053 AliESDTagCreator.cxx:1054 AliESDTagCreator.cxx:1055 AliESDTagCreator.cxx:1056 AliESDTagCreator.cxx:1057 AliESDTagCreator.cxx:1058 AliESDTagCreator.cxx:1059 AliESDTagCreator.cxx:1060 AliESDTagCreator.cxx:1061 AliESDTagCreator.cxx:1062 AliESDTagCreator.cxx:1063 AliESDTagCreator.cxx:1064 AliESDTagCreator.cxx:1065 AliESDTagCreator.cxx:1066 AliESDTagCreator.cxx:1067 AliESDTagCreator.cxx:1068 AliESDTagCreator.cxx:1069 AliESDTagCreator.cxx:1070 AliESDTagCreator.cxx:1071 AliESDTagCreator.cxx:1072 AliESDTagCreator.cxx:1073 AliESDTagCreator.cxx:1074 AliESDTagCreator.cxx:1075 AliESDTagCreator.cxx:1076 AliESDTagCreator.cxx:1077 AliESDTagCreator.cxx:1078 AliESDTagCreator.cxx:1079 AliESDTagCreator.cxx:1080 AliESDTagCreator.cxx:1081 AliESDTagCreator.cxx:1082 AliESDTagCreator.cxx:1083 AliESDTagCreator.cxx:1084 AliESDTagCreator.cxx:1085 AliESDTagCreator.cxx:1086 AliESDTagCreator.cxx:1087 AliESDTagCreator.cxx:1088 AliESDTagCreator.cxx:1089 AliESDTagCreator.cxx:1090 AliESDTagCreator.cxx:1091 AliESDTagCreator.cxx:1092 AliESDTagCreator.cxx:1093 AliESDTagCreator.cxx:1094 AliESDTagCreator.cxx:1095 AliESDTagCreator.cxx:1096 AliESDTagCreator.cxx:1097 AliESDTagCreator.cxx:1098 AliESDTagCreator.cxx:1099 AliESDTagCreator.cxx:1100 AliESDTagCreator.cxx:1101 AliESDTagCreator.cxx:1102 AliESDTagCreator.cxx:1103 AliESDTagCreator.cxx:1104 AliESDTagCreator.cxx:1105 AliESDTagCreator.cxx:1106 AliESDTagCreator.cxx:1107 AliESDTagCreator.cxx:1108 AliESDTagCreator.cxx:1109 AliESDTagCreator.cxx:1110 AliESDTagCreator.cxx:1111 AliESDTagCreator.cxx:1112 AliESDTagCreator.cxx:1113 AliESDTagCreator.cxx:1114 AliESDTagCreator.cxx:1115 AliESDTagCreator.cxx:1116 AliESDTagCreator.cxx:1117 AliESDTagCreator.cxx:1118 AliESDTagCreator.cxx:1119 AliESDTagCreator.cxx:1120 AliESDTagCreator.cxx:1121 AliESDTagCreator.cxx:1122 AliESDTagCreator.cxx:1123 AliESDTagCreator.cxx:1124 AliESDTagCreator.cxx:1125 AliESDTagCreator.cxx:1126 AliESDTagCreator.cxx:1127 AliESDTagCreator.cxx:1128 AliESDTagCreator.cxx:1129 AliESDTagCreator.cxx:1130 AliESDTagCreator.cxx:1131 AliESDTagCreator.cxx:1132 AliESDTagCreator.cxx:1133 AliESDTagCreator.cxx:1134 AliESDTagCreator.cxx:1135 AliESDTagCreator.cxx:1136 AliESDTagCreator.cxx:1137 AliESDTagCreator.cxx:1138 AliESDTagCreator.cxx:1139 AliESDTagCreator.cxx:1140 AliESDTagCreator.cxx:1141 AliESDTagCreator.cxx:1142 AliESDTagCreator.cxx:1143 AliESDTagCreator.cxx:1144 AliESDTagCreator.cxx:1145 AliESDTagCreator.cxx:1146 AliESDTagCreator.cxx:1147 AliESDTagCreator.cxx:1148 AliESDTagCreator.cxx:1149 AliESDTagCreator.cxx:1150 AliESDTagCreator.cxx:1151 AliESDTagCreator.cxx:1152 AliESDTagCreator.cxx:1153 AliESDTagCreator.cxx:1154 AliESDTagCreator.cxx:1155 AliESDTagCreator.cxx:1156 AliESDTagCreator.cxx:1157 AliESDTagCreator.cxx:1158 AliESDTagCreator.cxx:1159 AliESDTagCreator.cxx:1160 AliESDTagCreator.cxx:1161 AliESDTagCreator.cxx:1162 AliESDTagCreator.cxx:1163 AliESDTagCreator.cxx:1164 AliESDTagCreator.cxx:1165 AliESDTagCreator.cxx:1166 AliESDTagCreator.cxx:1167 AliESDTagCreator.cxx:1168 AliESDTagCreator.cxx:1169 AliESDTagCreator.cxx:1170 AliESDTagCreator.cxx:1171 AliESDTagCreator.cxx:1172 AliESDTagCreator.cxx:1173 AliESDTagCreator.cxx:1174 AliESDTagCreator.cxx:1175 AliESDTagCreator.cxx:1176 AliESDTagCreator.cxx:1177 AliESDTagCreator.cxx:1178 AliESDTagCreator.cxx:1179 AliESDTagCreator.cxx:1180 AliESDTagCreator.cxx:1181 AliESDTagCreator.cxx:1182 AliESDTagCreator.cxx:1183 AliESDTagCreator.cxx:1184 AliESDTagCreator.cxx:1185 AliESDTagCreator.cxx:1186 AliESDTagCreator.cxx:1187 AliESDTagCreator.cxx:1188 AliESDTagCreator.cxx:1189 AliESDTagCreator.cxx:1190 AliESDTagCreator.cxx:1191 AliESDTagCreator.cxx:1192 AliESDTagCreator.cxx:1193 AliESDTagCreator.cxx:1194 AliESDTagCreator.cxx:1195 AliESDTagCreator.cxx:1196 AliESDTagCreator.cxx:1197 AliESDTagCreator.cxx:1198 AliESDTagCreator.cxx:1199 AliESDTagCreator.cxx:1200 AliESDTagCreator.cxx:1201 AliESDTagCreator.cxx:1202 AliESDTagCreator.cxx:1203 AliESDTagCreator.cxx:1204 AliESDTagCreator.cxx:1205 AliESDTagCreator.cxx:1206 AliESDTagCreator.cxx:1207 AliESDTagCreator.cxx:1208 AliESDTagCreator.cxx:1209 AliESDTagCreator.cxx:1210 AliESDTagCreator.cxx:1211 AliESDTagCreator.cxx:1212 AliESDTagCreator.cxx:1213 AliESDTagCreator.cxx:1214 AliESDTagCreator.cxx:1215 AliESDTagCreator.cxx:1216 AliESDTagCreator.cxx:1217 AliESDTagCreator.cxx:1218 AliESDTagCreator.cxx:1219 AliESDTagCreator.cxx:1220 AliESDTagCreator.cxx:1221 AliESDTagCreator.cxx:1222 AliESDTagCreator.cxx:1223 AliESDTagCreator.cxx:1224 AliESDTagCreator.cxx:1225 AliESDTagCreator.cxx:1226 AliESDTagCreator.cxx:1227 AliESDTagCreator.cxx:1228 AliESDTagCreator.cxx:1229 AliESDTagCreator.cxx:1230 AliESDTagCreator.cxx:1231 AliESDTagCreator.cxx:1232 AliESDTagCreator.cxx:1233 AliESDTagCreator.cxx:1234 AliESDTagCreator.cxx:1235 AliESDTagCreator.cxx:1236 AliESDTagCreator.cxx:1237 AliESDTagCreator.cxx:1238 AliESDTagCreator.cxx:1239 AliESDTagCreator.cxx:1240 AliESDTagCreator.cxx:1241 AliESDTagCreator.cxx:1242 AliESDTagCreator.cxx:1243 AliESDTagCreator.cxx:1244 AliESDTagCreator.cxx:1245 AliESDTagCreator.cxx:1246 AliESDTagCreator.cxx:1247 AliESDTagCreator.cxx:1248 AliESDTagCreator.cxx:1249 AliESDTagCreator.cxx:1250 AliESDTagCreator.cxx:1251 AliESDTagCreator.cxx:1252 AliESDTagCreator.cxx:1253 AliESDTagCreator.cxx:1254 AliESDTagCreator.cxx:1255 AliESDTagCreator.cxx:1256 AliESDTagCreator.cxx:1257 AliESDTagCreator.cxx:1258 AliESDTagCreator.cxx:1259 AliESDTagCreator.cxx:1260 AliESDTagCreator.cxx:1261 AliESDTagCreator.cxx:1262 AliESDTagCreator.cxx:1263 AliESDTagCreator.cxx:1264 AliESDTagCreator.cxx:1265 AliESDTagCreator.cxx:1266 AliESDTagCreator.cxx:1267 AliESDTagCreator.cxx:1268 AliESDTagCreator.cxx:1269 AliESDTagCreator.cxx:1270 AliESDTagCreator.cxx:1271 AliESDTagCreator.cxx:1272 AliESDTagCreator.cxx:1273 AliESDTagCreator.cxx:1274 AliESDTagCreator.cxx:1275 AliESDTagCreator.cxx:1276 AliESDTagCreator.cxx:1277 AliESDTagCreator.cxx:1278 AliESDTagCreator.cxx:1279 AliESDTagCreator.cxx:1280 AliESDTagCreator.cxx:1281 AliESDTagCreator.cxx:1282 AliESDTagCreator.cxx:1283 AliESDTagCreator.cxx:1284 AliESDTagCreator.cxx:1285 AliESDTagCreator.cxx:1286 AliESDTagCreator.cxx:1287