* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-/************************************************************************
- * *
- * Cut menagement class implemented by the *
- * ALICE Heavy Flavour Electron Group *
- * *
- * Authors: *
- * Raphaelle Bailhache <R.Bailhache@gsi.de> *
- * Markus Fasel <M.Fasel@gsi.de> *
- * Markus Heide <mheide@uni-muenster.de> *
- * Matus Kalisky <m.kalisky@uni-muenster.de> *
- * *
- ************************************************************************/
+//
+// Cut menagement class implemented by the
+// ALICE Heavy Flavour Electron Group
+// Interface to the correction framework
+// Provides a set of standard cuts
+//
+// Authors:
+// Raphaelle Bailhache <R.Bailhache@gsi.de>
+// Markus Fasel <M.Fasel@gsi.de>
+// Markus Heide <mheide@uni-muenster.de>
+// Matus Kalisky <m.kalisky@uni-muenster.de>
+//
+// Overview over the 18 steps in the correction Framework
+// 0. Generated Electrons
+// 1. Signal Electrons
+// 2. Electron in Acceptance
+// ------------------------------------------------------------
+// 3. Rec without cuts (MC information)
+// 4. Rec Kine ITS/TPC (MC Information)
+// 5. Rec Primary (MC Information)
+// 6. HFE ITS (MC Information)
+// 7. HFE TRD (MC Information)
+// 8. PID (MC Information)
+// ............................................................
+// 9. Rec without cuts(MC Information for tracks which are already registered)
+// 10. Rec Kine ITS/TPC (MC Information for tracks which are already registered)
+// 11. RecPrimary (MC Information for tracks which are already registered)
+// 12. HFE ITS (MC Information for tracks which are already registered)
+// 13. HFE TPC (MC Information for tracks which are already registered)
+// 14. PID (MC Information for tracks which are already registered)
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// 15. Rec without cuts
+// 16. Rec Kine ITS/TPC
+// 17. Rec Primary
+// 18. HFE ITS
+// 19. HFE TRD
+// 20. PID
+//
#include <TClass.h>
#include <TList.h>
#include <TObjArray.h>
#include "AliCFTrackKineCuts.h"
#include "AliCFTrackQualityCuts.h"
#include "AliESDtrack.h"
-#include "AliMCParticle.h"
#include "AliHFEcuts.h"
//__________________________________________________________________
void AliHFEcuts::Initialize(AliCFManager *cfm){
+ //
+ // Initializes the cut objects from the correction framework
+ // Publishes the cuts to the correction framework manager
+ //
if(IsInDebugMode()){
fHistQA = new TList;
fHistQA->SetName("CutQAhistograms");
SetHFElectronITSCuts();
SetHFElectronTRDCuts();
+ // Publish to the cuts which analysis type they are (ESD Analysis by default)
+ if(IsAOD()){
+ AliInfo("Setting AOD Analysis");
+ TObjArray *genCuts = dynamic_cast<TObjArray *>(fCutList->FindObject("fPartGenCuts"));
+ if(genCuts){
+ AliCFParticleGenCuts *myGenCut = dynamic_cast<AliCFParticleGenCuts *>(genCuts->FindObject("fCutsGenMC"));
+ if(myGenCut) myGenCut->SetAODMC(kTRUE);
+ }
+ }
+
// Connect the event cuts
- /*SetEventCutList(kEventStepGenerated);
+ SetEventCutList(kEventStepGenerated);
SetEventCutList(kEventStepReconstructed);
cfm->SetEventCutsList(kEventStepGenerated, dynamic_cast<TObjArray *>(fCutList->FindObject("fEvGenCuts")));
- cfm->SetEventCutsList(kEventStepReconstructed, dynamic_cast<TObjArray *>(fCutList->FindObject("fEvRecCuts")));*/
+ cfm->SetEventCutsList(kEventStepReconstructed, dynamic_cast<TObjArray *>(fCutList->FindObject("fEvRecCuts")));
// Connect the particle cuts
cfm->SetParticleCutsList(kStepMCGenerated, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartGenCuts")));
}
-//__________________________________________________________________
-void AliHFEcuts::SetEventInfo(TObject *ev){
- //
- // Safe wrapper for AliCFManager::SetEventInfo that does a preselection of
- // cut objects that need a special event info according to the object type
- // in the argument.
- // Gets rid of a few run time messages
- //
- if(!TString(ev->IsA()->GetName()).CompareTo("AliMCEvent")){
- TObjArray *genCuts = dynamic_cast<TObjArray *>(fCutList->FindObject("fPartGenCuts"));
- if(genCuts){
- AliCFParticleGenCuts *myGenCut = dynamic_cast<AliCFParticleGenCuts *>(genCuts->FindObject("fCutsGenMC"));
- if(myGenCut) myGenCut->SetEvtInfo(ev);
- }
- } else if(!TString(ev->IsA()->GetName()).CompareTo("AliESDEvent")){
- TObjArray *primCuts = dynamic_cast<TObjArray *>(fCutList->FindObject("fPartPrimCuts"));
- if(primCuts){
- AliCFTrackIsPrimaryCuts *myPrimCut = dynamic_cast<AliCFTrackIsPrimaryCuts *>(primCuts->FindObject("fCutsPrimaryCuts"));
- if(myPrimCut) myPrimCut->SetEvtInfo(ev);
- }
- }
-}
-
//__________________________________________________________________
void AliHFEcuts::SetEventCutList(Int_t istep){
//
if(IsRequireProdVertex()){
genCuts->SetProdVtxRangeX(fProdVtx[0], fProdVtx[1]);
genCuts->SetProdVtxRangeY(fProdVtx[2], fProdVtx[3]);
+ genCuts->SetProdVtxRange2D(kTRUE); // Use ellipse
}
genCuts->SetRequirePdgCode(11, kTRUE);
AliCFTrackKineCuts *kineMCcuts = new AliCFTrackKineCuts("fCutsKineMC","MC Kine Cuts");
kineMCcuts->SetPtRange(fPtRange[0], fPtRange[1]);
- kineMCcuts->SetEtaRange(-0.9, 0.9);
+ kineMCcuts->SetEtaRange(-0.8, 0.8);
if(IsInDebugMode()){
genCuts->SetQAOn(fHistQA);
AliCFTrackKineCuts *kineCuts = new AliCFTrackKineCuts("fCutsKineRec", "REC Kine Cuts");
kineCuts->SetPtRange(fPtRange[0], fPtRange[1]);
- kineCuts->SetEtaRange(-0.9, 0.9);
+ kineCuts->SetEtaRange(-0.8, 0.8);
if(IsInDebugMode()){
trackQuality->SetQAOn(fHistQA);
//
// Checks the cuts without using the correction framework manager
//
- TString stepnames[kNcutSteps] = {"fPartGenCuts", "fPartAccCuts", "fPartRecCuts", "fPartPrimCuts", "fPartHFECuts"};
+ TString stepnames[kNcutStepsTrack] = {"fPartGenCuts", "fPartAccCuts", "fPartRecCuts", "fPartPrimCuts", "fPartHFECuts"};
TObjArray *cuts = dynamic_cast<TObjArray *>(fCutList->FindObject(stepnames[step].Data()));
if(!cuts) return kTRUE;
TIterator *it = cuts->MakeIterator();