]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisFilter.cxx
Fix for bug #74180: Commit and port changes to the release - AliFileMerger
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisFilter.cxx
index fd364fc73c087ca6cc5ceba810b21503f85f609f..af0841f68b6e79308f1a255f4379c78dce25d66e 100644 (file)
@@ -70,12 +70,18 @@ UInt_t AliAnalysisFilter::IsSelected(TObject* obj)
     // Loop over all set of cuts
     // and store the decision
     UInt_t result = 0;
+    UInt_t filterMask;
+    
     TIter next(fCuts);
     AliAnalysisCuts *cuts;
     Int_t iCutB = 1;
        
     while((cuts = (AliAnalysisCuts*)next())) {
        Bool_t acc = cuts->IsSelected(obj);
+       if ((filterMask = cuts->GetFilterMask()) > 0) {
+           acc = (acc && (filterMask == result));
+       }
+       cuts->SetSelected(acc);
        if (acc) {result |= iCutB & 0x00ffffff;}
        iCutB *= 2;
     }  
@@ -89,12 +95,18 @@ UInt_t AliAnalysisFilter::IsSelected(TList* list)
     // Loop over all set of cuts
     // and store the decision
     UInt_t result = 0;
+    UInt_t filterMask;
+
     TIter next(fCuts);
     AliAnalysisCuts *cuts;
     Int_t iCutB = 1;
        
     while((cuts = (AliAnalysisCuts*)next())) {
        Bool_t acc = cuts->IsSelected(list);
+       if ((filterMask = cuts->GetFilterMask()) > 0) {
+           acc = (acc && (filterMask & result));
+       }
+       cuts->SetSelected(acc);
        if (acc) {result |= iCutB & 0x00ffffff;}
        iCutB *= 2;
     }  
@@ -116,3 +128,15 @@ void AliAnalysisFilter::AddCuts(AliAnalysisCuts* cuts)
     // Add a set of cuts
     fCuts->Add(cuts);
 }
+
+Bool_t AliAnalysisFilter::IsSelected(char* name)
+{
+    //
+    // Returns current result for cut with name
+    AliAnalysisCuts* cut = (AliAnalysisCuts*) (fCuts->FindObject(name));
+    if (cut) {
+      return (cut->Selected());
+    } else  {
+      return 0;
+    }
+}