ROOT logo
////////////////////////////////////////////////////////////////////////////////
///                                                                          ///
/// AliFemtoModelHiddenInfo - the hidden info for model calculations         ///
/// Stores information needed for the weight generation - the true           ///
/// simulated momenta, freeze-out coordinates from model and particle PID    ///
///                                                                          ///
////////////////////////////////////////////////////////////////////////////////

#ifndef ALIFEMTOMODELHIDDENINFO_H
#define ALIFEMTOMODELHIDDENINFO_H

#include <TH1D.h>
#include "AliFemtoTypes.h"
#include "AliFemtoThreeVector.h"
#include "AliFemtoLorentzVector.h"
#include "AliFemtoHiddenInfo.h"

class AliFemtoModelHiddenInfo : public AliFemtoHiddenInfo{

public:
  AliFemtoModelHiddenInfo();
  AliFemtoModelHiddenInfo(const AliFemtoModelHiddenInfo &aInfo);
  virtual ~AliFemtoModelHiddenInfo();

  AliFemtoModelHiddenInfo& operator=(const AliFemtoModelHiddenInfo& aInfo);
  AliFemtoThreeVector   *GetTrueMomentum() const;
  AliFemtoLorentzVector *GetEmissionPoint() const;
  Int_t                  GetPDGPid() const;
  Int_t                  GetMotherPdgCode() const;
  Double_t               GetMass() const;

  AliFemtoThreeVector   *GetTrueMomentumPos() const;
  AliFemtoLorentzVector *GetEmissionPointPos() const;
  Int_t                  GetPDGPidPos() const;
  Double_t               GetMassPos() const;

  AliFemtoThreeVector   *GetTrueMomentumNeg() const;
  AliFemtoLorentzVector *GetEmissionPointNeg() const;
  Int_t                  GetPDGPidNeg() const;
  Double_t               GetMassNeg() const;

  void                   SetTrueMomentum(AliFemtoThreeVector *aMom);
  void                   SetTrueMomentum(const AliFemtoThreeVector& aMom);
  void                   SetTrueMomentum(Double_t aPx, Double_t aPy, Double_t aPz);
  void                   SetEmissionPoint(AliFemtoLorentzVector *aPos);
  void                   SetEmissionPoint(const AliFemtoLorentzVector& aPos);
  void                   SetEmissionPoint(Double_t aRx, Double_t aRy, Double_t aRz, Double_t aT);
  void                   SetPDGPid(Int_t aPid);
  void                   SetMotherPdgCode(Int_t motherPdg);
  void                   SetMass(Double_t aMass);

  void                   SetTrueMomentumPos(AliFemtoThreeVector *aMom);
  void                   SetTrueMomentumPos(const AliFemtoThreeVector& aMom);
  void                   SetTrueMomentumPos(Double_t aPx, Double_t aPy, Double_t aPz);
  void                   SetEmissionPointPos(AliFemtoLorentzVector *aPos);
  void                   SetEmissionPointPos(const AliFemtoLorentzVector& aPos);
  void                   SetEmissionPointPos(Double_t aRx, Double_t aRy, Double_t aRz, Double_t aT);
  void                   SetPDGPidPos(Int_t aPid);
  void                   SetMassPos(Double_t aMass);

  void                   SetTrueMomentumNeg(AliFemtoThreeVector *aMom);
  void                   SetTrueMomentumNeg(const AliFemtoThreeVector& aMom);
  void                   SetTrueMomentumNeg(Double_t aPx, Double_t aPy, Double_t aPz);
  void                   SetEmissionPointNeg(AliFemtoLorentzVector *aPos);
  void                   SetEmissionPointNeg(const AliFemtoLorentzVector& aPos);
  void                   SetEmissionPointNeg(Double_t aRx, Double_t aRy, Double_t aRz, Double_t aT);
  void                   SetPDGPidNeg(Int_t aPid);
  void                   SetMassNeg(Double_t aMass);

// !!! MANDATORY !!!
// --- Copy the hidden info from AliFemtoTrack to AliFemtoParticle
  virtual AliFemtoHiddenInfo* Clone() const;

 protected:
  virtual AliFemtoHiddenInfo* GetParticleHiddenInfo() const;

  AliFemtoThreeVector   *fTrueMomentum;  // True (simulated) momentum
  AliFemtoLorentzVector *fEmissionPoint; // Emission point coordinates
  Int_t                  fPDGPid;        // True PID of the particle
  Int_t                  fMotherPdg;     // PDG code of particle's mother
  Double_t               fMass;          // True particle mass

  //daughter particles
  AliFemtoThreeVector   *fTrueMomentumPos;  // True (simulated) momentum of positive daughter
  AliFemtoLorentzVector *fEmissionPointPos; // Emission point coordinates of positive daughter
  Int_t                  fPDGPidPos;        // True PID of positive daughter
  Double_t               fMassPos;          // True particle mass of positive daughter

  AliFemtoThreeVector   *fTrueMomentumNeg;  // True (simulated) momentum of negative daughter
  AliFemtoLorentzVector *fEmissionPointNeg; // Emission point coordinates of negative daughter
  Int_t                  fPDGPidNeg;        // True PID of negative daughter
  Double_t               fMassNeg;          // True particle mass of negative daughter
};
//_______________________________________
inline AliFemtoHiddenInfo* AliFemtoModelHiddenInfo::Clone() const{
  // return exact copy of this hidden info
  return GetParticleHiddenInfo();
}

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