Filter and cuts classes to be used with filter tasks.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 29 Jun 2007 12:57:20 +0000 (12:57 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 29 Jun 2007 12:57:20 +0000 (12:57 +0000)
ANALYSIS/ANALYSISLinkDef.h
ANALYSIS/AliAnalysisCuts.cxx [new file with mode: 0644]
ANALYSIS/AliAnalysisCuts.h [new file with mode: 0644]
ANALYSIS/AliAnalysisFilter.cxx [new file with mode: 0644]
ANALYSIS/AliAnalysisFilter.h [new file with mode: 0644]
ANALYSIS/libANALYSIS.pkg

index c14e5a654695deab5f58234f1d57fd2c034aef79..7d380bc44075b928e3fe34b9f72c64a32bfb72b3 100644 (file)
@@ -9,9 +9,9 @@
 #pragma link C++ class  AliAnalysisTask+;
 #pragma link C++ class  AliAnalysisDataSlot+;
 #pragma link C++ class  AliAnalysisManager+;
-
 #pragma link C++ class  AliAnalysisSelector+;
-
+#pragma link C++ class  AliAnalysisFilter+;
+#pragma link C++ class  AliAnalysisCuts+;
 #ifdef WITHXML
 #pragma link C++ class AliAnalysisGoodies+;
 #pragma link C++ class AliTagAnalysis+;
diff --git a/ANALYSIS/AliAnalysisCuts.cxx b/ANALYSIS/AliAnalysisCuts.cxx
new file mode 100644 (file)
index 0000000..b3187b7
--- /dev/null
@@ -0,0 +1,44 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+// Base class for analysis cuts
+// Author Andreas Morsch
+// andreas.morsch@cern.ch
+
+#include <TObject.h>
+#include "AliAnalysisCuts.h"
+
+
+ClassImp(AliAnalysisCuts)
+
+
+////////////////////////////////////////////////////////////////////////
+
+AliAnalysisCuts::AliAnalysisCuts():
+    TNamed()
+{
+  // Default constructor
+}
+
+AliAnalysisCuts::AliAnalysisCuts(const char* name, const char* title):
+    TNamed(name, title)
+{
+  // Constructor
+}
+
+AliAnalysisCuts::AliAnalysisCuts(const AliAnalysisCuts& obj):
+    TNamed(obj)
+{
+}
diff --git a/ANALYSIS/AliAnalysisCuts.h b/ANALYSIS/AliAnalysisCuts.h
new file mode 100644 (file)
index 0000000..ff28a60
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef ALIANALYSISCUTS_H
+#define ALIANALYSISCUTS_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+// Base class for analysis cuts
+// Author Andreas Morsch
+// andreas.morsch@cern.ch
+
+#include <TNamed.h>
+
+class AliAnalysisCuts : public TNamed
+{
+ public:
+    AliAnalysisCuts();
+    AliAnalysisCuts(const char* name, const char* title);
+    AliAnalysisCuts(const AliAnalysisCuts& obj);  
+    virtual ~AliAnalysisCuts() {;}
+    virtual Bool_t IsSelected(TObject* obj) = 0;
+ private:
+    ClassDef(AliAnalysisCuts, 1); // Base class for filter decisions on ESD objects
+};
+#endif
diff --git a/ANALYSIS/AliAnalysisFilter.cxx b/ANALYSIS/AliAnalysisFilter.cxx
new file mode 100644 (file)
index 0000000..6c9f410
--- /dev/null
@@ -0,0 +1,78 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+//
+// Manager class for filter decisions based on cuts
+// The filter contains a list of sets of cuts.
+// A bit field is filled in order to store the decision of each cut-set. 
+// Author: Andreas Morsch
+// andreas.morsch@cern.ch
+
+#include <TObject.h>
+#include <TList.h>
+#include "AliAnalysisFilter.h"
+#include "AliAnalysisCuts.h"
+
+
+ClassImp(AliAnalysisFilter)
+
+
+////////////////////////////////////////////////////////////////////////
+
+AliAnalysisFilter::AliAnalysisFilter():
+    TNamed(),
+    fCuts(0)
+{
+  // Default constructor
+}
+
+AliAnalysisFilter::AliAnalysisFilter(const char* name, const char* title):
+    TNamed(name, title),
+    fCuts(new TList())
+{
+  // Constructor
+}
+
+AliAnalysisFilter::AliAnalysisFilter(const AliAnalysisFilter& obj):
+    TNamed(obj)
+{
+// Copy constructor
+}
+
+
+UInt_t AliAnalysisFilter::IsSelected(TObject* obj)
+{
+    //
+    // Loop over all set of cuts
+    // and store the decision
+    UInt_t result = 0;
+    TIter next(fCuts);
+    AliAnalysisCuts *cuts;
+    Int_t iCutB = 1;
+       
+    while((cuts = (AliAnalysisCuts*)next())) {
+       Bool_t acc = cuts->IsSelected(obj);
+       if (acc) {result |= iCutB & 0x00ffffff;}
+       iCutB *= 2;
+    }  
+
+    return result;
+}
+
+void AliAnalysisFilter::AddCuts(AliAnalysisCuts* cuts)
+{
+    // Add a set of cuts
+    fCuts->Add(cuts);
+}
diff --git a/ANALYSIS/AliAnalysisFilter.h b/ANALYSIS/AliAnalysisFilter.h
new file mode 100644 (file)
index 0000000..e7b0187
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef ALIANALYSISFILTER_H
+#define ALIANALYSISFILTER_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+//
+// Manager class for filter decisions based on cuts
+// Author: Andreas Morsch
+// andreas.morsch@cern.ch
+
+#include <TNamed.h>
+
+class AliAnalysisCuts;
+
+class AliAnalysisFilter : public TNamed
+{
+ public:
+    AliAnalysisFilter();
+    AliAnalysisFilter(const char* name, const char* title = "AnalysisFilter");
+    AliAnalysisFilter(const AliAnalysisFilter& obj);  
+    virtual ~AliAnalysisFilter() {;}
+    virtual UInt_t IsSelected(TObject* obj);
+    virtual void AddCuts(AliAnalysisCuts* cuts);
+ private:
+    TList* fCuts;    // List of cuts
+    ClassDef(AliAnalysisFilter, 1); // Manager class for filter decisions
+};
+#endif
index 0c7c4ec3611051cd371e9b9d58f205469e6455b7..33e8c3f6d8119e699b46a2c6a8a0bde5d11a85ab 100644 (file)
@@ -1,6 +1,8 @@
 SRCS = AliAnalysisDataContainer.cxx AliAnalysisDataSlot.cxx \
        AliAnalysisManager.cxx AliAnalysisTask.cxx \
-       AliAnalysisSelector.cxx
+       AliAnalysisSelector.cxx \
+       AliAnalysisFilter.cxx AliAnalysisCuts.cxx       
+
 
 CHECKALIEN = $(shell root-config --has-alien)
 ifeq (yes,$(CHECKALIEN))