//
// class AliAnalysis
//
-// Base class for analysis
-//
-//
+// Base class for analysis.
+// Each inheriting calss must define 3 methods:
+// - Init() : that is called before event processing
+// - ProcessEvent(AliESD*,AliStack*)
+// -
// Piotr.Skowronski@cern.ch
//
///////////////////////////////////////////////////////////
+#include "AliEventCut.h"
+#include "AliAODPairCut.h"
ClassImp(AliAnalysis)
-Int_t AliAnalysis::fgkDebug = 0;
-
-AliAnalysis::AliAnalysis()
+AliAnalysis::AliAnalysis():
+ fEventCut(0x0),
+ fCutOnSim(kTRUE),
+ fCutOnRec(kTRUE),
+ fPairCut(new AliAODPairEmptyCut()),//empty cut - accepts all particles
+ fkPass(&AliAnalysis::PassPartAndTrack), //by default perform cut on both track and particle pair
+ fkPass1(&AliAnalysis::PassPartAndTrack1), //used onluy by ProcessTracksAndParticles
+ fkPass2(&AliAnalysis::PassPartAndTrack2),
+ fkPassPairProp(&AliAnalysis::PassPairPropPartAndTrack)
{
//ctor
}
/*********************************************************/
AliAnalysis::AliAnalysis(const char* name,const char* title):
- TTask(name,title)
+ TTask(name,title),
+ fEventCut(0x0),
+ fCutOnSim(kTRUE),
+ fCutOnRec(kTRUE),
+ fPairCut(new AliAODPairEmptyCut()),//empty cut - accepts all particles
+ fkPass(&AliAnalysis::PassPartAndTrack), //by default perform cut on both track and particle pair
+ fkPass1(&AliAnalysis::PassPartAndTrack1), //used onluy by ProcessTracksAndParticles
+ fkPass2(&AliAnalysis::PassPartAndTrack2),
+ fkPassPairProp(&AliAnalysis::PassPairPropPartAndTrack)
{
//ctor
}
AliAnalysis::~AliAnalysis()
{
//dtor
+ delete fEventCut;
+}
+/*********************************************************/
+
+void AliAnalysis::SetEventCut(AliEventCut* evcut)
+{
+//Sets event - makes a private copy
+ delete fEventCut;
+ if (evcut) fEventCut = (AliEventCut*)evcut->Clone();
+ else fEventCut = 0x0;
}
/*********************************************************/
+Bool_t AliAnalysis::Rejected(AliAOD* recevent, AliAOD* simevent)
+{
+ //checks the event cut
+ if (fEventCut == 0x0) return kFALSE;
+
+ if (fCutOnRec)
+ if (fEventCut->Rejected(recevent)) return kTRUE;
+
+ if (fCutOnSim)
+ if (fEventCut->Rejected(simevent)) return kTRUE;
+
+ return kFALSE;
+}
+/*************************************************************************************/
+
+void AliAnalysis::SetPairCut(AliAODPairCut* cut)
+{
+//Sets new Pair Cut. Old one is deleted
+//Note that it is created new object instead of simple pointer set
+//I do not want to have pointer
+//to object created somewhere else
+//because in that case I could not believe that
+//it would always exist (sb could delete it)
+//so we have always own copy
+
+ if(!cut)
+ {
+ Error("AliHBTFunction::SetPairCut","argument is NULL");
+ return;
+ }
+ delete fPairCut;
+ fPairCut = (AliAODPairCut*)cut->Clone();
+
+}
+/******************************************************************/
+
+void AliAnalysis::SetCutsOnSim()
+{
+ // -- aplies only to Process("TracksAndParticles")
+ // (ProcessTracksAndParticles and ProcessTracksAndParticlesNonIdentAnal)
+ // Only particles properties are checkes against cuts
+
+ fCutOnRec = kFALSE;
+ fCutOnSim = kTRUE;
+
+ fkPass = &AliAnalysis::PassPart;
+ fkPass1 = &AliAnalysis::PassPart1;
+ fkPass2 = &AliAnalysis::PassPart2;
+ fkPassPairProp = &AliAnalysis::PassPairPropPart;
+
+}
+/*************************************************************************************/
+
+void AliAnalysis::SetCutsOnRec()
+{
+ // -- aplies only to Process("TracksAndParticles")
+ // (ProcessTracksAndParticles and ProcessTracksAndParticlesNonIdentAnal)
+ // Only tracks properties are checkes against cuts
+
+ fCutOnRec = kTRUE;
+ fCutOnSim = kFALSE;
+
+ fkPass = &AliAnalysis::PassTrack;
+ fkPass1 = &AliAnalysis::PassTrack1;
+ fkPass2 = &AliAnalysis::PassTrack2;
+ fkPassPairProp = &AliAnalysis::PassPairPropTrack;
+
+}
+/*************************************************************************************/
+
+void AliAnalysis::SetCutsOnRecAndSim()
+{
+ // -- aplies only to Process("TracksAndParticles")
+ // (ProcessTracksAndParticles and ProcessTracksAndParticlesNonIdentAnal)
+ // Both, tracks and particles, properties are checked against cuts
+
+ fCutOnRec = kTRUE;
+ fCutOnSim = kTRUE;
+
+ fkPass = &AliAnalysis::PassPartAndTrack;
+ fkPass1 = &AliAnalysis::PassPartAndTrack1;
+ fkPass2 = &AliAnalysis::PassPartAndTrack2;
+ fkPassPairProp = &AliAnalysis::PassPairPropPartAndTrack;
+}