Event Cut developed; Spacial event move implemented; and few others
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysis.h
index e61e8be28dafbe6edcd6a20cb2f2fa7bd60d541a..7afebb50b2845dd61f9dfba44fdb285208e4a582 100644 (file)
 ///////////////////////////////////////////////////////////
 
 #include <TTask.h>
+#include <AliAODParticleCut.h>
+#include <AliAODPairCut.h>
 
-class AliESD;
+class AliAOD;
 class AliStack;
+class AliEventCut;
+class AliVAODParticle;
+class AliAODPair;
  
 class AliAnalysis: public TTask
 {
@@ -25,18 +30,68 @@ class AliAnalysis: public TTask
     virtual ~AliAnalysis();
     
     virtual Int_t Init() = 0;
-    virtual Int_t ProcessEvent(AliESD* esd, AliStack* stack = 0x0) = 0;
+    virtual Int_t ProcessEvent(AliAOD* aodrec, AliAOD* aodsim = 0x0) = 0;
     virtual Int_t Finish() = 0;
+
+    void          SetCutsOnRec();
+    void          SetCutsOnSim();
+    void          SetCutsOnRecAndSim();
     
-    
-    static Int_t GetDebug() {return fgkDebug;}
-    static void  SetDebug(Int_t level) {fgkDebug = level;}
+    void          SetEventCut(AliEventCut* evcut);
+    void          SetPairCut(AliAODPairCut* cut);
     
   protected:
-    
+    Bool_t        Pass(AliAOD* recevent, AliAOD* simevent);
+    AliEventCut*  fEventCut;//event cut
+
+    Bool_t        fCutOnSim;//flag indicating that event cut is performed on simulated particles 
+    Bool_t        fCutOnRec;//flag indicating that event cut is performed on reconstructed tracks
+
+    AliAODPairCut*   fPairCut;// Pair cut applied for all mixed particles
+
+    /**********************************************/
+    /*                C U T S                     */
+    /**********************************************/
+
+    Bool_t (AliAnalysis::*fkPass)(AliAODPair* partpair, AliAODPair* trackpair) const;//Pointer to function that performes pair cut
+    Bool_t (AliAnalysis::*fkPass1)(AliVAODParticle* partpair, AliVAODParticle* trackpair) const;//Pointer to function that performes cut on first particle
+    Bool_t (AliAnalysis::*fkPass2)(AliVAODParticle* partpair, AliVAODParticle* trackpair) const;//Pointer to function that performes cut on second particle
+    Bool_t (AliAnalysis::*fkPassPairProp)(AliAODPair* partpair, AliAODPair* trackpair) const;//Pointer to function that performes pair cut
+
+    Bool_t PassPartAndTrack (AliAODPair* partpair, AliAODPair* trackpair) const {return (fPairCut->Pass((AliAODPair*)partpair))?kTRUE:fPairCut->Pass((AliAODPair*)trackpair);}
+    Bool_t PassPartAndTrack1(AliVAODParticle* part, AliVAODParticle* track) const;
+    Bool_t PassPartAndTrack2(AliVAODParticle* part, AliVAODParticle* track) const;
+    Bool_t PassPairPropPartAndTrack (AliAODPair* partpair, AliAODPair* trackpair) const {return (fPairCut->PassPairProp((AliAODPair*)partpair))?kTRUE:fPairCut->PassPairProp((AliAODPair*)trackpair);}
+
+    Bool_t PassPart (AliAODPair* partpair, AliAODPair* /*trackpair*/) const {return fPairCut->Pass((AliAODPair*)partpair);}
+    Bool_t PassPart1(AliVAODParticle* part, AliVAODParticle* /*track*/) const {return fPairCut->GetFirstPartCut()->Pass(part);}
+    Bool_t PassPart2(AliVAODParticle* part, AliVAODParticle* /*track*/) const {return fPairCut->GetSecondPartCut()->Pass(part);}
+    Bool_t PassPairPropPart (AliAODPair* partpair, AliAODPair* /*trackpair*/) const {return fPairCut->PassPairProp((AliAODPair*)partpair);}
+
+    Bool_t PassTrack (AliAODPair* /*partpair*/, AliAODPair* trackpair) const {return fPairCut->Pass((AliAODPair*)trackpair);}
+    Bool_t PassTrack1(AliVAODParticle* /*part*/, AliVAODParticle* track) const {return fPairCut->GetFirstPartCut()->Pass(track);}
+    Bool_t PassTrack2(AliVAODParticle* /*part*/, AliVAODParticle* track) const {return fPairCut->GetSecondPartCut()->Pass(track);}
+    Bool_t PassPairPropTrack (AliAODPair* /*partpair*/, AliAODPair* trackpair) const {return fPairCut->PassPairProp((AliAODPair*)trackpair);}
+
   private:
-    static Int_t fgkDebug;//! debug level
     ClassDef(AliAnalysis,1)
 };
 
+
+inline Bool_t AliAnalysis::PassPartAndTrack1(AliVAODParticle* part,AliVAODParticle* track) const
+{
+//Checks first particle from both, particle and track pairs
+  AliAODParticleCut* pc = fPairCut->GetFirstPartCut();
+  return (pc->Pass(part))?kTRUE:pc->Pass(track);
+}
+/*************************************************************************************/
+
+inline Bool_t AliAnalysis::PassPartAndTrack2(AliVAODParticle* part,AliVAODParticle* track) const
+{
+//Checks second particle from both, particle and track pairs
+  AliAODParticleCut* pc = fPairCut->GetSecondPartCut();
+  return (pc->Pass(part))?kTRUE:pc->Pass(track);
+}
+/*************************************************************************************/ 
+
 #endif