 |
ATLAS Offline Software
|
TRT Digitization: Processing of a TRT Straws.
More...
#include <TRTProcessingOfStraw.h>
|
| TRTProcessingOfStraw (const TRTDigSettings *, const InDetDD::TRT_DetectorManager *, ITRT_PAITool *, ITRT_SimDriftTimeTool *, TRTElectronicsProcessing *ep, TRTNoise *noise, TRTDigCondBase *digcond, const HepPDT::ParticleDataTable *, const TRT_ID *, ITRT_PAITool *=nullptr, ITRT_PAITool *=nullptr, const ITRT_CalDbTool *=nullptr) |
| Constructor: Calls Initialize method. More...
|
|
| ~TRTProcessingOfStraw () |
| Destructor. More...
|
|
void | ProcessStraw (MagField::AtlasFieldCache &fieldCache, hitCollConstIter i, hitCollConstIter e, TRTDigit &outdigit, bool &m_alreadyPrintedPDGcodeWarning, double m_cosmicEventPhase, int strawGasType, bool emulationArflag, bool emulationKrflag, CLHEP::HepRandomEngine *rndmEngine, CLHEP::HepRandomEngine *elecProcRndmEngine, CLHEP::HepRandomEngine *elecNoiseRndmEngine, CLHEP::HepRandomEngine *paiRndmEngine) |
| Process this straw all the way from Geant4 hit to output digit. More...
|
|
bool | msgLvl (const MSG::Level lvl) const |
| Test the output level. More...
|
|
MsgStream & | msg () const |
| The standard message stream. More...
|
|
MsgStream & | msg (const MSG::Level lvl) const |
| The standard message stream. More...
|
|
void | setLevel (MSG::Level lvl) |
| Change the current logging level. More...
|
|
|
| TRTProcessingOfStraw (const TRTProcessingOfStraw &) |
|
TRTProcessingOfStraw & | operator= (const TRTProcessingOfStraw &) |
|
void | Initialize (const ITRT_CalDbTool *) |
| Initialize. More...
|
|
void | addClustersFromStep (const double &scaledKineticEnergy, const double &particleCharge, const double &timeOfHit, const double &prex, const double &prey, const double &prez, const double &postx, const double &posty, const double &postz, std::vector< cluster > &clusterlist, int strawGasType, CLHEP::HepRandomEngine *rndmEngine, CLHEP::HepRandomEngine *paiRndmEngine) |
| This is the main function for re-simulation of the ionisation in the active gas via the PAI model. More...
|
|
void | ClustersToDeposits (MagField::AtlasFieldCache &fieldCache, const int &hitID, const std::vector< cluster > &clusters, std::vector< TRTElectronicsProcessing::Deposit > &deposits, Amg::Vector3D TRThitGlobalPos, double m_cosmicEventPhase, int strawGasType, CLHEP::HepRandomEngine *rndmEngine) |
| Transform the ioniation clusters along the particle trajectory inside a straw to energy deposits (i.e. More...
|
|
double | setClusterZ (double cluster_z_in, bool isLong, bool isShort, bool isEC) const |
|
Amg::Vector3D | getGlobalPosition (int hitID, const TimedHitPtr< TRTUncompressedHit > *theHit) |
|
void | initMessaging () const |
| Initialize our message level and MessageSvc. More...
|
|
TRT Digitization: Processing of a TRT Straws.
The main controlling function in ProcessStraw()
. See detailed description of this.
Definition at line 54 of file TRTProcessingOfStraw.h.
◆ hitCollConstIter
◆ TRTProcessingOfStraw() [1/2]
TRTProcessingOfStraw::TRTProcessingOfStraw |
( |
const TRTDigSettings * |
digset, |
|
|
const InDetDD::TRT_DetectorManager * |
detmgr, |
|
|
ITRT_PAITool * |
paitoolXe, |
|
|
ITRT_SimDriftTimeTool * |
simdrifttool, |
|
|
TRTElectronicsProcessing * |
ep, |
|
|
TRTNoise * |
noise, |
|
|
TRTDigCondBase * |
digcond, |
|
|
const HepPDT::ParticleDataTable * |
pdt, |
|
|
const TRT_ID * |
trt_id, |
|
|
ITRT_PAITool * |
paitoolAr = nullptr , |
|
|
ITRT_PAITool * |
paitoolKr = nullptr , |
|
|
const ITRT_CalDbTool * |
calDbTool = nullptr |
|
) |
| |
◆ ~TRTProcessingOfStraw()
TRTProcessingOfStraw::~TRTProcessingOfStraw |
( |
| ) |
|
◆ TRTProcessingOfStraw() [2/2]
◆ addClustersFromStep()
void TRTProcessingOfStraw::addClustersFromStep |
( |
const double & |
scaledKineticEnergy, |
|
|
const double & |
particleCharge, |
|
|
const double & |
timeOfHit, |
|
|
const double & |
prex, |
|
|
const double & |
prey, |
|
|
const double & |
prez, |
|
|
const double & |
postx, |
|
|
const double & |
posty, |
|
|
const double & |
postz, |
|
|
std::vector< cluster > & |
clusterlist, |
|
|
int |
strawGasType, |
|
|
CLHEP::HepRandomEngine * |
rndmEngine, |
|
|
CLHEP::HepRandomEngine * |
paiRndmEngine |
|
) |
| |
|
private |
This is the main function for re-simulation of the ionisation in the active gas via the PAI model.
From the given G4 step, ionisation clusters are distributed randomly (mean free path given by TRT_PAI_Process::GetMeanFreePath()
) along path. Cluster energies are given by TRT_PAI_Process::GetEnergyTransfer()
.
- Parameters
-
scaledKineticEnergy | The kinetic energy a proton would have had if it had the same Lorentz gamma factor as the particle in question. |
particleCharge | Particle charge |
timeOfHit | Time of hit |
prex | PreStepPoint x coordinate |
prey | PreStepPoint y coordinate |
prez | PreStepPoint z coordinate |
postx | PostStepPoint x coordinate |
posty | PostStepPoint y coordinate |
postz | PostStepPoint z coordinate |
clusterlist | List of ionisation clusters along step |
Definition at line 204 of file TRTProcessingOfStraw.cxx.
216 else if (strawGasType==1) { activePAITool =
m_pPAItoolKr; }
217 else if (strawGasType==2) { activePAITool =
m_pPAItoolAr; }
221 const double deltaX(postx - prex);
222 const double deltaY(posty - prey);
223 const double deltaZ(postz - prez);
226 const double meanFreePath(activePAITool->
GetMeanFreePath( scaledKineticEnergy, particleCharge*particleCharge ));
229 const unsigned int numberOfClusters(CLHEP::RandPoisson::shoot(rndmEngine,stepLength / meanFreePath));
233 for (
unsigned int iclus(0); iclus<numberOfClusters; ++iclus)
236 const double lambda(CLHEP::RandFlat::shoot(rndmEngine));
239 double clusE(activePAITool->
GetEnergyTransfer(scaledKineticEnergy, paiRndmEngine));
240 clusterlist.emplace_back(clusE, timeOfHit,
◆ ClustersToDeposits()
Transform the ioniation clusters along the particle trajectory inside a straw to energy deposits (i.e.
potential fluctuations) reaching the front-end electronics. Effects taken into effect are:
- number of primary electrons from deposited energy
- stocastic recapture of drift electrons
- electron drift in the magnetic field (different direction end-cap/barrel). Optionally the drift time includes spread.
- Optionally signal wire propagation dealys are included. Each drift electron then gives rise to two signal: direct and reflected.
- Parameters
-
hitID | Id of straw |
clusters | ionisation clusters along particle trajectory |
deposits | energy deposits on wire |
Definition at line 521 of file TRTProcessingOfStraw.cxx.
539 const bool isShort (region==1);
540 const bool isLong (region==2);
553 std::vector<cluster>::const_iterator currentClusterIter(
clusters.begin());
554 const std::vector<cluster>::const_iterator endOfClusterList(
clusters.end());
566 double map_x2(0.),map_y2(0.),map_z2(0.);
567 double effectiveField2(0.);
572 globalPosition[0]=TRThitGlobalPos[0]*
CLHEP::mm;
573 globalPosition[1]=TRThitGlobalPos[1]*
CLHEP::mm;
574 globalPosition[2]=TRThitGlobalPos[2]*
CLHEP::mm;
577 fieldCache.
getField (globalPosition.data(), mField.data());
579 map_x2 = mField.x()*mField.x();
580 map_y2 = mField.y()*mField.y();
581 map_z2 = mField.z()*mField.z();
608 for (;currentClusterIter!=endOfClusterList;++currentClusterIter)
611 const double cluster_x(currentClusterIter->xpos);
612 const double cluster_y(currentClusterIter->ypos);
613 const double cluster_z(this->
setClusterZ(currentClusterIter->zpos, isLong, isShort, isEC));
614 const double cluster_x2(cluster_x*cluster_x);
615 const double cluster_y2(cluster_y*cluster_y);
616 double cluster_r2(cluster_x2+cluster_y2);
619 if (cluster_r2<wire_r2) cluster_r2=wire_r2;
620 if (cluster_r2>straw_r2) cluster_r2=straw_r2;
622 const double cluster_r(std::sqrt(cluster_r2));
623 const double cluster_E(currentClusterIter->energy);
624 const unsigned int nprimaryelectrons(
static_cast<unsigned int>( cluster_E / ionisationPotential + 1.0 ) );
629 double depositEnergy(0.);
633 unsigned int nsurvivingprimaryelectrons =
static_cast<unsigned int>(randBinomial->fire(rndmEngine,nprimaryelectrons) + 0.5);
634 if (nsurvivingprimaryelectrons==0)
continue;
635 const double meanElectronEnergy(ionisationPotential / smearingFactor);
636 for (
unsigned int ielec(0); ielec<nsurvivingprimaryelectrons; ++ielec) {
637 depositEnergy += CLHEP::RandExpZiggurat::shoot(rndmEngine, meanElectronEnergy);
642 const double fluctSigma(sqrt(cluster_E * ionisationPotential * (2 - smearingFactor) / smearingFactor));
644 depositEnergy = CLHEP::RandGaussZiggurat::shoot(rndmEngine, cluster_E, fluctSigma);
645 }
while(depositEnergy<0.0);
660 effectiveField2 = map_z2*cluster_y2/cluster_r2 + map_x2 + map_y2;
669 effectiveField2 = map_z2 + (map_x2+map_y2)*cluster_y2/cluster_r2;
685 double clusterTime(currentClusterIter->time);
695 double timedirect(0.), timereflect(0.);
699 double expdirect(1.0), expreflect(1.0);
713 const unsigned int kdirect =
static_cast<unsigned int>(distdirect/10);
714 const unsigned int kreflect =
static_cast<unsigned int>(distreflect/10);
721 double dt = clusterTime + commondrifttime;
722 deposits.emplace_back(0.5*depositEnergy*expdirect, timedirect+
dt);
723 deposits.emplace_back(0.5*depositEnergy*expreflect, timereflect+
dt);
◆ getGlobalPosition()
Definition at line 730 of file TRTProcessingOfStraw.cxx.
732 const int mask(0x0000001F);
734 int trtID, ringID, moduleID, layerID, strawID;
735 int wheelID, planeID, sectorID;
740 if ( !(hitID & 0x00200000) ) {
742 strawID = hitID &
mask;
743 hitID >>= word_shift;
744 layerID = hitID &
mask;
745 hitID >>= word_shift;
746 moduleID = hitID &
mask;
747 hitID >>= word_shift;
748 ringID = hitID &
mask;
749 trtID = hitID >> word_shift;
754 const Amg::Vector3D v( (*theHit)->GetPreStepX(),(*theHit)->GetPreStepY(),(*theHit)->GetPreStepZ());
760 strawID = hitID &
mask;
761 hitID >>= word_shift;
762 planeID = hitID &
mask;
763 hitID >>= word_shift;
764 sectorID = hitID &
mask;
765 hitID >>= word_shift;
766 wheelID = hitID &
mask;
767 trtID = hitID >> word_shift;
770 if (trtID == 3) trtID = 0;
775 if ( endcapElement ) {
776 const Amg::Vector3D v( (*theHit)->GetPreStepX(),(*theHit)->GetPreStepY(),(*theHit)->GetPreStepZ());
782 ATH_MSG_WARNING (
"Could not find global coordinate of a straw - drifttime calculation will be inaccurate" );
783 return {0.0,0.0,0.0};
◆ Initialize()
Initialize.
Definition at line 89 of file TRTProcessingOfStraw.cxx.
104 ATH_MSG_FATAL (
"TRT_PAITool for Xenon not defined! no point in continuing!" );
107 ATH_MSG_ERROR (
"TRT_PAITool for Krypton is not defined!!! Xenon TRT_PAITool will be used for Krypton straws!" );
111 ATH_MSG_ERROR (
"TRT_PAITool for Argon is not defined!!! Xenon TRT_PAITool will be used for Argon straws!" );
129 for (
unsigned int k=0;
k<150;
k++) {
130 double dist = 10.0*(
k+0.5);
141 for (
unsigned int iwheel = 0; iwheel <
num->getNEndcapWheels(); ++iwheel)
143 for (
unsigned int iside = 0; iside < 2; ++iside)
145 for (
unsigned int ilayer = 0; ilayer <
num->getNEndcapLayers(iwheel); ++ilayer)
155 ATH_MSG_VERBOSE (
"Failed to retrieve endcap element for (iside,iwheel,ilayer)=("
156 << iside<<
", "<<iwheel<<
", "<<ilayer<<
")." );
165 const double zcoordfrac((
v.z()>0?
v.z():-
v.z())/
v.mag());
166 if (zcoordfrac<0.98 || zcoordfrac > 1.02)
168 ATH_MSG_WARNING (
"Found endcap straw where the assumption that local x-direction"
169 <<
" is parallel to global z-direction is NOT valid."
170 <<
" Drift times will be somewhat off." );
177 for (
unsigned int phi_it = 0; phi_it < 32; phi_it++)
186 const double coordfrac(atan2(
v.x(),
v.y()));
187 if (coordfrac>0.2 || coordfrac < -0.2)
189 ATH_MSG_WARNING (
"Found barrel straw where the assumption that local y-direction"
190 <<
" is along the straw is NOT valid."
191 <<
" Drift times will be somewhat off." );
◆ initMessaging()
void AthMessaging::initMessaging |
( |
| ) |
const |
|
privateinherited |
Initialize our message level and MessageSvc.
This method should only be called once.
Definition at line 39 of file AthMessaging.cxx.
◆ msg() [1/2]
MsgStream & AthMessaging::msg |
( |
| ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 164 of file AthMessaging.h.
◆ msg() [2/2]
MsgStream & AthMessaging::msg |
( |
const MSG::Level |
lvl | ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 179 of file AthMessaging.h.
180 {
return msg() << lvl; }
◆ msgLvl()
bool AthMessaging::msgLvl |
( |
const MSG::Level |
lvl | ) |
const |
|
inlineinherited |
Test the output level.
- Parameters
-
lvl | The message level to test against |
- Returns
- boolean Indicating if messages at given level will be printed
- Return values
-
true | Messages at level "lvl" will be printed |
Definition at line 151 of file AthMessaging.h.
◆ operator=()
◆ ProcessStraw()
void TRTProcessingOfStraw::ProcessStraw |
( |
MagField::AtlasFieldCache & |
fieldCache, |
|
|
hitCollConstIter |
i, |
|
|
hitCollConstIter |
e, |
|
|
TRTDigit & |
outdigit, |
|
|
bool & |
m_alreadyPrintedPDGcodeWarning, |
|
|
double |
m_cosmicEventPhase, |
|
|
int |
strawGasType, |
|
|
bool |
emulationArflag, |
|
|
bool |
emulationKrflag, |
|
|
CLHEP::HepRandomEngine * |
rndmEngine, |
|
|
CLHEP::HepRandomEngine * |
elecProcRndmEngine, |
|
|
CLHEP::HepRandomEngine * |
elecNoiseRndmEngine, |
|
|
CLHEP::HepRandomEngine * |
paiRndmEngine |
|
) |
| |
Process this straw all the way from Geant4 hit to output digit.
Steps:
- Loop over the simhits in this straw and produce a list of primary ionisation clusters.
- Use the cluster list along with gas and wire properties, to create a list of energy deposits (i.e. potential fluctuations) reaching the frontend electronics.
- Simulate how the FE turns the results into an output digit. This includes the shaping/amplification and subsequent discrimination as well as addition of noise.
- Parameters
-
i | Geant4 hit collection iterator |
e | last hit in collection |
outdigit | The 27 bit digit (bits: 8 low + 1 high + 8 low + 1 high + 8 low + 1 high) |
Definition at line 250 of file TRTProcessingOfStraw.cxx.
268 const int hitID((*i)->GetHitID());
274 const bool isECA (region==3);
275 const bool isECB (region==4);
310 double timeOfHit(0.0);
312 const double globalHitTime(
hitTime(*theHit));
313 const double globalTime =
static_cast<double>((*theHit)->GetGlobalTime());
314 const double bunchCrossingTime(globalHitTime - globalTime);
322 const int particleEncoding((*theHit)->GetParticleEncoding());
325 if (particleEncoding == 0)
333 ATH_MSG_WARNING (
"Ignoring sim. particle with pdgcode 0. This warning is only shown once per job" );
352 double ArEmulationScaling_BA = 0.05;
353 double ArEmulationScaling_ECA = 0.20;
354 double ArEmulationScaling_ECB = 0.20;
357 double KrEmulationScaling_BA = 0.20;
358 double KrEmulationScaling_ECA = 0.39;
359 double KrEmulationScaling_ECB = 0.39;
363 double hitx = TRThitGlobalPos[0];
364 double hity = TRThitGlobalPos[1];
365 double hitz = TRThitGlobalPos[2];
366 double hitEta = std::abs(
log(
tan(0.5*atan2(sqrt(hitx*hitx+hity*hity),hitz))));
367 if ( hitEta < 0.5 ) { trEfficiencyBarrel *= ( 0.833333+0.6666667*hitEta*hitEta ); }
369 if ( strawGasType == 0 && emulationArflag ) { trEfficiencyBarrel *= ArEmulationScaling_BA; }
370 if ( strawGasType == 0 && emulationKrflag ) { trEfficiencyBarrel *= KrEmulationScaling_BA; }
371 if ( CLHEP::RandFlat::shoot(rndmEngine) > trEfficiencyBarrel )
continue;
377 if ( strawGasType == 0 && emulationArflag ) { trEfficiencyEndCapA *= ArEmulationScaling_ECA; }
378 if ( strawGasType == 0 && emulationKrflag ) { trEfficiencyEndCapA *= KrEmulationScaling_ECA; }
379 if ( CLHEP::RandFlat::shoot(rndmEngine) > trEfficiencyEndCapA )
continue;
384 if ( strawGasType == 0 && emulationArflag ) { trEfficiencyEndCapB *= ArEmulationScaling_ECB; }
385 if ( strawGasType == 0 && emulationKrflag ) { trEfficiencyEndCapB *= KrEmulationScaling_ECB; }
386 if ( CLHEP::RandFlat::shoot(rndmEngine) > trEfficiencyEndCapB )
continue;
401 m_clusterlist.emplace_back( (*theHit)->GetEnergyDeposit()*
CLHEP::keV, timeOfHit, (*theHit)->GetPostStepX(), (*theHit)->GetPostStepY(), (*theHit)->GetPostStepZ() );
407 double particleCharge(0.);
408 double particleMass(0.);
411 particleCharge =
particle->charge();
412 particleMass =
particle->mass().value();
421 ATH_MSG_WARNING (
"Data for sim. particle with pdgcode "<<particleEncoding
422 <<
" is not a nucleus and could not be retrieved from PartPropSvc. Assuming mass and charge as pion. Please investigate." );
427 particleCharge =
MC::charge(particleEncoding);
433 particleMass = std::abs(
Z*Mp+(
A-
Z)*Mn );
435 if (!alreadyPrintedPDGcodeWarning) {
436 ATH_MSG_WARNING (
"Data for sim. particle with pdgcode "<<particleEncoding
437 <<
" could not be retrieved from PartPropSvc (unexpected ion)."
438 <<
" Please Investigate the PDGTABLE.MeV file."
439 <<
" Calculating mass and charge from pdg code."
440 <<
" The result is: Charge = "<<particleCharge<<
" Mass = "<<particleMass<<
"MeV" );
441 alreadyPrintedPDGcodeWarning =
true;
446 if (!particleCharge) {
continue; }
449 ATH_MSG_WARNING (
"Ignoring ionization from particle with pdg code "<<particleEncoding
450 <<
" since it appears to be a massless charged particle. Please investigate." );
458 const double scaledKineticEnergy(
static_cast<double>((*theHit)->GetKineticEnergy()) * (
CLHEP::proton_mass_c2 / particleMass ));
461 (*theHit)->GetPreStepX(),(*theHit)->GetPreStepY(),(*theHit)->GetPreStepZ(),
462 (*theHit)->GetPostStepX(),(*theHit)->GetPostStepY(),(*theHit)->GetPostStepZ(),
508 double lowthreshold, noiseamplitude;
513 noiseamplitude = 0.0;
◆ setClusterZ()
double TRTProcessingOfStraw::setClusterZ |
( |
double |
cluster_z_in, |
|
|
bool |
isLong, |
|
|
bool |
isShort, |
|
|
bool |
isEC |
|
) |
| const |
|
private |
Definition at line 788 of file TRTProcessingOfStraw.cxx.
789 double cluster_z(cluster_z_in);
794 const double longBarrelStrawHalfLength(349.315*
CLHEP::mm);
795 const double shortBarrelStrawHalfLength(153.375*
CLHEP::mm);
796 const double EndcapStrawHalfLength(177.150*
CLHEP::mm);
797 if ( isLong && std::abs(cluster_z)>longBarrelStrawHalfLength+30 ) {
798 double d = cluster_z<0 ? cluster_z+longBarrelStrawHalfLength : cluster_z-longBarrelStrawHalfLength;
799 ATH_MSG_WARNING (
"Long barrel straw cluster is outside the active gas volume z = +- 349.315 mm by " <<
d <<
" mm.");
803 if ( isShort && std::abs(cluster_z)>shortBarrelStrawHalfLength+30 ) {
804 double d = cluster_z<0 ? cluster_z+shortBarrelStrawHalfLength : cluster_z-shortBarrelStrawHalfLength;
805 ATH_MSG_WARNING (
"Short barrel straw cluster is outside the active gas volume z = +- 153.375 mm by " <<
d <<
" mm.");
809 if ( isEC && std::abs(cluster_z)>EndcapStrawHalfLength+30 ) {
810 double d = cluster_z<0 ? cluster_z+EndcapStrawHalfLength : cluster_z-EndcapStrawHalfLength;
811 ATH_MSG_WARNING (
"End cap straw cluster is outside the active gas volume z = +- 177.150 mm by " <<
d <<
" mm.");
◆ setLevel()
void AthMessaging::setLevel |
( |
MSG::Level |
lvl | ) |
|
|
inherited |
◆ ATLAS_THREAD_SAFE
std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT |
|
mutableprivateinherited |
◆ m_alreadywarnedagainstpdg0
bool TRTProcessingOfStraw::m_alreadywarnedagainstpdg0 |
|
private |
◆ m_attenuationLength
double TRTProcessingOfStraw::m_attenuationLength = 0.0 |
|
private |
◆ m_clusterlist
std::vector<cluster> TRTProcessingOfStraw::m_clusterlist |
|
private |
◆ m_depositList
◆ m_detmgr
◆ m_drifttimes
std::vector<double> TRTProcessingOfStraw::m_drifttimes |
|
private |
◆ m_expattenuation
std::vector<double> TRTProcessingOfStraw::m_expattenuation |
|
private |
◆ m_id_helper
◆ m_imsg
std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr } |
|
mutableprivateinherited |
◆ m_innerRadiusOfStraw
double TRTProcessingOfStraw::m_innerRadiusOfStraw = 0.0 |
|
private |
◆ m_lvl
std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL } |
|
mutableprivateinherited |
◆ m_maxCrossingTime
double TRTProcessingOfStraw::m_maxCrossingTime = 0.0 |
|
private |
◆ m_maxelectrons
unsigned int TRTProcessingOfStraw::m_maxelectrons = 0U |
|
private |
◆ m_minCrossingTime
double TRTProcessingOfStraw::m_minCrossingTime = 0.0 |
|
private |
◆ m_msg_tls
boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls |
|
mutableprivateinherited |
MsgStream instance (a std::cout like with print-out levels)
Definition at line 132 of file AthMessaging.h.
◆ m_nm
std::string AthMessaging::m_nm |
|
privateinherited |
◆ m_outerRadiusOfWire
double TRTProcessingOfStraw::m_outerRadiusOfWire = 0.0 |
|
private |
◆ m_pDigConditions
◆ m_pElectronicsProcessing
◆ m_pNoise
TRTNoise* TRTProcessingOfStraw::m_pNoise |
|
private |
◆ m_pPAItoolAr
◆ m_pPAItoolKr
◆ m_pPAItoolXe
◆ m_pParticleTable
const HepPDT::ParticleDataTable* TRTProcessingOfStraw::m_pParticleTable |
|
private |
◆ m_pSimDriftTimeTool
◆ m_pTimeCorrection
◆ m_randBinomialAr
◆ m_randBinomialKr
◆ m_randBinomialXe
◆ m_settings
◆ m_shiftOfZeroPoint
double TRTProcessingOfStraw::m_shiftOfZeroPoint = 0.0 |
|
private |
◆ m_signalPropagationSpeed
double TRTProcessingOfStraw::m_signalPropagationSpeed = 0.0 |
|
private |
◆ m_solenoidFieldStrength
double TRTProcessingOfStraw::m_solenoidFieldStrength = 0.0 |
|
private |
◆ m_timeCorrection
bool TRTProcessingOfStraw::m_timeCorrection = false |
|
private |
Time to be corrected for flight and wire propagation delays false when beamType='cosmics'.
Definition at line 125 of file TRTProcessingOfStraw.h.
◆ m_useAttenuation
bool TRTProcessingOfStraw::m_useAttenuation = false |
|
private |
◆ m_useMagneticFieldMap
bool TRTProcessingOfStraw::m_useMagneticFieldMap = false |
|
private |
The documentation for this class was generated from the following files:
std::atomic< MSG::Level > m_lvl
Current logging level.
TRTElectronicsProcessing * m_pElectronicsProcessing
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
bool doCosmicTimingPit() const
Cosmics timing corresponding to pit setup?
TRTDigCondBase * m_pDigConditions
bool isNucleus(const T &p)
PDG rule 16 Nuclear codes are given as 10-digit numbers ±10LZZZAAAI.
double lowThresholdEC(int strawGasType) const
double m_innerRadiusOfStraw
bool timeCorrection() const
Query whether time is corrected for flight and wire propagation delays.
double baryonNumber(const T &p)
bool useMagneticFieldMap() const
unsigned int getRegion(int hitID)
const InDetDD::TRT_DetectorManager * m_detmgr
const TRT_BarrelElement * getBarrelElement(unsigned int positive, unsigned int moduleIndex, unsigned int phiIndex, unsigned int strawLayerIndex) const
Access Barrel Elements:---------------—(Fast)-------------------------—.
double m_signalPropagationSpeed
double solenoidFieldStrength() const
Get solenoid field strength.
void getStrawData(const int &hitID, double &lowthreshold, double &noiseamplitude) const
Get straw data mixed condition is implemented function will return both Argon and Xenon straws (with ...
ITRT_PAITool * m_pPAItoolKr
void Initialize(const ITRT_CalDbTool *)
Initialize.
void PropagationTime(const int &strawID, const double &meanZ, double &propagationTime1, double &propagationTime2)
Calculates the time between the signal reaching the wire and when it reaches the electronics.
#define ATH_MSG_VERBOSE(x)
const TRT_ID * m_id_helper
std::unique_ptr< CLHEP::RandBinomialFixedP > m_randBinomialXe
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
double jitterTimeOffset() const
In cosmics, events not correlated with LHC clock.
std::unique_ptr< CLHEP::RandBinomialFixedP > m_randBinomialAr
IMessageSvc * getMessageSvc(bool quiet=false)
ITRT_SimDriftTimeTool * m_pSimDriftTimeTool
double m_outerRadiusOfWire
double smearingFactor(int strawGasType) const
Get smearing factor.
bool isGenericMultichargedParticle(const T &p)
In addition, there is a need to identify ”Q-ball” and similar very exotic (multi-charged) particles w...
double TimeShift(const int &strawID)
Returns the time it would take to travel at light-speed from (0,0,0) to the farthest end of the wire ...
constexpr double chargedPionMassInMeV
the mass of the charged pion (in MeV)
void addClustersFromStep(const double &scaledKineticEnergy, const double &particleCharge, const double &timeOfHit, const double &prex, const double &prey, const double &prez, const double &postx, const double &posty, const double &postz, std::vector< cluster > &clusterlist, int strawGasType, CLHEP::HepRandomEngine *rndmEngine, CLHEP::HepRandomEngine *paiRndmEngine)
This is the main function for re-simulation of the ionisation in the active gas via the PAI model.
double trEfficiencyEndCapA(int strawGasType) const
Get assumed Transition Radiation efficiency in end caps.
AthMessaging()
Default constructor:
const TRTDigSettings * m_settings
TRT_Numerology * getNumerology()
Access Numerological information:---------------------------------------—.
unsigned int m_maxelectrons
double m_shiftOfZeroPoint
std::vector< TRTElectronicsProcessing::Deposit > m_depositList
bool isMonopole(const T &p)
PDG rule 11i Magnetic monopoles and dyons are assumed to have one unit of Dirac monopole charge and a...
double attenuationLength() const
double lowThresholdBar(int strawGasType) const
Get discriminator setting for low threshold.
bool m_timeCorrection
Time to be corrected for flight and wire propagation delays false when beamType='cosmics'.
double setClusterZ(double cluster_z_in, bool isLong, bool isShort, bool isEC) const
const HepPDT::ParticleDataTable * m_pParticleTable
std::vector< cluster > m_clusterlist
bool m_useMagneticFieldMap
TRTTimeCorrection * m_pTimeCorrection
double innerRadiusOfStraw() const
Get inner radius of straw.
MsgStream & msg() const
The standard message stream.
Amg::Vector3D getGlobalPosition(int hitID, const TimedHitPtr< TRTUncompressedHit > *theHit)
bool noiseInSimhits() const
Query whether simulation of noise in hit straws.
double m_solenoidFieldStrength
const TRT_EndcapElement * getEndcapElement(unsigned int positive, unsigned int wheelIndex, unsigned int strawLayerIndex, unsigned int phiIndex) const
Access Endcap Elements:---------------—(Fast)--------------------------—.
TimedHitCollection< TRTUncompressedHit >::const_iterator hitCollConstIter
double trEfficiencyEndCapB(int strawGasType) const
double charge(const T &p)
unsigned int numberOfCrossingsBeforeMain() const
Get number of simulated bunch crossings before main event (pile up)
std::unique_ptr< CLHEP::RandBinomialFixedP > m_randBinomialKr
Eigen::Matrix< double, 3, 1 > Vector3D
double m_attenuationLength
double trEfficiencyBarrel(int strawGasType) const
Get assumed Transition Radiation efficiency in barrel.
ITRT_PAITool * m_pPAItoolAr
const Amg::Transform3D & strawTransform(unsigned int straw) const
Straw transform - fast access in array, in Tracking frame: Amg.
void ProcessDeposits(const std::vector< Deposit > &, const int &hitID, TRTDigit &outdigit, double lowthreshold, const double &noiseamplitude, int strawGasType, CLHEP::HepRandomEngine *rndmEngine, CLHEP::HepRandomEngine *elecNoiseRndmEngine, double highthreshold=-1.0)
Process deposits in a straw.
#define ATH_MSG_WARNING(x)
double timeInterval() const
Get time interval covered by each digit.
int numberOfProtons(const T &p)
bool isPhoton(const xAOD::Egamma *eg)
is the object a photon
std::string m_nm
Message source name.
void getField(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field value at given position xyz[3] is in mm, bxyz[3] is in kT if deriv[9] is given,...
constexpr double protonMassInMeV
the mass of the proton (in MeV)
bool useAttenuation() const
void initMessaging() const
Initialize our message level and MessageSvc.
float hitTime(const AFP_SIDSimHit &hit)
double outerRadiusOfWire() const
Get radius of signal wire.
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
double signalPropagationSpeed() const
Get wire signal propagation speed.
std::vector< double > m_expattenuation
double ionisationPotential(int strawGasType) const
Get ionisation potential.
void ClustersToDeposits(MagField::AtlasFieldCache &fieldCache, const int &hitID, const std::vector< cluster > &clusters, std::vector< TRTElectronicsProcessing::Deposit > &deposits, Amg::Vector3D TRThitGlobalPos, double m_cosmicEventPhase, int strawGasType, CLHEP::HepRandomEngine *rndmEngine)
Transform the ioniation clusters along the particle trajectory inside a straw to energy deposits (i....
constexpr double neutronMassInMeV
the mass of the neutron (in MeV)
ITRT_PAITool * m_pPAItoolXe
bool m_alreadywarnedagainstpdg0