X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ANALYSIS%2FAliTagAnalysis.cxx;h=77bd1081ac493549e1c67537feea4d490b8381d2;hb=44d4be669ac1d13a24af512b41524ac6211715d2;hp=a27e2f15e40e224098b14aa42635c152b6c532d8;hpb=bf78fec44ee4c576a8362e32f656626cccddb241;p=u%2Fmrichter%2FAliRoot.git diff --git a/ANALYSIS/AliTagAnalysis.cxx b/ANALYSIS/AliTagAnalysis.cxx index a27e2f15e40..77bd1081ac4 100644 --- a/ANALYSIS/AliTagAnalysis.cxx +++ b/ANALYSIS/AliTagAnalysis.cxx @@ -118,7 +118,7 @@ void AliTagAnalysis::ChainLocalTags(const char *dirname) { 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; @@ -138,7 +138,7 @@ void AliTagAnalysis::ChainLocalTags(const char *dirname) { //___________________________________________________________________________ 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(); @@ -165,13 +165,9 @@ TChain *AliTagAnalysis::QueryTags(AliRunTagCuts *runTagCuts, //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 @@ -181,66 +177,64 @@ TChain *AliTagAnalysis::QueryTags(AliRunTagCuts *runTagCuts, //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; @@ -258,16 +252,13 @@ TChain *AliTagAnalysis::QueryTags(const char *fRunCut, //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 @@ -275,7 +266,7 @@ TChain *AliTagAnalysis::QueryTags(const char *fRunCut, //Defining tag objects AliRunTag *tag = new AliRunTag; - AliEventTag *evTag = new AliEventTag; + // AliEventTag *evTag = 0x0; fChain->SetBranchAddress("AliTAG",&tag); TString guid; @@ -289,12 +280,9 @@ TChain *AliTagAnalysis::QueryTags(const char *fRunCut, 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()) { @@ -302,46 +290,37 @@ TChain *AliTagAnalysis::QueryTags(const char *fRunCut, 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; @@ -370,10 +349,6 @@ AliTagAnalysis::CreateXMLCollection(const char* name, return kFALSE; } - Bool_t aod = kFALSE; - if(fAnalysisType == "AOD") aod = kTRUE; - - AliXMLCollection collection; collection.SetCollectionName(name); collection.WriteHeader(); @@ -382,13 +357,9 @@ AliTagAnalysis::CreateXMLCollection(const char* name, 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; @@ -402,80 +373,95 @@ AliTagAnalysis::CreateXMLCollection(const char* name, //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(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; iGetNEvents(); 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(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); @@ -495,8 +481,6 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* name, //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); @@ -508,9 +492,6 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* 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; @@ -524,15 +505,16 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* name, //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); @@ -541,43 +523,39 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* name, 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(); @@ -590,11 +568,10 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* name, else { iRejectedRun += tag->GetNEvents(); } - ientry++; }//tag file loop collection->WriteSummary(iTotalEvents, iAccepted, iRejectedRun, iRejectedLHC, iRejectedDet, iRejectedEvt); collection->Export(); - + delete tag; return kTRUE; } @@ -619,7 +596,7 @@ TChain *AliTagAnalysis::GetInputChain(const char* system, const char *wn) { 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)); @@ -627,7 +604,7 @@ TChain *AliTagAnalysis::GetInputChain(const char* system, const char *wn) { else if(fsystem == "PbPb") iAccepted += 1; } - fAnalysisChain->SetEventList(fEventList); + if (fAnalysisChain) fAnalysisChain->SetEventList(fEventList); AliInfo(Form("Number of selected events: %d",fEventList->GetN())); @@ -697,27 +674,27 @@ AliTagAnalysis::CreateChainFromCollection(const char* collectionname, const char 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);