#include <TList.h>
#include <TObjString.h>
#include <TLorentzVector.h>
+#include <TMap.h>
//ROOT-AliEn
#include <TGrid.h>
AliESDTagCreator::AliESDTagCreator() :
AliTagCreator(),
fChain(new TChain("esdTree")), fGUIDList(new TList()),
- fMD5List(new TList()), fTURLList(new TList()),
+ fMD5List(new TList()), fTURLList(new TList()), fBranches(""),
meminfo(new MemInfo_t) {
//==============Default constructor for a AliESDTagCreator================
}
AliInfo(Form("ESD chain created......."));
AliInfo(Form("Chain entries: %d",fChain->GetEntries()));
+ // Switch of branches on user request
+ SwitchOffBranches();
CreateTag(fChain,"grid");
return kTRUE;
AliInfo(Form("ESD chain created......."));
AliInfo(Form("Chain entries: %d",fChain->GetEntries()));
+ // Switch of branches on user request
+ SwitchOffBranches();
CreateTag(fChain,"local");
return kTRUE;
AliInfo(Form("ESD chain created......."));
AliInfo(Form("Chain entries: %d",fChain->GetEntries()));
+ // Switch of branches on user request
+ SwitchOffBranches();
CreateTag(fChain,"proof");
return kTRUE;
}
//_____________________________________________________________________________
-void AliESDTagCreator::CreateTag(TChain* fChain, const char *type) {
+void AliESDTagCreator::CreateTag(TChain* chain, const char *type) {
//private method that creates tag files
TString fSession = type;
- //Int_t iCounter = 0;
TString fguid, fmd5, fturl;
TString fTempGuid = 0;
Int_t iRunNumber = 0;
TString fVertexName;
- AliRunTag *tag = new AliRunTag();
- AliEventTag *evTag = new AliEventTag();
- TTree ttag("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;
Int_t firstEvent = 0,lastEvent = 0;
AliESDEvent *esd = new AliESDEvent();
- esd->ReadFromTree(fChain);
+ esd->ReadFromTree(chain);
+ AliESD *esdold = 0x0;
//gSystem->GetMemInfo(meminfo);
//AliInfo(Form("After the esd initialization - Memory used: %d MB - Increase: %d MB",meminfo->fMemUsed,meminfo->fMemUsed - tempmem));
//tempmem = meminfo->fMemUsed;
Int_t iInitRunNumber = -1;
- for(Int_t iEventNumber = 0; iEventNumber < fChain->GetEntries(); iEventNumber++) {
+ 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 += "."; 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");
+
+ AliRunTag *tag = new AliRunTag();
+ AliEventTag *evTag = new AliEventTag();
+ TTree ttag("T","A Tree with event tags");
+ TBranch * btag = ttag.Branch("AliTAG", &tag);
+ btag->SetCompressionLevel(9);
+
+ for(Int_t iEventNumber = 0; iEventNumber < chain->GetEntries(); iEventNumber++) {
ntrack = 0; nPos = 0; nNeg = 0; nNeutr =0;
nK0s = 0; nNeutrons = 0; nPi0s = 0;
nGamas = 0; nProtons = 0; nKaons = 0;
maxPt = .0; meanPt = .0; totalP = .0;
fVertexflag = 1;
- fChain->GetEntry(iEventNumber);
- TFile *f = fChain->GetFile();
- const TUrl *url = f->GetEndpointUrl();
- fguid = f->GetUUID().AsString();
+ chain->GetEntry(iEventNumber);
+ esdold = esd->GetAliESDOld();
+ if(esdold) esd->CopyFromOldESD();
+
+ TFile *file = chain->GetFile();
+ const TUrl *url = file->GetEndpointUrl();
+ fguid = file->GetUUID().AsString();
if(fSession == "grid") {
TString fturltemp = "alien://"; fturltemp += url->GetFile();
fturl = fturltemp(0,fturltemp.Index(".root",5,0,TString::kExact)+5);
// Fill the event tags
if(ntrack != 0) meanPt = meanPt/ntrack;
- AliInfo(Form("====================================="));
- AliInfo(Form("URL: %s - GUID: %s",fturl.Data(),fguid.Data()));
- AliInfo(Form("====================================="));
+ //AliInfo(Form("====================================="));
+ //AliInfo(Form("URL: %s - GUID: %s",fturl.Data(),fguid.Data()));
+ //AliInfo(Form("====================================="));
evTag->SetEventId(iEventNumber+1);
evTag->SetGUID(fguid);
evTag->SetZDCNeutron1Energy(esd->GetZDCN1Energy());
evTag->SetZDCProton1Energy(esd->GetZDCP1Energy());
- evTag->SetZDCEMEnergy(esd->GetZDCEMEnergy());
+ evTag->SetZDCEMEnergy(esd->GetZDCEMEnergy(0),esd->GetZDCEMEnergy(1));
evTag->SetZDCNeutron1Energy(esd->GetZDCN2Energy());
evTag->SetZDCProton1Energy(esd->GetZDCP2Energy());
evTag->SetNumOfParticipants(esd->GetZDCParticipants());
tag->SetRunId(iInitRunNumber);
if(fIsSim) tag->SetDataType(0);
else tag->SetDataType(1);
- tag->AddEventTag(*evTag);
if(fguid != fTempGuid) {
fTempGuid = fguid;
ttag.Fill();
tag->Clear("");
}
+ tag->AddEventTag(*evTag);
+ if(iEventNumber+1 == chain->GetEntries()) {
+ //AliInfo(Form("File: %s",fturl.Data()));
+ ttag.Fill();
+ tag->Clear("");
+ }
}//event loop
- lastEvent = fChain->GetEntries();
+ lastEvent = chain->GetEntries();
//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;
- //fChain->Delete("");
+ //chain->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();
//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));
}
evTag->SetZDCNeutron1Energy(esd->GetZDCN1Energy());
evTag->SetZDCProton1Energy(esd->GetZDCP1Energy());
- evTag->SetZDCEMEnergy(esd->GetZDCEMEnergy());
+ evTag->SetZDCEMEnergy(esd->GetZDCEMEnergy(0),esd->GetZDCEMEnergy(1));
evTag->SetZDCNeutron1Energy(esd->GetZDCN2Energy());
evTag->SetZDCProton1Energy(esd->GetZDCP2Energy());
evTag->SetNumOfParticipants(esd->GetZDCParticipants());
evTag->SetZDCNeutron1Energy(esd->GetZDCN1Energy());
evTag->SetZDCProton1Energy(esd->GetZDCP1Energy());
- evTag->SetZDCEMEnergy(esd->GetZDCEMEnergy());
+ evTag->SetZDCEMEnergy(esd->GetZDCEMEnergy(0),esd->GetZDCEMEnergy(1));
evTag->SetZDCNeutron1Energy(esd->GetZDCN2Energy());
evTag->SetZDCProton1Energy(esd->GetZDCP2Energy());
evTag->SetNumOfParticipants(esd->GetZDCParticipants());
}
//_____________________________________________________________________________
-void AliESDTagCreator::CreateESDTags(Int_t fFirstEvent, Int_t fLastEvent) {
+void AliESDTagCreator::CreateESDTags(Int_t fFirstEvent, Int_t fLastEvent, TMap */* grpData */) {
//GRP
Float_t lhcLuminosity = 0.0;
TString lhcState = "test";
Int_t fVertexflag;
Int_t iRunNumber = 0;
TString fVertexName("default");
-
- AliRunTag *tag = new AliRunTag();
- AliEventTag *evTag = new AliEventTag();
- TTree ttag("T","A Tree with event tags");
- TBranch * btag = ttag.Branch("AliTAG", &tag);
- btag->SetCompressionLevel(9);
AliInfo(Form("Creating the ESD tags......."));
Int_t iInitRunNumber = esd->GetRunNumber();
Int_t iNumberOfEvents = (Int_t)b->GetEntries();
+ if(fLastEvent == -1) lastEvent = (Int_t)b->GetEntries();
+ else lastEvent = fLastEvent;
+
+ char fileName[256];
+ sprintf(fileName, "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("T","A Tree with event tags");
+ TBranch * btag = ttag.Branch("AliTAG", &tag);
+ btag->SetCompressionLevel(9);
+
if(fLastEvent != -1) iNumberOfEvents = fLastEvent + 1;
for (Int_t iEventNumber = fFirstEvent; iEventNumber < iNumberOfEvents; iEventNumber++) {
ntrack = 0;
evTag->SetZDCProton1Energy(esd->GetZDCP1Energy());
evTag->SetZDCNeutron2Energy(esd->GetZDCN2Energy());
evTag->SetZDCProton2Energy(esd->GetZDCP2Energy());
- evTag->SetZDCEMEnergy(esd->GetZDCEMEnergy());
+ evTag->SetZDCEMEnergy(esd->GetZDCEMEnergy(0),esd->GetZDCEMEnergy(1));
evTag->SetNumOfParticipants(esd->GetZDCParticipants());
tag->SetRunId(iInitRunNumber);
tag->AddEventTag(*evTag);
}
- if(fLastEvent == -1) lastEvent = (Int_t)b->GetEntries();
- else lastEvent = fLastEvent;
- char fileName[256];
- sprintf(fileName, "Run%d.Event%d_%d.ESD.tag.root",
- tag->GetRunId(),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");
ftag->cd();
ttag.Fill();
tag->Clear();
delete evTag;
}
+//_____________________________________________________________________________
+void AliESDTagCreator::SwitchOffBranches() const {
+ //
+ // Switch of branches on user request
+ 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()));
+ }
+}