/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
SimG4Core/MagneticField/src/LocalFieldManager.cc
63 строки
2 KB
Slava Krutelyov
dependent updates for SystemOfUnits and switch to <> in include
01 май 2024, 18:36
01 май 2024, 18:36
26ee11d
Код
Авторство
О чём код?
#include "FWCore/MessageLogger/interface/MessageLogger.h" #include "SimG4Core/MagneticField/interface/LocalFieldManager.h" #include "G4ChordFinder.hh" #include "G4Track.hh" #include <CLHEP/Units/SystemOfUnits.h> #include <iostream> using namespace sim; LocalFieldManager::LocalFieldManager(G4Field *commonField, G4FieldManager *priFM, G4FieldManager *altFM) : G4FieldManager(commonField, nullptr, false), fPrimaryFM(priFM), fAlternativeFM(altFM), fCurrentFM(nullptr), fVerbosity(false) { this->CopyValuesAndChordFinder(priFM); fCurrentFM = priFM; } void LocalFieldManager::ConfigureForTrack(const G4Track *trk) { int PID = trk->GetDynamicParticle()->GetDefinition()->GetPDGEncoding(); if (std::abs(PID) != 13) // maybe also high energy pions ?... what else ? { if (fCurrentFM != fAlternativeFM) { this->CopyValuesAndChordFinder(fAlternativeFM); fCurrentFM = fAlternativeFM; if (fVerbosity) print(trk); } } else { if (fCurrentFM != fPrimaryFM) { this->CopyValuesAndChordFinder(fPrimaryFM); fCurrentFM = fPrimaryFM; if (fVerbosity) print(trk); } } } const G4FieldManager *LocalFieldManager::CopyValuesAndChordFinder(G4FieldManager *fm) { SetDeltaIntersection(fm->GetDeltaIntersection()); SetDeltaOneStep(fm->GetDeltaOneStep()); G4ChordFinder *cf = fm->GetChordFinder(); cf->SetDeltaChord(cf->GetDeltaChord()); SetChordFinder(cf); return fm; } void LocalFieldManager::print(const G4Track *trk) { std::string ss = (fCurrentFM == fAlternativeFM) ? "Alternative field manager with" : "Global field manager with"; edm::LogVerbatim("SimG4CoreMagneticField") << ss << " DeltaIntersection= " << G4FieldManager::GetDeltaIntersection() << ", DeltaOneStep= " << G4FieldManager::GetDeltaOneStep() << ", DeltaChord= " << G4FieldManager::GetChordFinder()->GetDeltaChord() << " for " << trk->GetDynamicParticle()->GetDefinition()->GetPDGEncoding() << " with " << trk->GetKineticEnergy() / CLHEP::GeV << " GeV in " << trk->GetVolume()->GetName(); }