ROOT logo
/**************************************************************************
* 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.                  *
**************************************************************************/
//
// Class for the V0 cuts - tuned to obtain clean eletron, pion and proton samples.
// NOT suitable for V0 analysis
//
#ifndef ALIHFEV0CUTS_H
#define ALIHFEV0CUTS_H

#include "AliHFEcollection.h"

class TList;

class AliMCParticle;
class AliVEvent;
class AliMCEvent;
class AliESDtrack;
class AliESDv0;
class AliKFVertex;
class AliKFParticle;
class AliVTrack;

class AliHFEV0cuts : public TObject {
 public:
  enum{
    kBitQA = 1,
      kBitQAmc = 2
      };
  enum{ // Reconstructed V0
    kUndef = 0,
      kRecoGamma = 1,
      kRecoK0 = 2,
      kRecoPhi = 3,
      kRecoLambda = 4,
      kRecoALambda = -4
      
      };
  enum{ // Identified Daughter particles
    kRecoElectron = 0,
      kRecoPionK0 = 1,
      kRecoPionL = 2,
      kRecoKaon = 3,
      kRecoProton = 4
      };
  AliHFEV0cuts();
  ~AliHFEV0cuts();
  AliHFEV0cuts(const AliHFEV0cuts &ref);
  AliHFEV0cuts &operator=(const AliHFEV0cuts &ref);

  void Init(const char* name);
  
  //void RunQA();
  void SetMCEvent(AliMCEvent* const mce)      { fMCEvent = mce; };
  void SetInputEvent(AliVEvent* const e)      { fInputEvent = e; };
  void SetPrimaryVertex(AliKFVertex* const v) { fPrimaryVertex = v; };
  
  TList* GetList()    { 
    CLRBIT(fDestBits, kBitQA);
    return fQA->GetList(); 
  };
  TList* GetListMC()  { 
    CLRBIT(fDestBits, kBitQAmc);
    return fQAmc->GetList(); 
  };
  
  Bool_t   TrackCutsCommon(AliESDtrack* track);
  Bool_t   V0CutsCommon(AliESDv0 *v0);
  Bool_t   GammaCuts(AliESDv0 *v0);
  Bool_t   K0Cuts(AliESDv0 *v0);
  Bool_t   LambdaCuts(AliESDv0 *v0, Bool_t &isLambda);
 
  void     Armenteros(const AliESDv0 *v0, Float_t val[2]);

  Double_t OpenAngle(AliESDv0 const *v0);//opening angle between V0 daughters; close to zero for conversions
  Double_t PsiPair(const AliESDv0 *v0);
  
  Bool_t   CheckSigns(AliESDv0 const *v0);
  Bool_t   GetConvPosXY(AliESDtrack * const ptrack, AliESDtrack * const ntrack, Double_t convpos[2]);
  Bool_t   GetHelixCenter(AliESDtrack * const track, Double_t b,Int_t charge, Double_t center[2]);


  // MC stuff
  void     SetCurrentV0id(Int_t id) { fCurrentV0id = id; };
  void     SetDaughtersID(Int_t d[2]) {fPdaughterPDG = d[0]; fNdaughterPDG = d[1]; };
  
  AliKFParticle *CreateMotherParticle(AliVTrack const *pdaughter, AliVTrack const *ndaughter, Int_t pspec, Int_t nspec);

 private:
  void Copy(TObject &ref) const;
      
 private:
  
  AliHFEcollection     *fQA;            // store QA cut histograms
  AliHFEcollection     *fQAmc;          // store 
  AliMCEvent           *fMCEvent;       // MC event
  AliVEvent            *fInputEvent;    // Input Event
  AliKFVertex          *fPrimaryVertex; // primary vertex

  Int_t                fCurrentV0id;   // MC flagged V0    
  Int_t                fPdaughterPDG;   // MC id of the positive daugeter
  Int_t                fNdaughterPDG;   // MC id of the negative daugeter

  UInt_t               fDestBits;           // status bits for destructor
 
  ClassDef(AliHFEV0cuts, 1)
};
    

