FairRoot/PandaRoot
Public Member Functions | List of all members
PndGiBuuJPsiEE Class Reference

#include <PndGiBuuJPsiEE.h>

Inheritance diagram for PndGiBuuJPsiEE:
PndGiBuuDecayerAbs

Public Member Functions

 PndGiBuuJPsiEE ()
 
virtual ~PndGiBuuJPsiEE ()
 
virtual std::vector
< PndGiBuuTrack
DecayTrack (PndGiBuuTrack track)
 
 ClassDef (PndGiBuuJPsiEE, 1)
 
 ClassDef (PndGiBuuDecayerAbs, 1)
 

Detailed Description

Definition at line 13 of file PndGiBuuJPsiEE.h.

Constructor & Destructor Documentation

PndGiBuuJPsiEE::PndGiBuuJPsiEE ( )

Definition at line 22 of file PndGiBuuJPsiEE.cxx.

22  {
23 }
PndGiBuuJPsiEE::~PndGiBuuJPsiEE ( )
virtual

Definition at line 25 of file PndGiBuuJPsiEE.cxx.

25  {
26 }

Member Function Documentation

PndGiBuuJPsiEE::ClassDef ( PndGiBuuJPsiEE  ,
 
)
PndGiBuuDecayerAbs::ClassDef ( PndGiBuuDecayerAbs  ,
 
)
inherited
std::vector< PndGiBuuTrack > PndGiBuuJPsiEE::DecayTrack ( PndGiBuuTrack  track)
virtual

Implements PndGiBuuDecayerAbs.

Definition at line 28 of file PndGiBuuJPsiEE.cxx.

References cos(), Double_t, eminus, eplus, PndGiBuuTrack::GetMomentum(), PndGiBuuTrack::GetPdgId(), phi, pi, sin(), and sqrt().

29 {
30 
31  std::vector<PndGiBuuTrack> result;
32 
33  if (443 != track.GetPdgId()){
34  std::cout << "-E- Particle is not a J/Psi! Given pdgCode is: " << track.GetPdgId() << std::endl;
35  result.push_back(track);
36  return result;
37  }
38 
39  TDatabasePDG* pdgBase = TDatabasePDG::Instance();
40  if ( ! pdgBase ) Fatal("FairPrimaryGenerator", "No TDatabasePDG instantiated");
41 
42  TParticlePDG* JPsi = pdgBase->GetParticle(track.GetPdgId());
43 
44  TVector3 JPsiP3;
45  TLorentzVector JPsiP4;
46 
47  JPsiP3 = track.GetMomentum();
48 
49  Double_t JPsiMass = JPsi->Mass();
50 
51  JPsiP4.SetXYZM(JPsiP3.X(),JPsiP3.Y(),JPsiP3.Z(),JPsiMass);
52 
53  TParticlePDG* eplusPDG = pdgBase->GetParticle(-11);
54  //TParticlePDG* eminusPDG = pdgBase->GetParticle(11); //[R.K. 01/2017] unused variable?
55 
56  Double_t eMass = eplusPDG->Mass();
57 
58  Double_t pee = sqrt(JPsiMass*JPsiMass/4.-eMass*eMass);
59 
60  Double_t ctheta = gRandom->Rndm();
61  ctheta = 2.*ctheta - 1.;
62  Double_t stheta = sqrt(1.-ctheta*ctheta);
63 
64  Double_t pi = 3.141592654;
65  Double_t phi = gRandom->Rndm();
66  phi = 2.*pi*phi;
67 
68  TVector3 epP3(pee*cos(phi)*stheta,pee*sin(phi)*stheta,pee*ctheta);
69  TVector3 emP3 = -epP3;
70  TLorentzVector epP4(epP3,sqrt(pee*pee+eMass*eMass));
71  TLorentzVector emP4(emP3,sqrt(pee*pee+eMass*eMass));
72 
73  TVector3 vJPsi = JPsiP4.BoostVector();
74 
75  epP4.Boost(vJPsi);
76  emP4.Boost(vJPsi);
77 
78 
79  PndGiBuuTrack eplus(-11, epP4.Px(),epP4.Py(),epP4.Pz(), 0,0,0);
80  PndGiBuuTrack eminus(11, emP4.Px(),emP4.Py(),emP4.Pz(), 0,0,0);
81 
82  result.push_back(eplus);
83  result.push_back(eminus);
84 
85  return result;
86 }
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
Int_t GetPdgId()
Definition: PndGiBuuTrack.h:19
#define pi
Definition: createSTT.C:60
CandList eplus
Double_t
TVector3 GetMomentum()
Definition: PndGiBuuTrack.h:20
CandList eminus

The documentation for this class was generated from the following files: