|
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)
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