21 RegisterOutputCollection(
"OutputCollection",
"simulation result collection",
fOutputColName, TString(
"beam"));
22 RegisterOutputCollection(
"OutputTrackCollection",
"simulation tracking information (used for reconstraction simulation)",
25 RegisterProcessorParameter(
"MassNum",
"beam mass number",
fMassNum, 0);
26 RegisterProcessorParameter(
"AtomicNum",
"beam atomic number",
fAtmNum, 0);
27 RegisterProcessorParameter(
"ChargeNum",
"beam charge number",
fChargeNum, 0);
28 RegisterProcessorParameter(
"IniEnergy",
"beam energy (MeV)",
fBeamEnergy, 100.0);
30 DoubleVec_t init_d_vec = {0.0, 0.0, 0.0};
31 RegisterProcessorParameter(
"InitialPosition",
"initial position of the beam",
fInitialPosition, init_d_vec);
32 RegisterProcessorParameter(
"Xsigma",
"dispersion of X position (mm)",
fXsigma, 1.0);
33 RegisterProcessorParameter(
"Ysigma",
"dispersion of Y position (mm)",
fYsigma, 1.0);
34 RegisterProcessorParameter(
"Asigma",
"dispersion of A angle (deg)",
fAsigma, 1.0);
35 RegisterProcessorParameter(
"Bsigma",
"dispersion of B angle (deg)",
fBsigma, 1.0);
36 RegisterProcessorParameter(
"Esigma",
"dispersion of beam energy (MeV)",
fEsigma, 1.0);
84 Double_t angx = gRandom->Gaus(0.,
fAsigma);
85 Double_t angy = gRandom->Gaus(0.,
fBsigma);
88 Double_t beta = TMath::Sqrt(1.0 - TMath::Power(
fMass / (
fMass + energy), 2));
90 TMath::Sqrt(TMath::Tan(angx) * TMath::Tan(angx) + TMath::Tan(angy) * TMath::Tan(angy) + 1.0);
91 Double_t beta_x = beta * TMath::Tan(angx) / norm;
92 Double_t beta_y = beta * TMath::Tan(angy) / norm;
93 Double_t beta_z = beta * 1.0 / norm;
95 TLorentzVector beam(0., 0., 0.,
fMass);
96 beam.Boost(beta_x, beta_y, beta_z);
105 TTrack *outTrackData =
static_cast<TTrack *
>(
fOutTrackData->ConstructedAt(0));
106 outTrackData->SetID(0);
108 outTrackData->SetAngle(angx, angy);
particle information class
void SetTrack(Double_t x, Double_t y, Double_t z, Double_t a, Double_t b)
void SetMassNumber(Int_t val)
void SetLorentzVector(Double_t x, Double_t y, Double_t z, Double_t t)
void SetCurrentZ(Double_t val)
void SetCharge(Int_t val)
void SetAtomicNumber(Int_t val)
void SetEnergy(Double_t val)