ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
MuonCalib::MuonSegmentToCalibSegment Class Reference

#include <MuonSegmentToCalibSegment.h>

Inheritance diagram for MuonCalib::MuonSegmentToCalibSegment:
Collaboration diagram for MuonCalib::MuonSegmentToCalibSegment:

Public Member Functions

 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
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

template<class container_type >
StatusCode retrieveContainer (const EventContext &ctx, const SG::ReadHandleKey< container_type > &key, const container_type *&container_ptr) const
 
StatusCode convertPatterns (const EventContext &ctx)
 
StatusCode savePatterns (const EventContext &ctx, std::unique_ptr< MuonCalibPatternCollection > newPatterns) const
 save global patterns to storegate More...
 
MuonCalibSegmentcreateMuonCalibSegment (const Muon::MuonSegment &seg, const MuonGM::MuonDetectorManager *MuonDetMgr) const
 
MuonCalibPatterncreateMuonCalibPattern (const Muon::MuonPatternCombination *pat) const
 
Identifier getChId (const Muon::MuonSegment &seg) const
 
Amg::Transform3D getGlobalToStation (const Identifier &id, const MuonGM::MuonDetectorManager *MuonDetMgr) const
 
unsigned int getQuality (const Muon::MuonSegment &seg) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

Gaudi::Property< bool > m_readSegments {this, "ReadSegments", false}
 segment location More...
 
Gaudi::Property< bool > m_useCscSegments {this, "UseCscSegments", false}
 
SG::ReadHandleKey< MuonSegmentCombinationCollectionm_CombSegKey {this, "CombiSegmentKey", "MooreSegmentCombinations"}
 
SG::ReadHandleKey< MuonSegmentCombinationCollectionm_CscSegKey {this, "CscSegmentKey", "Csc4dSegmentCombinations"}
 
SG::ReadHandleKeyArray< Trk::SegmentCollectionm_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< MuonCalibPatternCollectionm_patternKey {this, "PatternKey", "PatternsForCalibration"}
 pattern location More...
 
SG::ReadCondHandleKey< MuonGM::MuonDetectorManagerm_DetectorManagerKey
 MuonDetectorManager from the conditions store. More...
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 
ToolHandle< MdtCalibrationToolm_calibrationTool {this, "CalibrationTool", "MdtCalibrationTool"}
 pointer to MdtCalibSvc More...
 
ToolHandle< Muon::IMuonPatternSegmentAssociationToolm_assocTool
 IdentifierTool initialization. More...
 
ToolHandle< IIdToFixedIdToolm_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
 

Detailed Description

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.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ MuonSegmentToCalibSegment()

MuonCalib::MuonSegmentToCalibSegment::MuonSegmentToCalibSegment ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Algorithm constructor.

Definition at line 29 of file MuonSegmentToCalibSegment.cxx.

29  :
30  AthAlgorithm(name, pSvcLocator) {}

◆ ~MuonSegmentToCalibSegment()

virtual MuonCalib::MuonSegmentToCalibSegment::~MuonSegmentToCalibSegment ( )
virtualdefault

Member Function Documentation

◆ 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.

77  {
82  std::unique_ptr<MuonCalibPatternCollection> patterns = std::make_unique<MuonCalibPatternCollection>();
83 
84  ATH_MSG_DEBUG(" convertPatterns() ");
85 
87  const MuonGM::MuonDetectorManager* MuonDetMgr = DetectorManagerHandle.cptr();
88  if (!MuonDetMgr) {
89  ATH_MSG_ERROR("Null pointer to the read MuonDetectorManager conditions object");
90  return StatusCode::FAILURE;
91  }
92 
93  if (!m_readSegments) {
94  const MuonSegmentCombinationCollection* segCombis = nullptr;
95  ATH_CHECK(retrieveContainer(ctx, m_CombSegKey, segCombis));
96 
99 
100  ATH_MSG_DEBUG(" Looping over segment combination " << segCombis->size());
101 
102  for (; sit != sit_end; ++sit) {
103  // get association to pattern
104  const Muon::MuonPatternCombination* pat = nullptr;
106  if ((range.first) != (range.second)) {
107  if (m_assocTool->count(*sit) != 1) {
108  ATH_MSG_INFO(" This MuonSegPatAssMap for MDTs should only have one entry!! ");
109  } // retrieve association map:
110  pat = (range.first)->second;
111  } else {
112  ATH_MSG_WARNING("MDT Combination missing from the map - something is wrong! " << *sit);
113  }
114 
115  MuonCalibPattern* calibpat = createMuonCalibPattern(pat);
116 
117  ATH_MSG_DEBUG("New segment combination covering " << (*sit)->numberOfStations() << " station ");
118 
119  // loop over segments in combination
120  unsigned int nstations = (*sit)->numberOfStations();
121  for (unsigned int i = 0; i != nstations; ++i) {
122  Muon::MuonSegmentCombination::SegmentVec* stationSegs = (*sit)->stationSegments(i);
123 
124  ATH_MSG_VERBOSE("New station with " << stationSegs->size() << " segments ");
125  for (const std::unique_ptr<Muon::MuonSegment>& seg : *stationSegs) {
126  if (!seg) {
127  ATH_MSG_WARNING(" go NULL pointer for MuonSegment ");
128  continue;
129  }
130 
131  std::shared_ptr<MuonCalibSegment> mdtSeg{createMuonCalibSegment(*seg, MuonDetMgr)};
132  mdtSeg->setAuthor(seg->author());
133  calibpat->addMuonSegment(mdtSeg);
134  }
135  }
136  // add pattern to segment
137  patterns->push_back(calibpat);
138  }
139 
140  } else {
141  // loop over MDT segment collections
142 
143  std::vector<int>::const_iterator autIt = m_segment_authors.begin();
144 
146  int nStoredSegments = 0;
147 
148  const Trk::SegmentCollection* segCol = nullptr;
149  if (!retrieveContainer(ctx, key, segCol).isSuccess()) { ++autIt; }
150  ATH_MSG_DEBUG(" Looping over segments " << segCol->size());
151  for (const Trk::Segment* seg_it : *segCol) {
152  if (nStoredSegments >= m_maxStoredSegs) {
153  ATH_MSG_INFO("For " << key.fullKey() << ", hit max number of segments = " << nStoredSegments);
154  break;
155  }
156 
157  if (!seg_it) {
158  ATH_MSG_WARNING(" go NULL pointer for Segment ");
159  continue;
160  }
161 
162  const Muon::MuonSegment* seg = dynamic_cast<const Muon::MuonSegment*>(seg_it);
163  if (!seg) {
164  ATH_MSG_WARNING(" dynamic_cast to MuonSegment failed ");
165  continue;
166  }
167 
168  // one pattern per segment
169  ATH_MSG_DEBUG("WARNING, empty muoncalibpattern created");
170  std::unique_ptr<MuonCalibPattern> pat = std::make_unique<MuonCalibPattern>();
171 
172  std::shared_ptr<MuonCalibSegment> mdtSeg{createMuonCalibSegment(*seg, MuonDetMgr)};
173  if (*autIt < 0)
174  mdtSeg->setAuthor(seg->author());
175  else
176  mdtSeg->setAuthor(*autIt);
177 
178  pat->addMuonSegment(mdtSeg);
179 
180  // add pattern to segment
181  patterns->push_back(std::move(pat));
182  ++nStoredSegments;
183  }
184  ++autIt;
185  }
186  }
187 
188  // retrieve CscSegmentCombis
189  if (m_useCscSegments) {
190  const MuonSegmentCombinationCollection* segCombis = nullptr;
191  ATH_CHECK(retrieveContainer(ctx, m_CscSegKey, segCombis));
194 
195  ATH_MSG_DEBUG(" Looping over Csc segment combination " << segCombis->size());
196 
197  for (; sit != sit_end; ++sit) {
198  // don't create pattern when csc segment combination is empty (bug in csc segmentmaker?, 3-12-7, JS)
199  if ((*sit)->numberOfStations() == 1) {
200  if ((*sit)->stationSegments(0)->size() == 0) continue;
201  }
202 
203  // get association to pattern
204  const Muon::MuonPatternCombination* pat = nullptr;
206  if ((range.first) != (range.second)) {
207  pat = (range.first)->second;
208  } else {
209  ATH_MSG_DEBUG("CSC Combination missing from the map - No combined pattern found for this CSC Segment Combination! "
210  << *sit);
211  }
212 
213  MuonCalibPattern* calibpat = createMuonCalibPattern(pat);
214 
215  ATH_MSG_DEBUG("New Csc segment combination covering " << (*sit)->numberOfStations() << " station ");
216 
217  // loop over segments in combination
218  unsigned int nstations = (*sit)->numberOfStations();
219  for (unsigned int i = 0; i != nstations; ++i) {
220  Muon::MuonSegmentCombination::SegmentVec* stationSegs = (*sit)->stationSegments(i);
221 
222  ATH_MSG_VERBOSE("New Csc station with " << stationSegs->size() << " segments ");
223 
224  Muon::MuonSegmentCombination::SegmentVec::iterator segit = stationSegs->begin();
225  Muon::MuonSegmentCombination::SegmentVec::iterator segit_end = stationSegs->end();
226 
227  for (; segit != segit_end; ++segit) {
228  Muon::MuonSegment* seg = (*segit).get();
229 
230  if (!seg) {
231  ATH_MSG_WARNING(" go NULL pointer for MuonSegment ");
232  continue;
233  }
234 
235  std::shared_ptr<MuonCalibSegment> CscSeg{createMuonCalibSegment(*seg, MuonDetMgr)};
236  CscSeg->setAuthor(seg->author());
237  calibpat->addMuonSegment(CscSeg);
238  }
239  }
240 
241  // add pattern to segment
242  patterns->push_back(calibpat);
243  }
244  }
245  // store patterns in storegate
246  ATH_CHECK(savePatterns(ctx, std::move(patterns)));
247  return StatusCode::SUCCESS;
248  }

