ROOT logo
#ifndef AliReducedParticle_H
#define AliReducedParticle_H


/**************************************************************************
 * Copyright(c) 1998-2009, 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.                  *
 **************************************************************************/

/* $Id$ */

//
//
//             Base class for DStar - Hadron Correlations Analysis
//
//-----------------------------------------------------------------------
//          
//
//						   Author S.Bjelogrlic
//                         Utrecht University 
//                      sandro.bjelogrlic@cern.ch
//
//-----------------------------------------------------------------------


#include "AliLog.h"
#include "AliVParticle.h"

// class to get the reduced hadron candidate
class AliReducedParticle : public AliVParticle
{
 public:
  AliReducedParticle();
  AliReducedParticle(Double_t eta, Double_t phi, Double_t pt, Int_t mcLabel, Int_t trackid, Double_t impPar, Bool_t checkSoftPi);
  AliReducedParticle(Double_t eta, Double_t phi, Double_t pt, Int_t mcLabel, Int_t trackid, Double_t impPar, Bool_t checkSoftPi, Short_t charge);
  AliReducedParticle(Double_t eta, Double_t phi, Double_t pt, Int_t mcLabel, Int_t trackid, Double_t impPar, Bool_t checkSoftPi, Short_t charge,Double_t weight);
  AliReducedParticle(Double_t eta, Double_t phi, Double_t pt, Int_t mcLabel);
  AliReducedParticle(Double_t eta, Double_t phi, Double_t pt, int charge, int orginmother); 
  AliReducedParticle(Double_t eta, Double_t phi, Double_t pt, Double_t invmass, int ptbin, int orginmother=0);
  
  ~AliReducedParticle();
  
  // kinematics
  
  virtual Double_t Pt()         const { return fpT; }
  virtual Double_t Phi()        const { return fPhi; }
  virtual Double_t Eta()        const { return fEta; }
  virtual Int_t   GetLabel()    const { return fMcLabel; }
  virtual Int_t  GetID()		const{return fid;}
  virtual Double_t GetImpPar() const{return fImpPar;}
  virtual Bool_t CheckSoftPi() const{return fCheckSoftPi;}
  virtual Double_t GetInvMass() const {return fInvMass;}
  virtual int GetPtBin() const  {return fPtBin;}
  virtual int GetOriginMother() const {return fOriginMother;}
  void SetWeight(Double_t weight){fWeight=weight;}
  Double_t GetWeight(){return fWeight;}
  
