本文整理汇总了C++中KVDetector::GetEnergy方法的典型用法代码示例。如果您正苦于以下问题:C++ KVDetector::GetEnergy方法的具体用法?C++ KVDetector::GetEnergy怎么用?C++ KVDetector::GetEnergy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KVDetector
的用法示例。
在下文中一共展示了KVDetector::GetEnergy方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Print
//___________________________________________________________________________________________
void KVIDTelescope::Print(Option_t* opt) const
{
// print out telescope structure
//if opt="fired" only fired detectors are printed
TIter next(fDetectors);
KVDetector* obj;
if (!strcmp(opt, "fired")) {
while ((obj = (KVDetector*) next())) {
if (obj->Fired() || obj->GetEnergy())
obj->Print("data");
}
} else {
cout << "\n" << opt << "Structure of KVIDTelescope object: " <<
GetName() << " " << GetType() << endl;
cout << opt <<
"--------------------------------------------------------" <<
endl;
while ((obj = (KVDetector*) next())) {
cout << opt << "Detector: " << obj->GetName() << endl;
}
}
}
示例2: CalculateParticleEnergy
//.........这里部分代码省略.........
d1->SetEnergyLoss(e1);
d1->SetEResAfterDetector(e2);
e1 = d1->GetCorrectedEnergy(nuc);
//status code
fCalibStatus = kCalibStatus_Calculated;
}
} else {//1st detector is calibrated too: get corrected energy loss
e1 = d1->GetCorrectedEnergy(nuc);
}
if (d2 && !d2_cal) {//2nd detector not calibrated - calculate from energy loss in 1st detector
e1 = d1->GetCorrectedEnergy(nuc);
if (e1 <= 0.0) {
// zero energy loss in 1st detector ? can't do anything...
fCalibStatus = kCalibStatus_NoCalibrations;
return;
}
//calculate & set energy loss in 2nd detector
e2 = d1->GetEResFromDeltaE(z, a);
if (e2 < 0.0) e2 = 0.0;
else {
e2 = d2->GetDeltaE(z, a, e2);
d2->SetEnergyLoss(e2);
e2 = d2->GetCorrectedEnergy(nuc);
//status code
fCalibStatus = kCalibStatus_Calculated;
}
} else if (d2) { //2nd detector is calibrated too: get corrected energy loss
e2 = d2->GetCorrectedEnergy(nuc, -1, kFALSE);//N.B.: transmission=kFALSE because particle assumed to stop in d2
// recalculate corrected energy in first stage using info on Eres
d1->SetEResAfterDetector(e2);
e1 = d1->GetCorrectedEnergy(nuc);
}
//incident energy of particle (before 1st member of telescope)
einc = e1 + e2;
Double_t coherence_tolerance = gEnv->GetValue("KVIDTelescope.CoherencyTolerance", 1.05);
if (coherence_tolerance < 1) coherence_tolerance += 1.00;
//Now we have to work our way up the list of detectors from which the particle was
//reconstructed. For each fired & calibrated detector which is only associated with
//one particle in the events, we add the corrected measured energy loss
//to the particle. For uncalibrated, unfired detectors and detectors through which
//more than one particle has passed, we calculate the corrected energy loss and add it
//to the particle.
int ndets = nuc->GetNumDet();
if (ndets > (int)GetSize()) { //particle passed through other detectors before this idtelesocpe
//look at detectors not in this id telescope
int idet = GetSize();//next detector after delta-e member of IDTelescope (stopping detector = 0)
while (idet < ndets) {
KVDetector* det = nuc->GetDetector(idet);
if (det->Fired() && det->IsCalibrated() && det->GetNHits() == 1) {
Double_t dE = det->GetEnergy();
//in order to check if particle was really the only one to
//hit each detector, we calculate the particle's energy loss
//from its residual energy. if the measured energy loss is
//significantly larger, there may be a second particle.
e1 = det->GetDeltaEFromERes(z, a, einc);
if (e1 < 0.0) e1 = 0.0;
det->SetEResAfterDetector(einc);
dE = det->GetCorrectedEnergy(nuc);
einc += dE;
} else {
// Uncalibrated/unfired/multihit detector. Calculate energy loss.
//calculate energy of particle before detector from energy after detector
e1 = det->GetDeltaEFromERes(z, a, einc);
if (e1 < 0.0) e1 = 0.0;
if (det->GetNHits() > 1) {
//Info("CalculateParticleEnergy",
// "Detector %s was hit by %d particles. Calculated energy loss for particle %f MeV",
// det->GetName(), det->GetNHits(), e1);
if (!(det->Fired() && det->IsCalibrated())) {
det->SetEnergyLoss(e1 + det->GetEnergy());// sum up calculated energy losses in uncalibrated detector
}
//status code
fCalibStatus = kCalibStatus_Multihit;
} else if (!det->Fired() || !det->IsCalibrated()) {
//Info("CalculateParticleEnergy",
// "Detector %s uncalibrated/not fired. Calculated energy loss for particle %f MeV",
// det->GetName(), e1);
det->SetEnergyLoss(e1);
//status code
fCalibStatus = kCalibStatus_Calculated;
}
det->SetEResAfterDetector(einc);
e1 = det->GetCorrectedEnergy(nuc, e1);
einc += e1;
}
idet++;
}
}
//einc is now the energy of the particle before crossing the first detector
nuc->SetEnergy(einc);
}