◆ createMuonCalibPattern()

MuonCalibPattern * MuonCalib::MuonSegmentToCalibSegment::createMuonCalibPattern ( const Muon::MuonPatternCombination pat) const
private

Definition at line 789 of file MuonSegmentToCalibSegment.cxx.

789  {
790  ATH_MSG_VERBOSE("createMuonCalibPattern");
791  MuonCalibPattern* calibpat = nullptr;
792  MuonCalibPattern::defineParams pars{};
793  if (pat) {
794  const Trk::TrackParameters* trkparameters = pat->trackParameter();
795  const Trk::Perigee* perigee = dynamic_cast<const Trk::Perigee*>(trkparameters);
796  if (perigee) {
797  const AmgVector(5) parameters = perigee->parameters();
798  pars.phi = parameters[Trk::phi];
799  pars.theta = parameters[Trk::theta];
800  pars.dist0 = -perigee->position().y() * std::cos(pars.phi) + perigee->position().x() * std::sin(pars.phi);
801  double charge = pars.dist0 > 0 ? 1. : -1;
802 
803  // Approximate conversion of radius of curvature to Pinv in MeV-1
804  pars.invP = (10. * charge) / (perigee->momentum().mag());
805  pars.z0 = perigee->position().z();
806  ATH_MSG_DEBUG(" r0,z0 " << pars.dist0 << " " << pars.z0 << " phi,theta " << pars.phi << " " << pars.theta);
807  ATH_MSG_DEBUG(" pat " << perigee->position() << " " << perigee->momentum());
808  } else {
809  ATH_MSG_WARNING("Trackparameters are not set or is not a Perigee!! Pattern gets empty parameters");
810  }
811 
812  // Here I have to add the nmdt, nrpc, ntgc and ncsc...
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) {
819  Identifier id = (*prd_it)->identify();
820  if (m_idHelperSvc->isMdt(id)) {
821  pars.nmdt += 1000; // a mdt is always an eta-hit.
822  } else if (m_idHelperSvc->isRpc(id)) {
823  if (m_idHelperSvc->rpcIdHelper().measuresPhi(id))
824  pars.nrpc += 1;
825  else
826  pars.nrpc += 1000;
827  } else if (m_idHelperSvc->isTgc(id)) {
828  if (m_idHelperSvc->tgcIdHelper().isStrip(id))
829  pars.ntgc += 1;
830  else
831  pars.ntgc += 1000;
832  } else if (m_idHelperSvc->isCsc(id)) {
833  if (m_idHelperSvc->cscIdHelper().measuresPhi(id))
834  pars.ncsc += 1;
835  else
836  pars.ncsc += 1000;
837  } else
838  ATH_MSG_INFO("PrepRawData on pat is not a muon-technom_logy");
839  }
840  }
841  calibpat = new MuonCalibPattern(pars);
842  } else {
843  ATH_MSG_DEBUG("WARNING, empty muoncalibpattern created");
844  calibpat = new MuonCalibPattern();
845  }
846  return calibpat;
847  }

◆ createMuonCalibSegment()

MuonCalibSegment * MuonCalib::MuonSegmentToCalibSegment::createMuonCalibSegment ( const Muon::MuonSegment seg,
const MuonGM::MuonDetectorManager MuonDetMgr 
) const
private

Definition at line 305 of file MuonSegmentToCalibSegment.cxx.

