|
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 *=NULL, ITRT_PAITool *=NULL, const ITRT_CalDbTool *=NULL) |
| 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 55 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 = NULL , |
|
|
ITRT_PAITool * |
paitoolKr = NULL , |
|
|
const ITRT_CalDbTool * |
calDbTool = NULL |
|
) |
| |
◆ ~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 203 of file TRTProcessingOfStraw.cxx.
215 else if (strawGasType==1) { activePAITool =
m_pPAItoolKr; }
216 else if (strawGasType==2) { activePAITool =
m_pPAItoolAr; }
220 const double deltaX(postx - prex);
221 const double deltaY(posty - prey);
222 const double deltaZ(postz - prez);
225 const double meanFreePath(activePAITool->
GetMeanFreePath( scaledKineticEnergy, particleCharge*particleCharge ));
228 const unsigned int numberOfClusters(CLHEP::RandPoisson::shoot(rndmEngine,stepLength / meanFreePath));
232 for (
unsigned int iclus(0); iclus<numberOfClusters; ++iclus)
235 const double lambda(CLHEP::RandFlat::shoot(rndmEngine));
238 double clusE(activePAITool->
GetEnergyTransfer(scaledKineticEnergy, paiRndmEngine));
239 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 545 of file TRTProcessingOfStraw.cxx.
563 const bool isShort (region==1);
564 const bool isLong (region==2);
577 std::vector<cluster>::const_iterator currentClusterIter(
clusters.begin());
578 const std::vector<cluster>::const_iterator endOfClusterList(
clusters.end());
590 double map_x2(0.),map_y2(0.),map_z2(0.);
591 double effectiveField2(0.);
596 globalPosition[0]=TRThitGlobalPos[0]*
CLHEP::mm;
597 globalPosition[1]=TRThitGlobalPos[1]*
CLHEP::mm;
598 globalPosition[2]=TRThitGlobalPos[2]*
CLHEP::mm;
601 fieldCache.
getField (globalPosition.data(), mField.data());
603 map_x2 = mField.x()*mField.x();
604 map_y2 = mField.y()*mField.y();
605 map_z2 = mField.z()*mField.z();
632 for (;currentClusterIter!=endOfClusterList;++currentClusterIter)
635 const double cluster_x(currentClusterIter->xpos);
636 const double cluster_y(currentClusterIter->ypos);
637 const double cluster_z(this->
setClusterZ(currentClusterIter->zpos, isLong, isShort, isEC));
638 const double cluster_x2(cluster_x*cluster_x);
639 const double cluster_y2(cluster_y*cluster_y);
640 double cluster_r2(cluster_x2+cluster_y2);
643 if (cluster_r2<wire_r2) cluster_r2=wire_r2;
644 if (cluster_r2>straw_r2) cluster_r2=straw_r2;
646 const double cluster_r(std::sqrt(cluster_r2));
647 const double cluster_E(currentClusterIter->energy);
648 const unsigned int nprimaryelectrons(
static_cast<unsigned int>( cluster_E / ionisationPotential + 1.0 ) );
653 double depositEnergy(0.);
657 unsigned int nsurvivingprimaryelectrons =
static_cast<unsigned int>(randBinomial->fire(rndmEngine,nprimaryelectrons) + 0.5);
658 if (nsurvivingprimaryelectrons==0)
continue;
659 const double meanElectronEnergy(ionisationPotential / smearingFactor);
660 for (
unsigned int ielec(0); ielec<nsurvivingprimaryelectrons; ++ielec) {
661 depositEnergy += CLHEP::RandExpZiggurat::shoot(rndmEngine, meanElectronEnergy);
666 const double fluctSigma(sqrt(cluster_E * ionisationPotential * (2 - smearingFactor) / smearingFactor));
668 depositEnergy = CLHEP::RandGaussZiggurat::shoot(rndmEngine, cluster_E, fluctSigma);
669 }
while(depositEnergy<0.0);
684 effectiveField2 = map_z2*cluster_y2/cluster_r2 + map_x2 + map_y2;
693 effectiveField2 = map_z2 + (map_x2+map_y2)*cluster_y2/cluster_r2;
709 double clusterTime(currentClusterIter->time);
719 double timedirect(0.), timereflect(0.);
723 double expdirect(1.0), expreflect(1.0);
737 const unsigned int kdirect =
static_cast<unsigned int>(distdirect/10);
738 const unsigned int kreflect =
static_cast<unsigned int>(distreflect/10);
745 double dt = clusterTime + commondrifttime;
746 deposits.emplace_back(0.5*depositEnergy*expdirect, timedirect+
dt);
747 deposits.emplace_back(0.5*depositEnergy*expreflect, timereflect+
dt);
◆ getGlobalPosition()
Definition at line 754 of file TRTProcessingOfStraw.cxx.
756 const int mask(0x0000001F);
758 int trtID, ringID, moduleID, layerID, strawID;
759 int wheelID, planeID, sectorID;
764 if ( !(hitID & 0x00200000) ) {
766 strawID = hitID &
mask;
767 hitID >>= word_shift;
768 layerID = hitID &
mask;
769 hitID >>= word_shift;
770 moduleID = hitID &
mask;
771 hitID >>= word_shift;
772 ringID = hitID &
mask;
773 trtID = hitID >> word_shift;
778 const Amg::Vector3D v( (*theHit)->GetPreStepX(),(*theHit)->GetPreStepY(),(*theHit)->GetPreStepZ());
784 strawID = hitID &
mask;
785 hitID >>= word_shift;
786 planeID = hitID &
mask;
787 hitID >>= word_shift;
788 sectorID = hitID &
mask;
789 hitID >>= word_shift;
790 wheelID = hitID &
mask;
791 trtID = hitID >> word_shift;
794 if (trtID == 3) trtID = 0;
799 if ( endcapElement ) {
800 const Amg::Vector3D v( (*theHit)->GetPreStepX(),(*theHit)->GetPreStepY(),(*theHit)->GetPreStepZ());
806 ATH_MSG_WARNING (
"Could not find global coordinate of a straw - drifttime calculation will be inaccurate" );
807 return {0.0,0.0,0.0};
◆ Initialize()
Initialize.
Definition at line 88 of file TRTProcessingOfStraw.cxx.
103 ATH_MSG_FATAL (
"TRT_PAITool for Xenon not defined! no point in continuing!" );
106 ATH_MSG_ERROR (
"TRT_PAITool for Krypton is not defined!!! Xenon TRT_PAITool will be used for Krypton straws!" );
110 ATH_MSG_ERROR (
"TRT_PAITool for Argon is not defined!!! Xenon TRT_PAITool will be used for Argon straws!" );
128 for (
unsigned int k=0;
k<150;
k++) {
129 double dist = 10.0*(
k+0.5);
140 for (
unsigned int iwheel = 0; iwheel <
num->getNEndcapWheels(); ++iwheel)
142 for (
unsigned int iside = 0; iside < 2; ++iside)
144 for (
unsigned int ilayer = 0; ilayer <
num->getNEndcapLayers(iwheel); ++ilayer)
154 ATH_MSG_VERBOSE (
"Failed to retrieve endcap element for (iside,iwheel,ilayer)=("
155 << iside<<
", "<<iwheel<<
", "<<ilayer<<
")." );
164 const double zcoordfrac((
v.z()>0?
v.z():-
v.z())/
v.mag());
165 if (zcoordfrac<0.98 || zcoordfrac > 1.02)
167 ATH_MSG_WARNING (
"Found endcap straw where the assumption that local x-direction"
168 <<
" is parallel to global z-direction is NOT valid."
169 <<
" Drift times will be somewhat off." );
176 for (
unsigned int phi_it = 0; phi_it < 32; phi_it++)
185 const double coordfrac(atan2(
v.x(),
v.y()));
186 if (coordfrac>0.2 || coordfrac < -0.2)
188 ATH_MSG_WARNING (
"Found barrel straw where the assumption that local y-direction"
189 <<
" is along the straw is NOT valid."
190 <<
" 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 249 of file TRTProcessingOfStraw.cxx.
267 const int hitID((*i)->GetHitID());
273 const bool isECA (region==3);
274 const bool isECB (region==4);
309 double timeOfHit(0.0);
311 const double globalHitTime(
hitTime(*theHit));
312 const double globalTime =
static_cast<double>((*theHit)->GetGlobalTime());
313 const double bunchCrossingTime(globalHitTime - globalTime);
321 const int particleEncoding((*theHit)->GetParticleEncoding());
324 if (particleEncoding == 0)
332 ATH_MSG_WARNING (
"Ignoring sim. particle with pdgcode 0. This warning is only shown once per job" );
339 if (particleEncoding == 22)
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;
400 ((
static_cast<int>(abs(particleEncoding)/10000000) == 1) &&
401 (
static_cast<int>(abs(particleEncoding)/100000) == 100) &&
402 (
static_cast<int>((abs(particleEncoding))-10000000)/100>10)) )
404 m_clusterlist.emplace_back((*theHit)->GetEnergyDeposit()*
CLHEP::keV, timeOfHit, (*theHit)->GetPostStepX(), (*theHit)->GetPostStepY(), (*theHit)->GetPostStepZ()
411 double particleCharge(0.);
412 double particleMass(0.);
416 particleCharge =
particle->charge();
417 particleMass =
particle->mass().value();
418 if ((
static_cast<int>(abs(particleEncoding)/10000000) == 1) && (
static_cast<int>(abs(particleEncoding)/100000)==100))
420 particleCharge = (particleEncoding>0 ? 1. : -1.) *(((abs(particleEncoding) / 100000.0) - 100.0) * 1000.0);
422 else if ((
static_cast<int>(abs(particleEncoding)/10000000) == 2) && (
static_cast<int>(abs(particleEncoding)/100000)==200))
424 particleCharge = (particleEncoding>0 ? 1. : -1.) *((
double)((abs(particleEncoding) / 1000) % 100) / (
double)((abs(particleEncoding) / 10) % 100));
429 const int number_of_digits(
static_cast<int>(log10((
double)abs(particleEncoding))+1.));
430 if (number_of_digits != 10)
432 ATH_MSG_ERROR (
"Data for sim. particle with pdgcode "<<particleEncoding
433 <<
" does not have 10 digits and could not be retrieved from PartPropSvc. Assuming mass and charge as pion." );
437 else if (( number_of_digits == 10 ) && (
static_cast<int>(abs(particleEncoding)/100000000)!=10) )
439 ATH_MSG_ERROR (
"Data for sim. particle with pdgcode "<<particleEncoding
440 <<
" has 10 digits, could not be retrieved from PartPropSvc, and is inconsistent with ion pdg convention (+/-10LZZZAAAI)."
441 <<
" Assuming mass and charge as pion." );
445 else if ((number_of_digits==10) && (
static_cast<int>(abs(particleEncoding)/100000000)==10))
447 const int A(
static_cast<int>((((particleEncoding)%1000000000)%10000)/10.));
448 const int Z(
static_cast<int>((((particleEncoding)%10000000)-(((particleEncoding)%1000000000)%10000))/10000.));
453 particleCharge = (particleEncoding>0 ? 1. : -1.) *
static_cast<double>(
Z);
454 particleMass = std::abs(
Z*Mp+(
A-
Z)*Mn );
456 if (!alreadyPrintedPDGcodeWarning)
458 ATH_MSG_WARNING (
"Data for sim. particle with pdgcode "<<particleEncoding
459 <<
" could not be retrieved from PartPropSvc (unexpected ion)."
460 <<
" Calculating mass and charge from pdg code. "
461 <<
" The result is: Charge = "<<particleCharge<<
" Mass = "<<particleMass<<
"MeV" );
462 alreadyPrintedPDGcodeWarning =
true;
473 ATH_MSG_WARNING (
"Ignoring ionization from sim. particle with pdgcode "<<particleEncoding
474 <<
" since it appears to be a massless charged particle." );
482 const double scaledKineticEnergy(
static_cast<double>((*theHit)->GetKineticEnergy()) * (
CLHEP::proton_mass_c2 / particleMass ));
485 (*theHit)->GetPreStepX(),(*theHit)->GetPreStepY(),(*theHit)->GetPreStepZ(),
486 (*theHit)->GetPostStepX(),(*theHit)->GetPostStepY(),(*theHit)->GetPostStepZ(),
532 double lowthreshold, noiseamplitude;
537 noiseamplitude = 0.0;
◆ setClusterZ()
double TRTProcessingOfStraw::setClusterZ |
( |
double |
cluster_z_in, |
|
|
bool |
isLong, |
|
|
bool |
isShort, |
|
|
bool |
isEC |
|
) |
| const |
|
private |
Definition at line 812 of file TRTProcessingOfStraw.cxx.
813 double cluster_z(cluster_z_in);
818 const double longBarrelStrawHalfLength(349.315*
CLHEP::mm);
819 const double shortBarrelStrawHalfLength(153.375*
CLHEP::mm);
820 const double EndcapStrawHalfLength(177.150*
CLHEP::mm);
821 if ( isLong && std::abs(cluster_z)>longBarrelStrawHalfLength+30 ) {
822 double d = cluster_z<0 ? cluster_z+longBarrelStrawHalfLength : cluster_z-longBarrelStrawHalfLength;
823 ATH_MSG_WARNING (
"Long barrel straw cluster is outside the active gas volume z = +- 349.315 mm by " <<
d <<
" mm.");
827 if ( isShort && std::abs(cluster_z)>shortBarrelStrawHalfLength+30 ) {
828 double d = cluster_z<0 ? cluster_z+shortBarrelStrawHalfLength : cluster_z-shortBarrelStrawHalfLength;
829 ATH_MSG_WARNING (
"Short barrel straw cluster is outside the active gas volume z = +- 153.375 mm by " <<
d <<
" mm.");
833 if ( isEC && std::abs(cluster_z)>EndcapStrawHalfLength+30 ) {
834 double d = cluster_z<0 ? cluster_z+EndcapStrawHalfLength : cluster_z-EndcapStrawHalfLength;
835 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 126 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
double lowThresholdEC(int strawGasType) const
double m_innerRadiusOfStraw
bool timeCorrection() const
Query whether time is corrected for flight and wire propagation delays.
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.
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 ...
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
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.
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,...
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....
ITRT_PAITool * m_pPAItoolXe
bool m_alreadywarnedagainstpdg0