4 #include "KVFlowTensor.h"
20 SetTitle(
"Kinetic energy flow tensor of Gyulassy et al.");
67 aglob.fTensor = fTensor;
68 aglob.fNParts = fNParts;
81 if (&
a !=
this)
a.
Copy(*
this);
96 if (wgt ==
"RKE") weight = kRKE;
97 else if (wgt ==
"ONE" || wgt ==
"" || wgt ==
"1") weight = kONE;
164 if (f(3) <= 0.)
return -1.;
165 if (f(1) <= 0.)
return -1.;
171 if (f(3) <= 0.)
return -1.;
172 if (f(2) <= 0.)
return -1.;
179 return (phi < 0 ? 360 + phi : phi);
184 return fSqueezeAngle;
215 for (
int i = 0; i < 3; i++) {
217 fEVec[i].
SetXYZ(col[0], col[1], col[2]);
224 fEVec[0] = -fEVec[0];
231 if (fEVec[2].
Cross(fEVec[1]) != fEVec[0]) fEVec[2] = -fEVec[2];
236 fAziReacPlane.
RotateZ(e(1).Phi());
239 fFlowReacPlane.
RotateY(e(1).Theta());
240 fFlowReacPlane.
RotateZ(e(1).Phi());
261 if (inPlane <= 0.) fSqOutRatio = -1.;
262 else fSqOutRatio =
TMath::Min(1.e+03, outOfPlane / inPlane);
265 sum_val_prop = f(1) + f(2) + f(3);
266 if (sum_val_prop > .1) {
267 fSphericity = 1.5 * (1. - f(1) / sum_val_prop);
268 fCoplanarity =
sqrt(3.) * (f(2) - f(3)) / sum_val_prop / 2.;
271 fSphericity = fCoplanarity = -1;
295 void KVFlowTensor::init_KVFlowTensor()
355 W = 1. / (
n->GetMass() * (1 +
n->Gamma()));
359 W = 1. / (2.*
n->GetMass());
363 for (
int i = 0; i < 3; i++) {
364 for (
int j = i; j < 3; j++) {
365 Double_t xx = W *
n->GetMomentum()[i] *
n->GetMomentum()[j];
367 if (i != j) fTensor(j, i) += xx;
398 return fAziReacPlane;
426 return fFlowReacPlane;
439 std::cout <<
"Number of particles = " << fNParts << std::endl;
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t b
Option_t Option_t TPoint TPoint angle
Kinetic energy flow tensor of Gyulassy et al and associated shape variables.
void Init() override
Initialisation of internal variables, called once before beginning treatment.
void Calculate() override
Calculate eigenvalues & eigenvectors of tensor.
void fill(const KVNucleus *n) override
virtual ~KVFlowTensor(void)
Destructor.
KVFlowTensor & operator=(const KVFlowTensor &a)
Operateur =.
const TRotation & GetFlowReacPlaneRotation() const
void Copy(TObject &obj) const override
Copy properties of 'this' object into the KVVarGlob object referenced by 'a'.
KVFlowTensor()
Default constructor.
void Reset() override
Reset internal variables, called before treatment of each event.
void Print(Option_t *="") const override
if opt="tensor", just print contents of tensor
const TRotation & GetAziReacPlaneRotation() const
Description of properties and kinematics of atomic nuclei.
Base class for all global variable implementations.
void SetOption(const Char_t *option, const Char_t *value)
void Print(Option_t *="") const override
void SetMaxNumBranches(Int_t n)
TString GetOptionString(const Char_t *opt) const
Bool_t IsOptionGiven(const Char_t *opt)
void Copy(TObject &obj) const override
void SetFrame(const Char_t *ref)
void Copy(TObject &arc) const override
const TVectorD & GetEigenValues() const
const TMatrixD & GetEigenVectors() const
virtual TMatrixTBase< Element > & Zero()
void Print(Option_t *name="") const override
TRotation & SetToIdentity()
TRotation & RotateY(Double_t)
TRotation & RotateZ(Double_t)
void SetXYZ(Double_t x, Double_t y, Double_t z)
Double_t Angle(const TVector3 &) const
TVector3 Cross(const TVector3 &) const
Expr< UnaryOp< Sqrt< T >, SMatrix< T, D, D2, R >, T >, T, D, D2, R > sqrt(const SMatrix< T, D, D2, R > &rhs)
SVector< T, 3 > Cross(const SVector< T, 3 > &lhs, const SVector< T, 3 > &rhs)
RVec< PromoteType< T > > tan(const RVec< T > &v)
RVec< PromoteType< T > > cos(const RVec< T > &v)
RVec< PromoteTypes< T0, T1 > > pow(const T0 &x, const RVec< T1 > &v)
RVec< PromoteType< T > > atan(const RVec< T > &v)
RVec< PromoteType< T > > sin(const RVec< T > &v)
Double_t Min(Double_t a, Double_t b)
constexpr Double_t PiOver2()
constexpr Double_t DegToRad()
constexpr Double_t RadToDeg()