306  {
307  // convert MuonSegment to MuonCalibSegment
308 
309  Identifier chid = getChId(seg);
310 
311  // global to station transformation for this chamber
312  Amg::Transform3D gToStationCheck = seg.associatedSurface().transform().inverse();
313  Amg::Transform3D gToStation = getGlobalToStation(chid, MuonDetMgr);
314  // create the local position and direction vector
315  const Amg::Vector3D& segPosG(seg.globalPosition());
316  const Amg::Vector3D& segDirG(seg.globalDirection());
317 
318  // calculate local position and direction of segment
319  Amg::Vector3D segPosL = gToStation * segPosG;
320  Amg::Vector3D segDirL = gToStation.linear() * segDirG;
321  Amg::Vector3D segDirLCheck = gToStationCheck.linear() * segDirG;
322 
323  double qualityFactor(1e9);
324  if (seg.fitQuality()) { qualityFactor = seg.fitQuality()->chiSquared(); }
325  // get segment quality
326  unsigned int segQuality = getQuality(seg);
327 
328  // pointer to new MuonSegment
329  MuonCalibSegment* mdtSeg =
330  new MuonCalibSegment(qualityFactor, segPosL, Amg::Vector3D(segDirL.unit()), gToStation.inverse(), segQuality);
331  double t0Shift = 0.;
332  if (seg.hasFittedT0()) { mdtSeg->setFittedT0(seg.time()); }
333 
334  Identifier cachedId; // Cached Identifier of previous hit (invalid for now)
335 
336  double chi2check = 0;
337  double thetap = std::atan2(mdtSeg->direction().y(), mdtSeg->direction().z());
338  double cosin = std::cos(thetap);
339  double sinus = std::sin(thetap);
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 ");
343  if (msgLvl(MSG::DEBUG)) {
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);
347  }
348  bool segment_with_multiple_t0s(false);
349  // for debug purposes count number of mdt,csc,tgc and rpc segments
350  int nm(0), nr(0), nt(0), nc(0);
351 
352  // loop over hits
353  const std::vector<const Trk::MeasurementBase*>& rots = seg.containedMeasurements();
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) {
357  Identifier id;
358  const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(*rit);
359  const Trk::CompetingRIOsOnTrack* rotc = dynamic_cast<const Trk::CompetingRIOsOnTrack*>(*rit);
360  bool competingRio = false;
361  if (rot) {
362  // loop over Rios
363  const Trk::PrepRawData* prd = rot->prepRawData();
364  id = prd->identify();
365  } else {
366  // loop over Competing Rios
367  if (rotc) {
368  id = rotc->rioOnTrack(0).identify();
369  competingRio = true;
370  } else {
371  continue;
372  }
373  }
374 
375  if (m_idHelperSvc->isMdt(id)) {
376  if (competingRio) {
377  ATH_MSG_WARNING(" MDT hit is competing Rio !!! ");
378  continue;
379  }
380  // Mdt digit
381  ++nm;
382 
383  const Muon::MdtDriftCircleOnTrack* mrot = dynamic_cast<const Muon::MdtDriftCircleOnTrack*>(rot);
384  if (!mrot) {
385  ATH_MSG_WARNING("This is not a MdtDriftCircleOnTrack!!! ");
386  continue;
387  }
388  // mdtSegment = true;
389 
390  // get digit from segment
391  const Muon::MdtPrepData* prd = mrot->prepRawData();
392 
393  // digit identifier
394  id = prd->identify();
395 
396  // get MdtDetectorElement for current digit
397  const MuonGM::MdtReadoutElement* detEl = prd->detectorElement();
398 
399  // get tube geometry
400  const Trk::StraightLineSurface* pStraightLineSurface =
401  dynamic_cast<const Trk::StraightLineSurface*>(&(detEl->surface(prd->identify())));
402  if (!pStraightLineSurface) {
403  ATH_MSG_WARNING("This has no StraightLineSurface !!! ");
404  continue;
405  }
406 
407  // Prd has no second coordinate
408  Amg::Vector3D tubePosLoc = gToStation * prd->globalPosition();
409 
410  // Get local tube direction, orient tube direction along the x local axis direction and get all DCA stuff in local
411  // coordinates
412  Amg::Vector3D tubeDirGlo = (pStraightLineSurface->transform()).rotation().col(2);
413  Amg::Vector3D tubeDirLoc = gToStation.linear() * tubeDirGlo;
414  ATH_MSG_DEBUG(" tubeDirLoc " << tubeDirLoc);
415  tubeDirLoc = tubeDirLoc.unit();
416  if (tubeDirLoc.x() < 0.) tubeDirLoc = -tubeDirLoc;
417 
418  Amg::Vector3D segPosLoc(mdtSeg->position());
419  Amg::Vector3D segDirLoc(mdtSeg->direction());
420  segDirLoc = segDirLoc.unit();
421 
422  Amg::Vector3D TubSegLoc(segPosLoc - tubePosLoc);
423 
424  Amg::Vector3D segDirLocprojected = segDirLoc - (tubeDirLoc.dot(segDirLoc)) * tubeDirLoc;
425  segDirLocprojected = segDirLocprojected.unit();
426 
427  double ImpactParameter = tubeDirLoc.dot(TubSegLoc.cross(segDirLocprojected));
428 
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;
432 
433  Amg::Vector3D tubePosLocAtDCA = tubePosLoc + ScaleOnTube * tubeDirLoc;
434  Amg::Vector3D segPosLocAtDCA = segPosLoc + ScaleOnSeg * segDirLoc;
435 
436  Amg::Vector3D segPosAtDCA = gToStation.inverse() * segPosLocAtDCA;
437 
438  // global and local position of rot
439  Amg::Vector3D trk_pos_rot(mrot->globalPosition());
440  Amg::Vector3D trk_pos_loc_rot = gToStation * trk_pos_rot;
441 
442  double rtrk = cosin * (mdtSeg->position().y() - tubePosLoc.y()) - sinus * (mdtSeg->position().z() - tubePosLoc.z());
443 
444  // Recalculate Point of closest approach (taking local x from second measurments)
445  double locx = trk_pos_loc_rot.x();
446  double locy = tubePosLoc.y() + cosin * rtrk;
447  double locz = tubePosLoc.z() - sinus * rtrk;
448  Amg::Vector3D trk_pos_loc(locx, locy, locz);
449  Amg::Vector3D trk_pos = gToStation.inverse() * trk_pos_loc;
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);
452 
453  ATH_MSG_DEBUG(" standard rtrk " << rtrk << " ImpactParameter " << ImpactParameter << " diff rtrk " << rtrk - ImpactParameter
454  << " trk_pos " << trk_pos << " OR segPosAtDCA " << segPosAtDCA);
455 
456  if (std::abs(rtrk - ImpactParameter) > 0.001)
457  ATH_MSG_DEBUG(" ALARM Impact parameter difference " << rtrk - ImpactParameter);
458 
459  // Alternative
460  if (seg.author() == 3 || m_newImpactParameter) {
461  rtrk = ImpactParameter;
462  trk_pos = segPosAtDCA;
463  }
464 
465  ATH_MSG_DEBUG("MDT RIO tdc " << prd->tdc() << " adc " << prd->adc() << " r_time "
466  << rot->localParameters()[Trk::driftRadius] << " r_track " << rtrk);
467 
468  tubePosLoc[Trk::locX] = trk_pos_loc.x();
469 
470  // Alternative
471  if (seg.author() == 3) { tubePosLoc = tubePosLocAtDCA; }
472 
473  double xLocTwin(-99999999.);
474 
475  // Store local twin tube coordinate
476  if (prd->localPosition()[Trk::locY]) {
477  Identifier test_prd_Id = prd->detectorElement()->identify();
478  ATH_MSG_DEBUG(" Twin Position : prd->localPosition()[Trk::locY] = "
479  << prd->localPosition()[Trk::locY] << " in station "
480  << m_idHelperSvc->mdtIdHelper().stationNameString(m_idHelperSvc->mdtIdHelper().stationName(test_prd_Id))
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));
485 
486  Amg::Vector3D lposTrking(0., 0., prd->localPosition()[Trk::locY]);
487  Amg::Vector3D gposAMDB = detEl->surface(id).transform() * lposTrking;
488  Amg::Vector3D lposAMDB = detEl->GlobalToAmdbLRSTransform() * gposAMDB;
489  ATH_MSG_DEBUG(" CHECK lposTrking = " << lposTrking.z() << " lposAMDB " << lposAMDB.x());
490 
491  xLocTwin = lposAMDB.x();
492  }
493 
494  Amg::Vector3D tubePos = gToStation.inverse() * tubePosLoc;
495  // If the wire is rotated wrt segmentsurface we need this transform
496  // get distance to readoud from detector manager
497  double distRo_det = detEl->distanceFromRO(mrot->globalPosition(), id);
498 
499  // create new MdtCalibHit
500  MdtCalibHit calibHit(id, prd->tdc(), prd->adc(), tubePos, tubePosLoc, detEl);
501  calibHit.setGlobalPointOfClosestApproach(trk_pos);
502 
503  calibHit.setLocalPos(tubePosLoc);
504  calibHit.setLocXtwin(xLocTwin);
505 
506  MdtCalibrationSvcSettings settings;
507  // Copy settings from ROT
508  // Window lower & upper bounds not set yet
509  const Muon::MuonDriftCircleErrorStrategy& rotErrorStrategy = mrot->errorStrategy();
510  settings.doTof = rotErrorStrategy.creationParameter(Muon::MuonDriftCircleErrorStrategy::TofCorrection);
511  settings.doProp = rotErrorStrategy.creationParameter(Muon::MuonDriftCircleErrorStrategy::PropCorrection);
512  settings.doTemp = rotErrorStrategy.creationParameter(Muon::MuonDriftCircleErrorStrategy::TempCorrection);
515  settings.doSlew = rotErrorStrategy.creationParameter(Muon::MuonDriftCircleErrorStrategy::SlewCorrection);
517  settings.windowSetting = rotErrorStrategy.calibWindow();
518  settings.initialize();
519  bool apply_t0 = ((m_updateForT0Shift < 0) ? rotErrorStrategy.creationParameter(Muon::MuonDriftCircleErrorStrategy::T0Refit)
520  : static_cast<bool>(m_updateForT0Shift)) &&
521  seg.hasFittedT0();
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);
525  input.trackDirection = &seg.globalDirection();
526 
527  input.pointOfClosestApproach = &calibHit.globalPointOfClosestApproach();
528  bool sameChamber = false;
529  if (cachedId.is_valid()) {
530  sameChamber = (m_idHelperSvc->mdtIdHelper().stationName(id) == m_idHelperSvc->mdtIdHelper().stationName(cachedId)) &&
531  (m_idHelperSvc->mdtIdHelper().stationEta(id) == m_idHelperSvc->mdtIdHelper().stationEta(cachedId)) &&
532  (m_idHelperSvc->mdtIdHelper().stationPhi(id) == m_idHelperSvc->mdtIdHelper().stationPhi(cachedId));
533  }
534  if (!sameChamber) ATH_MSG_DEBUG("Moving to a new chamber! " << cachedId << " to " << id);
535  // We're done with the cached Id for now, so immediately reassign it
536  cachedId = id;
537 
538  if (t0Shift == 0 || seg.author() != 3 || sameChamber) {
539  // There is one t0 shift for the whole segment - only one calibration is needed
540  input.tof += t0Shift;
541  ATH_MSG_DEBUG("Author " << seg.author() << " added single t0 shift of " << t0Shift);
542  } else {
543  segment_with_multiple_t0s = true;
544  // We may be in a new chamber, with a different fitted t0
545  m_calibrationTool->driftRadiusFromTime(calibHit, input, settings);
546 
547  // Reset the value of the t0 shift
548  t0Shift = calibHit.driftTime() - mrot->driftTime();
549  input.tof += t0Shift;
550  ATH_MSG_DEBUG("t0 shift updated to " << t0Shift);
551 
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());
554  }
555  }
556 
557  // Calculate drift radius from drift time using MdtCalibrationSvc
558  double oldDriftTime = calibHit.driftTime(); // 0 unless we shift t0
559  m_calibrationTool->driftRadiusFromTime(calibHit, input, settings);
560 
561  double timeDif = calibHit.driftTime() - mrot->driftTime();
562 
563  // Store Sign of DriftRadius from Tracking (ROT) convention
564  float driftR = calibHit.driftRadius();
565  float sigmaDriftR = calibHit.sigmaDriftRadius();
566  if (rot->localParameters()[Trk::driftRadius] < 0) {
567  driftR = -driftR;
568  calibHit.setDriftRadius(driftR, sigmaDriftR);
569  }
570 
571  if (std::abs(timeDif) >= 0.1 && !segment_with_multiple_t0s) {
572  ATH_MSG_WARNING(" Bad T0Shift " << t0Shift << " cor " << timeDif << " ROT " << mrot->driftRadius() << " t "
573  << mrot->driftTime() << " calib " << calibHit.driftRadius() << " t "
574  << calibHit.driftTime() << " old " << oldDriftTime << " author " << seg.author());
575  }
576  if (std::abs(mrot->driftRadius() - calibHit.driftRadius()) > 0.01 && !segment_with_multiple_t0s) {
577  ATH_MSG_WARNING("Detected radius difference> 10 mu. MROT r= " << mrot->driftRadius()
578  << " calib r=" << calibHit.driftRadius());
579  }
580  ATH_MSG_DEBUG("B-field correction: " << calibHit.lorentzTime());
581 
582  // fill distance to track
583  calibHit.setDistanceToTrack(rtrk, 0.);
584 
585  // set distance to readout
586  calibHit.setDistanceToReadout(distRo_det);
587 
588  // convert MdtCalibHit to MdtCalibHitBase and then delete it
589  // add hit to MuonSegment
590 
591  double resi = std::abs(driftR) - std::abs(rtrk);
592  if (rtrk < 0) resi = -resi;
593  double error2 = rot->localCovariance()(0, 0);
594  double chi2c = (resi * resi) / error2;
595  chi2check += chi2c;
596  if (msgLvl(MSG::DEBUG) && seg.author() == 4) {
597  // Craig Blocker his checks
598  MuonFixedId fixid = m_idToFixedIdTool->idToFixedId(id);
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 ");
608  }
609  MdtCalibHitBase* basehit = calibHit.hitBase(*m_idToFixedIdTool);
610  basehit->setSegmentT0Applied(apply_t0);
611  mdtSeg->addHitOnTrack(basehit);
612 
613  } else if (m_idHelperSvc->isRpc(id)) {
614  // rpc ROT
615  ++nr;
616 
617  int nRios = 1;
618 
619  if (competingRio) nRios = rotc->numberOfContainedROTs();
620  for (int irio = 0; irio < nRios; ++irio) {
621  // Loop over competing Rios or Rios
622  if (competingRio) rot = &rotc->rioOnTrack(irio);
623 
624  if (msgLvl(MSG::DEBUG)) {
625  if (!competingRio) ATH_MSG_DEBUG("Found RPC Rio !");
626  if (competingRio) ATH_MSG_DEBUG("Found RPC Competing Rio !");
627  }
628 
629  const Muon::RpcClusterOnTrack* rrot = dynamic_cast<const Muon::RpcClusterOnTrack*>(rot);
630  if (!rrot) {
631  ATH_MSG_WARNING("This is not a RpcClusterOnTrack!!! ");
632  continue;
633  }
634 
635  const Muon::RpcPrepData* rprd = rrot->prepRawData();
636  id = rprd->identify();
637  int nStrips = rprd->rdoList().size();
638  // get detector element
639  const MuonGM::RpcReadoutElement* detEl = rprd->detectorElement();
640 
641  double stripWidth = detEl->StripWidth(m_idHelperSvc->rpcIdHelper().measuresPhi(id));
642  double time = rprd->time();
643  double error = std::sqrt(rrot->localCovariance()(0, 0));
644  Amg::Vector3D rgp = rrot->globalPosition();
645 
646  Amg::Vector3D rlp = gToStation * rgp;
647 
648  // get strip lengths
649  double stripLen = detEl->StripLength(m_idHelperSvc->rpcIdHelper().measuresPhi(id));
650 
651  double distRO;
652  if (m_idHelperSvc->rpcIdHelper().measuresPhi(id)) {
653  distRO = detEl->distanceToPhiReadout(rgp, id);
654  } else {
655  distRO = detEl->distanceToEtaReadout(rgp, id);
656  }
657 
658  RpcCalibHitBase* rpcCH = new RpcCalibHitBase(nStrips, stripWidth, time, error, rgp, rlp);
659 
660  MuonFixedId fixid = m_idToFixedIdTool->idToFixedId(id);
661  rpcCH->setIdentifier(fixid);
662  rpcCH->setStripLength(stripLen);
663  rpcCH->setDistanceToRO(distRO);
664 
665  mdtSeg->addHitOnTrack(rpcCH);
666  }
667  } else if (m_idHelperSvc->isTgc(id)) {
668  ++nt;
669 
670  int nRios = 1;
671 
672  if (competingRio) nRios = rotc->numberOfContainedROTs();
673  for (int irio = 0; irio < nRios; ++irio) {
674  // Loop over competing Rios or Rios
675  if (competingRio) rot = &rotc->rioOnTrack(irio);
676 
677  if (msgLvl(MSG::DEBUG)) {
678  if (!competingRio) ATH_MSG_DEBUG("Found TGC Rio !");
679  if (competingRio) ATH_MSG_DEBUG("Found TGC Competing Rio !");
680  }
681 
682  const Muon::TgcClusterOnTrack* trot = dynamic_cast<const Muon::TgcClusterOnTrack*>(rot);
683  if (!trot) {
684  ATH_MSG_WARNING("This is not a TgcClusterOnTrack!!! ");
685  continue;
686  }
687 
688  const Muon::TgcPrepData* tprd = trot->prepRawData();
689  id = tprd->identify();
690  ATH_MSG_DEBUG("TGC RIO ");
691 
692  int nStrips = tprd->rdoList().size();
693 
694  double stripWidth;
695  bool measuresPhi = (bool)m_idHelperSvc->tgcIdHelper().isStrip(tprd->identify());
696  int gasGap = m_idHelperSvc->tgcIdHelper().gasGap(tprd->identify());
697  int channel = m_idHelperSvc->tgcIdHelper().channel(tprd->identify());
698  const MuonGM::TgcReadoutElement* detEl = tprd->detectorElement();
699  if (!measuresPhi) {
700  stripWidth = detEl->gangMaxZ(gasGap, channel) - detEl->gangMinZ(gasGap, channel);
701  } else {
702  Amg::Vector3D localPos = detEl->transform(tprd->identify()).inverse() * detEl->channelPos(tprd->identify());
703  stripWidth = detEl->stripMaxX(gasGap, channel, localPos.y()) - detEl->stripMinX(gasGap, channel, localPos.y());
704  }
705 
706  double error = std::sqrt(trot->localCovariance()(0, 0));
707  Amg::Vector3D tgp = trot->globalPosition();
708 
709  Amg::Vector3D tlp = gToStation * tgp;
710  TgcCalibHitBase* tgcCH = new TgcCalibHitBase(nStrips, stripWidth, error, tgp, tlp);
711 
712  MuonFixedId fixid = m_idToFixedIdTool->idToFixedId(id);
713 
714  tgcCH->setIdentifier(fixid);
715 
716  mdtSeg->addHitOnTrack(tgcCH);
717  }
718  } else if (m_idHelperSvc->isCsc(id)) {
719  ++nc;
720 
721  int nRios = 1;
722 
723  if (competingRio) nRios = rotc->numberOfContainedROTs();
724  for (int irio = 0; irio < nRios; ++irio) {
725  // Loop over competing Rios or Rios
726  if (competingRio) rot = &rotc->rioOnTrack(irio);
727  ATH_MSG_DEBUG((competingRio ? "Found CSC Competing Rio !" : "Found CSC Rio !"));
728  const Muon::CscClusterOnTrack* crot = dynamic_cast<const Muon::CscClusterOnTrack*>(rot);
729  if (!crot) {
730  ATH_MSG_WARNING("This is not a CscClusterOnTrack!!!");
731  continue;
732  }
733 
734  const Muon::CscPrepData* cprd = crot->prepRawData();
735  Identifier id = cprd->identify();
736 
737  int nStrips = cprd->rdoList().size();
738 
739  int measuresPhi = m_idHelperSvc->cscIdHelper().measuresPhi(id);
740  int chamberLayer = m_idHelperSvc->cscIdHelper().chamberLayer(id);
741  double stripWidth = cprd->detectorElement()->cathodeReadoutPitch(chamberLayer, measuresPhi);
742  int charge = cprd->charge();
743 
744  double error = std::sqrt(crot->localCovariance()(0, 0));
745  Amg::Vector3D cgp = crot->globalPosition();
746 
747  Amg::Vector3D clp = gToStation * cgp;
748  CscCalibHitBase* cscCH = new CscCalibHitBase(nStrips, stripWidth, charge, error, cgp, clp);
749 
750  MuonFixedId fixid = m_idToFixedIdTool->idToFixedId(id);
751 
752  cscCH->setIdentifier(fixid);
753 
754  mdtSeg->addHitOnTrack(cscCH);
755  ATH_MSG_DEBUG("mdtSeg->cscHitsOnTrack()=" << mdtSeg->cscHitsOnTrack());
756  ATH_MSG_DEBUG("mdtSeg->hitsOnTrack()=" << mdtSeg->hitsOnTrack());
757  // set the global to amdb transform in case of first hit
758  }
759 
760  } else {
761  ATH_MSG_WARNING("ERROR unknown RIO type ");
762  }
763  }
764  ATH_MSG_VERBOSE("Number of *&* mdt " << nm << " rpc " << nr << " tgc " << nt << " csc " << nc);
765 
766  // add magnetic-field entries for MDT hits //
767 
768  if (msgLvl(MSG::DEBUG) && seg.author() == 4) {
769  if (qualityFactor > 0.0001) {
770  if (chi2check / qualityFactor > 1.01 || chi2check / qualityFactor < 0.99) {
771  ATH_MSG_DEBUG(" ALARM wrong chi2 "
772  << "Mdt segment chi2 " << qualityFactor << " mdt hits " << nm << " chi2check " << chi2check << " t0Shift "
773  << t0Shift);
774  } else {
775  ATH_MSG_DEBUG(" good chi2 "
776  << "Mdt segment chi2 " << qualityFactor << " mdt hits " << nm << " chi2check " << chi2check << " t0Shift "
777  << t0Shift);
778  }
779  } else {
780  ATH_MSG_DEBUG(" good chi2 "
781  << "Mdt segment chi2 " << qualityFactor << " mdt hits " << nm << " chi2check " << chi2check << " t0Shift "
782  << t0Shift);
783  }
784  }
785 
786  return mdtSeg;
787  } // createMuonCalibSegment

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation 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.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation 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.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation 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.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation 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.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode MuonCalib::MuonSegmentToCalibSegment::execute ( )

