本文整理汇总了C++中Process::SetLimits方法的典型用法代码示例。如果您正苦于以下问题:C++ Process::SetLimits方法的具体用法?C++ Process::SetLimits怎么用?C++ Process::SetLimits使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Process
的用法示例。
在下文中一共展示了Process::SetLimits方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Propagate
//.........这里部分代码省略.........
realpath = stepsize / corrB_factor;
}
zpos -= dz;
walkdone += realpath;
Elast = Ecurr;
if (type == 0 || type == 22)
Ecurr = EnergyLoss1D(Ecurr, zpos + Mpc2z(realpath), zpos, 0);
else
Ecurr = EnergyLoss1D(Ecurr, zpos + Mpc2z(realpath), zpos, BNorm);
z_curr = zpos;
curr_particle.Setz(z_curr);
curr_particle.SetEnergy(Ecurr);
if (z_curr <= 0)
{
ParticleAtGround.push_back(curr_particle);
return;
}
if (Ecurr <= Ethr2)
{
if (!dropParticlesBelowEnergyThreshold)
{
ParticleAtGround.push_back(curr_particle);
}
return;
}
proc.SetIncidentParticle(curr_particle);
proc.SetCMEnergy();
proc.SetLimits();
// std::vector<double> EtargetAll=GetEtarget(proc,curr_particle);
min_dist = ExtractMinDist(proc, curr_particle.GetType(), R, R2,
EtargetAll);
} //end while
if (interacted == 1) {
if (proc.GetName() == Process::PP) {
E1 = ExtractPPSecondariesEnergy(proc);
if (E1 == 0 || E1 == Ecurr)
std::cerr << "ERROR in PP process: E : " << Ecurr << " " << E1
<< " " << std::endl;
Particle pp(11, E1, z_curr,curr_particle.Generation()+1);
pp.SetWeigth(wi_last);
ParticleAtMatrix.push_back(pp);
Particle pe(-11, Ecurr - E1, z_curr,curr_particle.Generation()+1);
pe.SetWeigth(wi_last);
ParticleAtMatrix.push_back(pe);
return;
} //if PP
else if (proc.GetName() == Process::DPP) {
E1 = (Ecurr - 2 * ElectronMass) / 2.0;
if (E1 == 0)
std::cerr << "ERROR in DPP process E : " << E1 << std::endl;
Particle pp(11, E1, z_curr,curr_particle.Generation()+1);
pp.SetWeigth(wi_last);
ParticleAtMatrix.push_back(pp);
示例2: if
std::vector<double> Propagation::GetEtarget(Process &proc,
const Particle &particle) const {
std::vector<double> Etarget;
double Etarget_tmp = 0;
double smintmp = 0;
double z_curr = particle.Getz();
double Energy = particle.GetEnergy();
int pType = particle.GetType();
double Eexp = smintmp/(4.0 * Energy);
if (pType == 22) {
proc.SetName(Process::PP);
proc.SetLimits();
smintmp = proc.GetMin();
Eexp = std::max(proc.feps_inf,ElectronMass*ElectronMass/Energy);
if (Eexp > proc.feps_sup) {
// std::cout << proc.GetName() << " " << Eexp << " too big wrt " << proc.feps_sup << " , " << proc.feps_inf << " .. it should not interact!" << std::endl;
Eexp = 0;
Etarget.push_back(0);}
else
Etarget_tmp = ShootPhotonEnergyMC(Eexp, z_curr);
Etarget.push_back(Etarget_tmp);
proc.SetName(Process::DPP);
proc.SetLimits();
smintmp = proc.GetMin();
Eexp = std::max(proc.feps_inf,2*ElectronMass*ElectronMass/Energy);
if (Eexp > proc.feps_sup) {
// std::cout << proc.GetName() << " " << Eexp << " too big wrt " << proc.feps_sup << " , " << proc.feps_inf << " .. it should not interact!" << std::endl;
Eexp = 0;
Etarget.push_back(0);}
else
Etarget_tmp = ShootPhotonEnergyMC(Eexp, z_curr);
Etarget.push_back(Etarget_tmp);
}
else if (abs(pType) == 11) {
proc.SetName(Process::ICS);
proc.SetLimits();
smintmp = proc.GetMin();
Eexp = proc.feps_inf;
Etarget_tmp = ShootPhotonEnergyMC(Eexp, z_curr);
Etarget.push_back(Etarget_tmp);
proc.SetName(Process::TPP);
proc.SetLimits();
smintmp = proc.GetMin();
Eexp = std::max(proc.feps_inf,2*ElectronMass*ElectronMass/Energy);
if (Eexp > proc.feps_sup) {
// std::cout << proc.GetName() << " " << Eexp << " too big wrt " << proc.feps_sup << " , " << proc.feps_inf << " .. it should not interact!" << std::endl;
Eexp = 0;
Etarget.push_back(0);}
else
Etarget_tmp = ShootPhotonEnergyMC(Eexp, z_curr);
Etarget.push_back(Etarget_tmp);
} //end e/e
else
std::cerr << "something wrong in particle type ( " << pType
<< ". Propagation of photons and e+/e- is the only allowed.)"
<< std::endl;
if (Etarget.size() != 2) {
std::cout << "something wrong with the Etarget!! " << std::endl;
exit(0);
}
return Etarget;
}