]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/hfe/AliHFEcuts.cxx
Mass bins settable from outside (Francesco)
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEcuts.cxx
index 1c7c8a04bb0dc9c601c84aca83263004eb20811c..626889650835ff25e4adf1154a9fae5d926a79f5 100644 (file)
 * 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>
@@ -39,7 +65,6 @@
 #include "AliCFTrackKineCuts.h"
 #include "AliCFTrackQualityCuts.h"
 #include "AliESDtrack.h"
-#include "AliMCParticle.h"
 
 #include "AliHFEcuts.h"
 
@@ -110,6 +135,10 @@ AliHFEcuts::~AliHFEcuts(){
 
 //__________________________________________________________________
 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");
@@ -124,11 +153,21 @@ void AliHFEcuts::Initialize(AliCFManager *cfm){
   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")));
@@ -152,29 +191,6 @@ void AliHFEcuts::Initialize(){
 
 }
 
-//__________________________________________________________________
-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){
   // 
@@ -221,12 +237,13 @@ void AliHFEcuts::SetParticleGenCutList(){
   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);
@@ -296,7 +313,7 @@ void AliHFEcuts::SetRecKineITSTPCCutList(){
   
   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);
@@ -389,7 +406,7 @@ Bool_t AliHFEcuts::CheckParticleCuts(CutStep_t step, TObject *o){
   //
   // 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();