Algorithm execute, called once per event.

Definition at line 63 of file MuonSegmentToCalibSegment.cxx.

63  {
64  ATH_MSG_DEBUG(" execute() ");
65  ATH_CHECK(convertPatterns(Gaudi::Hive::currentContext()));
66  return StatusCode::SUCCESS;
67  }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

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.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ getChId()

Identifier MuonCalib::MuonSegmentToCalibSegment::getChId ( const Muon::MuonSegment seg) const
private

Definition at line 250 of file MuonSegmentToCalibSegment.cxx.

250  {
251  if (seg.numberOfContainedROTs() == 0) {
252  ATH_MSG_DEBUG(" Oops, segment without hits!!! ");
253  return Identifier();
254  }
255 
256  for (unsigned int irot = 0; irot < seg.numberOfContainedROTs(); irot++) {
257  // use pointer to rot
258  const Trk::RIO_OnTrack* rot = seg.rioOnTrack(irot);
259 
260  if (m_idHelperSvc->isMdt(rot->identify())) {
261  return rot->identify();
262  } else if (m_idHelperSvc->isCsc(rot->identify())) {
263  return rot->identify();
264  }
265  }
266 
267  // if we get here the segment did not contain any csc or mdt hits, in which case we return the identifier of the first rot
268  return seg.rioOnTrack(0)->identify();
269  }