  // kinematics
  virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }
  virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }
  virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }
  virtual Double_t P() const { AliFatal("Not implemented"); return 0; }
  virtual Bool_t   PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
  
  virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
  virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
  virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
  virtual Bool_t   XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
  
  virtual Double_t OneOverPt()  const { AliFatal("Not implemented"); return 0; }
  
  virtual Double_t Theta()      const { AliFatal("Not implemented"); return 0; }
  
  
  virtual Double_t E()          const { AliFatal("Not implemented"); return 0; }
  virtual Double_t M()          const { AliFatal("Not implemented"); return 0; }
  
  
  virtual Double_t Y()          const { AliFatal("Not implemented"); return 0; }
  
  virtual Short_t Charge()      const { return fCharge;}
  
  // PID
  virtual Int_t   PdgCode()     const { AliFatal("Not implemented"); return 0; }      
  virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
  
  
  
    
 private:
  Double_t fEta;       // eta
  Double_t fPhi;       // phi
  Double_t fpT;        // pT
  Int_t fMcLabel;      //mclabel
  Int_t fid;           // track ID
  Double_t fImpPar;    // impact parameter
  Bool_t fCheckSoftPi; // check if the track is compatible with a softpion from D*
  Short_t fCharge;     // charge of the associated track
  Double_t fInvMass;   // Invariant mass of Dmeson
  Double_t fWeight;   // track weight (e.g. 1/efficiency)
  int fPtBin;          // Ptbin of Dmesons
  int fOriginMother;   //  Holds the origin motherquark (process)
  
  
  ClassDef(AliReducedParticle, 4); // class which contains only quantities requires for this analysis to reduce memory consumption for event mixing
};
#endif
 AliReducedParticle.h:1
 AliReducedParticle.h:2
 AliReducedParticle.h:3
 AliReducedParticle.h:4
 AliReducedParticle.h:5
 AliReducedParticle.h:6
 AliReducedParticle.h:7
 AliReducedParticle.h:8
 AliReducedParticle.h:9
 AliReducedParticle.h:10
 AliReducedParticle.h:11
 AliReducedParticle.h:12
 AliReducedParticle.h:13
 AliReducedParticle.h:14
 AliReducedParticle.h:15
 AliReducedParticle.h:16
 AliReducedParticle.h:17
 AliReducedParticle.h:18
 AliReducedParticle.h:19
 AliReducedParticle.h:20
 AliReducedParticle.h:21
 AliReducedParticle.h:22
 AliReducedParticle.h:23
 AliReducedParticle.h:24
 AliReducedParticle.h:25
 AliReducedParticle.h:26
 AliReducedParticle.h:27
 AliReducedParticle.h:28
 AliReducedParticle.h:29
 AliReducedParticle.h:30
 AliReducedParticle.h:31
 AliReducedParticle.h:32
 AliReducedParticle.h:33
 AliReducedParticle.h:34
 AliReducedParticle.h:35
 AliReducedParticle.h:36
 AliReducedParticle.h:37
 AliReducedParticle.h:38
 AliReducedParticle.h:39
 AliReducedParticle.h:40
 AliReducedParticle.h:41
 AliReducedParticle.h:42
 AliReducedParticle.h:43
 AliReducedParticle.h:44
 AliReducedParticle.h:45
 AliReducedParticle.h:46
 AliReducedParticle.h:47
 AliReducedParticle.h:48
 AliReducedParticle.h:49
 AliReducedParticle.h:50
 AliReducedParticle.h:51
 AliReducedParticle.h:52
 AliReducedParticle.h:53
 AliReducedParticle.h:54
 AliReducedParticle.h:55
 AliReducedParticle.h:56
 AliReducedParticle.h:57
 AliReducedParticle.h:58
 AliReducedParticle.h:59
 AliReducedParticle.h:60
 AliReducedParticle.h:61
 AliReducedParticle.h:62
 AliReducedParticle.h:63
 AliReducedParticle.h:64
 AliReducedParticle.h:65
 AliReducedParticle.h:66
 AliReducedParticle.h:67
 AliReducedParticle.h:68
 AliReducedParticle.h:69
 AliReducedParticle.h:70
 AliReducedParticle.h:71
 AliReducedParticle.h:72
 AliReducedParticle.h:73
 AliReducedParticle.h:74
 AliReducedParticle.h:75
 AliReducedParticle.h:76
 AliReducedParticle.h:77
 AliReducedParticle.h:78
 AliReducedParticle.h:79
 AliReducedParticle.h:80
 AliReducedParticle.h:81
 AliReducedParticle.h:82
 AliReducedParticle.h:83
 AliReducedParticle.h:84
 AliReducedParticle.h:85
 AliReducedParticle.h:86
 AliReducedParticle.h:87
 AliReducedParticle.h:88
 AliReducedParticle.h:89
 AliReducedParticle.h:90
 AliReducedParticle.h:91
 AliReducedParticle.h:92
 AliReducedParticle.h:93
 AliReducedParticle.h:94
 AliReducedParticle.h:95
 AliReducedParticle.h:96
 AliReducedParticle.h:97
 AliReducedParticle.h:98
 AliReducedParticle.h:99
 AliReducedParticle.h:100
 AliReducedParticle.h:101
 AliReducedParticle.h:102
 AliReducedParticle.h:103
 AliReducedParticle.h:104
 AliReducedParticle.h:105
 AliReducedParticle.h:106
 AliReducedParticle.h:107
 AliReducedParticle.h:108
 AliReducedParticle.h:109
 AliReducedParticle.h:110
 AliReducedParticle.h:111
 AliReducedParticle.h:112
 AliReducedParticle.h:113
 AliReducedParticle.h:114
 AliReducedParticle.h:115
 AliReducedParticle.h:116
 AliReducedParticle.h:117