47 fCell.push_back(cell);
55 fEdep.push_back(e_dep);
60 fBeta.push_back(_beta);
76 if (
fEdep[iCell] > threshold)
126 if (
fLayer[iCell] == veto_layer)
137 if (
fLayer[iCell] == size_z - 1)
141 if (
fColumn[iCell] == size_x - 1)
143 if (
fRow[iCell] == 0)
145 if (
fRow[iCell] == size_y - 1)
156 if (
fEdep[iCell] > threshold) {
157 edep +=
fEdep[iCell];
162 return edep / nCells;
170 if (
fEdep[iCell] > threshold) {
171 edep +=
fEdep[iCell];
182 if (
fTime[iCell] < t) {
206 return fBeta[iFirst];
212 return fBeta[iFastest];
221 return (gamma - 1.) * mass;
230 return (gamma - 1.) * mass;
252 return (gamma - 1.) * mass;
277 Double_t scalarProduct = xCluster * xTarget + yCluster * yTarget + zCluster * zTarget;
280 scalarProduct /= (clusterLength * targetLength);
306 Double_t scalarProduct = xCluster * xTarget + yCluster * yTarget + zCluster * zTarget;
309 scalarProduct /= (clusterLength * targetLength);
350 cout <<
"----------------------------------- BmnNdetCluster -----------------------------" << endl;
351 for (
size_t i = 0;
i <
fEdep.size(); ++
i) {
354 cout <<
"\tt: " <<
fTime[
i] <<
"[ns], Edep: " << 1.E3 *
fEdep[
i] <<
"[MeV], beta: " <<
fBeta[
i] << endl;
356 cout <<
"------------------------------------------------------------------------------------" << endl;
Double_t EnergyTofFastest(Double_t mass=0.939565420)
Kinetic energy calculated by the time of flight.
vector< Double_t > GetZ()
vector< Int_t > fRow
Row number of a cell. It must be proportional to Y coordinate in self coordinate system of a detector...
vector< Int_t > fCell
Index of a cell in BmnNdetCell array in BmnNdetEvent object.
Double_t AngleToDirection(Double_t x=0, Double_t y=0, Double_t z=1)
Angle between vector (x,y,z) and average direction of cluster Direction of cluster is sum of vectors,...
Double_t EnergyDeposited(Double_t threshold=0.003)
Energy deposited in cluster [GeV].
vector< Double_t > GetBeta()
Double_t BetaFastest()
Beta calculated for the cell with highest beta beta = v / c v = d / t d = sqrt(x^2+y^2+z^2) .
void Clear()
Clear all cell contents, set fNCells=0.
Int_t fNCells
number of cells in this cluster
virtual void Print(const Option_t *option="")
Print.
vector< Int_t > GetLayers()
Int_t FirstCell()
Returns index of the first fired cell in cluster.
void AddCell(Int_t cell, Int_t column, Int_t row, Int_t layer, Double_t x, Double_t y, Double_t z, Double_t t, Double_t e_dep, Double_t beta=-1.)
Add cell to the cluster.
BmnNdetCluster * AddCluster(BmnNdetCluster *other)
Merging of clusters.
vector< Int_t > fLayer
Layer number of a cell. It must be proportional to Z coordinate in self coordinate system of a detect...
vector< Double_t > GetTime()
Int_t FastestCell()
Returns index of the fastest fired cell in cluster.
Double_t EnergyTofFirst(Double_t mass=0.939565420)
Kinetic energy calculated by the time of flight.
vector< Int_t > fColumn
Column number of a cell. It must be proportional to X coordinate in self coordinate system of a detec...
vector< Double_t > GetY()
vector< Double_t > GetEdep()
Double_t BetaFirst()
Beta calculated for first fired cell in cluster beta = v / c v = d / t d = sqrt(x^2+y^2+z^2) .
vector< Int_t > GetColumns()
vector< Double_t > fXcoord
X coordinate [cm].
BmnNdetCluster()
Default constructor.
vector< Double_t > fZcoord
Z coordinate [cm].
Bool_t ContainsVetoCells(Int_t veto_layer=0)
Function for selection of charged particles.
vector< Int_t > GetCells()
vector< Double_t > fEdep
Energy deposited in the cell [GeV].
Double_t EnergyTofAverage(Double_t mass=0.939565420)
Kinetic energy calculated by the time of flight.
vector< Double_t > fBeta
beta=v/c calculated from the time of flight to this cell
~BmnNdetCluster()
Default destructor.
Double_t AngleToTarget()
Angle between direction to first cell and average direction of cluster Direction of cluster is sum of...
vector< Double_t > fYcoord
Y coordinate [cm].
vector< Double_t > GetX()
Double_t EnergyDepositedAverage(Double_t threshold=0.003)
Average deposited energy per cell in cluster [GeV].
vector< Double_t > fTime
Time of actuation of the cell [ns].
Bool_t StartsOnBorder(Int_t size_x=11, Int_t size_y=11, Int_t size_z=8)
Function for selection of particles coming from side.
vector< Int_t > GetRows()
double beta(double x, double y)
Double_t Sqrt(Double_t x)
constexpr Double_t RadToDeg()
*brief exchanges the values of two JSON objects *sa nlohmann::NLOHMANN_BASIC_JSON_TPL &j2 noexcept(is_nothrow_move_constructible< nlohmann::NLOHMANN_BASIC_JSON_TPL >::value &&is_nothrow_move_assignable< nlohmann::NLOHMANN_BASIC_JSON_TPL >::value)