◆ getGlobalToStation()

Amg::Transform3D MuonCalib::MuonSegmentToCalibSegment::getGlobalToStation ( const Identifier id,
const MuonGM::MuonDetectorManager MuonDetMgr 
) const
private

Definition at line 271 of file MuonSegmentToCalibSegment.cxx.

272  {
273  if (m_idHelperSvc->isMdt(id)) {
274  const MuonGM::MdtReadoutElement* detEl = MuonDetMgr->getMdtReadoutElement(id);
275  if (!detEl) {
276  ATH_MSG_WARNING("getGlobalToStation failed to retrieve detEL byebye");
277  } else {
278  return detEl->GlobalToAmdbLRSTransform();
279  }
280  } else if (m_idHelperSvc->isCsc(id)) {
281  const MuonGM::CscReadoutElement* detEl = MuonDetMgr->getCscReadoutElement(id);
282  if (!detEl) {
283  ATH_MSG_WARNING("getGlobalToStation failed to retrieve detEL byebye");
284  } else {
285  return detEl->transform().inverse();
286  }
287  } else if (m_idHelperSvc->isTgc(id)) {
288  const MuonGM::TgcReadoutElement* detEl = MuonDetMgr->getTgcReadoutElement(id);
289  if (!detEl) {
290  ATH_MSG_WARNING("getGlobalToStation failed to retrieve detEL byebye");
291  } else {
292  return detEl->transform().inverse();
293  }
294  } else if (m_idHelperSvc->isRpc(id)) {
295  const MuonGM::RpcReadoutElement* detEl = MuonDetMgr->getRpcReadoutElement(id);
296  if (!detEl) {
297  ATH_MSG_WARNING("getGlobalToStation failed to retrieve detEL byebye");
298  } else {
299  return detEl->transform().inverse();
300  }
301  }
302  ATH_MSG_WARNING(" Oops, should not be here, returning default transform ");
303  return Amg::Transform3D();
304  }

◆ getQuality()

unsigned int MuonCalib::MuonSegmentToCalibSegment::getQuality ( const Muon::MuonSegment seg) const
private

Definition at line 849 of file MuonSegmentToCalibSegment.cxx.

849  {
850  ATH_MSG_DEBUG(" plotting quality ");
851  // try to dynamic_cast to MdtSegmentQuality in order to obtain quality
852 
853  const Muon::MuonSegmentQuality* q = dynamic_cast<const Muon::MuonSegmentQuality*>(seg.fitQuality());
854 
855  if (!q) {
856  // NO quality available for CSC
857  return 0;
858  }
859  ATH_MSG_DEBUG("Got MuonSegmentQuality "
860  << " hots " << q->numberDoF() + 2 << " number of holes " << q->channelsWithoutHit().size());
861 
862  unsigned int packedInfo = 0;
863 
864  packedInfo += 100 * (q->channelsWithoutHit().size() < 9 ? q->channelsWithoutHit().size() : 9);
865 
866  ATH_MSG_DEBUG(" packedInfo " << packedInfo);
867  return packedInfo;
868  }

◆ 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.

33  {
34  if (m_TrkSegKey.size() < m_segment_authors.size()) { m_segment_authors.value().resize(m_TrkSegKey.size(), -1); }
35 
36  std::string managerName = "Muon";
38  ATH_CHECK(m_idToFixedIdTool.retrieve());
39  ATH_CHECK(m_assocTool.retrieve());
40  ATH_CHECK(m_idHelperSvc.retrieve());
43 
44  ATH_CHECK(m_CombSegKey.initialize());
46  ATH_CHECK(m_TrkSegKey.initialize());
48 
49  // Get the maximum number of segments each algorithm can
50  // store in the ntuple
55 
56  if (m_TrkSegKey.size()) { m_maxStoredSegs.value() /= m_TrkSegKey.size(); }
57  ATH_MSG_INFO("Maximum number of stored segments for each algorithm = " << m_maxStoredSegs);
58 
59  ATH_MSG_INFO("Initialisation ended ");
60  return StatusCode::SUCCESS;
61  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

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]

