ROOT logo
#ifndef ALIMCINFOCUTS_H
#define ALIMCINFOCUTS_H

//------------------------------------------------------------------------------
// Class to keep selection cuts for MC tracks. 
// 
// Author: J.Otwinowski 04/02/2008 
//------------------------------------------------------------------------------

#include <TPDGCode.h>
#include "AliAnalysisCuts.h"

class TArrayI;

class AliMCInfoCuts : public AliAnalysisCuts
{
public:
  AliMCInfoCuts(const Char_t* name ="AliMCInfoCuts", const Char_t *title ="");
  virtual ~AliMCInfoCuts(); 
 
  // setters 
  void SetMinRowsWithDigits(const Int_t min=0) {fMinRowsWithDigits = min;}
  void SetMaxR(const Float_t max=1e99)         {fMaxR = max;}
  void SetMaxVz(const Float_t max=1e99)        {fMaxVz = max;}
  void SetRangeTPCSignal(const Float_t min=0, const Float_t max=1e99)  {fMinTPCSignal = min; fMaxTPCSignal = max;}
  void SetMinTrackLength(const Int_t min=0)    {fMinTrackLength = min;}

  // getters 
  Int_t GetMinRowsWithDigits() const {return fMinRowsWithDigits;}
  Float_t GetMaxR()            const {return fMaxR;}
  Float_t GetMaxVz()           const {return fMaxVz;}
  Float_t GetMinTPCSignal()    const {return fMinTPCSignal;}
  Float_t GetMaxTPCSignal()    const {return fMaxTPCSignal;}
  Float_t GetMinTrackLength()    const {return fMinTrackLength;}

  Float_t GetEP()  const       {return ep;}
  Float_t GetEM()  const       {return em;}
  Float_t GetMuP() const       {return mup;}
  Float_t GetMuM() const       {return mum;}
  Float_t GetPiP() const       {return pip;}
  Float_t GetPiM() const       {return pim;}
  Float_t GetKP()  const       {return kp;}
  Float_t GetKM()  const       {return km;}
  Float_t GetProt() const      {return prot;}
  Float_t GetProtBar() const   {return protbar;}
 
  // cuts init function
  void InitME();

  // check MC tracks
  virtual Bool_t IsSelected(TObject *) {return kTRUE;}
  virtual Bool_t IsSelected(TList *) {return kTRUE;}

  // add particle to array 
  void AddPdgParticle(Int_t idx=-1, Int_t pdgcode=0) const;

  // check particle in array 
  Bool_t IsPdgParticle(Int_t pdgcode=0) const;

  // check particle in array 
  Bool_t IsPosPdgParticle(Int_t pdgcode=0) const;

  // Merge output objects (needed by PROOF) 
  virtual Long64_t Merge(TCollection* list);

private:
  Int_t fMinRowsWithDigits; // min. number of TPC raws with digits  
  Float_t fMaxR;            // max. R distance from MC vertex 
  Float_t fMaxVz;           // max. Z distance from MC vertex
  Float_t fMinTPCSignal;    // min. TPC Signal calculated from Bethe Bloch formula
  Float_t fMaxTPCSignal;    // max. TPC Signal calculated from Bethe Bloch formula
  Float_t fMinTrackLength;  // min. TPC minimum track length
 
  TArrayI* aTrackParticles; // array of tracked particles 

  // PDG tracked particles (later added to aTrackParticles)
  enum enumData {
    kNParticles = 10, // number of particles below
    ep = kPositron,
    em = kElectron,
    mup = kMuonPlus,
    mum = kMuonMinus,
    pip = kPiPlus,
    pim = kPiMinus,
    kp = kKPlus,
    km = kKMinus,
    prot = kProton,
    protbar = kProtonBar
  };

  AliMCInfoCuts(const AliMCInfoCuts&); // not implemented
  AliMCInfoCuts& operator=(const AliMCInfoCuts&); // not implemented

  ClassDef(AliMCInfoCuts, 1)
};

