ROOT logo
//-*- Mode: C++ -*-
// $Id$

//* This file is property of and copyright by the ALICE Project        * 
//* ALICE Experiment at CERN, All rights reserved.                     *
//* See cxx source for full Copyright notice                           *

/// @file   AliDxHFEParticleSelectionMCD0.h
/// @author Hege Erdal, Matthias Richter
/// @date   2012-07-19
/// @brief  D0 MC selection for D-HFE correlations
///

#ifndef ALIDXHFEPARTICLESELECTIONMCD0_H
#define ALIDXHFEPARTICLESELECTIONMCD0_H

#include "AliDxHFEParticleSelectionD0.h"
#include "AliDxHFEToolsMC.h"

class TH1;

/**
 * @class AliDxHFEParticleSelectionMCD0
 * Monte Carlo D0 selection for D-HFE correlations, implements the specific
 * selection criteria.
 */
class AliDxHFEParticleSelectionMCD0 : public AliDxHFEParticleSelectionD0 {
  public:
  /// constructor
  AliDxHFEParticleSelectionMCD0(const char* opt="");
  /// destructor
  virtual ~AliDxHFEParticleSelectionMCD0();

  /// overloaded from AliDxHFEParticleSelection: check particle
  virtual int IsSelected(AliVParticle* p, const AliVEvent *pEvent=NULL);
  virtual int InitControlObjects();

  virtual THnSparse* DefineTHnSparse();
  virtual int FillParticleProperties(AliVParticle* p, Double_t* date, int dimension) const;
  virtual AliVParticle* CreateParticle(AliVParticle* track);

  /// check MC criteria
  int CheckMC(AliVParticle* p, const AliVEvent* pEvent);

  /// Flag to run over MC "stack". Not used at the moment
  void SetUseKine(bool kine){fUseKine=kine;}

  /// clear internal memory
  virtual void Clear(const char* option="");

 protected:
  virtual int HistogramParticleProperties(AliVParticle* p, int selected=1);

 private:
  /// copy contructor prohibited
  AliDxHFEParticleSelectionMCD0(const AliDxHFEParticleSelectionMCD0&);
  /// assignment operator prohibited
  AliDxHFEParticleSelectionMCD0& operator=(const AliDxHFEParticleSelectionMCD0&);

  AliDxHFEToolsMC fMCTools;  // MC selction tools
  TH1* fPDGnotMCD0;          // holds PDG of not MC truth D0s
  int fResultMC;             // Result on MC check
  int fOriginMother;         // Holds info on the original mother particle
  bool fUseKine;             // Whether to run over MC particles (true) or Reco (false)
  THnSparse* fD0PropertiesKine; //the particle properties of selected particles

  ClassDef(AliDxHFEParticleSelectionMCD0, 3);
};

#endif
 AliDxHFEParticleSelectionMCD0.h:1
 AliDxHFEParticleSelectionMCD0.h:2
 AliDxHFEParticleSelectionMCD0.h:3
 AliDxHFEParticleSelectionMCD0.h:4
 AliDxHFEParticleSelectionMCD0.h:5
 AliDxHFEParticleSelectionMCD0.h:6
 AliDxHFEParticleSelectionMCD0.h:7
 AliDxHFEParticleSelectionMCD0.h:8
 AliDxHFEParticleSelectionMCD0.h:9
 AliDxHFEParticleSelectionMCD0.h:10
 AliDxHFEParticleSelectionMCD0.h:11
 AliDxHFEParticleSelectionMCD0.h:12
 AliDxHFEParticleSelectionMCD0.h:13
 AliDxHFEParticleSelectionMCD0.h:14
 AliDxHFEParticleSelectionMCD0.h:15
 AliDxHFEParticleSelectionMCD0.h:16
 AliDxHFEParticleSelectionMCD0.h:17
 AliDxHFEParticleSelectionMCD0.h:18
 AliDxHFEParticleSelectionMCD0.h:19
 AliDxHFEParticleSelectionMCD0.h:20
 AliDxHFEParticleSelectionMCD0.h:21
 AliDxHFEParticleSelectionMCD0.h:22
 AliDxHFEParticleSelectionMCD0.h:23
 AliDxHFEParticleSelectionMCD0.h:24
 AliDxHFEParticleSelectionMCD0.h:25
 AliDxHFEParticleSelectionMCD0.h:26
 AliDxHFEParticleSelectionMCD0.h:27
 AliDxHFEParticleSelectionMCD0.h:28
 AliDxHFEParticleSelectionMCD0.h:29
 AliDxHFEParticleSelectionMCD0.h:30
 AliDxHFEParticleSelectionMCD0.h:31
 AliDxHFEParticleSelectionMCD0.h:32
 AliDxHFEParticleSelectionMCD0.h:33
 AliDxHFEParticleSelectionMCD0.h:34
 AliDxHFEParticleSelectionMCD0.h:35
 AliDxHFEParticleSelectionMCD0.h:36
 AliDxHFEParticleSelectionMCD0.h:37
 AliDxHFEParticleSelectionMCD0.h:38
 AliDxHFEParticleSelectionMCD0.h:39
 AliDxHFEParticleSelectionMCD0.h:40
 AliDxHFEParticleSelectionMCD0.h:41
 AliDxHFEParticleSelectionMCD0.h:42
 AliDxHFEParticleSelectionMCD0.h:43
 AliDxHFEParticleSelectionMCD0.h:44
 AliDxHFEParticleSelectionMCD0.h:45
 AliDxHFEParticleSelectionMCD0.h:46
 AliDxHFEParticleSelectionMCD0.h:47
 AliDxHFEParticleSelectionMCD0.h:48
 AliDxHFEParticleSelectionMCD0.h:49
 AliDxHFEParticleSelectionMCD0.h:50
 AliDxHFEParticleSelectionMCD0.h:51
 AliDxHFEParticleSelectionMCD0.h:52
 AliDxHFEParticleSelectionMCD0.h:53
 AliDxHFEParticleSelectionMCD0.h:54
 AliDxHFEParticleSelectionMCD0.h:55
 AliDxHFEParticleSelectionMCD0.h:56
 AliDxHFEParticleSelectionMCD0.h:57
 AliDxHFEParticleSelectionMCD0.h:58
 AliDxHFEParticleSelectionMCD0.h:59
 AliDxHFEParticleSelectionMCD0.h:60
 AliDxHFEParticleSelectionMCD0.h:61
 AliDxHFEParticleSelectionMCD0.h:62
 AliDxHFEParticleSelectionMCD0.h:63
 AliDxHFEParticleSelectionMCD0.h:64
 AliDxHFEParticleSelectionMCD0.h:65
 AliDxHFEParticleSelectionMCD0.h:66
 AliDxHFEParticleSelectionMCD0.h:67
 AliDxHFEParticleSelectionMCD0.h:68
 AliDxHFEParticleSelectionMCD0.h:69
 AliDxHFEParticleSelectionMCD0.h:70