MsgStream& AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

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

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ 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.

872  {
873  SG::ReadHandle<container_type> readHandle{key, ctx};
874  if (!readHandle.isValid()) {
875  ATH_MSG_WARNING("Failed to retrieve " << key.fullKey());
876  return StatusCode::FAILURE;
877  }
878  container_ptr = readHandle.cptr();
879 
880  const container_type* container{readHandle.cptr()};
881  if (!container) {
882  ATH_MSG_WARNING("Failed to retrieve " << key.fullKey());
883  return StatusCode::FAILURE;
884  }
885  return StatusCode::SUCCESS;
886  }

◆ savePatterns()

StatusCode MuonCalib::MuonSegmentToCalibSegment::savePatterns ( const EventContext &  ctx,
std::unique_ptr< MuonCalibPatternCollection newPatterns 
) const
private

save global patterns to storegate

Definition at line 69 of file MuonSegmentToCalibSegment.cxx.

70  {
71  SG::WriteHandle writeHandle{m_patternKey, ctx};
72 
73  ATH_CHECK(writeHandle.record(std::move(newPatterns)));
74  return StatusCode::SUCCESS;
75  }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_assocTool

ToolHandle<Muon::IMuonPatternSegmentAssociationTool> MuonCalib::MuonSegmentToCalibSegment::m_assocTool
private
Initial value:
{
this, "PatternSegmentAssociationTool", "Muon::MuonPatternSegmentAssociationTool/MuonPatternSegmentAssociationTool"}

IdentifierTool initialization.

Definition at line 89 of file MuonSegmentToCalibSegment.h.

◆ m_calibrationTool

ToolHandle<MdtCalibrationTool> MuonCalib::MuonSegmentToCalibSegment::m_calibrationTool {this, "CalibrationTool", "MdtCalibrationTool"}
private

pointer to MdtCalibSvc

Definition at line 86 of file MuonSegmentToCalibSegment.h.

◆ m_CombSegKey

SG::ReadHandleKey<MuonSegmentCombinationCollection> MuonCalib::MuonSegmentToCalibSegment::m_CombSegKey {this, "CombiSegmentKey", "MooreSegmentCombinations"}
private

Definition at line 66 of file MuonSegmentToCalibSegment.h.

◆ m_cosmics_tof

Gaudi::Property<bool> MuonCalib::MuonSegmentToCalibSegment::m_cosmics_tof {this, "DoCosmicsTof", false}
private

Definition at line 99 of file MuonSegmentToCalibSegment.h.

◆ m_CscSegKey

SG::ReadHandleKey<MuonSegmentCombinationCollection> MuonCalib::MuonSegmentToCalibSegment::m_CscSegKey {this, "CscSegmentKey", "Csc4dSegmentCombinations"}
private

Definition at line 68 of file MuonSegmentToCalibSegment.h.

◆ m_DetectorManagerKey

SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> MuonCalib::MuonSegmentToCalibSegment::m_DetectorManagerKey
private
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

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doTof

Gaudi::Property<bool> MuonCalib::MuonSegmentToCalibSegment::m_doTof {this, "DoTOF", true}
private

Definition at line 98 of file MuonSegmentToCalibSegment.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuonCalib::MuonSegmentToCalibSegment::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 83 of file MuonSegmentToCalibSegment.h.

◆ m_idToFixedIdTool

ToolHandle<IIdToFixedIdTool> MuonCalib::MuonSegmentToCalibSegment::m_idToFixedIdTool {this, "IdToFixedIdTool", "MuonCalib::IdToFixedIdTool/MuonCalib_IdToFixedIdTool"}
private

Definition at line 91 of file MuonSegmentToCalibSegment.h.

◆ m_maxStoredSegs

Gaudi::Property<int> MuonCalib::MuonSegmentToCalibSegment::m_maxStoredSegs {this, "MaxPossibleSegments", 1000}
private

maximum number of segments each algorithm can store in ntuple

Definition at line 101 of file MuonSegmentToCalibSegment.h.

◆ m_newImpactParameter

Gaudi::Property<bool> MuonCalib::MuonSegmentToCalibSegment::m_newImpactParameter {this, "NewImpactParameter", false}
private

Definition at line 73 of file MuonSegmentToCalibSegment.h.

◆ m_patternKey

SG::WriteHandleKey<MuonCalibPatternCollection> MuonCalib::MuonSegmentToCalibSegment::m_patternKey {this, "PatternKey", "PatternsForCalibration"}
private

pattern location

Definition at line 77 of file MuonSegmentToCalibSegment.h.

◆ m_readSegments

Gaudi::Property<bool> MuonCalib::MuonSegmentToCalibSegment::m_readSegments {this, "ReadSegments", false}
private

segment location

Definition at line 63 of file MuonSegmentToCalibSegment.h.

◆ m_segment_authors

Gaudi::Property<std::vector<int> > MuonCalib::MuonSegmentToCalibSegment::m_segment_authors {this, "SegmentAuthors", {3, 4}}
private

Definition at line 72 of file MuonSegmentToCalibSegment.h.

◆ m_TrkSegKey

SG::ReadHandleKeyArray<Trk::SegmentCollection> MuonCalib::MuonSegmentToCalibSegment::m_TrkSegKey {this, "SegmentLocations", {"MooreSegments", "ConvertedMBoySegments"}}
private

Definition at line 70 of file MuonSegmentToCalibSegment.h.

◆ 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

