|
ATLAS Offline Software
|
#include <McMaterialEffectsUpdator.h>
|
| McMaterialEffectsUpdator (const std::string &, const std::string &, const IInterface *) |
| AlgTool constructor for McMaterialEffectsUpdator. More...
|
|
virtual | ~McMaterialEffectsUpdator () |
| Destructor. More...
|
|
StatusCode | initialize () |
| AlgTool initailize method. More...
|
|
StatusCode | finalize () |
| AlgTool finalize method. More...
|
|
std::unique_ptr< Trk::TrackParameters > | update (const Trk::TrackParameters *parm, const Trk::Layer &sf, Trk::TimeLimit &time, Trk::PathLimit &path, Trk::GeometrySignature geoID, Trk::PropDirection dir=Trk::alongMomentum, Trk::ParticleHypothesis particle=Trk::pion) const |
| Updator interface (full update for a layer): A unique_ptr to Trk::TrackParameters is returned it could be a clone of the input if now update has happened. More...
|
|
std::unique_ptr< Trk::TrackParameters > | update (double time, const Trk::TrackParameters *parm, const Trk::MaterialEffectsOnTrack &meff, Trk::ParticleHypothesis particle=Trk::pion, Trk::MaterialUpdateMode matupmode=Trk::addNoise) const |
|
std::unique_ptr< Trk::TrackParameters > | update (double time, const Trk::TrackParameters &parm, const Trk::MaterialProperties &mprop, double pathcorrection, Trk::PropDirection dir=Trk::alongMomentum, Trk::ParticleHypothesis particle=Trk::pion, Trk::MaterialUpdateMode matupmode=Trk::addNoise) const |
| Updator interface: The parmeters are given as a reference, MaterialProperties based material update. More...
|
|
std::unique_ptr< Trk::TrackParameters > | interact (double time, const Amg::Vector3D &position, const Amg::Vector3D &momentum, Trk::ParticleHypothesis particle, int process, const Trk::Material *extMatProp=0) const |
|
void | recordBremPhoton (double time, double pElectron, double gammaE, const Amg::Vector3D &vertex, Amg::Vector3D &particleDir, Trk::ParticleHypothesis particle) const |
| the helper function for a brem photon record More...
|
|
|
std::unique_ptr< Trk::TrackParameters > | updateInLay (const ISF::ISFParticle *isp, const Trk::TrackParameters *parm, double &matFraction, Trk::TimeLimit &time, Trk::PathLimit &path, Trk::PropDirection dir=Trk::alongMomentum, Trk::ParticleHypothesis particle=Trk::pion) const |
|
ISF::ISFParticleVector | interactLay (const ISF::ISFParticle *isp, double time, const Trk::TrackParameters &parm, Trk::ParticleHypothesis particle, int process, const Trk::MaterialProperties *extMatProp=0) const |
|
void | radiate (const ISF::ISFParticle *parent, AmgVector(5) &updatedParameters, const Amg::Vector3D &pos, Amg::Vector3D &dir, Trk::TimeLimit time, double dX0, double &matFraction, double matTot, Trk::PropDirection pdir, Trk::ParticleHypothesis particle) const |
|
void | ionize (const Trk::TrackParameters &parm, AmgVector(5) &updatedPar, double dInX0, Trk::PropDirection pdir, Trk::ParticleHypothesis particle) const |
|
double | msSigma (double dInX0, double p, Trk::ParticleHypothesis particle) const |
| handle the Energy loss More...
|
|
void | multipleScatteringUpdate (const Trk::TrackParameters &parm, AmgVector(5) ¶meters, double sigmaMSproj) const |
| the private multiple Scattering update method, thetaMs is the projected random number More...
|
|
void | recordBremPhotonLay (const ISF::ISFParticle *parent, Trk::TimeLimit time, double pElectron, double gammaE, const Amg::Vector3D &vertex, Amg::Vector3D &particleDir, double matFraction, Trk::PropDirection dir, Trk::ParticleHypothesis particle) const |
| the helper function for a brem photon record More...
|
|
const Trk::LayerIndexSampleMap * | layerIndexSampleMap () const |
| return the TrackingGeometry used More...
|
|
virtual const Trk::TrackingGeometry * | trackingGeometry (const EventContext &ctx) const |
|
Updator for a track on a Trk::Layer, it extends the IMaterialEffecsUpdator to be used inside the Extrapolator with an update based on a Random number.
The McMaterialEffectsUpdator uses both an extended EnergyLossUpdator and the standard ATLAS MultipleScatteringUpdator configured for the Gaussian-Mixture-Model.
- Author
- Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch, Carst.nosp@m.en.M.nosp@m.agass.nosp@m.@cer.nosp@m.n.ch
Definition at line 81 of file McMaterialEffectsUpdator.h.
◆ McMaterialEffectsUpdator()
iFatras::McMaterialEffectsUpdator::McMaterialEffectsUpdator |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
AlgTool constructor for McMaterialEffectsUpdator.
Definition at line 53 of file McMaterialEffectsUpdator.cxx.
56 m_eLossUpdator(
"iFatras::McEnergyLossUpdator/FatrasEnergyLossUpdator"),
58 m_msUpdator(
"Trk::MultipleScatteringUpdator/AtlasMultipleScatteringUpdator"),
125 declareProperty(
"EnergyLoss" ,
m_eLoss);
127 declareProperty(
"MultipleScattering" ,
m_ms);
128 declareProperty(
"MultipleScatteringUpdator" ,
m_msUpdator);
134 declareProperty(
"BremProcessCode" ,
m_processCode,
"MCTruth Physics Process Code");
136 declareProperty(
"HadronicInteraction" ,
m_hadInt);
154 declareProperty(
"RandomNumberService" ,
m_rndGenSvc ,
"Random number generator");
155 declareProperty(
"RandomStreamName" ,
m_randomEngineName ,
"Name of the random number stream");
158 declareProperty(
"ParticleBroker" ,
m_particleBroker ,
"ISF Particle Broker Svc");
159 declareProperty(
"TruthRecordSvc" ,
m_truthRecordSvc ,
"ISF Particle Truth Svc");
◆ ~McMaterialEffectsUpdator()
iFatras::McMaterialEffectsUpdator::~McMaterialEffectsUpdator |
( |
| ) |
|
|
virtualdefault |
◆ finalize()
StatusCode iFatras::McMaterialEffectsUpdator::finalize |
( |
| ) |
|
◆ initialize()
StatusCode iFatras::McMaterialEffectsUpdator::initialize |
( |
| ) |
|
AlgTool initailize method.
Definition at line 168 of file McMaterialEffectsUpdator.cxx.
176 return StatusCode::FAILURE;
184 return StatusCode::FAILURE;
195 return StatusCode::FAILURE;
205 return StatusCode::FAILURE;
213 return StatusCode::FAILURE;
223 return StatusCode::FAILURE;
231 return StatusCode::FAILURE;
256 return StatusCode::FAILURE;
263 return StatusCode::FAILURE;
267 return StatusCode::FAILURE;
276 SmartIF<ITHistSvc> tHistSvc{service(
"THistSvc")};
278 ATH_MSG_ERROR(
"initialize() Could not find Hist Service -> Switching ValidationMode Off !" );
298 ATH_MSG_ERROR(
"initialize() Could not register the validation Tree -> Switching ValidationMode Off !" );
301 ATH_MSG_INFO(
"TTree for MaterialEffects validation booked." );
322 ATH_MSG_ERROR(
"initialize() Could not register the validation Tree -> Switching ValidationMode Off !" );
325 ATH_MSG_INFO(
"TTree for Bremsstrahlung validation booked." );
346 ATH_MSG_ERROR(
"initialize() Could not register the validation Tree -> Switching ValidationMode Off !" );
349 ATH_MSG_INFO(
"TTree for Energy deposition validation booked." );
356 return StatusCode::SUCCESS;
◆ interact()
Definition at line 1580 of file McMaterialEffectsUpdator.cxx.
1614 truth.updateChildParticleProperties();
1616 for (
unsigned int i=0;
i<childVector.size();
i++) {
1623 childVector[
i]->setUserInformation(validInfo);
1626 childVector[
i]->setNextGeoID(
parent->nextGeoID() );
1645 double fmin =
mass/
p;
1686 truth.updateParentAfterIncidentProperties();
1687 truth.updateChildParticleProperties();
1690 if (!
parent->getTruthBinding()) {
1693 for (
auto *childParticle :
children) {
1694 if (!childParticle->getTruthBinding()) {
1695 ATH_MSG_ERROR(
"Could not retrieve TruthBinding from child ISFParticle "<< *childParticle);
1705 children[0]->setUserInformation(validInfo1);
1710 children[1]->setUserInformation(validInfo2);
1730 auto parm = std::make_unique<Trk::NeutralCurvilinearParameters>(position,
momentum,
parent->charge());
1734 if (!cStat)
ATH_MSG_WARNING(
"Conversion failed, killing photon anyway ");
1744 auto parm = std::make_unique<Trk::CurvilinearParameters>(position,
momentum,
parent->charge());
◆ interactLay()
Definition at line 1760 of file McMaterialEffectsUpdator.cxx.
1768 if (
process==0 )
return childVector;
1780 double fmin =
mass/
p;
1818 children[0]->setUserInformation(validInfo1);
1823 children[1]->setUserInformation(validInfo2);
1835 truth.updateParentAfterIncidentProperties();
1836 truth.updateChildParticleProperties();
1846 if (!
parent->getTruthBinding()) {
1849 for (
auto *childParticle :
children) {
1850 if (!childParticle->getTruthBinding()) {
1851 ATH_MSG_ERROR(
"Could not retrieve TruthBinding from child ISFParticle "<< *childParticle);
1867 for (
unsigned int i=0;
i<childVector.size();
i++) {
1872 childVector[
i]->setUserInformation(validInfo);
1881 for (
auto *childParticle : childVector) {
1882 if (!childParticle->getTruthBinding()) {
1883 ATH_MSG_ERROR(
"Could not retrieve TruthBinding from child ISFParticle "<< *childParticle);
1901 for (
unsigned int i=0;
i<childVector.size();
i++) {
1906 childVector[
i]->setUserInformation(validInfo);
1919 truth.updateChildParticleProperties();
1930 for (
auto *childParticle : childVector) {
1931 if (!childParticle->getTruthBinding()) {
1932 ATH_MSG_ERROR(
"Could not retrieve TruthBinding from child ISFParticle "<< *childParticle);
◆ ionize()
Definition at line 767 of file McMaterialEffectsUpdator.cxx.
776 double E = sqrt(
p*
p+
m*
m);
785 double Ionization = 0.;
796 Ionization = -kaz*(2.*
log(2.*me/I)+3.*
log(
gamma) - 1.95);
807 double tMax = 2.*
eta2*me/(1.+2.*
gamma*mfrac+mfrac*mfrac);
810 Ionization = -kaz*(
log(2.*me*
eta2*tMax/(I*I)) - 2.*(
beta*
beta) - delta);
813 double energyLoss = Ionization*dInX0*
m_matProp->
x0();
814 double newP = sqrt(fmax(0.,(
E+energyLoss)*(
E+energyLoss)-
m*
m));
◆ layerIndexSampleMap()
◆ msSigma()
double iFatras::McMaterialEffectsUpdator::msSigma |
( |
double |
dInX0, |
|
|
double |
p, |
|
|
Trk::ParticleHypothesis |
particle |
|
) |
| const |
|
private |
handle the Energy loss
the private multiple scattering sigma calculation
Definition at line 1155 of file McMaterialEffectsUpdator.cxx.
1158 double E = sqrt(
p*
p+
m*
m);
1163 double sigmaMSproj = 13.6/
beta/
p*sqrt(dInX0)*(1.+0.038*
log(dInX0));
◆ multipleScatteringUpdate()
the private multiple Scattering update method, thetaMs is the projected random number
Definition at line 1168 of file McMaterialEffectsUpdator.cxx.
1204 CLHEP::Hep3Vector parsMomHep(
pars.momentum().x(),
pars.momentum().y(),
pars.momentum().z() );
1205 CLHEP::Hep3Vector newDirectionHep( parsMomHep.unit().x(), parsMomHep.unit().y(), parsMomHep.unit().z());
1206 double x = -newDirectionHep.y();
1207 double y = newDirectionHep.x();
1210 if (newDirectionHep.z()*newDirectionHep.z() > 0.999999) {
1215 CLHEP::Hep3Vector deflector(
x,
y,
z);
1217 newDirectionHep.rotate(thetaMs, deflector);
1219 newDirectionHep.rotate(psi, parsMomHep);
◆ radiate()
◆ recordBremPhoton()
the helper function for a brem photon record
< mass
< charge
< pdg code
< time
<
- Todo:
- fix non-static
Definition at line 1233 of file McMaterialEffectsUpdator.cxx.
1260 double E = sqrt(pElectron*pElectron +
m*
m);
1275 double u = -
log(r2*r3)/
a;
1280 ATH_MSG_VERBOSE(
" [ brem ] Simulated angle to electron = " << theta <<
"." );
1303 double th = particleDir.theta()-
theta;
1304 double ph = particleDir.phi();
1305 if (
th<0.) {
th *=-1; ph +=
M_PI; }
1307 CLHEP::Hep3Vector particleDirHep( particleDir.x(), particleDir.y(), particleDir.z() );
1308 newDirectionHep.rotate(psi,particleDirHep);
1309 Amg::Vector3D newDirection( newDirectionHep.x(), newDirectionHep.y(), newDirectionHep.z() );
1313 particleDir = (particleDir*pElectron- gammaE*newDirection).
unit();
1321 gammaE*newDirection,
1350 truth.updateParentAfterIncidentProperties();
1351 truth.updateChildParticleProperties();
1354 if (!
parent->getTruthBinding()) {
1357 for (
auto *childParticle :
children) {
1358 if (!childParticle->getTruthBinding()) {
1359 ATH_MSG_ERROR(
"Could not retrieve TruthBinding from child ISFParticle "<< *childParticle);
1375 ATH_MSG_VERBOSE(
" [ brem ] Filling bremsstrahlung validation TTree ..." );
◆ recordBremPhotonLay()
the helper function for a brem photon record
retrieve or provide the layerIndexSampleMap */
< mass
< charge
< pdg code
< time
< @TODO fix non-static
Definition at line 1392 of file McMaterialEffectsUpdator.cxx.
1416 double E = sqrt(pElectron*pElectron +
m*
m);
1431 double u = -
log(r2*r3)/
a;
1436 ATH_MSG_VERBOSE(
" [ brem ] Simulated angle to electron = " << theta <<
"." );
1439 CLHEP::Hep3Vector particleDirHep( particleDir.x(), particleDir.y(), particleDir.z() );
1440 CLHEP::Hep3Vector newDirectionHep( particleDirHep );
1441 double x = -newDirectionHep.y();
1442 double y = newDirectionHep.x();
1445 if (newDirectionHep.z()*newDirectionHep.z() > 0.999999)
1448 CLHEP::Hep3Vector deflectorHep(
x,
y,
z);
1450 newDirectionHep.rotate(theta, deflectorHep);
1452 newDirectionHep.rotate(psi,particleDirHep);
1455 Amg::Vector3D newDirection( newDirectionHep.x(), newDirectionHep.y(), newDirectionHep.z() );
1456 particleDir = (particleDir*pElectron- gammaE*newDirection).
unit();
1462 gammaE*newDirection,
1492 truth.updateParentAfterIncidentProperties();
1493 truth.updateChildParticleProperties();
1496 if (!
parent->getTruthBinding()) {
1499 for (
auto *childParticle :
children) {
1500 if (!childParticle->getTruthBinding()) {
1501 ATH_MSG_ERROR(
"Could not retrieve TruthBinding from child ISFParticle "<< *childParticle);
1520 double remMat = ci*co <0 ? (1-matFraction) : matFraction;
1529 if (mTot < pLim.
x0Max) {
1536 auto cparm = std::make_unique<Trk::CurvilinearParameters>(bremPhoton->
position(),bremPhoton->
momentum(),bremPhoton->
charge());
1537 std::unique_ptr<Trk::TrackParameters> uPar =
updateInLay(bremPhoton,cparm.get(),remMat,timeLim, pLim,
dir,
Trk::photon);
1538 if (uPar) {
ATH_MSG_VERBOSE(
"Check this: parameters should be dummy here (brem.photon) " <<
","<<uPar->
position() ); }
1544 ATH_MSG_VERBOSE(
" [ brem ] Filling bremsstrahlung validation TTree ..." );
◆ trackingGeometry()
Definition at line 1940 of file McMaterialEffectsUpdator.cxx.
1944 if (!handle.isValid()) {
1946 "Could not retrieve TrackingGeometry from Conditions Store.");
1949 return handle.cptr();
1955 ATH_MSG_FATAL(
"Could not retrieve TrackingGeometry from DetectorStore.");
◆ update() [1/3]
Updator interface (full update for a layer): A unique_ptr to Trk::TrackParameters is returned it could be a clone of the input if now update has happened.
The imput is handled by the client.
Definition at line 372 of file McMaterialEffectsUpdator.cxx.
385 double traversedMatFraction = 0.;
◆ update() [2/3]
Updator interface: The parmeters are given as a reference, MaterialProperties based material update.
Definition at line 916 of file McMaterialEffectsUpdator.cxx.
931 double E = sqrt(
p*
p+
m*
m);
944 ATH_MSG_VERBOSE(
" [+] Hadronic interaction killed initial hadron ... stop "
945 "simulation, tackle childs.");
961 double energyLoss = sampledEnergyLoss.deltaE();
963 if (
E + energyLoss <
m) {
965 " [+] particle momentum fell under momentum cut - stop simulation");
969 newP = sqrt((
E + energyLoss) * (
E + energyLoss) -
m *
m);
987 double deltaP = newP -
p;
1001 ATH_MSG_VERBOSE(
" [+] particle momentum fell under momentum cut - stop simulation" );
1013 if (
m_ms && matprop.x0()>0 ){
1023 m_tInX0 = pathCorrection * matprop.thicknessInX0();
1029 (parm.covariance()) ? std::optional<
AmgSymMatrix(5)>(*parm.covariance())
1034 updatedParameters[1],
1035 updatedParameters[2],
1036 updatedParameters[3],
1037 updatedParameters[4],
◆ update() [3/3]
Definition at line 1042 of file McMaterialEffectsUpdator.cxx.
1052 ATH_MSG_WARNING(
" [ ---- ] Only implemented for muons yet. No parameterisation for other particles." );
1060 double pathCorrection = 1.;
1065 double E = sqrt(
p*
p+
m*
m);
1097 double simulatedEnergyLoss = -1.*(energyLossMPV+energyLossSigma*CLHEP::RandLandau::shoot(
m_randomEngine));
1101 ATH_MSG_VERBOSE(
" [+] try to record deposited energy (if mapped with a calo sample) " );
1102 const EventContext& ctx = Gaudi::Hive::currentContext();
1104 if (pTrackingGeometry) {
1115 Trk::LayerIndexSampleMap::const_iterator layerIndexCaloSample = lism->find(associatedLayer->
layerIndex());
1117 if (layerIndexCaloSample != lism->end()){
1138 double newP = sqrt((
E+simulatedEnergyLoss)*(
E+simulatedEnergyLoss)-
m*
m);
1148 updatedParameters[1],
1149 updatedParameters[2],
1150 updatedParameters[3],
1151 updatedParameters[4],
◆ updateInLay()
Definition at line 416 of file McMaterialEffectsUpdator.cxx.
428 ATH_MSG_WARNING(
"Trk::TrackParameters parm is null -- will not proceed. Returning nullptr.");
432 std::unique_ptr<Trk::TrackParameters> currPar = inParm->uniqueClone();
437 ATH_MSG_WARNING(
"Something went wrong -- m_matProp is missing but Trk::TrackParameters is not null! Returning nullptr.");
440 double pathCorrection =
447 ATH_MSG_WARNING(
"BendingCorrection not implemented!! (McMaterialEffectsUpdator.cxx)");
453 std::string volumeName = enclosingVolume ? enclosingVolume->
volumeName() :
"Unknown";
457 ATH_MSG_VERBOSE(
" -> path/X0 on layer [r/z] = [ " << layerR <<
" / " << layerZ <<
" ] :"
475 dInL0 = extMatProp ? (1-matFraction)*pathCorrection*extMatProp->
thicknessInL0() :
521 matLim->
process, matLim->
dMax, matLim->
process == 121 ? pathLim.l0Collected : pathLim.x0Collected);
546 ATH_MSG_ERROR(
"Could not retrieve TruthBinding from non-interacting ISFParticle "<< *regisp);
557 if (pathLim.x0Max > 0 && pathLim.process < 100 && pathLim.x0Collected + dX0 >= pathLim.x0Max) {
558 float x0rem = pathLim.x0Max - pathLim.x0Collected;
559 dInL0 *= x0rem > 0 ? x0rem / dX0 : 1.;
563 }
else if (pathLim.x0Max > 0 && extMatProp && pathLim.process > 100 &&
564 pathLim.l0Collected + dInL0 >= pathLim.x0Max) {
565 float l0rem = pathLim.x0Max - pathLim.l0Collected;
566 dX0 *= l0rem > 0 ? l0rem / dInL0 : 1.;
589 updatedParameters[1],
590 updatedParameters[2],
591 updatedParameters[3],
592 updatedParameters[4],
595 currPar = std::move(updated);
607 if (isp->
charge() != 0 && dX0 > 0.) {
623 updatedParameters[1],
624 updatedParameters[2],
625 updatedParameters[3],
626 updatedParameters[4],
628 currPar = std::move(updated);
638 if (iStatus == 1 || iStatus == 2) {
655 m_validationTool->saveISFParticleInfo(*isp, pathLim.process, currPar.get(), timeLim.time, pathLim.x0Max);
660 for (
unsigned ic = 0;
ic < childs.size();
ic++) {
661 double mom = childs[
ic]->momentum().mag();
668 auto cparm = std::make_unique<Trk::CurvilinearParameters>(childs[
ic]->position(), childs[
ic]->
momentum(), childs[
ic]->
charge());
677 double remMat = ci * co < 0 ? (1 - matFraction) : matFraction;
680 std::unique_ptr<Trk::TrackParameters> uPar =
681 updateInLay(childs[
ic], cparm.get(), remMat, timeLim, pLim,
dir, pHypothesis);
684 << uPar->position());
686 if (!childs.empty()) {
730 matLim->
process, matLim->
dMax, matLim->
process == 121 ? pathLim.l0Collected : pathLim.x0Collected);
752 ATH_MSG_ERROR(
"Could not retrieve TruthBinding from non-interacting ISFParticle "<< *regisp);
◆ m_bendingCorrection
bool iFatras::McMaterialEffectsUpdator::m_bendingCorrection |
|
private |
◆ m_bremMotherEnergy
float iFatras::McMaterialEffectsUpdator::m_bremMotherEnergy |
|
mutableprivate |
◆ m_bremPhotonAngle
float iFatras::McMaterialEffectsUpdator::m_bremPhotonAngle |
|
mutableprivate |
◆ m_bremPhotonEnergy
float iFatras::McMaterialEffectsUpdator::m_bremPhotonEnergy |
|
mutableprivate |
◆ m_bremPointR
float iFatras::McMaterialEffectsUpdator::m_bremPointR |
|
mutableprivate |
◆ m_bremPointX
float iFatras::McMaterialEffectsUpdator::m_bremPointX |
|
mutableprivate |
◆ m_bremPointY
float iFatras::McMaterialEffectsUpdator::m_bremPointY |
|
mutableprivate |
◆ m_bremPointZ
float iFatras::McMaterialEffectsUpdator::m_bremPointZ |
|
mutableprivate |
◆ m_bremValidation
bool iFatras::McMaterialEffectsUpdator::m_bremValidation |
|
private |
◆ m_bremValidationTree
TTree* iFatras::McMaterialEffectsUpdator::m_bremValidationTree |
|
private |
◆ m_bremValidationTreeDescription
std::string iFatras::McMaterialEffectsUpdator::m_bremValidationTreeDescription |
|
private |
◆ m_bremValidationTreeFolder
std::string iFatras::McMaterialEffectsUpdator::m_bremValidationTreeFolder |
|
private |
◆ m_bremValidationTreeName
std::string iFatras::McMaterialEffectsUpdator::m_bremValidationTreeName |
|
private |
◆ m_conversionTool
◆ m_currentSample
int iFatras::McMaterialEffectsUpdator::m_currentSample |
|
private |
◆ m_deltaP
float iFatras::McMaterialEffectsUpdator::m_deltaP |
|
mutableprivate |
◆ m_deltaPsigma
float iFatras::McMaterialEffectsUpdator::m_deltaPsigma |
|
mutableprivate |
◆ m_edLayerEnergyDeposit
float iFatras::McMaterialEffectsUpdator::m_edLayerEnergyDeposit |
|
mutableprivate |
◆ m_edLayerIntersectR
float iFatras::McMaterialEffectsUpdator::m_edLayerIntersectR |
|
mutableprivate |
◆ m_edLayerIntersectX
float iFatras::McMaterialEffectsUpdator::m_edLayerIntersectX |
|
mutableprivate |
◆ m_edLayerIntersectY
float iFatras::McMaterialEffectsUpdator::m_edLayerIntersectY |
|
mutableprivate |
◆ m_edLayerIntersectZ
float iFatras::McMaterialEffectsUpdator::m_edLayerIntersectZ |
|
mutableprivate |
◆ m_edLayerSample
float iFatras::McMaterialEffectsUpdator::m_edLayerSample |
|
mutableprivate |
◆ m_edValidation
bool iFatras::McMaterialEffectsUpdator::m_edValidation |
|
private |
◆ m_edValidationTree
TTree* iFatras::McMaterialEffectsUpdator::m_edValidationTree |
|
private |
◆ m_edValidationTreeDescription
std::string iFatras::McMaterialEffectsUpdator::m_edValidationTreeDescription |
|
private |
◆ m_edValidationTreeFolder
std::string iFatras::McMaterialEffectsUpdator::m_edValidationTreeFolder |
|
private |
◆ m_edValidationTreeName
std::string iFatras::McMaterialEffectsUpdator::m_edValidationTreeName |
|
private |
◆ m_eLoss
bool iFatras::McMaterialEffectsUpdator::m_eLoss |
|
private |
◆ m_eLossUpdator
◆ m_hadInt
bool iFatras::McMaterialEffectsUpdator::m_hadInt |
|
private |
◆ m_hadIntProcessor
◆ m_isp
◆ m_layer
◆ m_layerIndex
int iFatras::McMaterialEffectsUpdator::m_layerIndex |
|
mutableprivate |
◆ m_layerIndexCaloSampleMap
◆ m_layerIndexCaloSampleMapName
std::string iFatras::McMaterialEffectsUpdator::m_layerIndexCaloSampleMapName |
|
private |
◆ m_matProp
◆ m_minimumBremPhotonMomentum
double iFatras::McMaterialEffectsUpdator::m_minimumBremPhotonMomentum |
|
private |
◆ m_minimumMomentum
double iFatras::McMaterialEffectsUpdator::m_minimumMomentum |
|
private |
◆ m_ms
bool iFatras::McMaterialEffectsUpdator::m_ms |
|
private |
◆ m_msUpdator
◆ m_oneOverThree
double iFatras::McMaterialEffectsUpdator::m_oneOverThree |
|
private |
◆ m_parametricScattering
bool iFatras::McMaterialEffectsUpdator::m_parametricScattering |
|
private |
◆ m_particleBroker
◆ m_particleDecayer
◆ m_pdgToParticleHypothesis
◆ m_processCode
int iFatras::McMaterialEffectsUpdator::m_processCode |
|
private |
◆ m_projectionFactor
double iFatras::McMaterialEffectsUpdator::m_projectionFactor |
|
private |
◆ m_randomEngine
CLHEP::HepRandomEngine* iFatras::McMaterialEffectsUpdator::m_randomEngine |
|
private |
◆ m_randomEngineName
std::string iFatras::McMaterialEffectsUpdator::m_randomEngineName |
|
private |
◆ m_recordedBremPhotons
std::atomic<unsigned int> iFatras::McMaterialEffectsUpdator::m_recordedBremPhotons |
|
mutableprivate |
◆ m_recordEnergyDeposition
bool iFatras::McMaterialEffectsUpdator::m_recordEnergyDeposition |
|
private |
◆ m_referenceMaterial
bool iFatras::McMaterialEffectsUpdator::m_referenceMaterial |
|
private |
◆ m_rndGenSvc
◆ m_samplingTool
◆ m_thetaMSphi
float iFatras::McMaterialEffectsUpdator::m_thetaMSphi |
|
mutableprivate |
◆ m_thetaMSproj
float iFatras::McMaterialEffectsUpdator::m_thetaMSproj |
|
mutableprivate |
◆ m_thetaMStheta
float iFatras::McMaterialEffectsUpdator::m_thetaMStheta |
|
mutableprivate |
◆ m_tInX0
float iFatras::McMaterialEffectsUpdator::m_tInX0 |
|
mutableprivate |
◆ m_trackingGeometryName
std::string iFatras::McMaterialEffectsUpdator::m_trackingGeometryName { "ISF_FatrasTrackingGeometry" } |
|
private |
◆ m_trackingGeometryReadKey
Initial value:{
this,
"TrackingGeometryReadKey",
"ISF_FatrasTrackingGeometry",
"Key of input TrackingGeometry"
}
Definition at line 283 of file McMaterialEffectsUpdator.h.
◆ m_trackingGeometrySvc
Initial value:{
this,
"TrackingGeometrySvc",
"",
""
}
ToolHandle to the TrackingGeometrySvc.
Definition at line 291 of file McMaterialEffectsUpdator.h.
◆ m_truthRecordSvc
◆ m_uniformHertzDipoleAngle
bool iFatras::McMaterialEffectsUpdator::m_uniformHertzDipoleAngle |
|
private |
◆ m_use_msUpdator
bool iFatras::McMaterialEffectsUpdator::m_use_msUpdator |
|
private |
◆ m_useConditions
bool iFatras::McMaterialEffectsUpdator::m_useConditions {} |
|
private |
◆ m_validationMode
bool iFatras::McMaterialEffectsUpdator::m_validationMode |
|
private |
◆ m_validationTool
◆ m_validationTree
TTree* iFatras::McMaterialEffectsUpdator::m_validationTree |
|
private |
◆ m_validationTreeDescription
std::string iFatras::McMaterialEffectsUpdator::m_validationTreeDescription |
|
private |
◆ m_validationTreeFolder
std::string iFatras::McMaterialEffectsUpdator::m_validationTreeFolder |
|
private |
◆ m_validationTreeName
std::string iFatras::McMaterialEffectsUpdator::m_validationTreeName |
|
private |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
int m_processCode
MCTruth process code for TruthIncidents created by this tool.
float m_bremPhotonEnergy
ntuple variable : brem photon energy
void recordBremPhoton(double time, double pElectron, double gammaE, const Amg::Vector3D &vertex, Amg::Vector3D &particleDir, Trk::ParticleHypothesis particle) const
the helper function for a brem photon record
virtual double pathCorrection(const Amg::Vector3D &pos, const Amg::Vector3D &mom) const
the pathCorrection for derived classes with thickness - it reflects if the direction projection is po...
int m_currentSample
for the calo energy recording
const MaterialProperties * fullUpdateMaterialProperties(const TrackParameters &par) const
getting the MaterialProperties back - for full update
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
double msSigma(double dInX0, double p, Trk::ParticleHypothesis particle) const
handle the Energy loss
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
path
python interpreter configuration --------------------------------------—
ToolHandle< iFatras::IProcessSamplingTool > m_samplingTool
MCTruth process sampling.
double charge() const
Returns the charge.
Trk::ParticleHypothesis convert(int pdg, bool &stable, bool &exiting, double charge=1.) const
Converter method : PDG -> Particle Hyptothesis.
virtual const MaterialProperties * fullMaterial(const Amg::Vector3D &gp) const =0
Return method for full material description of the Layer.
void multipleScatteringUpdate(const Trk::TrackParameters &parm, AmgVector(5) ¶meters, double sigmaMSproj) const
the private multiple Scattering update method, thetaMs is the projected random number
ServiceHandle< Trk::ITrackingGeometrySvc > m_trackingGeometrySvc
ToolHandle to the TrackingGeometrySvc.
const Amg::Vector3D & position() const
Access method for the position.
void setProcess(int proc)
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
std::unique_ptr< ParametersBase< DIM, T > > uniqueClone() const
clone method for polymorphic deep copy returning unique_ptr; it is not overriden, but uses the existi...
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
static ParticleClipboard & getInstance()
get the singleton instance
void recordBremPhotonLay(const ISF::ISFParticle *parent, Trk::TimeLimit time, double pElectron, double gammaE, const Amg::Vector3D &vertex, Amg::Vector3D &particleDir, double matFraction, Trk::PropDirection dir, Trk::ParticleHypothesis particle) const
the helper function for a brem photon record
std::string m_layerIndexCaloSampleMapName
name to record it
float thicknessInX0() const
Return the radiationlength fraction.
std::string m_validationTreeFolder
stream/folder to for the TTree to be written out
float m_tInX0
nutple variable : t/X0
float m_deltaP
nutple variable : energy loss
double m_oneOverThree
useful for the angle calculation of the brem photon
virtual const Trk::TrackingGeometry * trackingGeometry(const EventContext &ctx) const
double sigmaDeltaE() const
returns the symmatric error
const ISF::ISFParticle * m_isp
cache incoming particle
int pdgCode() const
PDG value.
float thicknessInL0() const
Return the nuclear interaction length fraction.
std::string m_edValidationTreeName
validation tree name - to be acessed by this from root
double thicknessInX0() const
returns the actually traversed material .
float x0() const
Return the radiation length.
std::string m_validationTreeName
validation tree name - to be acessed by this from root
bool m_parametricScattering
describe deflection parametric/do real deflection
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
const Amg::Vector3D & center() const
Returns the center position of the Surface.
const Material & material() const
Return the stored Material.
float m_edLayerSample
ntuple variable : layer sample
std::string m_randomEngineName
Name of the random number stream.
float m_edLayerEnergyDeposit
ntuple variable : energy despoit - value
bool m_recordEnergyDeposition
for deposition methods
@ u
Enums for curvilinear frames.
#define AmgSymMatrix(dim)
float m_thetaMSphi
ntuple variable : ms in phi
TrackParameters_v1 TrackParameters
std::map< Trk::LayerIndex, int > LayerIndexSampleMap
const Amg::Vector3D & position() const
The current position of the ISFParticle.
bool m_eLoss
IEnergyLossUpdator.
float m_edLayerIntersectY
ntuple variable : energy deposit y coordinate
bool m_uniformHertzDipoleAngle
use the relativistic hertz dipole for brem photon radiation
std::unique_ptr< Trk::TrackParameters > updateInLay(const ISF::ISFParticle *isp, const Trk::TrackParameters *parm, double &matFraction, Trk::TimeLimit &time, Trk::PathLimit &path, Trk::PropDirection dir=Trk::alongMomentum, Trk::ParticleHypothesis particle=Trk::pion) const
SG::ReadCondHandleKey< Trk::TrackingGeometry > m_trackingGeometryReadKey
a link optimized in size for a GenParticle in a McEventCollection
ServiceHandle< IAtRndmGenSvc > m_rndGenSvc
Random Generator service
const Trk::Layer * m_layer
cache layer properties
std::string m_edValidationTreeFolder
stream/folder to for the TTree to be written out
virtual const Surface & surfaceRepresentation() const =0
Transforms the layer into a Surface representation for extrapolation.
CLHEP::HepRandomEngine * m_randomEngine
Random engine
ToolHandle< Trk::IMultipleScatteringUpdator > m_msUpdator
virtual ChargedTrackParametersUniquePtr createUniqueTrackParameters(double l1, double l2, double phi, double theat, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const =0
Use the Surface as a ParametersBase constructor, from local parameters - charged.
bool m_hadInt
hadronic interaction setting
float m_bremPointZ
ntuple variable : brem point z coordinate
std::vector< ISF::ISFParticle * > ISFParticleVector
ISFParticle vector.
std::string m_bremValidationTreeFolder
stream/folder to for the TTree to be written out
double deltaE() const
returns the
Exception to be thrown when TrackingGeometry not found.
float m_thetaMStheta
ntuple variable : ms in theta
std::string m_edValidationTreeDescription
validation tree description - second argument in TTree
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
const Trk::LayerIndexSampleMap * layerIndexSampleMap() const
return the TrackingGeometry used
float m_bremPointR
ntuple variable : brem point r distance
TTree * m_bremValidationTree
Root Validation Tree.
int value() const
layerIndex expressed in an integer
Trk::PdgToParticleHypothesis m_pdgToParticleHypothesis
constexpr int UNDEFINED_ID
void setGeneration(int gen)
bool m_ms
IMultipleScatteringUpdator.
std::string m_trackingGeometryName
Name of the TrackingGeometry as given in Detector Store.
double m_minimumMomentum
Minimum momentum cut.
std::string m_bremValidationTreeDescription
validation tree description
constexpr double mass[PARTICLEHYPOTHESES]
the array of masses
Ensure that the ATLAS eigen extensions are properly loaded.
const std::string & volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.
TTree * m_edValidationTree
Root Validation Tree.
double timeStamp() const
Timestamp of the ISFParticle.
constexpr int SIM_STATUS_THRESHOLD
Constant definiting the status threshold for simulated particles, eg. can be used to separate generat...
bool m_bendingCorrection
Switch to use bending correction.
double m_minimumBremPhotonMomentum
Minimum momentum for brem photons.
void setMaterialLimit(int process, float x0lim, float x0coll)
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
const Amg::Vector3D & momentum() const
The current momentum vector of the ISFParticle.
ServiceHandle< ISF::IParticleBroker > m_particleBroker
This class describes energy loss material effects in the ATLAS tracking EDM.
double charge(const T &p)
std::string m_validationTreeDescription
validation tree description - second argument in TTree
ToolHandle< iFatras::IPhotonConversionTool > m_conversionTool
IPhotonConversionTool.
StatusCode initialize(bool used=true)
void setUserInformation(ParticleUserInformation *userInfo)
float m_bremPointX
ntuple variable : brem point x coordinate
std::string m_bremValidationTreeName
validation tree name - to be acessed by this from root
Eigen::Matrix< double, 3, 1 > Vector3D
int m_layerIndex
ntuple variable : layer index of material effects update
double charge() const
charge of the particle
ServiceHandle< ISF::ITruthSvc > m_truthRecordSvc
float m_edLayerIntersectZ
ntuple variable : energy deposit z coordinate
float m_bremPhotonAngle
ntuple variable : brem photon angle
const ISF::ISFParticle * getParticle() const
get the particle from the clipboard
const HepMcParticleLink * getParticleLink() const
HepMcParticleLink accessors.
float m_deltaPsigma
ntuple variable : stragling on energy loss
float m_bremMotherEnergy
ntuple variable : brem mother energy
const Amg::Vector3D & momentum() const
Access method for the momentum.
float m_edLayerIntersectX
ntuple variable : energy deposit x coordinate
const MaterialPathInfo * materialLimit() const
const EnergyLoss * energyLoss() const
returns the energy loss object.
const Trk::MaterialProperties * m_matProp
bool m_use_msUpdator
switch between MSUpdator and local parametrization
#define ATH_MSG_WARNING(x)
void radiate(const ISF::ISFParticle *parent, AmgVector(5) &updatedParameters, const Amg::Vector3D &pos, Amg::Vector3D &dir, Trk::TimeLimit time, double dX0, double &matFraction, double matTot, Trk::PropDirection pdir, Trk::ParticleHypothesis particle) const
double m_projectionFactor
projection factor for the non-parametric scattering
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
const ScatteringAngles * scatteringAngles() const
returns the MCS-angles object.
ToolHandle< Trk::IEnergyLossUpdator > m_eLossUpdator
float averageZ() const
Returns the average Z of the material.
const TrackingVolume * enclosingTrackingVolume() const
get the confining TrackingVolume
const LayerMaterialProperties * layerMaterialProperties() const
getting the LayerMaterialProperties including full/pre/post update
const TrackingVolume * lowestTrackingVolume(const Amg::Vector3D &gp) const
return the lowest tracking Volume
void ionize(const Trk::TrackParameters &parm, AmgVector(5) &updatedPar, double dInX0, Trk::PropDirection pdir, Trk::ParticleHypothesis particle) const
std::atomic< unsigned int > m_recordedBremPhotons
for statistics output
float zOverAtimesRho() const
Return the .
float m_bremPointY
ntuple variable : brem point y coordinate
ISF::ISFParticleVector interactLay(const ISF::ISFParticle *isp, double time, const Trk::TrackParameters &parm, Trk::ParticleHypothesis particle, int process, const Trk::MaterialProperties *extMatProp=0) const
ToolHandle< IPhysicsValidationTool > m_validationTool
TTree * m_validationTree
Root Validation Tree.
const Layer * associatedLayer(const Amg::Vector3D &gp) const
Return the associated Layer.
const Trk::LayerIndexSampleMap * m_layerIndexCaloSampleMap
the map for the calo-layer index map
ToolHandle< IHadronicInteractionProcessor > m_hadIntProcessor
ToolHandle< IParticleDecayHelper > m_particleDecayer
Particle Decay.
Scalar mag() const
mag method
float m_thetaMSproj
ntuple variable : projected ms
const ParticleUserInformation * getUserInformation() const
get/set ParticleUserInformation
float m_edLayerIntersectR
ntuple variable : energy deposit r coordinate
const TruthBinding * getTruthBinding() const
pointer to the simulation truth - optional, can be 0
bool m_referenceMaterial
Switch to use reference material.
const LayerIndex & layerIndex() const
get the layerIndex
double mass() const
mass of the particle
virtual double r() const =0
Interface method for the maximal extension or the radius.