X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWG3%2Fhfe%2FAliHFEcuts.cxx;h=626889650835ff25e4adf1154a9fae5d926a79f5;hb=a0bb2d0674a22ef4509ae3050ca6b93a0a9665e1;hp=1c7c8a04bb0dc9c601c84aca83263004eb20811c;hpb=0792aa82787a0a04e9a9bea3564868dae5b71eba;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWG3/hfe/AliHFEcuts.cxx b/PWG3/hfe/AliHFEcuts.cxx index 1c7c8a04bb0..62688965083 100644 --- a/PWG3/hfe/AliHFEcuts.cxx +++ b/PWG3/hfe/AliHFEcuts.cxx @@ -12,18 +12,44 @@ * 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 * - * Markus Fasel * - * Markus Heide * - * Matus Kalisky * - * * - ************************************************************************/ +// +// 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 +// Markus Fasel +// Markus Heide +// Matus Kalisky +// +// 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 #include #include @@ -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(fCutList->FindObject("fPartGenCuts")); + if(genCuts){ + AliCFParticleGenCuts *myGenCut = dynamic_cast(genCuts->FindObject("fCutsGenMC")); + if(myGenCut) myGenCut->SetAODMC(kTRUE); + } + } + // Connect the event cuts - /*SetEventCutList(kEventStepGenerated); + SetEventCutList(kEventStepGenerated); SetEventCutList(kEventStepReconstructed); cfm->SetEventCutsList(kEventStepGenerated, dynamic_cast(fCutList->FindObject("fEvGenCuts"))); - cfm->SetEventCutsList(kEventStepReconstructed, dynamic_cast(fCutList->FindObject("fEvRecCuts")));*/ + cfm->SetEventCutsList(kEventStepReconstructed, dynamic_cast(fCutList->FindObject("fEvRecCuts"))); // Connect the particle cuts cfm->SetParticleCutsList(kStepMCGenerated, dynamic_cast(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(fCutList->FindObject("fPartGenCuts")); - if(genCuts){ - AliCFParticleGenCuts *myGenCut = dynamic_cast(genCuts->FindObject("fCutsGenMC")); - if(myGenCut) myGenCut->SetEvtInfo(ev); - } - } else if(!TString(ev->IsA()->GetName()).CompareTo("AliESDEvent")){ - TObjArray *primCuts = dynamic_cast(fCutList->FindObject("fPartPrimCuts")); - if(primCuts){ - AliCFTrackIsPrimaryCuts *myPrimCut = dynamic_cast(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(fCutList->FindObject(stepnames[step].Data())); if(!cuts) return kTRUE; TIterator *it = cuts->MakeIterator();