![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <MdtDigitizationTool.h>
|
ServiceHandle< PileUpMergeSvc > | m_mergeSvc {this, "PileUpMergeSvc", "PileUpMergeSvc", ""} |
|
BooleanProperty | m_onlyUseContainerName |
|
SG::ReadHandleKey< MDTSimHitCollection > | m_hitsContainerKey {this, "InputObjectName", "MDT_Hits", ""} |
|
std::string | m_inputObjectName {""} |
|
SG::WriteHandleKey< MdtDigitContainer > | m_outputObjectKey |
|
SG::WriteHandleKey< MuonSimDataCollection > | m_outputSDOKey |
|
ServiceHandle< IAthRNGSvc > | m_rndmSvc {this, "RndmSvc", "AthRNGSvc", ""} |
|
SG::ReadCondHandleKey< MuonCalib::MdtCalibDataContainer > | m_calibDbKey |
|
SG::ReadCondHandleKey< MdtCondDbData > | m_readKey {this, "ReadKey", "MdtCondDbData", "Key of MdtCondDbData"} |
|
|
CLHEP::HepRandomEngine * | getRandomEngine (const std::string &streamName, const EventContext &ctx) const |
|
int | digitizeTime (double time, bool isHPTDC, CLHEP::HepRandomEngine *rndmEngine) const |
|
double | minimumTof (Identifier DigitId, const MuonGM::MuonDetectorManager *detMgr) const |
|
bool | insideMatchingWindow (double time) const |
|
bool | insideMaskWindow (double time) const |
|
bool | checkMDTSimHit (const EventContext &ctx, const MDTSimHit &hit) const |
|
bool | handleMDTSimHit (const EventContext &ctx, const TimedHitPtr< MDTSimHit > &phit, CLHEP::HepRandomEngine *twinRndmEngine, CLHEP::HepRandomEngine *toolRndmEngine) |
|
bool | createDigits (const EventContext &ctx, Collections_t &collections, MuonSimDataCollection *sdoContainer, CLHEP::HepRandomEngine *rndmEngine) |
|
GeoCorOut | correctGeometricalWireSag (const MDTSimHit &hit, const Identifier &id, const MuonGM::MdtReadoutElement *element) const |
|
StatusCode | getNextEvent (const EventContext &ctx) |
|
StatusCode | doDigitization (const EventContext &ctx, Collections_t &collections, MuonSimDataCollection *sdoContainer) |
|
MdtDigitCollection * | getDigitCollection (Identifier elementId, Collections_t &collections) |
|
void | fillMaps (const MDTSimHit *mdtHit, const Identifier digitId, const double driftR) |
|
|
MDT_SortedHitVector | m_hits |
|
ServiceHandle< Muon::IMuonIdHelperSvc > | m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"} |
|
const MdtHitIdHelper * | m_muonHelper {} |
|
const MuonGM::MuonDetectorManager * | m_MuonGeoMgr {} |
|
ToolHandle< IMDT_DigitizationTool > | m_digiTool |
|
std::vector< MDTSimHitCollection * > | m_MDTHitCollList |
|
Gaudi::Property< double > | m_offsetTDC {this, "OffsetTDC", 800., "TDC offset used if no calibration data is found"} |
|
Gaudi::Property< double > | m_signalSpeed {this, "SignalSpeed", 0.85*Gaudi::Units::c_light} |
|
Gaudi::Property< double > | m_ns2TDCAMT {this, "ns2TDCAMT", 0.78125, "Conversion factor TDC/ns for AMT chips"} |
|
Gaudi::Property< double > | m_ns2TDCHPTDC {this, "ns2TDCHPTDC", 0.1953125, "Conversion factor TDC/ns for HPTDC chips"} |
|
Gaudi::Property< double > | m_resTDC {this, "ResolutionTDC", 0.5, "TDC resolution"} |
|
Gaudi::Property< double > | m_t0ShiftTuning {this,"TunedT0Shift",-17.,"Fine tuned t0 shift value in ns"} |
|
Gaudi::Property< bool > | m_checkMDTSimHits {this, "CheckSimHits", true, "Control on the hit validity"} |
|
Gaudi::Property< bool > | m_useTof {this, "UseTof", true, "Option for the tof calculation"} |
|
Gaudi::Property< bool > | m_useAttenuation {this, "UseAttenuation", false, ""} |
|
Gaudi::Property< bool > | m_useProp {this, "UseProp", true, ""} |
|
Gaudi::Property< bool > | m_useWireSagGeom {this, "UseWireSagGeom", false, "Option for the wire sagitta correction"} |
|
Gaudi::Property< bool > | m_useWireSagRT {this, "UseWireSagRT", false, "Option for the wire sagitta correction"} |
|
Gaudi::Property< bool > | m_useTwin {this, "UseTwin", false, ""} |
|
Gaudi::Property< bool > | m_useAllBOLTwin {this, "UseAllBOLTwin", false, ""} |
|
Gaudi::Property< double > | m_resTwin {this, "ResolutionTwinTube", 1.05, "Twin Tube resolution"} |
|
Gaudi::Property< bool > | m_useTimeWindow {this, "UseTimeWindow", true, ""} |
|
Gaudi::Property< double > | m_bunchCountOffset {this, "BunchCountOffset", -200., "Bunch crossing offset"} |
|
Gaudi::Property< double > | m_matchingWindow {this, "MatchingWindow", 1000., "Matching window"} |
|
Gaudi::Property< double > | m_maskWindow {this, "MaskWindow", 250., "Masked window"} |
|
Gaudi::Property< double > | m_deadTime {this, "DeadTime", 700., "MDT drift tube dead time"} |
|
Gaudi::Property< bool > | m_DiscardEarlyHits {this, "DiscardEarlyHits", true, ""} |
|
Gaudi::Property< bool > | m_useOffSet1 {this, "UseOffSet1", true, ""} |
|
Gaudi::Property< bool > | m_useOffSet2 {this, "UseOffSet2", true, ""} |
|
Gaudi::Property< bool > | m_useDeformations {this, "UseDeformations", false, ""} |
|
Gaudi::Property< bool > | m_DoQballCharge {this, "DoQballCharge", false, "dEdx for Qballs with account of electric charge"} |
|
std::unique_ptr< TimedHitCollection< MDTSimHit > > | m_thpcMDT {} |
|
Gaudi::Property< bool > | m_includePileUpTruth {this, "IncludePileUpTruth", true, "Include pile-up truth info"} |
|
In the initialize() method, the PileUpMerge and StoreGate services are initialized, and a pointer to an instance of the class MuonDetectorManager is retrieved from the detector store and used to obtain a MdtIdHelper.The MdtDigitContainer is initialized and the simulation identifier helper retrieved, together with the pointer to the digitization tool. Random numbers are obtained in the code from a dedicated stream via AtRndmSvc, which is also initialized in the initialize() method.
In the execute() method, the digits and the SDOs (Simulation Data Object, container for simulation data to be preserved after the digitization procedue, and persistified together with the RDOs) containers are created and recorded on StoreGate; the MDTSimHit collection are merged using the TimedHitCollection sorted container (done in handleMDTSimHit(TimedHitPtr <MDTSimHit>& hit)) method); into a loop over the TimedHitCollection for the given DetectorElement, the handleMDTSimHit() method converts the SimID into the Offline ID to be associated to the Digit and pass to the digitization tool the drift radius and the distance to the chamber RO side (for the propagation delay computation). The digitization tool returns a drift time and an ADC count which are used together with the Offline ID, to create the digit object (in createDigits() method).
The finalize() method returns a SUCCESS StatusCode if the digitization procedure ends succesfully.
Definition at line 93 of file MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.h.
◆ Collections_t
◆ MdtDigitizationTool()
MdtDigitizationTool::MdtDigitizationTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
pIID |
|
) |
| |
◆ ~MdtDigitizationTool()
virtual MdtDigitizationTool::~MdtDigitizationTool |
( |
| ) |
|
|
virtualdefault |
◆ applyDeformations()
◆ checkMDTSimHit()
bool MdtDigitizationTool::checkMDTSimHit |
( |
const EventContext & |
ctx, |
|
|
const MDTSimHit & |
hit |
|
) |
| const |
|
private |
◆ correctGeometricalWireSag()
Definition at line 868 of file MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx.
887 double pointingCheck = gpos.dot(gdir) < 0 ? -1. : 1.;
888 if (pointingCheck < 0) { gdir *= pointingCheck; }
890 double trackingSign = 1.;
891 double localSag = 0.0;
898 std::unique_ptr<const Trk::StraightLineSurface> wireSurface {surface.
correctedSurface(lp)};
909 localSag = lSaggedSpot.perp();
912 gToWireFrame = wireSurface->transform().inverse();
915 lpos = gToWireFrame * gpos;
916 ldir = gToWireFrame * gdir;
920 double alpha = -1 * lpos.dot(ldir);
921 lpos = lpos + alpha * ldir;
928 wireSurface->globalToLocal(saggedGPos, gdir, lpsag);
929 trackingSign = lpsag[
Trk::locR] < 0 ? -1. : 1.;
935 trackingSign = lpsag[
Trk::locR] < 0 ? -1. : 1.;
949 double sign = lpos.dot(lgravDir) < 0 ? -1. : 1.;
951 return {
sign, trackingSign, lpos, localSag};
◆ createDigits()
Definition at line 646 of file MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx.
649 Identifier currentDigitId{0}, currentElementId{0};
651 double currentDeadTime = 0.;
658 double timeOffsetEvent = 0.0;
659 double timeOffsetTotal = 0.0;
663 int inum = CLHEP::RandFlat::shootInt(rndmEngine, 0, 10);
665 timeOffsetEvent = -25.0;
666 }
else if (inum == 9) {
667 timeOffsetEvent = 25.0;
669 ATH_MSG_DEBUG(
"Emulating timing spead of cosmics: +/- 1 BC. Adding " << timeOffsetEvent <<
" ns to time");
674 if (!mdtCalibConstants.isValid()) {
675 ATH_MSG_FATAL(
"Failed to retrieve set of calibration constants "<<mdtCalibConstants.fullKey());
684 if (elementId != currentElementId) {
685 currentElementId = elementId;
691 timeOffsetTotal = timeOffsetEvent + CLHEP::RandFlat::shoot(rndmEngine, -12.5, 12.5);
692 ATH_MSG_DEBUG(
"Emulating time jitter of cosmic ray muons w.r.t LVL1 accept. Adding " << timeOffsetTotal <<
" ns to time");
696 if (!digitCollection) {
708 if (idDigit != currentDigitId) {
709 currentDigitId = idDigit;
734 if (insideMask && insideMatch) {
735 ATH_MSG_WARNING(
" Digit in matching AND masking window, please check window definition: relative time " << relativeTime);
738 if (insideMatch || insideMask) {
745 if (singleTubeData) {
756 <<
" driftRadius " <<
driftRadius <<
" TDC " << tdc <<
" ADC " <<
adc <<
" mask bit "
762 ATH_MSG_VERBOSE(
" createDigits() phit-" << &phit <<
" hit-" << hit.print() <<
" localZPos = " << hit.localPosition().z());
772 std::vector<MuonSimData::Deposit> deposits;
773 deposits.push_back(deposit);
777 tempSDO.setPosition(
p);
778 tempSDO.setTime(
hitTime(phit));
779 sdoContainer->insert(std::make_pair(idDigit, tempSDO));
784 <<
" --> hit ignored");
◆ digitizeTime()
int MdtDigitizationTool::digitizeTime |
( |
double |
time, |
|
|
bool |
isHPTDC, |
|
|
CLHEP::HepRandomEngine * |
rndmEngine |
|
) |
| const |
|
private |
◆ doDigitization()
◆ fillMaps()
◆ filterPassed()
virtual bool PileUpToolBase::filterPassed |
( |
| ) |
const |
|
inlineoverridevirtualinherited |
◆ getDigitCollection()
Definition at line 791 of file MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx.
794 if (
m_idHelperSvc->mdtIdHelper().get_hash(elementId, coll_hash, &mdtContext)) {
795 ATH_MSG_ERROR(
"Unable to get MDT hash id from MDT Digit collection "
796 <<
"context begin_index = " << mdtContext.
begin_index() <<
" context end_index = " << mdtContext.
end_index()
797 <<
" the identifier is ");
801 if (coll_hash >= collections.size()) {
802 collections.resize (coll_hash+1);
805 auto& coll = collections[coll_hash];
807 coll = std::make_unique<MdtDigitCollection>(elementId, coll_hash);
◆ getNextEvent()
StatusCode MdtDigitizationTool::getNextEvent |
( |
const EventContext & |
ctx | ) |
|
|
private |
Definition at line 187 of file MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx.
196 if (!hitCollection.isValid()) {
197 ATH_MSG_ERROR(
"Could not get MDTSimHitCollection container " << hitCollection.name() <<
" from store "
198 << hitCollection.store());
199 return StatusCode::FAILURE;
203 m_thpcMDT = std::make_unique<TimedHitCollection<MDTSimHit>>(1);
204 m_thpcMDT->insert(0, hitCollection.cptr());
205 ATH_MSG_DEBUG(
"MDTSimHitCollection found with " << hitCollection->size() <<
" hits");
207 return StatusCode::SUCCESS;
211 TimedHitCollList hitCollList;
215 return StatusCode::FAILURE;
217 if (hitCollList.empty()) {
219 return StatusCode::FAILURE;
225 m_thpcMDT = std::make_unique<TimedHitCollection<MDTSimHit>>();
230 while (iColl != endColl) {
232 m_thpcMDT->insert(iColl->first, p_collection);
233 ATH_MSG_DEBUG(
"MDTSimHitCollection found with " << p_collection->size() <<
" hits");
236 return StatusCode::SUCCESS;
◆ getRandomEngine()
CLHEP::HepRandomEngine * MdtDigitizationTool::getRandomEngine |
( |
const std::string & |
streamName, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
private |
◆ handleMDTSimHit()
bool MdtDigitizationTool::handleMDTSimHit |
( |
const EventContext & |
ctx, |
|
|
const TimedHitPtr< MDTSimHit > & |
phit, |
|
|
CLHEP::HepRandomEngine * |
twinRndmEngine, |
|
|
CLHEP::HepRandomEngine * |
toolRndmEngine |
|
) |
| |
|
private |
Definition at line 352 of file MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx.
358 double globalHitTime(
hitTime(phit));
364 const int id = hit.MDTid();
366 ATH_MSG_DEBUG(
"Hit bunch time " << globalHitTime - hit.globalTime() <<
" tot " << globalHitTime <<
" tof " << hit.globalTime()
386 ATH_MSG_ERROR(
"MuonGeoManager does not return valid element for given id!");
400 double saggingSign =
result.sagSign;
401 double trackingSign =
result.trackingSign;
403 double localSag =
result.localSag;
409 double projectiveSag = hit.driftRadius() - std::abs(
driftRadius);
415 << hit.driftRadius() <<
" " << element->
tubeLength(DigitId) <<
" " <<
" " << localSag
416 <<
" " << projectiveSag <<
" " <<
driftRadius <<
" " << saggingSign);
425 double qgamma = -9999.;
441 if (digiOutput.wasEfficient()) {
442 double driftTime = digiOutput.driftTime();
443 double adc = digiOutput.adc();
456 static constexpr std::array<double, 6> param{-4.47741E-3, 1.75541E-2, -1.32913E-2, 2.57938E-3, -4.55015E-5, -1.70821E-7};
461 for (
int i = 0;
i < 6; ++
i) { deltaT += param[
i] *
std::pow(dR,
i); }
464 double referenceSag = 0.1;
468 double cosTheta = std::abs(gpos.z()) / gpos.mag();
472 double projectiveSag = localSag * cosTheta;
474 deltaT *= (projectiveSag / referenceSag);
478 deltaT = -1 * saggingSign * deltaT;
486 <<
" " << cosTheta <<
" " << localSag <<
" " << projectiveSag <<
" " << deltaT <<
" "
487 << driftTimeOriginal <<
" " <<
driftTime);
491 double position_along_wire = hit.localPosition().z();
496 if (distRO < 0.)
sign = 1.;
504 ATH_MSG_VERBOSE(
"Position along wire: " << position_along_wire <<
" propagation delay: " << propagation_delay
518 ATH_MSG_VERBOSE(
" handleMDTSimHit() phit-" << &phit <<
" hit.localPosition().z() = " << hit.localPosition().z()
525 bool BOL4X13 =
false;
533 double twin_sign_driftTime = 0.;
535 constexpr
double HV_delay = 6.;
536 double twin_tubeLength{0.}, twin_geo_pos_along_wire{0.},
537 twin_sign_pos_along_wire{0.}, twin_sign{-1.};
541 twin_tube =
tube + 2;
542 else if (
tube % 4 == 0 ||
tube % 4 == 3)
543 twin_tube =
tube - 2;
547 twin_tubeLength = element->
tubeLength(twin_DigitId);
550 if (distRO < 0.) twin_sign = 1.;
551 twin_geo_pos_along_wire = hit.localPosition().z();
552 if (
m_useDeformations) { twin_geo_pos_along_wire = newSimhit.localPosition().z(); }
553 twin_sign_pos_along_wire = twin_sign * twin_geo_pos_along_wire;
554 double twin_propagation_delay = twin_sign * (1. /
m_signalSpeed) * twin_geo_pos_along_wire;
558 twin_sign_driftTime =
driftTime + twin_tubeLength /
m_signalSpeed - 2 * twin_propagation_delay + HV_delay;
561 double rand = CLHEP::RandGaussZiggurat::shoot(twinRndmEngine, twin_sign_driftTime,
m_resTwin);
562 twin_sign_driftTime =
rand;
565 << multilayer <<
" layer " <<
layer <<
" tube " <<
tube
566 <<
" signed position along wire = " << twin_sign_pos_along_wire
567 <<
" propagation delay = " << twin_propagation_delay <<
" drifttime = " <<
driftTime
568 <<
" twin_driftTime = " << twin_sign_driftTime
569 <<
" TWIN time-difference = " << (twin_sign_driftTime -
driftTime));
◆ initialize()
StatusCode MdtDigitizationTool::initialize |
( |
| ) |
|
|
finaloverridevirtual |
◆ insideMaskWindow()
bool MdtDigitizationTool::insideMaskWindow |
( |
double |
time | ) |
const |
|
private |
◆ insideMatchingWindow()
bool MdtDigitizationTool::insideMatchingWindow |
( |
double |
time | ) |
const |
|
private |
◆ mergeEvent()
StatusCode MdtDigitizationTool::mergeEvent |
( |
const EventContext & |
ctx | ) |
|
|
finaloverride |
When being run from PileUpToolsAlgs, this method is called at the end of the subevts loop.
Not (necessarily) able to access SubEvents
Definition at line 246 of file MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx.
251 ATH_CHECK(digitContainer.record(std::make_unique<MdtDigitContainer>(
m_idHelperSvc->mdtIdHelper().module_hash_max())));
252 ATH_MSG_DEBUG(
"Recorded MdtDigitContainer called " << digitContainer.name() <<
" in store " << digitContainer.store());
256 ATH_CHECK(sdoContainer.record(std::make_unique<MuonSimDataCollection>()));
257 ATH_MSG_DEBUG(
"Recorded MuonSimDataCollection called " << sdoContainer.name() <<
" in store " << sdoContainer.store());
263 for (
size_t coll_hash = 0; coll_hash < collections.size(); ++coll_hash) {
264 if (collections[coll_hash]) {
265 ATH_CHECK( digitContainer->addCollection (collections[coll_hash].release(), coll_hash) );
272 while (MDTHitColl != MDTHitCollEnd) {
273 delete (*MDTHitColl);
◆ minimumTof()
◆ prepareEvent()
StatusCode MdtDigitizationTool::prepareEvent |
( |
const EventContext & |
ctx, |
|
|
const unsigned int |
nInputEvents |
|
) |
| |
|
finaloverride |
◆ processAllSubEvents() [1/2]
StatusCode MdtDigitizationTool::processAllSubEvents |
( |
const EventContext & |
ctx | ) |
|
|
finaloverridevirtual |
alternative interface which uses the PileUpMergeSvc to obtain all the required SubEvents.
Reimplemented from PileUpToolBase.
Definition at line 281 of file MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx.
286 ATH_CHECK(digitContainer.record(std::make_unique<MdtDigitContainer>(
m_idHelperSvc->mdtIdHelper().module_hash_max())));
287 ATH_MSG_DEBUG(
"Recorded MdtDigitContainer called " << digitContainer.name() <<
" in store " << digitContainer.store());
291 ATH_CHECK(sdoContainer.record(std::make_unique<MuonSimDataCollection>()));
292 ATH_MSG_DEBUG(
"Recorded MuonSimDataCollection called " << sdoContainer.name() <<
" in store " << sdoContainer.store());
297 if (StatusCode::FAILURE ==
status) {
306 for (
size_t coll_hash = 0; coll_hash < collections.size(); ++coll_hash) {
307 if (collections[coll_hash]) {
308 ATH_CHECK( digitContainer->addCollection (collections[coll_hash].release(), coll_hash) );
◆ processAllSubEvents() [2/2]
virtual StatusCode IPileUpTool::processAllSubEvents |
|
inherited |
dummy implementation to allow compilation while all Digitization packages are migrated to use this new interface.
◆ processBunchXing()
When being run from PileUpToolsAlgs, this method is called for each active bunch-crossing to process current SubEvents bunchXing is in ns.
Reimplemented from PileUpToolBase.
Definition at line 155 of file MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx.
156 ATH_MSG_DEBUG(
"MdtDigitizationTool::processBunchXing() " << bunchXing);
159 TimedHitCollList hitCollList;
162 hitCollList.empty()) {
164 return StatusCode::FAILURE;
173 for (; iColl != endColl; ++iColl) {
177 ATH_MSG_DEBUG(
"MDTSimHitCollection found with " << hitCollPtr->
size() <<
" hits");
178 ATH_MSG_VERBOSE(
"time index info. time: " << timeIndex.time() <<
" index: " << timeIndex.index() <<
" type: " << timeIndex.type());
180 m_thpcMDT->insert(timeIndex, hitCollPtr);
184 return StatusCode::SUCCESS;
◆ resetFilter()
virtual void PileUpToolBase::resetFilter |
( |
| ) |
|
|
inlineoverridevirtualinherited |
◆ toProcess()
virtual bool PileUpToolBase::toProcess |
( |
int |
bunchXing | ) |
const |
|
inlineoverridevirtualinherited |
◆ m_bunchCountOffset
Gaudi::Property<double> MdtDigitizationTool::m_bunchCountOffset {this, "BunchCountOffset", -200., "Bunch crossing offset"} |
|
private |
◆ m_calibDbKey
◆ m_checkMDTSimHits
Gaudi::Property<bool> MdtDigitizationTool::m_checkMDTSimHits {this, "CheckSimHits", true, "Control on the hit validity"} |
|
private |
◆ m_deadTime
Gaudi::Property<double> MdtDigitizationTool::m_deadTime {this, "DeadTime", 700., "MDT drift tube dead time"} |
|
private |
◆ m_digiTool
◆ m_DiscardEarlyHits
Gaudi::Property<bool> MdtDigitizationTool::m_DiscardEarlyHits {this, "DiscardEarlyHits", true, ""} |
|
private |
◆ m_DoQballCharge
Gaudi::Property<bool> MdtDigitizationTool::m_DoQballCharge {this, "DoQballCharge", false, "dEdx for Qballs with account of electric charge"} |
|
private |
◆ m_filterPassed
bool PileUpToolBase::m_filterPassed {true} |
|
protectedinherited |
◆ m_firstXing
Gaudi::Property<int> PileUpToolBase::m_firstXing |
|
protectedinherited |
Initial value:{this, "FirstXing", -999,
"First bunch-crossing in which det is live"}
Definition at line 54 of file PileUpToolBase.h.
◆ m_hits
◆ m_hitsContainerKey
◆ m_idHelperSvc
◆ m_includePileUpTruth
Gaudi::Property<bool> MdtDigitizationTool::m_includePileUpTruth {this, "IncludePileUpTruth", true, "Include pile-up truth info"} |
|
private |
◆ m_inputObjectName
std::string MdtDigitizationTool::m_inputObjectName {""} |
|
protected |
◆ m_lastXing
Gaudi::Property<int> PileUpToolBase::m_lastXing |
|
protectedinherited |
Initial value:{this, "LastXing", 999,
"Last bunch-crossing in which det is live"}
Definition at line 56 of file PileUpToolBase.h.
◆ m_maskWindow
Gaudi::Property<double> MdtDigitizationTool::m_maskWindow {this, "MaskWindow", 250., "Masked window"} |
|
private |
◆ m_matchingWindow
Gaudi::Property<double> MdtDigitizationTool::m_matchingWindow {this, "MatchingWindow", 1000., "Matching window"} |
|
private |
◆ m_MDTHitCollList
◆ m_mergeSvc
◆ m_MuonGeoMgr
◆ m_muonHelper
◆ m_ns2TDCAMT
Gaudi::Property<double> MdtDigitizationTool::m_ns2TDCAMT {this, "ns2TDCAMT", 0.78125, "Conversion factor TDC/ns for AMT chips"} |
|
private |
◆ m_ns2TDCHPTDC
Gaudi::Property<double> MdtDigitizationTool::m_ns2TDCHPTDC {this, "ns2TDCHPTDC", 0.1953125, "Conversion factor TDC/ns for HPTDC chips"} |
|
private |
◆ m_offsetTDC
Gaudi::Property<double> MdtDigitizationTool::m_offsetTDC {this, "OffsetTDC", 800., "TDC offset used if no calibration data is found"} |
|
private |
◆ m_onlyUseContainerName
BooleanProperty MdtDigitizationTool::m_onlyUseContainerName |
|
protected |
◆ m_outputObjectKey
◆ m_outputSDOKey
◆ m_readKey
◆ m_resTDC
Gaudi::Property<double> MdtDigitizationTool::m_resTDC {this, "ResolutionTDC", 0.5, "TDC resolution"} |
|
private |
◆ m_resTwin
Gaudi::Property<double> MdtDigitizationTool::m_resTwin {this, "ResolutionTwinTube", 1.05, "Twin Tube resolution"} |
|
private |
◆ m_rndmSvc
◆ m_signalSpeed
Gaudi::Property<double> MdtDigitizationTool::m_signalSpeed {this, "SignalSpeed", 0.85*Gaudi::Units::c_light} |
|
private |
◆ m_t0ShiftTuning
Gaudi::Property<double> MdtDigitizationTool::m_t0ShiftTuning {this,"TunedT0Shift",-17.,"Fine tuned t0 shift value in ns"} |
|
private |
◆ m_thpcMDT
◆ m_useAllBOLTwin
Gaudi::Property<bool> MdtDigitizationTool::m_useAllBOLTwin {this, "UseAllBOLTwin", false, ""} |
|
private |
◆ m_useAttenuation
Gaudi::Property<bool> MdtDigitizationTool::m_useAttenuation {this, "UseAttenuation", false, ""} |
|
private |
◆ m_useDeformations
Gaudi::Property<bool> MdtDigitizationTool::m_useDeformations {this, "UseDeformations", false, ""} |
|
private |
◆ m_useOffSet1
Gaudi::Property<bool> MdtDigitizationTool::m_useOffSet1 {this, "UseOffSet1", true, ""} |
|
private |
◆ m_useOffSet2
Gaudi::Property<bool> MdtDigitizationTool::m_useOffSet2 {this, "UseOffSet2", true, ""} |
|
private |
◆ m_useProp
Gaudi::Property<bool> MdtDigitizationTool::m_useProp {this, "UseProp", true, ""} |
|
private |
◆ m_useTimeWindow
Gaudi::Property<bool> MdtDigitizationTool::m_useTimeWindow {this, "UseTimeWindow", true, ""} |
|
private |
◆ m_useTof
Gaudi::Property<bool> MdtDigitizationTool::m_useTof {this, "UseTof", true, "Option for the tof calculation"} |
|
private |
◆ m_useTwin
Gaudi::Property<bool> MdtDigitizationTool::m_useTwin {this, "UseTwin", false, ""} |
|
private |
◆ m_useWireSagGeom
Gaudi::Property<bool> MdtDigitizationTool::m_useWireSagGeom {this, "UseWireSagGeom", false, "Option for the wire sagitta correction"} |
|
private |
◆ m_useWireSagRT
Gaudi::Property<bool> MdtDigitizationTool::m_useWireSagRT {this, "UseWireSagRT", false, "Option for the wire sagitta correction"} |
|
private |
◆ m_vetoPileUpTruthLinks
Gaudi::Property<int> PileUpToolBase::m_vetoPileUpTruthLinks |
|
protectedinherited |
Initial value:{this, "VetoPileUpTruthLinks", true,
"Ignore links to suppressed pile-up truth"}
Definition at line 58 of file PileUpToolBase.h.
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
int GetMultiLayer(const int &hid) const
float t0
< relative t0 in chamber (ns)
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
char data[hepevt_bytes_allocation_ATLAS]
constexpr uint8_t stationPhi
station Phi 1 to 8
std::pair< HepMcParticleLink, MuonMCData > Deposit
virtual StraightLineSurface * correctedSurface(const Amg::Vector2D &lp) const override final
Get the NEW corrected surface - this is a factory (the user has to delete the surface)
double tubeLength(const int tubeLayer, const int tube) const
const Amg::Vector3D & localPosition() const
double innerTubeRadius() const
Returns the inner tube radius excluding the aluminium walls.
double particleGamma(const EventContext &ctx, const MDTSimHit &hit, unsigned short eventId=0)
Eigen::Matrix< double, 2, 1 > Vector2D
std::vector< ALFA_RawData_p1 > t0
double chargeCalculator(const EventContext &ctx, const MDTSimHit &hit, unsigned short eventId=0)
AtlasHitsVector< MDTSimHit > MDTSimHitCollection
Amg::Transform3D nodeform_localToGlobalTransf(const Identifier &id) const
size_type end_index(void) const
bool barrel() const
Returns whether the chamber is in the barrel (Assement on first later in stationName)
int GetZSector(const int &hid) const
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
static const MdtHitIdHelper * GetHelper(unsigned int nTubes=78)
const Amg::Vector3D & center() const
Returns the center position of the Surface.
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
bool empty() const
Test if the key is blank.
class which holds the full set of calibration constants for a given tube
std::list< value_t > type
type of the collection of timed data object
Amg::Transform3D globalToLocalTransf(const int tubeLayer, const int tube) const
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specified for StraightLineSurface: GlobalToLocal method without dynamic memory allocation This method...
int GetPhiSector(const int &hid) const
std::string GetStationName(const int &hid) const
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
::StatusCode StatusCode
StatusCode definition for legacy code.
Eigen::Affine3d Transform3D
int GetLayer(const int &hid) const
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
const Amg::Transform3D & localToGlobalTransf(const Identifier &id) const
void show() const
Print out in hex form.
double globalTime() const
size_type begin_index(void) const
double driftRadius() const
A wrapper class for event-slot-local random engines.
double charge(const T &p)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
static HepMcParticleLink getRedirectedLink(const HepMcParticleLink &particleLink, uint32_t eventIndex, const EventContext &ctx)
Return a HepMcParticleLink pointing at the same particle, but in a different GenEvent.
StatusCode initialize(bool used=true)
HitVector::iterator HitIt
Eigen::Matrix< double, 3, 1 > Vector3D
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Amg::Vector3D tubeFrame_localROPos(const int tubelayer, const int tube) const
Amg::Vector3D tubePos(const Identifier &id) const
Returns the global position of the given tube.
def time(flags, cells_name, *args, **kw)
unsigned short eventId() const
the index of the component event in PileUpEventInfo.
#define ATH_MSG_WARNING(x)
virtual const Trk::Surface & surface() const override final
Return surface associated with this detector element.
int GetTube(const int &hid) const
void insert(const mdt_hit_info &hit)
float hitTime(const AFP_SIDSimHit &hit)
constexpr uint8_t stationEta
1 to 3
a struct encapsulating the identifier of a pile-up event