1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
19 // Manager class for filter decisions based on cuts
20 // The filter contains a list of sets of cuts.
21 // A bit field is filled in order to store the decision of each cut-set.
22 // Author: Andreas Morsch
23 // andreas.morsch@cern.ch
27 #include "AliAnalysisFilter.h"
28 #include "AliAnalysisCuts.h"
31 ClassImp(AliAnalysisFilter)
34 ////////////////////////////////////////////////////////////////////////
36 AliAnalysisFilter::AliAnalysisFilter():
40 // Default constructor
43 AliAnalysisFilter::AliAnalysisFilter(const char* name, const char* title):
50 AliAnalysisFilter::AliAnalysisFilter(const AliAnalysisFilter& obj):
59 AliAnalysisFilter& AliAnalysisFilter::operator=(const AliAnalysisFilter& other)
62 TNamed::operator=(other);
67 UInt_t AliAnalysisFilter::IsSelected(TObject* obj)
70 // Loop over all set of cuts
71 // and store the decision
76 AliAnalysisCuts *cuts;
79 while((cuts = (AliAnalysisCuts*)next())) {
80 Bool_t acc = cuts->IsSelected(obj);
81 if ((filterMask = cuts->GetFilterMask()) > 0) {
82 acc = (acc && (filterMask == result));
84 cuts->SetSelected(acc);
85 if (acc) {result |= iCutB & 0x00ffffff;}
92 UInt_t AliAnalysisFilter::IsSelected(TList* list)
95 // Loop over all set of cuts
96 // and store the decision
101 AliAnalysisCuts *cuts;
104 while((cuts = (AliAnalysisCuts*)next())) {
105 Bool_t acc = cuts->IsSelected(list);
106 if ((filterMask = cuts->GetFilterMask()) > 0) {
107 acc = (acc && (filterMask & result));
109 cuts->SetSelected(acc);
110 if (acc) {result |= iCutB & 0x00ffffff;}
117 void AliAnalysisFilter::Init()
120 // Loop over all set of cuts and call Init
122 AliAnalysisCuts *cuts;
123 while((cuts = (AliAnalysisCuts*)next())) cuts->Init();
126 void AliAnalysisFilter::AddCuts(AliAnalysisCuts* cuts)
132 Bool_t AliAnalysisFilter::IsSelected(char* name)
135 // Returns current result for cut with name
136 AliAnalysisCuts* cut = (AliAnalysisCuts*) (fCuts->FindObject(name));
138 return (cut->Selected());