CGEM BOSS 6.6.5.i
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtVectorIsr Class Reference

#include <EvtVectorIsr.hh>

+ Inheritance diagram for EvtVectorIsr:

Public Member Functions

 EvtVectorIsr ()
 
virtual ~EvtVectorIsr ()
 
void getName (std::string &name)
 
EvtDecayBaseclone ()
 
void decay (EvtParticle *p)
 
void init ()
 
void initProbMax ()
 
- Public Member Functions inherited from EvtDecayIncoherent
void makeDecay (EvtParticle *p)
 
virtual ~EvtDecayIncoherent ()
 
void setDaughterSpinDensity (int daughter)
 
int isDaughterSpinDensitySet (int daughter)
 
- Public Member Functions inherited from EvtDecayBase
virtual std::string commandName ()
 
virtual void command (std::string cmd)
 
double getProbMax (double prob)
 
double resetProbMax (double prob)
 
 EvtDecayBase ()
 
virtual ~EvtDecayBase ()
 
virtual bool matchingDecay (const EvtDecayBase &other) const
 
EvtId getParentId ()
 
double getBranchingFraction ()
 
void disableCheckQ ()
 
void checkQ ()
 
int getNDaug ()
 
EvtIdgetDaugs ()
 
EvtId getDaug (int i)
 
int getNArg ()
 
int getPHOTOS ()
 
void setPHOTOS ()
 
void setVerbose ()
 
void setSummary ()
 
double * getArgs ()
 
std::string * getArgsStr ()
 
double getArg (int j)
 
std::string getArgStr (int j)
 
std::string getModelName ()
 
int getDSum ()
 
int summary ()
 
int verbose ()
 
void saveDecayInfo (EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
 
void printSummary ()
 
void setProbMax (double prbmx)
 
void noProbMax ()
 
void checkNArg (int a1, int a2=-1, int a3=-1, int a4=-1)
 
void checkNDaug (int d1, int d2=-1)
 
void checkSpinParent (EvtSpinType::spintype sp)
 
void checkSpinDaughter (int d1, EvtSpinType::spintype sp)
 
virtual int nRealDaughters ()
 

Additional Inherited Members

- Static Public Member Functions inherited from EvtDecayBase
static void findMasses (EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10])
 
static void findMass (EvtParticle *p)
 
static double findMaxMass (EvtParticle *p)
 
- Protected Member Functions inherited from EvtDecayBase
bool daugsDecayedByParentModel ()
 
- Protected Attributes inherited from EvtDecayBase
bool _daugsDecayedByParentModel
 

Detailed Description

Definition at line 30 of file EvtVectorIsr.hh.

Constructor & Destructor Documentation

◆ EvtVectorIsr()

EvtVectorIsr::EvtVectorIsr ( )
inline

Definition at line 34 of file EvtVectorIsr.hh.

34{}

Referenced by clone().

◆ ~EvtVectorIsr()

EvtVectorIsr::~EvtVectorIsr ( )
virtual

Definition at line 34 of file EvtVectorIsr.cc.

34{}

Member Function Documentation

◆ clone()

EvtDecayBase * EvtVectorIsr::clone ( )
virtual

Implements EvtDecayBase.

Definition at line 42 of file EvtVectorIsr.cc.

42 {
43
44 return new EvtVectorIsr;
45
46}

◆ decay()

void EvtVectorIsr::decay ( EvtParticle * p)
virtual

Implements EvtDecayBase.

Definition at line 72 of file EvtVectorIsr.cc.