#endif // ALIMCINFOCUTS_H
 AliMCInfoCuts.h:1
 AliMCInfoCuts.h:2
 AliMCInfoCuts.h:3
 AliMCInfoCuts.h:4
 AliMCInfoCuts.h:5
 AliMCInfoCuts.h:6
 AliMCInfoCuts.h:7
 AliMCInfoCuts.h:8
 AliMCInfoCuts.h:9
 AliMCInfoCuts.h:10
 AliMCInfoCuts.h:11
 AliMCInfoCuts.h:12
 AliMCInfoCuts.h:13
 AliMCInfoCuts.h:14
 AliMCInfoCuts.h:15
 AliMCInfoCuts.h:16
 AliMCInfoCuts.h:17
 AliMCInfoCuts.h:18
 AliMCInfoCuts.h:19
 AliMCInfoCuts.h:20
 AliMCInfoCuts.h:21
 AliMCInfoCuts.h:22
 AliMCInfoCuts.h:23
 AliMCInfoCuts.h:24
 AliMCInfoCuts.h:25
 AliMCInfoCuts.h:26
 AliMCInfoCuts.h:27
 AliMCInfoCuts.h:28
 AliMCInfoCuts.h:29
 AliMCInfoCuts.h:30
 AliMCInfoCuts.h:31
 AliMCInfoCuts.h:32
 AliMCInfoCuts.h:33
 AliMCInfoCuts.h:34
 AliMCInfoCuts.h:35
 AliMCInfoCuts.h:36
 AliMCInfoCuts.h:37
 AliMCInfoCuts.h:38
 AliMCInfoCuts.h:39
 AliMCInfoCuts.h:40
 AliMCInfoCuts.h:41
 AliMCInfoCuts.h:42
 AliMCInfoCuts.h:43
 AliMCInfoCuts.h:44
 AliMCInfoCuts.h:45
 AliMCInfoCuts.h:46
 AliMCInfoCuts.h:47
 AliMCInfoCuts.h:48
 AliMCInfoCuts.h:49
 AliMCInfoCuts.h:50
 AliMCInfoCuts.h:51
 AliMCInfoCuts.h:52
 AliMCInfoCuts.h:53
 AliMCInfoCuts.h:54
 AliMCInfoCuts.h:55
 AliMCInfoCuts.h:56
 AliMCInfoCuts.h:57
 AliMCInfoCuts.h:58
 AliMCInfoCuts.h:59
 AliMCInfoCuts.h:60
 AliMCInfoCuts.h:61
 AliMCInfoCuts.h:62
 AliMCInfoCuts.h:63
 AliMCInfoCuts.h:64
 AliMCInfoCuts.h:65
 AliMCInfoCuts.h:66
 AliMCInfoCuts.h:67
 AliMCInfoCuts.h:68
 AliMCInfoCuts.h:69
 AliMCInfoCuts.h:70
 AliMCInfoCuts.h:71
 AliMCInfoCuts.h:72
 AliMCInfoCuts.h:73
 AliMCInfoCuts.h:74
 AliMCInfoCuts.h:75
 AliMCInfoCuts.h:76
 AliMCInfoCuts.h:77
 AliMCInfoCuts.h:78
 AliMCInfoCuts.h:79
 AliMCInfoCuts.h:80
 AliMCInfoCuts.h:81
 AliMCInfoCuts.h:82
 AliMCInfoCuts.h:83
 AliMCInfoCuts.h:84
 AliMCInfoCuts.h:85
 AliMCInfoCuts.h:86
 AliMCInfoCuts.h:87
 AliMCInfoCuts.h:88
 AliMCInfoCuts.h:89
 AliMCInfoCuts.h:90
 AliMCInfoCuts.h:91
 AliMCInfoCuts.h:92
 AliMCInfoCuts.h:93
 AliMCInfoCuts.h:94
 AliMCInfoCuts.h:95
 AliMCInfoCuts.h:96
 AliMCInfoCuts.h:97