fCuts = obj.fCuts;
}
+AliAnalysisFilter::~AliAnalysisFilter()
+{
+// Destructor
+ if (fCuts) fCuts->Delete("slow");
+ delete fCuts;
+}
AliAnalysisFilter& AliAnalysisFilter::operator=(const AliAnalysisFilter& other)
{
// Assignment
- TNamed::operator=(other);
- fCuts = other.fCuts;
- return *this;
+ if (&other != this) {
+ TNamed::operator=(other);
+ fCuts = other.fCuts;
+ }
+ return *this;
}
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;
}
// 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;
}
// 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;
+ }
+}