#endif
 AliHFEV0cuts.h:1
 AliHFEV0cuts.h:2
 AliHFEV0cuts.h:3
 AliHFEV0cuts.h:4
 AliHFEV0cuts.h:5
 AliHFEV0cuts.h:6
 AliHFEV0cuts.h:7
 AliHFEV0cuts.h:8
 AliHFEV0cuts.h:9
 AliHFEV0cuts.h:10
 AliHFEV0cuts.h:11
 AliHFEV0cuts.h:12
 AliHFEV0cuts.h:13
 AliHFEV0cuts.h:14
 AliHFEV0cuts.h:15
 AliHFEV0cuts.h:16
 AliHFEV0cuts.h:17
 AliHFEV0cuts.h:18
 AliHFEV0cuts.h:19
 AliHFEV0cuts.h:20
 AliHFEV0cuts.h:21
 AliHFEV0cuts.h:22
 AliHFEV0cuts.h:23
 AliHFEV0cuts.h:24
 AliHFEV0cuts.h:25
 AliHFEV0cuts.h:26
 AliHFEV0cuts.h:27
 AliHFEV0cuts.h:28
 AliHFEV0cuts.h:29
 AliHFEV0cuts.h:30
 AliHFEV0cuts.h:31
 AliHFEV0cuts.h:32
 AliHFEV0cuts.h:33
 AliHFEV0cuts.h:34
 AliHFEV0cuts.h:35
 AliHFEV0cuts.h:36
 AliHFEV0cuts.h:37
 AliHFEV0cuts.h:38
 AliHFEV0cuts.h:39
 AliHFEV0cuts.h:40
 AliHFEV0cuts.h:41
 AliHFEV0cuts.h:42
 AliHFEV0cuts.h:43
 AliHFEV0cuts.h:44
 AliHFEV0cuts.h:45
 AliHFEV0cuts.h:46
 AliHFEV0cuts.h:47
 AliHFEV0cuts.h:48
 AliHFEV0cuts.h:49
 AliHFEV0cuts.h:50
 AliHFEV0cuts.h:51
 AliHFEV0cuts.h:52
 AliHFEV0cuts.h:53
 AliHFEV0cuts.h:54
 AliHFEV0cuts.h:55
 AliHFEV0cuts.h:56
 AliHFEV0cuts.h:57
 AliHFEV0cuts.h:58
 AliHFEV0cuts.h:59
 AliHFEV0cuts.h:60
 AliHFEV0cuts.h:61
 AliHFEV0cuts.h:62
 AliHFEV0cuts.h:63
 AliHFEV0cuts.h:64
 AliHFEV0cuts.h:65
 AliHFEV0cuts.h:66
 AliHFEV0cuts.h:67
 AliHFEV0cuts.h:68
 AliHFEV0cuts.h:69
 AliHFEV0cuts.h:70
 AliHFEV0cuts.h:71
 AliHFEV0cuts.h:72
 AliHFEV0cuts.h:73
 AliHFEV0cuts.h:74
 AliHFEV0cuts.h:75
 AliHFEV0cuts.h:76
 AliHFEV0cuts.h:77
 AliHFEV0cuts.h:78
 AliHFEV0cuts.h:79
 AliHFEV0cuts.h:80
 AliHFEV0cuts.h:81
 AliHFEV0cuts.h:82
 AliHFEV0cuts.h:83
 AliHFEV0cuts.h:84
 AliHFEV0cuts.h:85
 AliHFEV0cuts.h:86
 AliHFEV0cuts.h:87
 AliHFEV0cuts.h:88
 AliHFEV0cuts.h:89
 AliHFEV0cuts.h:90
 AliHFEV0cuts.h:91
 AliHFEV0cuts.h:92
 AliHFEV0cuts.h:93
 AliHFEV0cuts.h:94
 AliHFEV0cuts.h:95
 AliHFEV0cuts.h:96
 AliHFEV0cuts.h:97
 AliHFEV0cuts.h:98
 AliHFEV0cuts.h:99
 AliHFEV0cuts.h:100
 AliHFEV0cuts.h:101
 AliHFEV0cuts.h:102
 AliHFEV0cuts.h:103
 AliHFEV0cuts.h:104
 AliHFEV0cuts.h:105
 AliHFEV0cuts.h:106
 AliHFEV0cuts.h:107
 AliHFEV0cuts.h:108
 AliHFEV0cuts.h:109
 AliHFEV0cuts.h:110
 AliHFEV0cuts.h:111
 AliHFEV0cuts.h:112
 AliHFEV0cuts.h:113
 AliHFEV0cuts.h:114
 AliHFEV0cuts.h:115
 AliHFEV0cuts.h:116
 AliHFEV0cuts.h:117
 AliHFEV0cuts.h:118
 AliHFEV0cuts.h:119
 AliHFEV0cuts.h:120
 AliHFEV0cuts.h:121