Selection result per cut name.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 16 Sep 2009 10:43:03 +0000 (10:43 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 16 Sep 2009 10:43:03 +0000 (10:43 +0000)
ANALYSIS/AliAnalysisCuts.cxx
ANALYSIS/AliAnalysisCuts.h
ANALYSIS/AliAnalysisFilter.cxx
ANALYSIS/AliAnalysisFilter.h

index 9c3effbf663d1250ab493ded9a65595d6dd1f452..3e144a53f9e7116dd5def0cddc9fac7d6b9c0a86 100644 (file)
@@ -29,13 +29,13 @@ ClassImp(AliAnalysisCuts)
 ////////////////////////////////////////////////////////////////////////
 
 AliAnalysisCuts::AliAnalysisCuts():
-    TNamed(), fFilterMask(0)
+    TNamed(), fFilterMask(0), fSelected(kFALSE)
 {
   // Default constructor
 }
 
 AliAnalysisCuts::AliAnalysisCuts(const char* name, const char* title):
-    TNamed(name, title), fFilterMask(0)
+    TNamed(name, title), fFilterMask(0), fSelected(kFALSE)
 {
   // Constructor
 }
index 74c14c71c3c32cd15bd827f21d414460ffab3da1..0b4b72c7cb65d8e32f6cbcd2bf92dcfb4fa51361 100644 (file)
@@ -24,9 +24,12 @@ class AliAnalysisCuts : public TNamed
     virtual Bool_t IsSelected(TList*  list)  = 0;
     virtual void   Init() {;}
     virtual void   SetFilterMask(UInt_t mask) {fFilterMask = mask;}
-    virtual UInt_t GetFilterMask()   const    {return fFilterMask;}        
+    virtual UInt_t GetFilterMask()   const    {return fFilterMask;}
+    virtual void   SetSelected(Bool_t dec)    {fSelected = dec;}
+    virtual UInt_t Selected()        const    {return fSelected;}          
  private:
     UInt_t fFilterMask; // Mask to use one of the previous decisions inside a filter
+    Bool_t fSelected;   // Final decision on selction
     ClassDef(AliAnalysisCuts, 4); // Base class for filter decisions on ESD objects
 };
  
index 4ffc5ee52e19ec89e2b7a70f53cbc600964100c5..4762a3844c121526e3c56639b1c7136a85332d72 100644 (file)
@@ -81,7 +81,7 @@ UInt_t AliAnalysisFilter::IsSelected(TObject* obj)
        if ((filterMask = cuts->GetFilterMask()) > 0) {
            acc = (acc && (filterMask & result));
        }
-       
+       cuts->SetSelected(acc);
        if (acc) {result |= iCutB & 0x00ffffff;}
        iCutB *= 2;
     }  
@@ -95,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;
     }  
@@ -122,3 +128,11 @@ 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));
+    return (cut->Selected());
+}
index 0e529d1e5b7d1e26c61a3e4861b535b4ff4d7cbd..1bcc36065b413a4cf6dabc2337a81f5747c9e0c1 100644 (file)
@@ -26,6 +26,7 @@ class AliAnalysisFilter : public TNamed
     virtual ~AliAnalysisFilter() {;}
     virtual UInt_t IsSelected(TObject* obj);
     virtual UInt_t IsSelected(TList* obj);
+    virtual Bool_t IsSelected(char* name);
     virtual void AddCuts(AliAnalysisCuts* cuts);
     virtual void Init();
     TList*  GetCuts() const {return fCuts;}