const char * name = 0x0;
// Add all files matching *pattern* to the chain
while((name = gSystem->GetDirEntry(dirp))) {
- if (strstr(name,tagPattern)) {
+ if (tagPattern && strstr(name,tagPattern)) {
fTagFilename = fTagDirName;
fTagFilename += "/";
fTagFilename += name;
//___________________________________________________________________________
TChain * AliTagAnalysis::ChainGridTags(TGridResult *res) {
//Loops overs the entries of the TGridResult
- //Chains the tags that are stored in the GRID
+ //Chains the tags that are stored in the GRID
ftagresult = res;
Int_t nEntries = ftagresult->GetEntries();
//and returns a TChain along with the associated TEventList
AliInfo(Form("Querying the tags........"));
- Bool_t aod = kFALSE;
TString aliceFile;
if(fAnalysisType == "ESD") aliceFile = "esdTree";
- else if(fAnalysisType == "AOD") {
- aliceFile = "aodTree";
- aod = kTRUE;
- }
+ else if(fAnalysisType == "AOD") aliceFile = "aodTree";
else AliFatal("Only ESD and AOD type is implemented!!!");
//ESD file chain
//Defining tag objects
AliRunTag *tag = new AliRunTag;
- AliEventTag *evTag = new AliEventTag;
+ // AliEventTag *evTag = 0x0;
+ AliFileTag *flTag = 0x0;
+
fChain->SetBranchAddress("AliTAG",&tag);
TString guid;
TString turl;
TString path;
- TTree* cTree = 0;
TEntryList* localList = new TEntryList();
Int_t iAccepted = 0;
- Int_t iev = 0;
- Int_t ientry = 0;
- Int_t cEntries = 0;
- for(Int_t iTagFiles = 0; iTagFiles < fChain->GetEntries(); iTagFiles++) {
- fChain->GetEntry(iTagFiles);
- TTree* tree = fChain->GetTree();
- if (cTree != tree) {
- // Fix for aod tags: for each tree in the chain, merge the entries
- cTree = tree;
- cEntries = tree->GetEntries();
- iev = 0;
- ientry = 0;
- }
+ for(Int_t iEntry = 0; iEntry < fChain->GetEntries(); iEntry++) {
+ fChain->GetEntry(iEntry);
+ evTagCuts->InitializeTriggerClasses(tag->GetActiveTriggerClasses());
if(runTagCuts->IsAccepted(tag)) {
if(lhcTagCuts->IsAccepted(tag->GetLHCTag())) {
if(detTagCuts->IsAccepted(tag->GetDetectorTags())) {
- if ((iev == 0) || !aod) localList->Reset();
+ localList->Reset();
Int_t iEvents = tag->GetNEvents();
- const TClonesArray *tagList = tag->GetEventTags();
- for(Int_t i = 0; i < iEvents; i++) {
- evTag = (AliEventTag *) tagList->At(i);
- guid = evTag->GetGUID();
- turl = evTag->GetTURL();
- path = evTag->GetPath();
- localList->SetTreeName(aliceFile.Data());
- if(turl!="") localList->SetFileName(turl.Data());
- else localList->SetFileName(path.Data());
-
- if(evTagCuts->IsAccepted(evTag)) {
- if(aod) localList->Enter(iev);
- else localList->Enter(i);
- }
- iev++;
- }//event loop
- if ((ientry == cEntries-1) || !aod) {
- iAccepted += localList->GetN();
- if(turl != "") esdChain->AddFile(turl);
- else if(path != "") esdChain->AddFile(path);
- fGlobalList->Add(localList);
+
+ for (int i = 0; i < iEvents; i++) {
+ // evTag = tag->GetEventTag(i);
+ flTag = tag->GetFileTagForEvent(i);
+ guid = flTag->GetGUID();
+ turl = flTag->GetTURL();
+ path = flTag->GetPath();
+ localList->SetTreeName(aliceFile.Data());
+ if(turl!="") localList->SetFileName(turl.Data());
+ else localList->SetFileName(path.Data());
+
+ if(evTagCuts->IsAccepted(tag->GetEventTag(i))) localList->Enter(i);
}
+
+// const TClonesArray *tagList = tag->GetEventTags();
+// for(Int_t i = 0; i < iEvents; i++) {
+// evTag = (AliEventTag *) tagList->At(i);
+// guid = evTag->GetGUID();
+// turl = evTag->GetTURL();
+// path = evTag->GetPath();
+// localList->SetTreeName(aliceFile.Data());
+// if(turl!="") localList->SetFileName(turl.Data());
+// else localList->SetFileName(path.Data());
+
+// if(evTagCuts->IsAccepted(evTag)) localList->Enter(i);
+// }//event loop
+ iAccepted += localList->GetN();
+ if(turl != "") esdChain->AddFile(turl);
+ else if(path != "") esdChain->AddFile(path);
+ fGlobalList->Add(localList);
}//detector tag cuts
}//lhc tag cuts
}//run tags cut
tag->Clear();
- ientry++;
}//tag file loop
- AliInfo(Form("Accepted events: %d",iAccepted));
+ AliInfo(Form("Accepted events: %d", iAccepted));
esdChain->ls();
esdChain->SetEntryList(fGlobalList,"ne");
delete tag;
//event tag cuts from the AliEventTagCuts object
//and returns a TChain along with the associated TEventList
AliInfo(Form("Querying the tags........"));
-
- Bool_t aod = kFALSE;
+
TString aliceFile;
if(fAnalysisType == "ESD") aliceFile = "esdTree";
- else if(fAnalysisType == "AOD") {
- aliceFile = "aodTree";
- aod = kTRUE;
- }
+ else if(fAnalysisType == "AOD") aliceFile = "aodTree";
else AliFatal("Only ESD and AOD type is implemented!!!");
+
//ESD file chain
TChain *esdChain = new TChain(aliceFile.Data());
//global entry list
//Defining tag objects
AliRunTag *tag = new AliRunTag;
- AliEventTag *evTag = new AliEventTag;
+ // AliEventTag *evTag = 0x0;
fChain->SetBranchAddress("AliTAG",&tag);
TString guid;
TEntryList* localList = new TEntryList();
- Int_t iev = 0;
- Int_t ientry = 0;
- Int_t cEntries = 0;
- Int_t current = -1;
+ Int_t current = -1;
Int_t iAccepted = 0;
-
+
for(Int_t iTagFiles = 0; iTagFiles < fChain->GetEntries(); iTagFiles++) {
fChain->GetEntry(iTagFiles);
if (current != fChain->GetTreeNumber()) {
fLHCFormula->UpdateFormulaLeaves();
fDetectorFormula->UpdateFormulaLeaves();
fEventFormula->UpdateFormulaLeaves();
- // Fix for aod tags: for each tree in the chain, merge the entries
- cEntries = (fChain->GetTree())->GetEntries();
- iev = 0;
- ientry = 0;
- //
current = fChain->GetTreeNumber();
}
+
if(fRunFormula->EvalInstance(iTagFiles) == 1) {
if(fLHCFormula->EvalInstance(iTagFiles) == 1) {
if(fDetectorFormula->EvalInstance(iTagFiles) == 1) {
- if ((iev == 0) || !aod) localList->Reset();
- Int_t iEvents = fEventFormula->GetNdata();
- const TClonesArray *tagList = tag->GetEventTags();
- for(Int_t i = 0; i < iEvents; i++) {
- evTag = (AliEventTag *) tagList->At(i);
- guid = evTag->GetGUID();
- turl = evTag->GetTURL();
- path = evTag->GetPath();
- localList->SetTreeName(aliceFile.Data());
- localList->SetFileName(turl.Data());
- if(fEventFormula->EvalInstance(i) == 1) {
- if(aod) localList->Enter(iev);
- else localList->Enter(i);
- }
- iev++;
- }//event loop
-
- if ((ientry == cEntries-1) || !aod) {
- if(path != "") esdChain->AddFile(path);
- else if(turl != "") esdChain->AddFile(turl);
- fGlobalList->Add(localList);
- iAccepted += localList->GetN();
- }
+ localList->Reset();
+ // Int_t iEvents = fEventFormula->GetNdata();
+ // *** FIXME ***
+
+// const TClonesArray *tagList = tag->GetEventTags();
+// for(Int_t i = 0; i < iEvents; i++) {
+// evTag = (AliEventTag *) tagList->At(i);
+// guid = evTag->GetGUID();
+// turl = evTag->GetTURL();
+// path = evTag->GetPath();
+// localList->SetTreeName(aliceFile.Data());
+// localList->SetFileName(turl.Data());
+// if(fEventFormula->EvalInstance(i) == 1) localList->Enter(i);
+// }//event loop
+
+ if(path != "") esdChain->AddFile(path);
+ else if(turl != "") esdChain->AddFile(turl);
+ fGlobalList->Add(localList);
+ iAccepted += localList->GetN();
}//detector tag cuts
}//lhc tag cuts
}//run tag cut
tag->Clear();
- ientry++;
}//tag file loop
- AliInfo(Form("Accepted events: %d",iAccepted));
+ AliInfo(Form("Accepted events: %d", iAccepted));
esdChain->SetEntryList(fGlobalList,"ne");
delete tag;
return kFALSE;
}
- Bool_t aod = kFALSE;
- if(fAnalysisType == "AOD") aod = kTRUE;
-
-
AliXMLCollection collection;
collection.SetCollectionName(name);
collection.WriteHeader();
TString turl;
TString lfn;
- TTree* cTree = 0;
TEntryList localList;
Int_t iAccepted = 0;
- Int_t iev = 0;
- Int_t ientry = 0;
- Int_t cEntries = 0;
-
+
Int_t iRejectedRun = 0;
Int_t iRejectedLHC = 0;
Int_t iRejectedDet = 0;
//Defining tag objects
AliRunTag* tag = new AliRunTag;
fChain->SetBranchAddress("AliTAG",&tag);
+
+ Int_t iTagFiles = 0;
- for(Int_t iTagFiles = 0; iTagFiles < fChain->GetListOfFiles()->GetEntries(); ++iTagFiles)
+ // AliEventTag *evTag = 0x0;
+ AliFileTag *flTag = 0x0;
+
+ // for(Int_t iTagFiles = 0; iTagFiles < fChain->GetListOfFiles()->GetEntries(); ++iTagFiles)
+ for(Int_t iRunTags = 0; iRunTags < fChain->GetEntries(); ++iRunTags)
{
- fChain->GetEntry(iTagFiles);
- TTree* tree = fChain->GetTree();
- if (cTree != tree) {
- // Fix for aod tags: for each tree in the chain, merge the entries
- cTree = tree;
- cEntries = tree->GetEntries();
- iev = 0;
- ientry = 0;
- }
+ fChain->GetEntry(iRunTags);
//Event list
iTotalEvents += tag->GetNEvents();
- if ((iev == 0) || !aod) localList.Reset();
-
+ localList.Reset();
+
+ evTagCuts->InitializeTriggerClasses(tag->GetActiveTriggerClasses());
+
if ( !runTagCuts || ( runTagCuts && runTagCuts->IsAccepted(tag) ) )
- {
- if ( !lhcTagCuts || ( lhcTagCuts && lhcTagCuts->IsAccepted(tag->GetLHCTag())) )
{
- if ( !detTagCuts || ( detTagCuts && detTagCuts->IsAccepted(tag->GetDetectorTags())) )
- {
- Int_t i(0);
- TIter next(tag->GetEventTags());
- AliEventTag* evTag(0x0);
- iRejectedEvtInFile = 0;
- iAcceptedEvtInFile = 0;
- while ( ( evTag = static_cast<AliEventTag*>(next()) ) )
- {
- guid = evTag->GetGUID();
- turl = evTag->GetTURL();
- lfn = turl(8,turl.Length());
- if( !evTagCuts || ( evTagCuts && evTagCuts->IsAccepted(evTag)) )
- {
- if (aod) localList.Enter(iev);
- else localList.Enter(i);
- iAcceptedEvtInFile++;
-
-// AliInfo(Form("Period %5d Orbit# %12d BC %10d (%5d ? in TURL %s) Trigger %s nmus %d",
-// evTag->GetPeriodNumber(),
-// evTag->GetOrbitNumber(),
-// evTag->GetBunchCrossNumber(),
-// i,
-// evTag->GetTURL(),
-// evTag->GetFiredTriggerClasses().Data(),
-// evTag->GetNumOfMuons()));
- }
- else
- {
- ++iRejectedEvt;
- ++iRejectedEvtInFile;
- }
- ++i;
- ++iev;
- }//event loop
- if ((ientry == cEntries-1) || !aod)
- {
- iAccepted += localList.GetN();
- collection.WriteBody(iTagFiles+1,guid,lfn,turl,&localList,iAcceptedEvtInFile,iRejectedEvtInFile);
- }
- }//detector tag cuts
- else {
- iRejectedDet += tag->GetNEvents();
- }
- }//lhc tag cuts
- else {
- iRejectedLHC += tag->GetNEvents();
- }
- }//run tag cuts
+ if ( !lhcTagCuts || ( lhcTagCuts && lhcTagCuts->IsAccepted(tag->GetLHCTag())) )
+ {
+ if ( !detTagCuts || ( detTagCuts && detTagCuts->IsAccepted(tag->GetDetectorTags())) )
+ {
+ for (int iChunk = 0; iChunk < tag->GetNFiles(); iChunk++, iTagFiles++)
+ {
+ iRejectedEvtInFile = 0;
+ iAcceptedEvtInFile = 0;
+
+ localList.Reset();
+
+ flTag = tag->GetFileTag(iChunk);
+ guid = flTag->GetGUID();
+ turl = flTag->GetTURL();
+ lfn = turl(8,turl.Length());
+
+ for (int i = 0; i<flTag->GetNEvents(); i++)
+ {
+ // evTag = flTag->GetEventTag(i);
+
+ if( !evTagCuts || ( evTagCuts && evTagCuts->IsAccepted(flTag->GetEventTag(i))) )
+ {
+ localList.Enter(i);
+ iAcceptedEvtInFile++;
+ }
+ else
+ {
+ ++iRejectedEvt;
+ ++iRejectedEvtInFile;
+ }
+ }
+ // *** FIXME ***
+// Int_t i(0);
+
+// TIter next(tag->GetEventTags());
+// AliEventTag* evTag(0x0);
+// iRejectedEvtInFile = 0;
+// iAcceptedEvtInFile = 0;
+// while ( ( evTag = static_cast<AliEventTag*>(next()) ) )
+// {
+// guid = evTag->GetGUID();
+// turl = evTag->GetTURL();
+// lfn = turl(8,turl.Length());
+// if( !evTagCuts || ( evTagCuts && evTagCuts->IsAccepted(evTag)) )
+// {
+// localList.Enter(i);
+// iAcceptedEvtInFile++;
+// }
+// else
+// {
+// ++iRejectedEvt;
+// ++iRejectedEvtInFile;
+// }
+// ++i;
+// }//event loop
+ iAccepted += localList.GetN();
+ collection.WriteBody(iTagFiles+1,guid,lfn,turl,&localList,iAcceptedEvtInFile,iRejectedEvtInFile);
+ } // chunk loop
+ }//detector tag cuts
+ else {
+ iRejectedDet += tag->GetNEvents();
+ }
+ }//lhc tag cuts
+ else {
+ iRejectedLHC += tag->GetNEvents();
+ }
+ }//run tag cuts
else {
iRejectedRun += tag->GetNEvents();
}
tag->Clear();
- ++ientry;
} //tag file loop
collection.WriteSummary(iTotalEvents, iAccepted, iRejectedRun, iRejectedLHC, iRejectedDet, iRejectedEvt);
//and returns a XML collection
AliInfo(Form("Creating the collection........"));
- Bool_t aod = kFALSE;
- if(fAnalysisType == "AOD") aod = kTRUE;
AliXMLCollection *collection = new AliXMLCollection();
collection->SetCollectionName(name);
TEntryList* localList = new TEntryList();
Int_t iAccepted = 0;
- Int_t iev = 0;
- Int_t ientry = 0;
- Int_t cEntries = 0;
Int_t iRejectedRun = 0;
Int_t iRejectedLHC = 0;
//Defining tag objects
AliRunTag *tag = new AliRunTag;
- AliEventTag *evTag = new AliEventTag;
+ // AliEventTag *evTag = 0x0;
fChain->SetBranchAddress("AliTAG",&tag);
TTreeFormula *fRunFormula = new TTreeFormula("fRun",fRunCut,fChain);
TTreeFormula *fLHCFormula = new TTreeFormula("fLHC",fLHCCut,fChain);
TTreeFormula *fDetectorFormula = new TTreeFormula("fDetector",fDetectorCut,fChain);
TTreeFormula *fEventFormula = new TTreeFormula("fEvent",fEventCut,fChain);
-
+
Int_t current = -1;
+
for(Int_t iTagFiles = 0; iTagFiles < fChain->GetEntries(); iTagFiles++) {
fChain->GetEntry(iTagFiles);
fLHCFormula->UpdateFormulaLeaves();
fDetectorFormula->UpdateFormulaLeaves();
fEventFormula->UpdateFormulaLeaves();
- // Fix for aod tags: for each tree in the chain, merge the entries
- cEntries = (fChain->GetTree())->GetEntries();
- iev = 0;
- ientry = 0;
- //
current = fChain->GetTreeNumber();
- }
- //Event list
+ }
+
+ //Event list
iTotalEvents += tag->GetNEvents();
- if ((iev == 0) || !aod) localList->Reset();
+ localList->Reset();
if(fRunFormula->EvalInstance(iTagFiles) == 1) {
if(fLHCFormula->EvalInstance(iTagFiles) == 1) {
if(fDetectorFormula->EvalInstance(iTagFiles) == 1) {
- Int_t iEvents = fEventFormula->GetNdata();
- const TClonesArray *tagList = tag->GetEventTags();
- iRejectedEvtInFile = 0;
- iAcceptedEvtInFile = 0;
- for(Int_t i = 0; i < iEvents; i++) {
- evTag = (AliEventTag *) tagList->At(i);
- guid = evTag->GetGUID();
- turl = evTag->GetTURL();
- lfn = turl(8,turl.Length());
- if(fEventFormula->EvalInstance(i) == 1) {
- if(aod) localList->Enter(iev);
- else localList->Enter(i);
- iAcceptedEvtInFile++;
- }
- else {
- iRejectedEvt++;
- iRejectedEvtInFile++;
- }
- iev++;
- }//event loop
- if ((ientry == cEntries-1) || !aod) {
- collection->WriteBody(iTagFiles+1,guid,lfn,turl,localList,iAcceptedEvtInFile, iRejectedEvtInFile);
- iAccepted += localList->GetN();
- }
+ // Int_t iEvents = fEventFormula->GetNdata();
+ // *** FIXME ***
+
+
+// const TClonesArray *tagList = tag->GetEventTags();
+// iRejectedEvtInFile = 0;
+// iAcceptedEvtInFile = 0;
+// for(Int_t i = 0; i < iEvents; i++) {
+// evTag = (AliEventTag *) tagList->At(i);
+// guid = evTag->GetGUID();
+// turl = evTag->GetTURL();
+// lfn = turl(8,turl.Length());
+// if(fEventFormula->EvalInstance(i) == 1) {
+// localList->Enter(i);
+// iAcceptedEvtInFile++;
+// }
+// else {
+// iRejectedEvt++;
+// iRejectedEvtInFile++;
+// }
+// }//event loop
+
+ collection->WriteBody(iTagFiles+1,guid,lfn,turl,localList,iAcceptedEvtInFile, iRejectedEvtInFile);
+ iAccepted += localList->GetN();
}//detector tag cuts
else {
iRejectedDet += tag->GetNEvents();
else {
iRejectedRun += tag->GetNEvents();
}
- ientry++;
}//tag file loop
collection->WriteSummary(iTotalEvents, iAccepted, iRejectedRun, iRejectedLHC, iRejectedDet, iRejectedEvt);
collection->Export();
-
+
delete tag;
return kTRUE;
}
collection->Reset();
while (collection->Next()) {
AliInfo(Form("Adding: %s",collection->GetTURL("")));
- fAnalysisChain->Add(collection->GetTURL(""));
+ if (fAnalysisChain) fAnalysisChain->Add(collection->GetTURL(""));
TEntryList *list = (TEntryList *)collection->GetEventList("");
for(Int_t i = 0; i < list->GetN(); i++) fEventList->Enter(iAccepted+list->GetEntry(i));
else if(fsystem == "PbPb") iAccepted += 1;
}
- fAnalysisChain->SetEventList(fEventList);
+ if (fAnalysisChain) fAnalysisChain->SetEventList(fEventList);
AliInfo(Form("Number of selected events: %d",fEventList->GetN()));
char nstr[2000];
- sprintf(nstr, "TotalEvents=%i", iTotalEvents);
+ snprintf(nstr, 2000, "TotalEvents=%i", iTotalEvents);
TObjString *iTotStr = new TObjString(nstr);
aUserInfo->Add(iTotStr);
- sprintf(nstr, "AcceptedEvents=%i", iAccepted);
+ snprintf(nstr, 2000, "AcceptedEvents=%i", iAccepted);
TObjString *iAccStr = new TObjString(nstr);
aUserInfo->Add(iAccStr);
- sprintf(nstr, "RejectedRun=%i", iRejRun);
+ snprintf(nstr, 2000, "RejectedRun=%i", iRejRun);
TObjString *iRejRunStr = new TObjString(nstr);
aUserInfo->Add(iRejRunStr);
- sprintf(nstr, "RejectedLHC=%i", iRejLHC);
+ snprintf(nstr, 2000, "RejectedLHC=%i", iRejLHC);
TObjString *iRejLHCStr = new TObjString(nstr);
aUserInfo->Add(iRejLHCStr);
- sprintf(nstr, "RejectedDet=%i", iRejDet);
+ snprintf(nstr, 2000, "RejectedDet=%i", iRejDet);
TObjString *iRejDetStr = new TObjString(nstr);
aUserInfo->Add(iRejDetStr);
- sprintf(nstr, "RejectedEvt=%i", iRejEvt);
+ snprintf(nstr, 2000, "RejectedEvt=%i", iRejEvt);
TObjString *iRejEvtStr = new TObjString(nstr);
aUserInfo->Add(iRejEvtStr);