72 {
73
74 EvtParticle *phi;
75 EvtParticle *gamma;
76
77 //the elctron mass
78 double electMass=EvtPDL::getMeanMass(EvtPDL::getId("e-"));
79
80
81 //get pointers to the daughters set
82 //get masses/initial phase space - will overwrite the
83 //p4s below to get the kinematic distributions correct
85 phi=p->getDaug(0);
86 gamma=p->getDaug(1);
87
88 double wcm=p->mass();
89 double beta=2.*electMass/wcm; //electMass/Ebeam = betagamma
90 beta=sqrt(1. - beta*beta); //sqrt (1 - (m/ebeam)**2)
91
92 //gamma momentum in the parents restframe
93 double pg=(wcm*wcm-phi->mass()*phi->mass())/(2*wcm);
94
95// //generate kinematics according to Bonneau-Martin article
96// //Nucl. Phys. B27 (1971) 381-397
97
98// double y=pow((1+csmn)/(1-csmn),EvtRandom::Flat(0.0,1.0));
99// double cs=kcs*(y-1)/(y+1);
100
101 // For backward compatibility with .dec files before SP5, the backward cos limit for
102 //the ISR photon is actually given as *minus* the actual limit. Sorry, this wouldn't be
103 //my choice. -Joe
104
105 double ymax=log((1.+beta*csfrmn)/(1.-beta*csfrmn));
106 double ymin=log((1.-beta*csbkmn)/(1.+beta*csbkmn));
107
108 // photon theta distributed as 2*beta/(1-beta**2*cos(theta)**2)
109 double y=(ymax-ymin)*EvtRandom::Flat(0.0,1.0) + ymin;
110 double cs=exp(y);
111 cs=(cs - 1.)/(cs + 1.)/beta;
112 double sn=sqrt(1-cs*cs);
113
115
116 //four-vector for the phi
117 EvtVector4R p4phi(sqrt(phi->mass()*phi->mass()+pg*pg),pg*sn*cos(fi),
118 pg*sn*sin(fi),pg*cs);
119
120 EvtVector4R p4gamma(pg,-p4phi.get(1),-p4phi.get(2),-p4phi.get(3));
121
122 //save momenta for particles
123 phi->init( getDaug(0),p4phi);
124 gamma->init( getDaug(1),p4gamma);
125
126 //try setting the spin density matrix of the phi
127
128
129 //first get the polarization vectors of the gamma and phi
130
131 EvtVector4C phi0=phi->epsParent(0);
132 EvtVector4C phi1=phi->epsParent(1);
133 EvtVector4C phi2=phi->epsParent(2);
134
135 EvtVector4C gamma0=gamma->epsParentPhoton(0);
136 EvtVector4C gamma1=gamma->epsParentPhoton(1);
137
138 EvtComplex r1p=phi0*gamma0;
139 EvtComplex r2p=phi1*gamma0;
140 EvtComplex r3p=phi2*gamma0;
141
142
143 EvtComplex r1m=phi0*gamma1;
144 EvtComplex r2m=phi1*gamma1;
145 EvtComplex r3m=phi2*gamma1;
146
147 EvtComplex rho33=r3p*conj(r3p)+r3m*conj(r3m);
148 EvtComplex rho22=r2p*conj(r2p)+r2m*conj(r2m);
149 EvtComplex rho11=r1p*conj(r1p)+r1m*conj(r1m);
150
151 EvtComplex rho13=r3p*conj(r1p)+r3m*conj(r1m);
152 EvtComplex rho12=r2p*conj(r1p)+r2m*conj(r1m);
153 EvtComplex rho23=r3p*conj(r2p)+r3m*conj(r2m);
154
155 EvtComplex rho31=conj(rho13);
156 EvtComplex rho32=conj(rho23);
157 EvtComplex rho21=conj(rho12);
158
159
160 EvtSpinDensity rho;
161 rho.SetDim(3);
162
163 rho.Set(0,0,rho11);
164 rho.Set(0,1,rho12);
165 rho.Set(0,2,rho13);
166 rho.Set(1,0,rho21);
167 rho.Set(1,1,rho22);
168 rho.Set(1,2,rho23);
169 rho.Set(2,0,rho31);
170 rho.Set(2,1,rho32);
171 rho.Set(2,2,rho33);
172
173
175 phi->setSpinDensityForward(rho);
176
177
178 return ;
179}
double sin(const BesAngle a)
Definition BesAngle.h:210
double cos(const BesAngle a)
Definition BesAngle.h:213
Double_t phi2
Double_t phi1
Evt3Rank3C conj(const Evt3Rank3C &t2)
EvtComplex exp(const EvtComplex &c)
static const double twoPi
Definition EvtConst.hh:29
EvtId * getDaugs()
EvtId getDaug(int i)
void setDaughterSpinDensity(int daughter)
static double getMeanMass(EvtId i)
Definition EvtPDL.hh:45
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:287
void setSpinDensityForward(const EvtSpinDensity &rho)
virtual EvtVector4C epsParent(int i) const
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
virtual EvtVector4C epsParentPhoton(int i)
EvtParticle * getDaug(int i)
double mass() const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
static double Flat()
Definition EvtRandom.cc:73
void Set(int i, int j, const EvtComplex &rhoij)
void SetDim(int n)

◆ getName()

void EvtVectorIsr::getName ( std::string & name)
virtual

Implements EvtDecayBase.

Definition at line 36 of file EvtVectorIsr.cc.

36 {
37
38 model_name="VECTORISR";
39
40}

◆ init()

void EvtVectorIsr::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 48 of file EvtVectorIsr.cc.

48 {
49
50 // check that there are 2 arguments
51 checkNArg(2);
52 checkNDaug(2);
53
57
58 //copy the arguments into eaiser to remember names
59
60 csfrmn=getArg(0);
61 csbkmn=getArg(1);
62
63
64}
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)

◆ initProbMax()

void EvtVectorIsr::initProbMax ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 66 of file EvtVectorIsr.cc.

66 {
67
68 noProbMax();
69
70}

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