Definition at line 64 of file MuonSegmentToCalibSegment.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
Muon::MuonSegmentQuality
Definition: MuonSegmentQuality.h:34
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
MuonCalib::MuonSegmentToCalibSegment::m_calibrationTool
ToolHandle< MdtCalibrationTool > m_calibrationTool
pointer to MdtCalibSvc
Definition: MuonSegmentToCalibSegment.h:86
MuonGM::MuonDetectorManager::getRpcReadoutElement
const RpcReadoutElement * getRpcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:168
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
Muon::MuonDriftCircleErrorStrategy
Definition: MuonDriftCircleErrorStrategy.h:15
Muon::MuonDriftCircleErrorStrategy::WireSagTimeCorrection
@ WireSagTimeCorrection
Wire sag correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:30
MuonGM::MuonClusterReadoutElement::transform
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Definition: MuonClusterReadoutElement.h:124
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
MuonCalib::MuonSegmentToCalibSegment::m_newImpactParameter
Gaudi::Property< bool > m_newImpactParameter
Definition: MuonSegmentToCalibSegment.h:73
MuonGM::RpcReadoutElement::StripLength
double StripLength(bool measphi) const
returns the strip length for the phi or eta plane
MuonCalib::MuonSegmentToCalibSegment::m_doTof
Gaudi::Property< bool > m_doTof
Definition: MuonSegmentToCalibSegment.h:98
Muon::MuonClusterOnTrack::globalPosition
virtual const Amg::Vector3D & globalPosition() const override
Returns global position.
Definition: MuonClusterOnTrack.cxx:93
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Muon::MdtDriftCircleOnTrack::prepRawData
virtual const MdtPrepData * prepRawData() const override final
Returns the PrepRawData used to create this corrected measurement.
Definition: MdtDriftCircleOnTrack.h:257
Trk::locX
@ locX
Definition: ParamDefs.h:37
MuonCalib::MuonSegmentToCalibSegment::m_idToFixedIdTool
ToolHandle< IIdToFixedIdTool > m_idToFixedIdTool
Definition: MuonSegmentToCalibSegment.h:91
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:38
Muon::CscPrepData::charge
int charge() const
Returns the charge.
Definition: CscPrepData.h:153
MuonCalib::MuonSegmentToCalibSegment::m_segment_authors
Gaudi::Property< std::vector< int > > m_segment_authors
Definition: MuonSegmentToCalibSegment.h:72
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
patterns
std::vector< std::string > patterns
Definition: listroot.cxx:187
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
Muon::MuonSegment::rioOnTrack
const Trk::RIO_OnTrack * rioOnTrack(unsigned int) const
returns the RIO_OnTrack (also known as ROT) objects depending on the integer
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:187
MuonGM::MuonReadoutElement::GlobalToAmdbLRSTransform
virtual Amg::Transform3D GlobalToAmdbLRSTransform() const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:153
Muon::TgcClusterOnTrack
Class to represent calibrated clusters formed from TGC strips.
Definition: TgcClusterOnTrack.h:46
Muon::MuonDriftCircleErrorStrategy::calibWindow
unsigned long calibWindow() const
Returns calibration configuration.
Definition: MuonDriftCircleErrorStrategy.h:90
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::PrepRawData::rdoList
const std::vector< Identifier > & rdoList() const
return the List of rdo identifiers (pointers)
AthCommonMsg< Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
Muon::MdtDriftCircleOnTrack::errorStrategy
const MuonDriftCircleErrorStrategy & errorStrategy() const
Get information about the creation strategy used by Muon::MdtDriftCircleOnTrackCreator when making th...
Definition: MdtDriftCircleOnTrack.h:283
MuonGM::RpcReadoutElement
An RpcReadoutElement corresponds to a single RPC module; therefore typicaly a barrel muon station con...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/RpcReadoutElement.h:55
Muon::TgcPrepData::detectorElement
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 ...
Definition: TgcPrepData.h:120
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
Muon::RpcClusterOnTrack
Class to represent calibrated clusters formed from RPC strips.
Definition: RpcClusterOnTrack.h:35
MuonGM::CscReadoutElement
Definition: CscReadoutElement.h:56
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
Muon::MdtPrepData::adc
int adc() const
Returns the ADC (typically range is 0 to 250)
Definition: MdtPrepData.h:146
x
#define x
Muon::MuonSegment::numberOfContainedROTs
unsigned int numberOfContainedROTs() const
number of RIO_OnTracks
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:199
Identifier::is_valid
bool is_valid() const
Check if id is in a valid state.
Muon::MuonSegment::hasFittedT0
bool hasFittedT0() const
returns whether the segment has a fitted t0
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:212
MuonCalib::MuonSegmentToCalibSegment::m_patternKey
SG::WriteHandleKey< MuonCalibPatternCollection > m_patternKey
pattern location
Definition: MuonSegmentToCalibSegment.h:77
Muon::MdtDriftCircleOnTrack::globalPosition
virtual const Amg::Vector3D & globalPosition() const override final
Returns the global Position.
Definition: MdtDriftCircleOnTrack.cxx:108
Muon::MuonDriftCircleErrorStrategy::PropCorrection
@ PropCorrection
Propagation correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:27
Muon::MuonDriftCircleErrorStrategy::TempCorrection
@ TempCorrection
Temperature correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:28
Muon::MdtDriftCircleOnTrack::driftTime
double driftTime() const
Returns the value of the drift time used to obtain the drift radius.
Definition: MdtDriftCircleOnTrack.h:280
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
MuonGM::TgcReadoutElement::channelPos
Amg::Vector3D channelPos(const Identifier &id) const
Returns the position of the active channel (wireGang or strip)
Muon::MuonDriftCircleErrorStrategy::T0Refit
@ T0Refit
A special error was applied to account for the T0 refit (user defined via jobProperties)
Definition: MuonDriftCircleErrorStrategy.h:24
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
MuonGM::MdtReadoutElement::distanceFromRO
double distanceFromRO(const Amg::Vector3D &GlobalHitPosition, const Identifier &id) const
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
MuonGM::MuonDetectorManager::getTgcReadoutElement
const TgcReadoutElement * getTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:247
Muon::RpcPrepData::time
float time() const
Returns the time.
Definition: RpcPrepData.h:197
Muon::TgcClusterOnTrack::prepRawData
virtual const TgcPrepData * prepRawData() const
Returns the TgcPrepData - is a TRT_DriftCircle in this scope.
Definition: TgcClusterOnTrack.h:129
MuonCalib::MuonSegmentToCalibSegment::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonSegmentToCalibSegment.h:83
Muon::MuonDriftCircleErrorStrategy::SlewCorrection
@ SlewCorrection
Slewing correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:31
Trk::CompetingRIOsOnTrack::rioOnTrack
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
MuonCalib::MuonSegmentToCalibSegment::getQuality
unsigned int getQuality(const Muon::MuonSegment &seg) const
Definition: MuonSegmentToCalibSegment.cxx:849
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
MuonCalib::MuonSegmentToCalibSegment::getChId
Identifier getChId(const Muon::MuonSegment &seg) const
Definition: MuonSegmentToCalibSegment.cxx:250
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
MuonGM::MuonDetectorManager::getMdtReadoutElement
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:204
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
MuonGM::MdtReadoutElement
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h:51
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
MuonCalib::MuonSegmentToCalibSegment::retrieveContainer
StatusCode retrieveContainer(const EventContext &ctx, const SG::ReadHandleKey< container_type > &key, const container_type *&container_ptr) const
Definition: MuonSegmentToCalibSegment.cxx:871
MuonGM::RpcReadoutElement::distanceToPhiReadout
double distanceToPhiReadout(const Amg::Vector3D &P) const
Definition: MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx:223
Trk::CompetingRIOsOnTrack::numberOfContainedROTs
virtual unsigned int numberOfContainedROTs() const =0
Number of RIO_OnTracks to be contained by this CompetingRIOsOnTrack.
lumiFormat.i
int i
Definition: lumiFormat.py:85
z
#define z
Muon::RpcPrepData
Class to represent RPC measurements.
Definition: RpcPrepData.h:35
Muon::RpcPrepData::detectorElement
virtual const MuonGM::RpcReadoutElement * detectorElement() const override final
Returns the detector element corresponding to this PRD.
Definition: RpcPrepData.h:202
MuonGM::MuonDetectorManager::getCscReadoutElement
const CscReadoutElement * getCscReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:225
Muon::CscPrepData
Class representing clusters from the CSC.
Definition: CscPrepData.h:39
Muon::MuonDriftCircleErrorStrategy::TofCorrection
@ TofCorrection
Time of flight correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:26
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonR4::inverse
CalibratedSpacePoint::Covariance_t inverse(const CalibratedSpacePoint::Covariance_t &mat)
Inverts the parsed matrix.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/UtilFunctions.cxx:65
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::rotation
rotation
Definition: TrackSurface_v1.cxx:15
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
Trk::driftRadius
@ driftRadius
trt, straws
Definition: ParamDefs.h:53
Muon::IMuonPatternSegmentAssociationTool::AssociationMapRange
std::pair< AssociationMap::const_iterator, AssociationMap::const_iterator > AssociationMapRange
Definition: IMuonPatternSegmentAssociationTool.h:27
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
Trk::Segment::containedMeasurements
const std::vector< const Trk::MeasurementBase * > & containedMeasurements() const
returns the vector of Trk::MeasurementBase objects
Definition: Tracking/TrkEvent/TrkSegment/TrkSegment/Segment.h:166
Trk::Segment
Definition: Tracking/TrkEvent/TrkSegment/TrkSegment/Segment.h:56
Trk::CompetingRIOsOnTrack
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
Definition: CompetingRIOsOnTrack.h:64
MuonGM::TgcReadoutElement
A TgcReadoutElement corresponds to a single TGC chamber; therefore typically a TGC station contains s...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/TgcReadoutElement.h:42
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
Muon::MdtPrepData::globalPosition
virtual const Amg::Vector3D & globalPosition() const
Returns the global position of the CENTER of the drift tube (i.e.
Definition: MdtPrepData.h:133
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Muon::MuonDriftCircleErrorStrategy::BackgroundCorrection
@ BackgroundCorrection
Background correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:32
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
MuonCalib::MuonSegmentToCalibSegment::getGlobalToStation
Amg::Transform3D getGlobalToStation(const Identifier &id, const MuonGM::MuonDetectorManager *MuonDetMgr) const
Definition: MuonSegmentToCalibSegment.cxx:271
Trk::ParametersBase
Definition: ParametersBase.h:55
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
Muon::MdtDriftCircleOnTrack::driftRadius
double driftRadius() const
Returns the value of the drift radius.
Definition: MdtDriftCircleOnTrack.h:277
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
MdtCalibHit
Definition: MdtCalibHit.h:50
DataVector< Muon::MuonSegmentCombination >
Muon::MuonDriftCircleErrorStrategy::MagFieldCorrection
@ MagFieldCorrection
Magnetic field correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:29
Trk::MeasurementBase::localCovariance
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
Definition: MeasurementBase.h:138
Muon::CscPrepData::detectorElement
virtual const MuonGM::CscReadoutElement * detectorElement() const override final
Return the detector element corresponding to this PRD.
Definition: CscPrepData.h:148
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::PrepRawData
Definition: PrepRawData.h:62
MuonGM::nStrips
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelTgcTest.cxx:46
Muon::RpcClusterOnTrack::prepRawData
virtual const RpcPrepData * prepRawData() const override final
Returns the RpcPrepData - is a TRT_DriftCircle in this scope.
Definition: RpcClusterOnTrack.h:127
MuonCalib::MuonSegmentToCalibSegment::savePatterns
StatusCode savePatterns(const EventContext &ctx, std::unique_ptr< MuonCalibPatternCollection > newPatterns) const
save global patterns to storegate
Definition: MuonSegmentToCalibSegment.cxx:69
dso-stats.pat
pat
Definition: dso-stats.py:39
Trk::PrepRawData::identify
Identifier identify() const
return the identifier
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
MuonCalib::MuonSegmentToCalibSegment::m_maxStoredSegs
Gaudi::Property< int > m_maxStoredSegs
maximum number of segments each algorithm can store in ntuple
Definition: MuonSegmentToCalibSegment.h:101
MuonCalib::MuonSegmentToCalibSegment::m_CscSegKey
SG::ReadHandleKey< MuonSegmentCombinationCollection > m_CscSegKey
Definition: MuonSegmentToCalibSegment.h:68
Muon::MdtPrepData::tdc
int tdc() const
Returns the TDC (typically range is 0 to 2500).
Definition: MdtPrepData.h:145
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
MuonCalib::MuonSegmentToCalibSegment::m_updateForT0Shift
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...
Definition: MuonSegmentToCalibSegment.h:97
Trk::PrepRawData::localPosition
const Amg::Vector2D & localPosition() const
return the local position reference
Muon::MdtDriftCircleOnTrack
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
Definition: MdtDriftCircleOnTrack.h:37
charge
double charge(const T &p)
Definition: AtlasPID.h:756
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Muon::MdtPrepData
Class to represent measurements from the Monitored Drift Tubes.
Definition: MdtPrepData.h:33
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::RIO_OnTrack::prepRawData
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
Muon::CscClusterOnTrack::prepRawData
virtual const CscPrepData * prepRawData() const override final
Returns the CscPrepData - is a CscPrepData in this scope.
Definition: CscClusterOnTrack.h:154
Trk::MeasurementBase::localParameters
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Definition: MeasurementBase.h:132
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
MuonCalib::MuonSegmentToCalibSegment::m_DetectorManagerKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
MuonDetectorManager from the conditions store.
Definition: MuonSegmentToCalibSegment.h:80
MuonGM::RpcReadoutElement::StripWidth
double StripWidth(bool measphi) const
returns the strip width for the phi or eta plane
MuonCalib::MuonSegmentToCalibSegment::m_useCscSegments
Gaudi::Property< bool > m_useCscSegments
Definition: MuonSegmentToCalibSegment.h:64
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
Muon::CscClusterOnTrack
Class to represent the calibrated clusters created from CSC strips.
Definition: CscClusterOnTrack.h:47
a
TList * a
Definition: liststreamerinfos.cxx:10
CalibCoolCompareRT.nm
nm
Definition: CalibCoolCompareRT.py:110
y
#define y
h
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:50
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonCalib::MuonSegmentToCalibSegment::m_readSegments
Gaudi::Property< bool > m_readSegments
segment location
Definition: MuonSegmentToCalibSegment.h:63
Muon::MuonSegmentCombination::SegmentVec
std::vector< std::unique_ptr< MuonSegment > > SegmentVec
Definition: MuonSegmentCombination.h:32
Trk::RIO_OnTrack::identify
Identifier identify() const
return the identifier -extends MeasurementBase
Definition: RIO_OnTrack.h:152
DEBUG
#define DEBUG
Definition: page_access.h:11
MuonGM::MuonReadoutElement::identify
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:184
Muon::TgcPrepData
Class to represent TGC measurements.
Definition: TgcPrepData.h:32
MuonGM::MdtReadoutElement::surface
virtual const Trk::Surface & surface() const override final
Return surface associated with this detector element.
Definition: MuonDetDescr/MuonReadoutGeometry/src/MdtReadoutElement.cxx:891
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
extractSporadic.q
list q
Definition: extractSporadic.py:98
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
Trk::FitQuality::chiSquared
double chiSquared() const
returns the of the overall track fit
Definition: FitQuality.h:56
Trk::Segment::author
Author author() const
return segment author
Definition: Tracking/TrkEvent/TrkSegment/TrkSegment/Segment.h:199
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
Muon::MuonSegment::globalPosition
virtual const Amg::Vector3D & globalPosition() const override final
global position
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:157
MuonCalib::MuonSegmentToCalibSegment::createMuonCalibPattern
MuonCalibPattern * createMuonCalibPattern(const Muon::MuonPatternCombination *pat) const
Definition: MuonSegmentToCalibSegment.cxx:789
MuonGM::RpcReadoutElement::distanceToEtaReadout
double distanceToEtaReadout(const Amg::Vector3D &P) const
Definition: MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx:278
Trk::SpaceTimePointBase::time
float time() const
access to the measured time
Definition: SpaceTimePointBase.h:47
MuonCalib::MuonSegmentToCalibSegment::m_TrkSegKey
SG::ReadHandleKeyArray< Trk::SegmentCollection > m_TrkSegKey
Definition: MuonSegmentToCalibSegment.h:70
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
Muon::MuonSegment
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:45
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
beamspotnt.nt
def nt
Definition: bin/beamspotnt.py:1063
Muon::MuonPatternCombination
The MuonPatternCombination class provides the means to store the output of the initial global pattern...
Definition: MuonPatternCombination.h:29
Trk::Segment::fitQuality
const FitQuality * fitQuality() const
return the FitQuality object, returns NULL if no FitQuality is defined
Definition: Tracking/TrkEvent/TrkSegment/TrkSegment/Segment.h:160
MuonCalib::MuonSegmentToCalibSegment::m_CombSegKey
SG::ReadHandleKey< MuonSegmentCombinationCollection > m_CombSegKey
Definition: MuonSegmentToCalibSegment.h:66
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
error
Definition: IImpactPoint3dEstimator.h:70
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Muon::MdtPrepData::detectorElement
virtual const MuonGM::MdtReadoutElement * detectorElement() const override
Returns the detector element corresponding to this PRD.
Definition: MdtPrepData.h:141
Muon::MuonDriftCircleErrorStrategy::creationParameter
bool creationParameter(CreationParameter) const
Definition: MuonDriftCircleErrorStrategy.h:84
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:26
MuonCalib::MuonSegmentToCalibSegment::convertPatterns
StatusCode convertPatterns(const EventContext &ctx)
Definition: MuonSegmentToCalibSegment.cxx:77
MuonCalib::MuonCalibSegment::setAuthor
void setAuthor(int author)
sets author field
Definition: MuonCalibSegment.cxx:122
plotBeamSpotMon.nc
int nc
Definition: plotBeamSpotMon.py:83
MuonCalib::MuonSegmentToCalibSegment::createMuonCalibSegment
MuonCalibSegment * createMuonCalibSegment(const Muon::MuonSegment &seg, const MuonGM::MuonDetectorManager *MuonDetMgr) const
Definition: MuonSegmentToCalibSegment.cxx:305
Trk::StraightLineSurface
Definition: StraightLineSurface.h:51
Muon::MuonSegment::associatedSurface
virtual const Trk::PlaneSurface & associatedSurface() const override final
returns the surface for the local to global transformation
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:175
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
Muon::MuonSegment::globalDirection
const Amg::Vector3D & globalDirection() const
global direction
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:163
ServiceHandle< ICondSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
Identifier
Definition: IdentifierFieldParser.cxx:14
MuonGM::CscReadoutElement::cathodeReadoutPitch
double cathodeReadoutPitch(int chLayer, int measuresPhi) const
Definition: CscReadoutElement.cxx:147
MuonCalib::MuonSegmentToCalibSegment::m_assocTool
ToolHandle< Muon::IMuonPatternSegmentAssociationTool > m_assocTool
IdentifierTool initialization.
Definition: MuonSegmentToCalibSegment.h:89