|
ATLAS Offline Software
|
#include <MuonSegmentToCalibSegment.h>
|
| MuonSegmentToCalibSegment (const std::string &name, ISvcLocator *pSvcLocator) |
| Algorithm constructor. More...
|
|
virtual | ~MuonSegmentToCalibSegment ()=default |
|
StatusCode | initialize () |
| Algorithm initialize. More...
|
|
StatusCode | execute () |
| Algorithm execute, called once per event. More...
|
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
Gaudi::Property< bool > | m_readSegments {this, "ReadSegments", false} |
| segment location More...
|
|
Gaudi::Property< bool > | m_useCscSegments {this, "UseCscSegments", false} |
|
SG::ReadHandleKey< MuonSegmentCombinationCollection > | m_CombSegKey {this, "CombiSegmentKey", "MooreSegmentCombinations"} |
|
SG::ReadHandleKey< MuonSegmentCombinationCollection > | m_CscSegKey {this, "CscSegmentKey", "Csc4dSegmentCombinations"} |
|
SG::ReadHandleKeyArray< Trk::SegmentCollection > | m_TrkSegKey {this, "SegmentLocations", {"MooreSegments", "ConvertedMBoySegments"}} |
|
Gaudi::Property< std::vector< int > > | m_segment_authors {this, "SegmentAuthors", {3, 4}} |
|
Gaudi::Property< bool > | m_newImpactParameter {this, "NewImpactParameter", false} |
|
SG::WriteHandleKey< MuonCalibPatternCollection > | m_patternKey {this, "PatternKey", "PatternsForCalibration"} |
| pattern location More...
|
|
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > | m_DetectorManagerKey |
| MuonDetectorManager from the conditions store. More...
|
|
ServiceHandle< Muon::IMuonIdHelperSvc > | m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"} |
|
ToolHandle< MdtCalibrationTool > | m_calibrationTool {this, "CalibrationTool", "MdtCalibrationTool"} |
| pointer to MdtCalibSvc More...
|
|
ToolHandle< Muon::IMuonPatternSegmentAssociationTool > | m_assocTool |
| IdentifierTool initialization. More...
|
|
ToolHandle< IIdToFixedIdTool > | m_idToFixedIdTool {this, "IdToFixedIdTool", "MuonCalib::IdToFixedIdTool/MuonCalib_IdToFixedIdTool"} |
|
Gaudi::Property< int > | m_updateForT0Shift {this, "UpdateForT0Shift", -1} |
| -1: Take infirmation from error-strategy 0: fitted t0 is not applied to drift times 1: fitted t0 is applied to drift time More...
|
|
Gaudi::Property< bool > | m_doTof {this, "DoTOF", true} |
|
Gaudi::Property< bool > | m_cosmics_tof {this, "DoCosmicsTof", false} |
|
Gaudi::Property< int > | m_maxStoredSegs {this, "MaxPossibleSegments", 1000} |
| maximum number of segments each algorithm can store in ntuple More...
|
|
DataObjIDColl | m_extendedExtraObjects |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Algorithm to retrieve MuonSegments or MuonSegmentCombinations from StoreGate and output the muon calibration input.
- Author
- Niels.nosp@m..Van.nosp@m..Eldi.nosp@m.k@ce.nosp@m.rn.ch
Definition at line 33 of file MuonSegmentToCalibSegment.h.
◆ StoreGateSvc_t
◆ MuonSegmentToCalibSegment()
MuonCalib::MuonSegmentToCalibSegment::MuonSegmentToCalibSegment |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~MuonSegmentToCalibSegment()
virtual MuonCalib::MuonSegmentToCalibSegment::~MuonSegmentToCalibSegment |
( |
| ) |
|
|
virtualdefault |
◆ convertPatterns()
StatusCode MuonCalib::MuonSegmentToCalibSegment::convertPatterns |
( |
const EventContext & |
ctx | ) |
|
|
private |
Routine to extract mdt calibration segments from Mboy mdt segments
Definition at line 77 of file MuonSegmentToCalibSegment.cxx.
82 std::unique_ptr<MuonCalibPatternCollection>
patterns = std::make_unique<MuonCalibPatternCollection>();
89 ATH_MSG_ERROR(
"Null pointer to the read MuonDetectorManager conditions object");
90 return StatusCode::FAILURE;
102 for (; sit != sit_end; ++sit) {
108 ATH_MSG_INFO(
" This MuonSegPatAssMap for MDTs should only have one entry!! ");
112 ATH_MSG_WARNING(
"MDT Combination missing from the map - something is wrong! " << *sit);
117 ATH_MSG_DEBUG(
"New segment combination covering " << (*sit)->numberOfStations() <<
" station ");
120 unsigned int nstations = (*sit)->numberOfStations();
121 for (
unsigned int i = 0;
i != nstations; ++
i) {
124 ATH_MSG_VERBOSE(
"New station with " << stationSegs->size() <<
" segments ");
125 for (
const std::unique_ptr<Muon::MuonSegment>& seg : *stationSegs) {
133 calibpat->addMuonSegment(mdtSeg);
146 int nStoredSegments = 0;
153 ATH_MSG_INFO(
"For " <<
key.fullKey() <<
", hit max number of segments = " << nStoredSegments);
170 std::unique_ptr<MuonCalibPattern>
pat = std::make_unique<MuonCalibPattern>();
176 mdtSeg->setAuthor(*autIt);
178 pat->addMuonSegment(mdtSeg);
197 for (; sit != sit_end; ++sit) {
199 if ((*sit)->numberOfStations() == 1) {
200 if ((*sit)->stationSegments(0)->size() == 0)
continue;
209 ATH_MSG_DEBUG(
"CSC Combination missing from the map - No combined pattern found for this CSC Segment Combination! "
215 ATH_MSG_DEBUG(
"New Csc segment combination covering " << (*sit)->numberOfStations() <<
" station ");
218 unsigned int nstations = (*sit)->numberOfStations();
219 for (
unsigned int i = 0;
i != nstations; ++
i) {
222 ATH_MSG_VERBOSE(
"New Csc station with " << stationSegs->size() <<
" segments ");
227 for (; segit != segit_end; ++segit) {
237 calibpat->addMuonSegment(CscSeg);
247 return StatusCode::SUCCESS;
◆ createMuonCalibPattern()
Definition at line 789 of file MuonSegmentToCalibSegment.cxx.
791 MuonCalibPattern* calibpat =
nullptr;
792 MuonCalibPattern::defineParams
pars{};
800 pars.dist0 = -perigee->position().
y() * std::
cos(
pars.phi) + perigee->position().
x() * std::
sin(
pars.phi);
805 pars.
z0 = perigee->position().
z();
809 ATH_MSG_WARNING(
"Trackparameters are not set or is not a Perigee!! Pattern gets empty parameters");
813 const std::vector<Muon::MuonPatternChamberIntersect>& mpcivec =
pat->chamberData();
814 std::vector<Muon::MuonPatternChamberIntersect>::const_iterator pat_it = mpcivec.begin();
815 for (; pat_it != mpcivec.end(); ++pat_it) {
816 const std::vector<const Trk::PrepRawData*> prdvec = (*pat_it).prepRawDataVec();
817 std::vector<const Trk::PrepRawData*>::const_iterator prd_it = prdvec.begin();
818 for (; prd_it != prdvec.end(); ++prd_it) {
838 ATH_MSG_INFO(
"PrepRawData on pat is not a muon-technom_logy");
841 calibpat =
new MuonCalibPattern(
pars);
844 calibpat =
new MuonCalibPattern();
◆ createMuonCalibSegment()
Definition at line 305 of file MuonSegmentToCalibSegment.cxx.
321 Amg::Vector3D segDirLCheck = gToStationCheck.linear() * segDirG;
323 double qualityFactor(1e9);
329 MuonCalibSegment* mdtSeg =
330 new MuonCalibSegment(qualityFactor, segPosL,
Amg::Vector3D(segDirL.unit()), gToStation.inverse(), segQuality);
336 double chi2check = 0;
337 double thetap = std::atan2(mdtSeg->direction().y(), mdtSeg->direction().z());
340 double thetan = std::atan2(mdtSeg->direction().z(), mdtSeg->direction().y());
341 double thetaCheck = std::atan2(segDirLCheck[2], segDirLCheck[1]);
342 ATH_MSG_DEBUG(
" MuonSegment TO CalibSegment segment found ");
344 if (std::abs(thetaCheck - thetan) > 0.0001)
ATH_MSG_DEBUG(
" ALARM angle difference " << thetaCheck - thetan);
345 ATH_MSG_DEBUG(
" segPosL " << segPosL <<
" segPosG " << segPosG <<
" local angle " << thetan <<
" thetaCheck " << thetaCheck);
346 ATH_MSG_DEBUG(
" segDirL " << segDirL <<
" segDirG " << segDirG <<
" phi " << segDirG.phi() <<
" segDirLCheck " << segDirLCheck);
348 bool segment_with_multiple_t0s(
false);
350 int nm(0), nr(0),
nt(0),
nc(0);
354 std::vector<const Trk::MeasurementBase*>::const_iterator rit = rots.begin();
355 std::vector<const Trk::MeasurementBase*>::const_iterator rit_end = rots.end();
356 for (; rit != rit_end; ++rit) {
360 bool competingRio =
false;
402 if (!pStraightLineSurface) {
415 tubeDirLoc = tubeDirLoc.unit();
416 if (tubeDirLoc.x() < 0.) tubeDirLoc = -tubeDirLoc;
420 segDirLoc = segDirLoc.unit();
424 Amg::Vector3D segDirLocprojected = segDirLoc - (tubeDirLoc.dot(segDirLoc)) * tubeDirLoc;
425 segDirLocprojected = segDirLocprojected.unit();
427 double ImpactParameter = tubeDirLoc.dot(TubSegLoc.cross(segDirLocprojected));
429 double ScaleDenomi = 1. -
std::pow(tubeDirLoc.dot(segDirLoc), 2);
430 double ScaleOnTube = (tubeDirLoc.dot(TubSegLoc) - (segDirLoc.dot(TubSegLoc)) * (tubeDirLoc.dot(segDirLoc))) / ScaleDenomi;
431 double ScaleOnSeg = (-segDirLoc.dot(TubSegLoc) + (tubeDirLoc.dot(TubSegLoc)) * (tubeDirLoc.dot(segDirLoc))) / ScaleDenomi;
433 Amg::Vector3D tubePosLocAtDCA = tubePosLoc + ScaleOnTube * tubeDirLoc;
434 Amg::Vector3D segPosLocAtDCA = segPosLoc + ScaleOnSeg * segDirLoc;
436 Amg::Vector3D segPosAtDCA = gToStation.inverse() * segPosLocAtDCA;
442 double rtrk = cosin * (mdtSeg->position().y() - tubePosLoc.y()) - sinus * (mdtSeg->position().z() - tubePosLoc.z());
445 double locx = trk_pos_loc_rot.x();
446 double locy = tubePosLoc.y() + cosin * rtrk;
447 double locz = tubePosLoc.z() - sinus * rtrk;
450 ATH_MSG_DEBUG(
" trk_pos_loc_rot " << trk_pos_loc_rot <<
" tubePosLoc " << tubePosLoc <<
" trk_pos_loc " << trk_pos_loc
451 <<
" trk_pos_rot " << trk_pos_rot);
453 ATH_MSG_DEBUG(
" standard rtrk " << rtrk <<
" ImpactParameter " << ImpactParameter <<
" diff rtrk " << rtrk - ImpactParameter
454 <<
" trk_pos " << trk_pos <<
" OR segPosAtDCA " << segPosAtDCA);
456 if (std::abs(rtrk - ImpactParameter) > 0.001)
457 ATH_MSG_DEBUG(
" ALARM Impact parameter difference " << rtrk - ImpactParameter);
461 rtrk = ImpactParameter;
462 trk_pos = segPosAtDCA;
471 if (seg.
author() == 3) { tubePosLoc = tubePosLocAtDCA; }
473 double xLocTwin(-99999999.);
478 ATH_MSG_DEBUG(
" Twin Position : prd->localPosition()[Trk::locY] = "
481 <<
" multilayer = " <<
m_idHelperSvc->mdtIdHelper().multilayer(test_prd_Id)
482 <<
" layer = " <<
m_idHelperSvc->mdtIdHelper().tubeLayer(test_prd_Id)
483 <<
" tube = " <<
m_idHelperSvc->mdtIdHelper().tube(test_prd_Id)
484 <<
" modulo4 = " << (
m_idHelperSvc->mdtIdHelper().tube(test_prd_Id) % 4));
489 ATH_MSG_DEBUG(
" CHECK lposTrking = " << lposTrking.z() <<
" lposAMDB " << lposAMDB.x());
491 xLocTwin = lposAMDB.x();
501 calibHit.setGlobalPointOfClosestApproach(trk_pos);
503 calibHit.setLocalPos(tubePosLoc);
504 calibHit.setLocXtwin(xLocTwin);
506 MdtCalibrationSvcSettings settings;
517 settings.windowSetting = rotErrorStrategy.
calibWindow();
518 settings.initialize();
522 if (apply_t0 && (t0Shift == 0.0)) { t0Shift = seg.
time(); }
523 MdtCalibrationSvcInput
input;
524 if (
m_doTof)
input.tof = calibHit.globalPointOfClosestApproach().mag() * (1. / 299.792458);
527 input.pointOfClosestApproach = &calibHit.globalPointOfClosestApproach();
528 bool sameChamber =
false;
534 if (!sameChamber)
ATH_MSG_DEBUG(
"Moving to a new chamber! " << cachedId <<
" to " <<
id);
538 if (t0Shift == 0 || seg.
author() != 3 || sameChamber) {
540 input.tof += t0Shift;
543 segment_with_multiple_t0s =
true;
548 t0Shift = calibHit.driftTime() - mrot->
driftTime();
549 input.tof += t0Shift;
552 if (std::abs(seg.
time() - t0Shift) > 0.01 && std::abs(t0Shift) > 0.01) {
553 ATH_MSG_INFO(
" Inconsistent fitted t0 found: from ROT " << t0Shift <<
" from segment " << seg.
time());
558 double oldDriftTime = calibHit.driftTime();
561 double timeDif = calibHit.driftTime() - mrot->
driftTime();
564 float driftR = calibHit.driftRadius();
565 float sigmaDriftR = calibHit.sigmaDriftRadius();
568 calibHit.setDriftRadius(driftR, sigmaDriftR);
571 if (std::abs(timeDif) >= 0.1 && !segment_with_multiple_t0s) {
573 << mrot->
driftTime() <<
" calib " << calibHit.driftRadius() <<
" t "
574 << calibHit.driftTime() <<
" old " << oldDriftTime <<
" author " << seg.
author());
576 if (std::abs(mrot->
driftRadius() - calibHit.driftRadius()) > 0.01 && !segment_with_multiple_t0s) {
578 <<
" calib r=" << calibHit.driftRadius());
580 ATH_MSG_DEBUG(
"B-field correction: " << calibHit.lorentzTime());
583 calibHit.setDistanceToTrack(rtrk, 0.);
586 calibHit.setDistanceToReadout(distRo_det);
591 double resi = std::abs(driftR) - std::abs(rtrk);
592 if (rtrk < 0) resi = -resi;
594 double chi2c = (resi * resi) / error2;
599 std::string st = fixid.stationNumberToFixedStationString(fixid.stationName());
600 int ml = fixid.mdtMultilayer();
601 int la = fixid.mdtTubeLayer();
602 ATH_MSG_DEBUG(
" station " << st <<
" eta " << fixid.eta() <<
" phi " << fixid.phi() <<
" ML " << ml <<
" Layer " << la
603 <<
" drift R " << driftR <<
" MROT drift R " << mrot->
driftRadius() <<
" drift Time "
604 << mrot->
driftTime() <<
" ROT error " << std::sqrt(error2) <<
" residual " << resi
605 <<
" tubePosLoc " << tubePosLoc <<
" t0 shift " << t0Shift <<
" chi2c " << chi2c);
606 if (std::sqrt(error2) < 1.999)
ATH_MSG_DEBUG(
" ALARM TOO SMALL drift error ");
607 if (chi2c > qualityFactor)
ATH_MSG_DEBUG(
" ALARM TOO LARGE chi2 single hit ");
610 basehit->setSegmentT0Applied(apply_t0);
611 mdtSeg->addHitOnTrack(basehit);
620 for (
int irio = 0; irio < nRios; ++irio) {
622 if (competingRio) rot = &rotc->
rioOnTrack(irio);
626 if (competingRio)
ATH_MSG_DEBUG(
"Found RPC Competing Rio !");
658 RpcCalibHitBase* rpcCH =
new RpcCalibHitBase(
nStrips, stripWidth, time,
error, rgp, rlp);
661 rpcCH->setIdentifier(fixid);
662 rpcCH->setStripLength(stripLen);
663 rpcCH->setDistanceToRO(distRO);
665 mdtSeg->addHitOnTrack(rpcCH);
673 for (
int irio = 0; irio < nRios; ++irio) {
675 if (competingRio) rot = &rotc->
rioOnTrack(irio);
679 if (competingRio)
ATH_MSG_DEBUG(
"Found TGC Competing Rio !");
710 TgcCalibHitBase* tgcCH =
new TgcCalibHitBase(
nStrips, stripWidth,
error, tgp, tlp);
714 tgcCH->setIdentifier(fixid);
716 mdtSeg->addHitOnTrack(tgcCH);
724 for (
int irio = 0; irio < nRios; ++irio) {
726 if (competingRio) rot = &rotc->
rioOnTrack(irio);
727 ATH_MSG_DEBUG((competingRio ?
"Found CSC Competing Rio !" :
"Found CSC Rio !"));
739 int measuresPhi =
m_idHelperSvc->cscIdHelper().measuresPhi(
id);
740 int chamberLayer =
m_idHelperSvc->cscIdHelper().chamberLayer(
id);
748 CscCalibHitBase* cscCH =
new CscCalibHitBase(
nStrips, stripWidth,
charge,
error, cgp, clp);
752 cscCH->setIdentifier(fixid);
754 mdtSeg->addHitOnTrack(cscCH);
755 ATH_MSG_DEBUG(
"mdtSeg->cscHitsOnTrack()=" << mdtSeg->cscHitsOnTrack());
756 ATH_MSG_DEBUG(
"mdtSeg->hitsOnTrack()=" << mdtSeg->hitsOnTrack());
769 if (qualityFactor > 0.0001) {
770 if (chi2check / qualityFactor > 1.01 || chi2check / qualityFactor < 0.99) {
772 <<
"Mdt segment chi2 " << qualityFactor <<
" mdt hits " <<
nm <<
" chi2check " << chi2check <<
" t0Shift "
776 <<
"Mdt segment chi2 " << qualityFactor <<
" mdt hits " <<
nm <<
" chi2check " << chi2check <<
" t0Shift "
781 <<
"Mdt segment chi2 " << qualityFactor <<
" mdt hits " <<
nm <<
" chi2check " << chi2check <<
" t0Shift "
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode MuonCalib::MuonSegmentToCalibSegment::execute |
( |
| ) |
|
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ getChId()
◆ getGlobalToStation()
◆ getQuality()
Definition at line 849 of file MuonSegmentToCalibSegment.cxx.
860 <<
" hots " <<
q->numberDoF() + 2 <<
" number of holes " <<
q->channelsWithoutHit().size());
862 unsigned int packedInfo = 0;
864 packedInfo += 100 * (
q->channelsWithoutHit().size() < 9 ?
q->channelsWithoutHit().size() : 9);
◆ initialize()
StatusCode MuonCalib::MuonSegmentToCalibSegment::initialize |
( |
| ) |
|
Algorithm initialize.
Read handle keys
Keep this commented cocde for now to remind ourselves that we need to set this property externally via JO MuonSegmentNtupleBranch segBranch; m_maxStoredSegs = segBranch.MuonSegmentNtupleBranch::blockSize();
Definition at line 33 of file MuonSegmentToCalibSegment.cxx.
36 std::string managerName =
"Muon";
60 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ retrieveContainer()
template<class container_type >
StatusCode MuonCalib::MuonSegmentToCalibSegment::retrieveContainer |
( |
const EventContext & |
ctx, |
|
|
const SG::ReadHandleKey< container_type > & |
key, |
|
|
const container_type *& |
container_ptr |
|
) |
| const |
|
private |
Definition at line 871 of file MuonSegmentToCalibSegment.cxx.
874 if (!readHandle.isValid()) {
876 return StatusCode::FAILURE;
878 container_ptr = readHandle.cptr();
880 const container_type* container{readHandle.cptr()};
883 return StatusCode::FAILURE;
885 return StatusCode::SUCCESS;
◆ savePatterns()
StatusCode MuonCalib::MuonSegmentToCalibSegment::savePatterns |
( |
const EventContext & |
ctx, |
|
|
std::unique_ptr< MuonCalibPatternCollection > |
newPatterns |
|
) |
| const |
|
private |
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_assocTool
Initial value:{
this, "PatternSegmentAssociationTool", "Muon::MuonPatternSegmentAssociationTool/MuonPatternSegmentAssociationTool"}
IdentifierTool initialization.
Definition at line 89 of file MuonSegmentToCalibSegment.h.
◆ m_calibrationTool
◆ m_CombSegKey
◆ m_cosmics_tof
Gaudi::Property<bool> MuonCalib::MuonSegmentToCalibSegment::m_cosmics_tof {this, "DoCosmicsTof", false} |
|
private |
◆ m_CscSegKey
◆ m_DetectorManagerKey
Initial value:{this, "DetectorManagerKey", "MuonDetectorManager",
"Key of input MuonDetectorManager condition data"}
MuonDetectorManager from the conditions store.
Definition at line 80 of file MuonSegmentToCalibSegment.h.
◆ m_detStore
◆ m_doTof
Gaudi::Property<bool> MuonCalib::MuonSegmentToCalibSegment::m_doTof {this, "DoTOF", true} |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_idHelperSvc
◆ m_idToFixedIdTool
◆ m_maxStoredSegs
Gaudi::Property<int> MuonCalib::MuonSegmentToCalibSegment::m_maxStoredSegs {this, "MaxPossibleSegments", 1000} |
|
private |
◆ m_newImpactParameter
Gaudi::Property<bool> MuonCalib::MuonSegmentToCalibSegment::m_newImpactParameter {this, "NewImpactParameter", false} |
|
private |
◆ m_patternKey
◆ m_readSegments
Gaudi::Property<bool> MuonCalib::MuonSegmentToCalibSegment::m_readSegments {this, "ReadSegments", false} |
|
private |
◆ m_segment_authors
Gaudi::Property<std::vector<int> > MuonCalib::MuonSegmentToCalibSegment::m_segment_authors {this, "SegmentAuthors", {3, 4}} |
|
private |
◆ m_TrkSegKey
◆ m_updateForT0Shift
Gaudi::Property<int> MuonCalib::MuonSegmentToCalibSegment::m_updateForT0Shift {this, "UpdateForT0Shift", -1} |
|
private |
-1: Take infirmation from error-strategy 0: fitted t0 is not applied to drift times 1: fitted t0 is applied to drift time
Definition at line 97 of file MuonSegmentToCalibSegment.h.
◆ m_useCscSegments
Gaudi::Property<bool> MuonCalib::MuonSegmentToCalibSegment::m_useCscSegments {this, "UseCscSegments", false} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
JetConstituentVector::iterator iterator
ToolHandle< MdtCalibrationTool > m_calibrationTool
pointer to MdtCalibSvc
const RpcReadoutElement * getRpcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
@ WireSagTimeCorrection
Wire sag correction was applied in calibration.
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Const iterator class for DataVector/DataList.
Gaudi::Property< bool > m_newImpactParameter
double StripLength(bool measphi) const
returns the strip length for the phi or eta plane
Gaudi::Property< bool > m_doTof
virtual const Amg::Vector3D & globalPosition() const override
Returns global position.
virtual const MdtPrepData * prepRawData() const override final
Returns the PrepRawData used to create this corrected measurement.
ToolHandle< IIdToFixedIdTool > m_idToFixedIdTool
int charge() const
Returns the charge.
Gaudi::Property< std::vector< int > > m_segment_authors
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
std::vector< std::string > patterns
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
const Trk::RIO_OnTrack * rioOnTrack(unsigned int) const
returns the RIO_OnTrack (also known as ROT) objects depending on the integer
virtual Amg::Transform3D GlobalToAmdbLRSTransform() const
Class to represent calibrated clusters formed from TGC strips.
unsigned long calibWindow() const
Returns calibration configuration.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
const std::vector< Identifier > & rdoList() const
return the List of rdo identifiers (pointers)
bool msgLvl(const MSG::Level lvl) const
const MuonDriftCircleErrorStrategy & errorStrategy() const
Get information about the creation strategy used by Muon::MdtDriftCircleOnTrackCreator when making th...
An RpcReadoutElement corresponds to a single RPC module; therefore typicaly a barrel muon station con...
virtual const MuonGM::TgcReadoutElement * detectorElement() const override final
Returns the detector element corresponding to this PRD The pointer will be zero if the det el is not ...
Class to represent calibrated clusters formed from RPC strips.
#define ATH_MSG_VERBOSE(x)
Property holding a SG store/key/clid from which a ReadHandle is made.
int adc() const
Returns the ADC (typically range is 0 to 250)
unsigned int numberOfContainedROTs() const
number of RIO_OnTracks
bool is_valid() const
Check if id is in a valid state.
bool hasFittedT0() const
returns whether the segment has a fitted t0
SG::WriteHandleKey< MuonCalibPatternCollection > m_patternKey
pattern location
virtual const Amg::Vector3D & globalPosition() const override final
Returns the global Position.
@ PropCorrection
Propagation correction was applied in calibration.
@ TempCorrection
Temperature correction was applied in calibration.
double driftTime() const
Returns the value of the drift time used to obtain the drift radius.
Amg::Vector3D channelPos(const Identifier &id) const
Returns the position of the active channel (wireGang or strip)
@ T0Refit
A special error was applied to account for the T0 refit (user defined via jobProperties)
virtual void setOwner(IDataHandleHolder *o)=0
double distanceFromRO(const Amg::Vector3D &GlobalHitPosition, const Identifier &id) const
const TgcReadoutElement * getTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
float time() const
Returns the time.
virtual const TgcPrepData * prepRawData() const
Returns the TgcPrepData - is a TRT_DriftCircle in this scope.
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
@ SlewCorrection
Slewing correction was applied in calibration.
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.
unsigned int getQuality(const Muon::MuonSegment &seg) const
virtual StatusCode sysInitialize() override
Override sysInitialize.
Identifier getChId(const Muon::MuonSegment &seg) const
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
StatusCode retrieveContainer(const EventContext &ctx, const SG::ReadHandleKey< container_type > &key, const container_type *&container_ptr) const
double distanceToPhiReadout(const Amg::Vector3D &P) const
virtual unsigned int numberOfContainedROTs() const =0
Number of RIO_OnTracks to be contained by this CompetingRIOsOnTrack.
Class to represent RPC measurements.
virtual const MuonGM::RpcReadoutElement * detectorElement() const override final
Returns the detector element corresponding to this PRD.
const CscReadoutElement * getCscReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Class representing clusters from the CSC.
@ TofCorrection
Time of flight correction was applied in calibration.
::StatusCode StatusCode
StatusCode definition for legacy code.
CalibratedSpacePoint::Covariance_t inverse(const CalibratedSpacePoint::Covariance_t &mat)
Inverts the parsed matrix.
Eigen::Affine3d Transform3D
const std::vector< const Trk::MeasurementBase * > & containedMeasurements() const
returns the vector of Trk::MeasurementBase objects
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
A TgcReadoutElement corresponds to a single TGC chamber; therefore typically a TGC station contains s...
virtual const Amg::Vector3D & globalPosition() const
Returns the global position of the CENTER of the drift tube (i.e.
@ BackgroundCorrection
Background correction was applied in calibration.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Amg::Transform3D getGlobalToStation(const Identifier &id, const MuonGM::MuonDetectorManager *MuonDetMgr) const
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
double driftRadius() const
Returns the value of the drift radius.
@ MagFieldCorrection
Magnetic field correction was applied in calibration.
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
virtual const MuonGM::CscReadoutElement * detectorElement() const override final
Return the detector element corresponding to this PRD.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
virtual const RpcPrepData * prepRawData() const override final
Returns the RpcPrepData - is a TRT_DriftCircle in this scope.
StatusCode savePatterns(const EventContext &ctx, std::unique_ptr< MuonCalibPatternCollection > newPatterns) const
save global patterns to storegate
Identifier identify() const
return the identifier
Ensure that the ATLAS eigen extensions are properly loaded.
Gaudi::Property< int > m_maxStoredSegs
maximum number of segments each algorithm can store in ntuple
SG::ReadHandleKey< MuonSegmentCombinationCollection > m_CscSegKey
int tdc() const
Returns the TDC (typically range is 0 to 2500).
Gaudi::Property< int > m_updateForT0Shift
-1: Take infirmation from error-strategy 0: fitted t0 is not applied to drift times 1: fitted t0 is a...
const Amg::Vector2D & localPosition() const
return the local position reference
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
double charge(const T &p)
StatusCode initialize(bool used=true)
Class to represent measurements from the Monitored Drift Tubes.
Eigen::Matrix< double, 3, 1 > Vector3D
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
virtual const CscPrepData * prepRawData() const override final
Returns the CscPrepData - is a CscPrepData in this scope.
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
MuonDetectorManager from the conditions store.
double StripWidth(bool measphi) const
returns the strip width for the phi or eta plane
Gaudi::Property< bool > m_useCscSegments
DataObjIDColl m_extendedExtraObjects
Class to represent the calibrated clusters created from CSC strips.
def time(flags, cells_name, *args, **kw)
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
#define ATH_MSG_WARNING(x)
Gaudi::Property< bool > m_readSegments
segment location
std::vector< std::unique_ptr< MuonSegment > > SegmentVec
Identifier identify() const
return the identifier -extends MeasurementBase
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Class to represent TGC measurements.
virtual const Trk::Surface & surface() const override final
Return surface associated with this detector element.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
double chiSquared() const
returns the of the overall track fit
Author author() const
return segment author
AthAlgorithm()
Default constructor:
virtual const Amg::Vector3D & globalPosition() const override final
global position
MuonCalibPattern * createMuonCalibPattern(const Muon::MuonPatternCombination *pat) const
double distanceToEtaReadout(const Amg::Vector3D &P) const
float time() const
access to the measured time
SG::ReadHandleKeyArray< Trk::SegmentCollection > m_TrkSegKey
The MuonPatternCombination class provides the means to store the output of the initial global pattern...
const FitQuality * fitQuality() const
return the FitQuality object, returns NULL if no FitQuality is defined
SG::ReadHandleKey< MuonSegmentCombinationCollection > m_CombSegKey
constexpr int pow(int base, int exp) noexcept
setBGCode setTAP setLVL2ErrorBits bool
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual const MuonGM::MdtReadoutElement * detectorElement() const override
Returns the detector element corresponding to this PRD.
bool creationParameter(CreationParameter) const
Scalar mag() const
mag method
StatusCode convertPatterns(const EventContext &ctx)
void setAuthor(int author)
sets author field
MuonCalibSegment * createMuonCalibSegment(const Muon::MuonSegment &seg, const MuonGM::MuonDetectorManager *MuonDetMgr) const
virtual const Trk::PlaneSurface & associatedSurface() const override final
returns the surface for the local to global transformation
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
const Amg::Vector3D & globalDirection() const
global direction
double cathodeReadoutPitch(int chLayer, int measuresPhi) const
ToolHandle< Muon::IMuonPatternSegmentAssociationTool > m_assocTool
IdentifierTool initialization.