KaliVeda
Toolkit for HIC analysis
KVFlowTensor.h
1 #ifndef __KVFLOWTENSOR_H
2 #define __KVFLOWTENSOR_H
3 
4 #include "KVVarGlob.h"
5 #include "TMatrixDSym.h"
6 #include "TVectorT.h"
7 
78 class KVFlowTensor: public KVVarGlob {
79 
81  enum {
84  kRKE
85  } weight;
86  mutable TVectorD fEVal;
87  mutable TVector3 fEVec[3];
88  Double_t f(int i) const
89  {
90  return fEVal[i - 1];
91  }
92  const TVector3& e(int i) const
93  {
94  return fEVec[i - 1];
95  }
105 
106 protected:
107  Double_t getvalue_int(Int_t) const override;
108 
109 public:
110  enum {
120  };
121 
122  KVFlowTensor();
123  KVFlowTensor(const Char_t* nom);
124  KVFlowTensor(const KVFlowTensor& a);
125 
126  virtual ~KVFlowTensor(void);
127 
128  void Copy(TObject& obj) const override;
129 
131 
132  void Init() override;
133  void Reset() override;
134  void Calculate() override;
135 
136 private:
137  void init_KVFlowTensor();
138 public:
139  void fill(const KVNucleus* n) override;
140  const TRotation& GetAziReacPlaneRotation() const;
141  const TRotation& GetFlowReacPlaneRotation() const;
142 
144  {
147 
148  fTensor += other.fTensor;
149  fNParts += other.fNParts;
150  return (*this);
151  }
153  {
156 
157  return f(i) / sum_val_prop;
158  }
159 
160  void Print(Option_t* = "") const override;
161 
163  {
165  for (int i = 0; i < 3; ++i) {
166  for (int j = 0; j < 3; ++j) {
167  if (TMath::IsNaN(fTensor(i, j))) return kTRUE;
168  }
169  }
170  return kFALSE;
171  }
172  Char_t GetValueType(Int_t i) const override
173  {
174  if (i == 3) return 'I';
175  return 'D';
176  }
177 
178  ClassDefOverride(KVFlowTensor, 1) //Kinetic energy flow tensor of Gyulassy et al
179 };
180 
181 
182 #endif
int Int_t
bool Bool_t
char Char_t
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
const char Option_t
#define ClassDefOverride(name, id)
Kinetic energy flow tensor of Gyulassy et al and associated shape variables.
Definition: KVFlowTensor.h:78
const TVector3 & e(int i) const
Definition: KVFlowTensor.h:92
Double_t fCoplanarity
Definition: KVFlowTensor.h:101
void Init() override
Initialisation of internal variables, called once before beginning treatment.
TVectorD fEVal
the 3 eigenvalues
Definition: KVFlowTensor.h:86
void Calculate() override
Calculate eigenvalues & eigenvectors of tensor.
Double_t sum_val_prop
Definition: KVFlowTensor.h:104
void fill(const KVNucleus *n) override
Int_t fNParts
number of particles included in tensor
Definition: KVFlowTensor.h:102
virtual ~KVFlowTensor(void)
Destructor.
Double_t fSphericity
Definition: KVFlowTensor.h:100
KVFlowTensor & operator=(const KVFlowTensor &a)
Operateur =.
const TRotation & GetFlowReacPlaneRotation() const
void init_KVFlowTensor()
Double_t f(int i) const
Definition: KVFlowTensor.h:88
void Copy(TObject &obj) const override
Copy properties of 'this' object into the KVVarGlob object referenced by 'a'.
enum KVFlowTensor::@13 weight
KVFlowTensor()
Default constructor.
Double_t fSqOutRatio
Gutbrod squeeze-out ratio.
Definition: KVFlowTensor.h:99
Char_t GetValueType(Int_t i) const override
Definition: KVFlowTensor.h:172
Double_t fSqueezeAngle
Gutbrod squeeze angle.
Definition: KVFlowTensor.h:98
TVector3 fEVec[3]
the 3 eigenvectors
Definition: KVFlowTensor.h:87
Double_t getvalue_int(Int_t) const override
Bool_t fCalculated
Definition: KVFlowTensor.h:103
void Reset() override
Reset internal variables, called before treatment of each event.
KVFlowTensor & operator+=(const KVFlowTensor &other)
Definition: KVFlowTensor.h:143
Double_t GetNormalisedEigenValue(Int_t i)
Definition: KVFlowTensor.h:152
void Print(Option_t *="") const override
if opt="tensor", just print contents of tensor
const TRotation & GetAziReacPlaneRotation() const
Bool_t HasNaNElements() const
Definition: KVFlowTensor.h:162
TMatrixDSym fTensor
the tensor
Definition: KVFlowTensor.h:80
TRotation fAziReacPlane
azimuthal rotation around beam axis to reaction plane
Definition: KVFlowTensor.h:96
TRotation fFlowReacPlane
rotate XZ to reaction plane, then align Z with flow axis
Definition: KVFlowTensor.h:97
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:123
Base class for all global variable implementations.
Definition: KVVarGlob.h:233
Bool_t IsNaN(Double_t x)