]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/RESONANCES/AliRsnCutManager.h
Changes for #82873: Module debugging broken (Christian)
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCutManager.h
index 2a9b48d24e2ed336c1eb34a9482dbd0185fb57ee..7bbf1de350bd6c5db037cc44ddea1e13d5dc64a8 100644 (file)
 
 class AliRsnCut;
 
-class AliRsnCutManager : public TNamed
-{
-  public:
-
-    AliRsnCutManager();
-    AliRsnCutManager(const char *name, const char* title = "");
-    AliRsnCutManager(const AliRsnCutManager &cut);
-    AliRsnCutManager& operator=(const AliRsnCutManager& cut);
-    ~AliRsnCutManager();
-    
-    AliRsnCutSet*  GetCommonDaughterCuts() {return &fDaughterCutsCommon;}
-    AliRsnCutSet*  GetDaughter1Cuts()      {return &fDaughterCuts1;}
-    AliRsnCutSet*  GetDaughter2Cuts()      {return &fDaughterCuts2;}
-    AliRsnCutSet*  GetMotherCuts()         {return &fMotherCuts;}
-    
-    Bool_t         PassCommonDaughterCuts(AliRsnDaughter *daughter) {return fDaughterCutsCommon.IsSelected(daughter);}
-    Bool_t         PassDaughter1Cuts(AliRsnDaughter *daughter)      {return fDaughterCuts2.IsSelected(daughter);}
-    Bool_t         PassDaughter2Cuts(AliRsnDaughter *daughter)      {return fDaughterCuts2.IsSelected(daughter);}
-    Bool_t         PassMotherCuts(AliRsnMother *mother)             {return fMotherCuts.IsSelected(mother);}
-    Bool_t         PassSpecificDaughterCuts(Bool_t first, AliRsnDaughter *daughter)
-                     {if (first) return PassDaughter1Cuts(daughter); else return PassDaughter2Cuts(daughter);}
-
-  private:
-
-    AliRsnCutSet  fDaughterCutsCommon; // single-track cuts common to both daughters
-    AliRsnCutSet  fDaughterCuts1;      // single-track cuts for only first daughter
-    AliRsnCutSet  fDaughterCuts2;      // single-track cuts for only second daughter
-    AliRsnCutSet  fMotherCuts;         // mother cuts (on relations between daughters)
-
-    ClassDef(AliRsnCutManager, 2)      // dictionary
+class AliRsnCutManager : public TNamed {
+public:
+
+   AliRsnCutManager();
+   AliRsnCutManager(const char *name, const char* title = "");
+   AliRsnCutManager(const AliRsnCutManager &cut);
+   AliRsnCutManager& operator=(const AliRsnCutManager& cut);
+   ~AliRsnCutManager();
+
+   AliRsnCutSet*  GetCommonDaughterCuts() {return &fDaughterCutsCommon;}
+   AliRsnCutSet*  GetDaughter1Cuts()      {return &fDaughterCuts1;}
+   AliRsnCutSet*  GetDaughter2Cuts()      {return &fDaughterCuts2;}
+   AliRsnCutSet*  GetMotherCuts()         {return &fMotherCuts;}
+
+   Bool_t         IsSelected(TObject *object);
+   Bool_t         PassCommonDaughterCuts(AliRsnDaughter *daughter) {return fDaughterCutsCommon.IsSelected(daughter);}
+   Bool_t         PassDaughter1Cuts(AliRsnDaughter *daughter)      {return fDaughterCuts1.IsSelected(daughter);}
+   Bool_t         PassDaughter2Cuts(AliRsnDaughter *daughter)      {return fDaughterCuts2.IsSelected(daughter);}
+   Bool_t         PassMotherCuts(AliRsnMother *mother)             {return fMotherCuts.IsSelected(mother);}
+   Bool_t         PassSpecificDaughterCuts(Bool_t first, AliRsnDaughter *daughter)
+   {if (first) return PassDaughter1Cuts(daughter); else return PassDaughter2Cuts(daughter);}
+
+private:
+
+   AliRsnCutSet  fDaughterCutsCommon; // single-track cuts common to both daughters
+   AliRsnCutSet  fDaughterCuts1;      // single-track cuts for only first daughter
+   AliRsnCutSet  fDaughterCuts2;      // single-track cuts for only second daughter
+   AliRsnCutSet  fMotherCuts;         // mother cuts (on relations between daughters)
+
+   ClassDef(AliRsnCutManager, 2)      // dictionary
 };
 
+inline Bool_t AliRsnCutManager::IsSelected(TObject *object)
+{
+//
+// Check all selection cuts
+//
+
+   if (object->InheritsFrom(AliRsnDaughter::Class())) {
+      return PassCommonDaughterCuts((AliRsnDaughter*)object);
+   } else if (object->InheritsFrom(AliRsnMother::Class())) {
+      AliRsnMother *mother = (AliRsnMother*)object;
+      if (!PassCommonDaughterCuts(mother->GetDaughter(0))) return kFALSE;
+      if (!PassCommonDaughterCuts(mother->GetDaughter(1))) return kFALSE;
+      if (!PassDaughter1Cuts(mother->GetDaughter(0))) return kFALSE;
+      if (!PassDaughter2Cuts(mother->GetDaughter(1))) return kFALSE;
+      if (!PassMotherCuts(mother)) return kFALSE;
+      return kTRUE;
+   } else {
+      AliError("AliRsnCutManager can check only daughters and mothers");
+      return kFALSE;
+   }
+}
+
 #endif