]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/hfe/AliHFEsignalCuts.cxx
Transition PWG3 --> PWGHF
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEsignalCuts.cxx
diff --git a/PWG3/hfe/AliHFEsignalCuts.cxx b/PWG3/hfe/AliHFEsignalCuts.cxx
deleted file mode 100644 (file)
index bddaf85..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-/**************************************************************************
-* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
-*                                                                        *
-* Author: The ALICE Off-line Project.                                    *
-* Contributors are mentioned in the code where appropriate.              *
-*                                                                        *
-* Permission to use, copy, modify and distribute this software and its   *
-* documentation strictly for non-commercial purposes is hereby granted   *
-* without fee, provided that the above copyright notice appears in all   *
-* copies and that both the copyright notice and this permission notice   *
-* appear in the supporting documentation. The authors make no claims     *
-* about the suitability of this software for any purpose. It is          *
-* provided "as is" without express or implied warranty.                  *
-**************************************************************************/
-//
-// Signal cuts
-// Checks whether a particle (reconstructed or MC) is coming from MC Signal
-// For more information see implementation file
-//
-// Autor:
-//   Markus Fasel <M.Fasel@gsi.de>
-//
-#include <TClass.h>
-#include <TMath.h>
-#include <TParticle.h>
-#include <TString.h>
-
-#include "AliAODTrack.h"
-#include "AliAODMCParticle.h"
-#include "AliESDtrack.h"
-#include "AliLog.h"
-#include "AliMCEvent.h"
-#include "AliMCParticle.h"
-#include "AliVParticle.h"
-
-#include "AliHFEsignalCuts.h"
-#include "AliHFEmcQA.h"
-
-ClassImp(AliHFEsignalCuts)
-
-//____________________________________________________________
-AliHFEsignalCuts::AliHFEsignalCuts():
-  AliAnalysisCuts(),
-  fMC(NULL),
-  fMCQA(NULL)
-{
-  //
-  // Dummy constructor
-  //
-}
-
-//____________________________________________________________
-AliHFEsignalCuts::AliHFEsignalCuts(const Char_t *name, const Char_t *title):
-  AliAnalysisCuts(name, title),
-  fMC(NULL),
-  fMCQA(NULL)
-{
-  //
-  // Default constructor
-  //
-  fMCQA = new AliHFEmcQA;
-  if(fMCQA) fMCQA->Init();
-}
-
-//____________________________________________________________
-AliHFEsignalCuts::AliHFEsignalCuts(const AliHFEsignalCuts &ref):
-  AliAnalysisCuts(ref),
-  fMC(ref.fMC),
-  fMCQA(ref.fMCQA)
-{
-  //
-  // Copy constructor
-  //
-}
-
-//____________________________________________________________
-AliHFEsignalCuts &AliHFEsignalCuts::operator=(const AliHFEsignalCuts &ref){
-  //
-  // Assignment operator
-  //
-  if(this != &ref){
-    fMC = ref.fMC; 
-    fMCQA = ref.fMCQA; 
-  }
-  return *this;
-}
-
-//____________________________________________________________
-AliHFEsignalCuts::~AliHFEsignalCuts(){
-  //
-  // Destructor
-  //
-  if(fMCQA) delete fMCQA;
-}
-
-//____________________________________________________________
-void AliHFEsignalCuts::SetMCEvent(AliMCEvent *mc){ 
-  //
-  // Set mc event
-  //
-  fMC = mc; 
-  if(fMCQA) fMCQA->SetMCEvent(mc);
-}
-
-//____________________________________________________________
-Bool_t AliHFEsignalCuts::IsSelected(TObject *o){
-  //
-  // Define signal as electron coming from charm or beauty
-  // @TODO: Implement setter so that also either of them can be defined
-  // as signal alone
-  
-
-  return IsCharmElectron(o) || IsBeautyElectron(o);
-/*  
-  //saving time?
-  Int_t esources = GetElecSource(dynamic_cast<const AliVParticle *>(o));
-  if(esources>0)printf("esources= %d\n",esources);
-  if(esources == AliHFEmcQA::kDirectCharm || esources == AliHFEmcQA::kDirectBeauty || esources == AliHFEmcQA::kBeautyCharm)  // 1: direct D->e, 2: B->e 3: B->D->e
-    return kTRUE;
-  else
-    return kFALSE;
-*/
-
-}
-
-//____________________________________________________________
-Bool_t AliHFEsignalCuts::IsCharmElectron(const TObject * const o) const {
-  //
-  // Check if mother is coming from Charm
-  //
-  if(!dynamic_cast<const AliVParticle *>(o)) return kFALSE;
-  Int_t esources = GetElecSource(dynamic_cast<const AliVParticle *>(o));
-  if(esources == AliHFEmcQA::kDirectCharm)  // 1: direct D->e
-    return kTRUE;
-  else
-    return kFALSE;
-}
-
-//____________________________________________________________
-Bool_t AliHFEsignalCuts::IsBeautyElectron(const TObject * const o) const {
-  //
-  // Check if mother is coming from Beauty
-  //
-  if(!dynamic_cast<const AliVParticle *>(o)) return kFALSE;
-  Int_t esources = GetElecSource(dynamic_cast<const AliVParticle *>(o));
-  if(esources == AliHFEmcQA::kDirectBeauty || esources == AliHFEmcQA::kBeautyCharm)  // 2: B->e 3: B->D->e
-    return kTRUE;
-  else
-    return kFALSE;
-}
-
-//____________________________________________________________
-Bool_t AliHFEsignalCuts::IsGammaElectron(const TObject * const o) const {
-  //
-  // Check for MC if the electron is coming from Gamma  
-  //
-  if(!dynamic_cast<const AliVParticle *>(o)) return kFALSE;
-  Int_t esources = GetElecSource(dynamic_cast<const AliVParticle *>(o));
-  if(esources >= AliHFEmcQA::kGammaPi0 && esources <= AliHFEmcQA::kGammaRho0 )  // 4: conversion electrons
-  //if(esources == AliHFEmcQA::kGammaPi0 || esources == AliHFEmcQA::kGammaEta || esources == AliHFEmcQA::kGammaOmega || esources == AliHFEmcQA::kGammaPhi || esources == AliHFEmcQA::kGammaEtaPrime || esources == AliHFEmcQA::kGammaRho0 )  // 4: conversion electrons
-    return kTRUE;
-  else
-    return kFALSE;
-}
-
-//____________________________________________________________
-Bool_t AliHFEsignalCuts::IsNonHFElectron(const TObject * const o) const {
-  //
-  // Check for MC if the electron is coming from NonHFE except for conversion
-  //
-  if(!dynamic_cast<const AliVParticle *>(o)) return kFALSE;
-  Int_t esources = GetElecSource(dynamic_cast<const AliVParticle *>(o));  
-  if(esources == AliHFEmcQA:: kPi0 || esources == AliHFEmcQA::kEta || esources == AliHFEmcQA::kOmega || esources == AliHFEmcQA::kPhi || esources == AliHFEmcQA::kEtaPrime || esources == AliHFEmcQA::kRho0)  // 4: conversion electrons
-    return kTRUE;
-  else
-    return kFALSE;
-}
-//____________________________________________________________
-
-/*
-//____________________________________________________________
-Bool_t AliHFEsignalCuts::IsCharmElectron(const TObject * const o) const {
-  //
-  // Check if mother is coming from Charm
-  //
-  if(TMath::Abs(GetTrackPDG(dynamic_cast<const AliVParticle *>(o))) != 11) return kFALSE;
-  Int_t motherpdg = TMath::Abs(GetMotherPDG(dynamic_cast<const AliVParticle *>(o)));
-  AliDebug(1, Form("Mother PDG %d\n", motherpdg));
-
-  if((motherpdg % 1000) / 100 == 4) return kTRUE;    // charmed meson, 3rd position in pdg code == 4
-  if(motherpdg / 1000 == 4) return kTRUE;            // charmed baryon, 4th position in pdg code == 4
-  AliDebug(1, "No Charm\n");
-  return kFALSE;
-}
-
-//____________________________________________________________
-Bool_t AliHFEsignalCuts::IsBeautyElectron(const TObject * const o) const {
-  //
-  // Check if mother is coming from Beauty
-  //
-  if(TMath::Abs(GetTrackPDG(dynamic_cast<const AliVParticle *>(o))) != 11) return kFALSE;
-  Int_t motherpdg = TMath::Abs(GetMotherPDG(dynamic_cast<const AliVParticle *>(o)));
-  AliDebug(1, Form("Mother PDG %d\n", motherpdg));
-
-  if((motherpdg % 1000) / 100 == 5) return kTRUE;   // beauty meson, 3rd position in pdg code == 5
-  if(motherpdg / 1000 == 5) return kTRUE;           // beauty baryon, 4th position in pdg code == 5   
-  AliDebug(1, "No Beauty\n");
-  return kFALSE;
-}
-
-//____________________________________________________________
-Bool_t AliHFEsignalCuts::IsGammaElectron(const TObject * const o) const {
-  //
-  // Check for MC if the electron is coming from Gamma
-  //
-  if(TMath::Abs(GetTrackPDG(dynamic_cast<const AliVParticle *>(o))) != 11) return kFALSE;
-  Int_t motherpdg = TMath::Abs(GetMotherPDG(dynamic_cast<const AliVParticle *>(o)));
-  AliDebug(1, Form("Mother PDG %d\n", motherpdg));
-
-  if(motherpdg!=22){
-    AliDebug(1, "No Gamma");
-    return kFALSE;
-  } else { 
-    AliDebug(1, "Gamma");
-    return kTRUE;
-  }
-}
-*/
-
-//____________________________________________________________
-Int_t AliHFEsignalCuts::GetMotherPDG(const AliVParticle * const track) const {
-  //
-  // Get Mother Pdg code for reconstructed respectively MC tracks
-  // 
-  if(!fMC){
-    AliDebug(1, "No MC Event Available\n");
-    return 0;
-  }
-  const AliVParticle *motherParticle = NULL, *mctrack = NULL;
-  TString objectType = track->IsA()->GetName();
-  if(objectType.CompareTo("AliESDtrack") == 0 || objectType.CompareTo("AliAODTrack") == 0){
-    // Reconstructed track
-    if(track->GetLabel())
-      mctrack = fMC->GetTrack(TMath::Abs(track->GetLabel()));
-  } else {
-    // MCParticle
-    mctrack = track;
-  }
-
-  if(!mctrack) return 0;
-  
-  Int_t motherPDG = 0;
-  if(TString(mctrack->IsA()->GetName()).CompareTo("AliMCParticle") == 0){
-    // case MC Particle
-    const AliMCParticle *esdmctrack = dynamic_cast<const AliMCParticle *>(mctrack);
-    if(esdmctrack) motherParticle = fMC->GetTrack(esdmctrack->Particle()->GetFirstMother());
-    if(motherParticle){
-      const AliMCParticle *esdmcmother = dynamic_cast<const AliMCParticle *>(motherParticle);
-      if(esdmcmother) motherPDG = TMath::Abs(esdmcmother->Particle()->GetPdgCode());
-    }
-  } else {
-    // case AODMCParticle
-    const AliAODMCParticle *aodmctrack = dynamic_cast<const AliAODMCParticle *>(mctrack);
-    if(aodmctrack) motherParticle = fMC->GetTrack(aodmctrack->GetMother());
-    if(motherParticle){
-      const AliAODMCParticle *aodmcmother = dynamic_cast<const AliAODMCParticle *>(motherParticle);
-      if(aodmcmother) motherPDG = TMath::Abs(aodmcmother->GetPdgCode());
-    }
-  }
-  return motherPDG;
-}
-
-//____________________________________________________________
-Int_t AliHFEsignalCuts::GetTrackPDG(const AliVParticle * const track) const {
-       //
-       // Return PDG code of a particle itself
-       //
-  if(!fMC){
-    AliDebug(1, "No MC Event Available\n");
-    return 0;
-  }
-       TString sourcetype = track->IsA()->GetName();
-       const AliVParticle *mctrack = NULL;
-       if(!sourcetype.CompareTo("AliESDtrack") || !sourcetype.CompareTo("AliAODTrack")){
-               mctrack = fMC->GetTrack(TMath::Abs(track->GetLabel()));
-       } else  mctrack = track;
-       if(!mctrack) return 0;
-
-       TString mctype = mctrack->IsA()->GetName();
-       Int_t trackPdg = 0;
-       if(!mctype.CompareTo("AliMCParticle")){
-               const AliMCParticle *esdmc = dynamic_cast<const AliMCParticle *>(mctrack);
-               if(esdmc) trackPdg = esdmc->Particle()->GetPdgCode();
-       } else {
-               const AliAODMCParticle *aodmc = dynamic_cast< const AliAODMCParticle *>(mctrack);
-               if(aodmc) trackPdg = aodmc->GetPdgCode();
-       }
-       return trackPdg;
-}
-
-//____________________________________________________________
-Int_t AliHFEsignalCuts::GetElecSource(const AliVParticle * const track) const {
-       //
-       // Return PDG code of a particle itself
-       //
-       
-  if(!fMC){
-    AliDebug(1, "No MC Event Available\n");
-    return 0;
-  }
-  if(!fMCQA){
-    AliDebug(1, "No MCQA Available\n");
-    return 0;
-  }
-  if(!track){
-    AliDebug(1, "Track not Available\n");
-    return 0;
-  }
-
-  TClass *tracktype;
-  const AliVParticle *mctrack = NULL;
-  TParticle *mcpart = NULL;
-  if((tracktype = track->IsA()) == AliESDtrack::Class() || tracktype == AliAODTrack::Class()){
-    mctrack = fMC->GetTrack(TMath::Abs(track->GetLabel()));
-  } else  mctrack = track;
-  if(!mctrack) return 0;
-
-  Int_t eSource = 0;
-  if(mctrack->IsA() == AliMCParticle::Class()){
-    const AliMCParticle *esdmc = dynamic_cast<const AliMCParticle *>(mctrack);
-    if(esdmc){
-      mcpart = esdmc->Particle();
-      eSource=fMCQA->GetElecSource(mcpart);
-    }
-  } else {
-    return -1;
-  }
-  return eSource;
-}