ATLAS Offline Software
SegmentDriftCircleAssValidation.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "GaudiKernel/MsgStream.h"
6 #include "GaudiKernel/DataSvc.h"
7 #include "GaudiKernel/SmartDataPtr.h"
8 #include "GaudiKernel/IPartPropSvc.h"
9 
10 #include "TrkTrack/Track.h"
12 
14 
17 
18 #include "AtlasHepMC/GenVertex.h"
20 
21 // ReadHandle
22 #include "StoreGate/ReadHandle.h"
23 
24 using HepGeom::Point3D;
25 
27 // Constructor
29 
30 InDet::SegmentDriftCircleAssValidation::SegmentDriftCircleAssValidation (const std::string& name,ISvcLocator* pSvcLocator) :
31  AthAlgorithm(name,pSvcLocator),
32  m_nprint (0),
33  m_particleDataTable (nullptr),
34  m_tcut (0.),
35  m_events (0),
36  m_ncircles (0),
37  m_nqsegments (0)
38 {
39 
40  // SegmentDriftCircleAssValidation steering parameters
41  //
42  m_pTmin = 500. ;
43  m_rapcut = 2.1 ;
44  m_dccut = 10 ;
45  m_rmin = 0. ;
46  m_rmax = 20. ;
47 
48  declareProperty("pTmin", m_pTmin );
49  declareProperty("Pseudorapidity", m_rapcut );
50  declareProperty("MinNumberDCs" , m_dccut );
51  declareProperty("RadiusMin", m_rmin );
52  declareProperty("RadiusMax", m_rmax );
53 }
54 
56 // Initialisation
58 
60 {
61 
62  StatusCode sc;
63 
64  m_tcut = 1./tan(2.*atan(exp(-m_rapcut)));
65 
66  // Get output print level
67  //
68  if(msgLvl(MSG::DEBUG)){m_nprint=0; msg(MSG::DEBUG) << (*this) << endmsg;}
69 
70  // get the Particle Properties Service
71  //
72  IPartPropSvc* partPropSvc = nullptr;
73  sc = service("PartPropSvc", partPropSvc, true);
74  if (sc.isFailure()) {
75  msg(MSG::FATAL) << " Could not initialize Particle Properties Service" << endmsg;
76  return StatusCode::FAILURE;
77  }
78 
79  // Particle Data Table
80  //
81  m_particleDataTable = partPropSvc->PDT();
82  if(!m_particleDataTable) {
83  msg(MSG::FATAL) << " Could not initialize Particle Properties Service" << endmsg;
84  return StatusCode::FAILURE;
85  }
86 
87  // Erase statistics information
88  //
89  m_events = 0 ;
90 
91  for(int i=0; i!=5; ++i) m_efficiency[i] = 0;
92 
93  // Initialize ReadHandleKey
94  ATH_CHECK( m_origtrackKey.initialize() );
97 
98  return sc;
99 }
100 
102 // Execute
104 
106 {
107  msg(MSG::DEBUG) << " InDetSegmentDriftCircleAssValidation execute()" << endmsg;
108 
110 
111  if( !origColTracks.isValid() ){
112  msg(MSG::FATAL) << "No TRT tracks with name " << m_origtrackKey.key() << " found in StoreGate!" << endmsg;
113  return StatusCode::FAILURE;
114  }else{
115  msg(MSG::DEBUG) << "Found TRT trak collection " << m_origtrackKey.key() << " in StoreGate!" << endmsg;
116  }
117 
119 
120  if ( !prdCollection.isValid() ){
121  msg(MSG::FATAL) << "TRT PRD_MultiTruthCollection " << m_PRDTruthTRTKey.key() << " NOT found!" << endmsg;
122  return StatusCode::FAILURE;
123  } else {
124  msg(MSG::DEBUG) << "Got TRT PRD_MultiTruthCollection " << m_PRDTruthTRTKey.key() << endmsg;
125  }
126 
127  newCirclesEvent( prdCollection.cptr() );
129 
130  tracksComparison( origColTracks.cptr(), prdCollection.cptr() );
131 
132  if(m_particles.size() > 0) {
133 
135 
136  }
137 
138  if(msgLvl(MSG::DEBUG)){m_nprint=1; msg(MSG::DEBUG) << (*this) << endmsg;}
139 
140  return StatusCode::SUCCESS;
141 }
142 
144 // Finalize
146 
148 
149  if(m_events<=0) return StatusCode::SUCCESS;
150 
151  std::cout<<"|-----------------------------------------------------------------------------------|"
152  <<std::endl;
153  std::cout<<"| TrackSegmentValidation statistics"<<std::endl;
154 
155  double ne = double(m_events);
156  double ef[5]; for(int i=0; i!=5; ++i) ef[i] = double(m_efficiency[i])/ne;
157 
158  std::cout<<"|-----------------------------------------------------------------------------------|"
159  <<std::endl;
160  std::cout<<"| TRT Particles >0.9 >0.75 >0.50 >0.25 <=0.25 |"
161  <<std::endl;
162  std::cout<<"|-----------------------------------------------------------------------------------|"
163  <<std::endl;
164 
165  std::cout<<"| "
166  <<std::setw(6)<<m_events<<" "
167  <<std::setw(13)<<std::setprecision(5)<<ef[0]
168  <<std::setw(13)<<std::setprecision(5)<<ef[1]
169  <<std::setw(13)<<std::setprecision(5)<<ef[2]
170  <<std::setw(13)<<std::setprecision(5)<<ef[3]
171  <<std::setw(13)<<std::setprecision(5)<<ef[4]<<" |"
172  <<std::endl;
173  std::cout<<"|-----------------------------------------------------------------------------------|"
174  <<std::endl;
175 
176  return StatusCode::SUCCESS;
177 }
178 
180 // Overload of << operator MsgStream
182 
183 MsgStream& InDet::operator <<
184  (MsgStream& sl,const InDet::SegmentDriftCircleAssValidation& se)
185 {
186  return se.dump(sl);
187 }
188 
190 // Overload of << operator std::ostream
192 
193 std::ostream& InDet::operator <<
194  (std::ostream& sl,const InDet::SegmentDriftCircleAssValidation& se)
195 {
196  return se.dump(sl);
197 }
198 
200 // Dumps relevant information into the MsgStream
202 
203 MsgStream& InDet::SegmentDriftCircleAssValidation::dump( MsgStream& out ) const
204 {
205  out<<std::endl;
206  if(m_nprint) return dumpevent(out);
207  return dumptools(out);
208 }
209 
211 // Dumps conditions information into the MsgStream
213 
215 {
216  int n;
217 
218  out<<"|----------------------------------------------------------------"
219  <<"----------------------------------------------------|"
220  <<std::endl;
221  n = 65-m_origtrackKey.key().size();
222  std::string s1; for(int i=0; i<n; ++i) s1.append(" "); s1.append("|");
223  n = 65-m_circlesTRTKey.key().size();
224  std::string s2; for(int i=0; i<n; ++i) s2.append(" "); s2.append("|");
225  n = 65-m_PRDTruthTRTKey.key().size();
226  std::string s3; for(int i=0; i<n; ++i) s3.append(" "); s3.append("|");
227 
228  out<<"| Location of input segmentss | "<<m_origtrackKey.key() <<s1
229  <<std::endl;
230  out<<"| TRT clusters | "<<m_circlesTRTKey.key() <<s2
231  <<std::endl;
232  out<<"| Truth location for trt | "<<m_PRDTruthTRTKey.key() <<s3
233  <<std::endl;
234  out<<"| pT cut | "
235  <<std::setw(14)<<std::setprecision(5)<<m_pTmin
236  <<" |"
237  <<std::endl;
238  out<<"| rapidity cut | "
239  <<std::setw(14)<<std::setprecision(5)<<m_rapcut
240  <<" |"
241  <<std::endl;
242  out<<"| min Radius | "
243  <<std::setw(14)<<std::setprecision(5)<<m_rmin
244  <<" |"
245  <<std::endl;
246  out<<"| max Radius | "
247  <<std::setw(14)<<std::setprecision(5)<<m_rmax
248  <<" |"
249  <<std::endl;
250  out<<"| Min. number drift circles for generated segment | "
251  <<std::setw(14)<<std::setprecision(5)<<m_dccut
252  <<" |"
253  <<std::endl;
254  out<<"|----------------------------------------------------------------"
255  <<"----------------------------------------------------|"
256  <<std::endl;
257 
258  return out;
259 }
260 
262 // Dumps event information into the ostream
264 
266 {
267  out<<"|---------------------------------------------------------------------|"
268  <<std::endl;
269  out<<"| TRT Drift Circles | "
270  <<std::setw(12)<<m_ncircles
271  <<" |"<<std::endl;
272  out<<"| Good TRT particles size | "
273  <<std::setw(12)<<m_particles.size()
274  <<" |"<<std::endl;
275  out<<"| Number good kine segments | "
276  <<std::setw(12)<<m_nqsegments
277  <<" |"<<std::endl;
278  out<<"|---------------------------------------------------------------------|"
279  <<std::endl;
280 
281  return out;
282 }
283 
285 // Dumps relevant information into the ostream
287 
288 std::ostream& InDet::SegmentDriftCircleAssValidation::dump( std::ostream& out ) const
289 {
290  return out;
291 }
292 
294 // New event for drift circles information
296 
298 {
299  m_ncircles = 0;
300  m_kinecircle.clear();
301  m_allBarcodes.clear();
302 
303  // Get Drift Circles container
304  //
306 
307  // Loop through all pixel clusters
308  //
309  if( trtcontainer.isValid() ) {
310 
311  InDet::TRT_DriftCircleContainer::const_iterator w = trtcontainer->begin();
312  InDet::TRT_DriftCircleContainer::const_iterator we = trtcontainer->end ();
313 
314  for(; w!=we; ++w) {
315 
316  InDet::TRT_DriftCircleCollection::const_iterator c = (*w)->begin();
317  InDet::TRT_DriftCircleCollection::const_iterator ce = (*w)->end ();
318 
319  for(; c!=ce; ++c) {
320 
321  ++m_ncircles;
322 
323  std::list<int> lk = kine((*c), prdCollection );
324  if(int(lk.size())==0) continue;
325  std::list<int>::iterator ik,ike=lk.end();
326  for(ik=lk.begin();ik!=ike;++ik){
327  if(!isTheSameStrawElement((*ik),(*c))) {
328  m_kinecircle.insert(std::make_pair((*ik),(*c)));
329  bool isThere = false;
331  for(ii=m_allBarcodes.begin();ii!=iie;++ii) {
332  if((*ik)==(*ii)) isThere = true;
333  }
334  if(!isThere) m_allBarcodes.push_back((*ik));
335  }
336  }
337  }
338  }
339  }
340 }
341 
343 // Good kine segments selection
345 
347 {
348  m_particles.clear();
349  m_allParticles.clear();
350 
351  if (m_kinecircle.empty()) return 0;
352 
354  for(ii=m_allBarcodes.begin();ii!=iie;++ii) {
355  int ndc = 0;
357  for(; dc!=m_kinecircle.end(); ++dc) {
358  if((*ii)==(*dc).first) ndc++;
359  }
360  m_allParticles.insert(std::make_pair((*ii),ndc));
361  }
362 
363  int t = 0;
365  for(im=m_allParticles.begin(); im!=ime; ++im) {
366  if((*im).second>=m_dccut){
367  m_particles.push_back((*im).first);
368  ++t;
369  }else{
370  m_kinecircle.erase((*im).first);
371  }
372  }
373 
374  return t;
375 }
376 
378 // Recontructed segment comparison with kine information
380 
382 {
383  if(!m_nqsegments) return;
384 
385  m_tracks.clear();
386 
387  int KINE[200],NKINE[200];
388  for(int i=0;i<200;++i){
389  KINE[i] =0; NKINE[i] = 0;
390  }
391 
392  Trk::SegmentCollection::const_iterator iseg = origColTracks->begin();
393  Trk::SegmentCollection::const_iterator isegEnd = origColTracks->end();
394  for(; iseg != isegEnd; ++ iseg) {
395 
397  const Trk::TrackSegment *tS = dynamic_cast<const Trk::TrackSegment*>(*iseg);
398  if(!tS) continue;
399 
400  int NK = 0;
401 
402  for(int it=0; it<int(tS->numberOfMeasurementBases()); ++it){
403  //test if it is a pseudo measurement
404  if ( dynamic_cast<const Trk::PseudoMeasurementOnTrack*>(tS->measurement(it)) ) continue;
405 
406  const InDet::TRT_DriftCircleOnTrack* trtcircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>(tS->measurement(it));
407  if(!trtcircle) continue;
408 
409  const InDet::TRT_DriftCircle* RawDataClus=dynamic_cast<const InDet::TRT_DriftCircle*>(trtcircle->prepRawData());
410  if(!RawDataClus) continue;
411 
412  std::list<PRD_MultiTruthCollection::const_iterator> lk = kinpart(RawDataClus, prdCollection );
413  if (int(lk.size())==0) continue;
415 
416  //* looping over the returned list of genParticles
417  for(ik=lk.begin(); ik!=ike; ++ik){
418  int k = (*ik)->second.barcode();
419  if (k<=0) continue;
420  int m = -1;
421 
422  for(int n=0; n!=NK; ++n) {
423  if(k==KINE[n]) {
424  ++NKINE[n];
425  m=n;
426  break;
427  }
428  }
429 
430  if(m<0) {
431  KINE[NK] = k;
432  NKINE[NK] = 1;
433  if(NK < 200) ++NK;
434  }
435  }
436  }
437  int nm = 0, m = 0;
438  for(int n=0; n!=NK; ++n) {
439  if(NKINE[n] > m) {
440  nm = n;
441  m=NKINE[n];
442  }
443  }
444  m_tracks.insert(std::make_pair(KINE[nm],m) ); //* if m=0, the KINE[nm] will be set to the previous one
445  }
446 }
447 
449 // Particles and reconstructed segments comparision
451 
453 {
454  if(m_particles.empty()) return;
456 
457  for (auto k: m_particles) {
458 
460  int n = (*im).second;
461 
462  int m = 0;
463  t = m_tracks.find(k);
464  for(; t!=te; ++t) { //* check if reaching the end of the multimap instead
465  if((*t).first!=k) break;
466  if((*t).second > m) m = (*t).second;
467  }
468  int d = 0;
469  double rd = (double)m/n; if(rd>0.9) d = 0;
470  else if(rd > 0.75) d=1;
471  else if(rd > 0.50) d=2;
472  else if(rd > 0.25) d=3;
473  else if(rd <= 0.25) d=4;
474  ++m_efficiency[d]; ++m_events;
475  }
476 
477 }
478 
480 // Pointer to particle production for drift circle
482 
484 (const InDet::TRT_DriftCircle* d, const PRD_MultiTruthCollection* prdCollection )
485 {
486  std::list<int> lk;
487  bool find;
488  std::list<PRD_MultiTruthCollection::const_iterator> mc = findTruth(d,find, prdCollection );
489  if(!find) return lk;
491  for(imc=mc.begin();imc!=imce;++imc){
492  int k = (*imc)->second.barcode(); if(k<=0) continue;
493 
494  HepMC::ConstGenParticlePtr pa = (*imc)->second.cptr();
495  if(!pa || !pa->production_vertex()) continue;
496 
497  // Charge != 0 test
498  //
499  int pdg = pa->pdg_id();
500  const HepPDT::ParticleData* pd = m_particleDataTable->particle(abs(pdg));
501  if(!pd || std::abs(pd->charge()) < .5) continue;
502 
503  // pT cut
504  //
505  double pt = pa->momentum().perp();
506  if( pt < m_pTmin ) continue;
507 
508  // Rapidity cut
509  //
510  double t = std::abs(pa->momentum().pz())/pt;
511  if( t > m_tcut ) continue;
512 
513  // Radius cut
514  //
515  Point3D<double> v(pa->production_vertex()->position().x(),
516  pa->production_vertex()->position().y(),
517  pa->production_vertex()->position().z());
518  double r = sqrt(v.x()*v.x()+v.y()*v.y());
519  if( r < m_rmin || r > m_rmax) continue;
520 
521  lk.push_back(k);
522  }
523 
524  return lk;
525 }
526 
528 // Pointer to particle production for drift circle
530 
531 std::list<PRD_MultiTruthCollection::const_iterator> InDet::SegmentDriftCircleAssValidation::kinpart
532 (const InDet::TRT_DriftCircle* d, const PRD_MultiTruthCollection* prdCollection )
533 {
534 
535  std::list<PRD_MultiTruthCollection::const_iterator> lk;
536  bool find;
537  std::list<PRD_MultiTruthCollection::const_iterator> mc = findTruth(d,find, prdCollection );
538  if(!find) return lk;
539 
541  for(imc=mc.begin();imc!=imce;++imc){
542 
543  int k = (*imc)->second.barcode(); if(k<=0) continue;
544 
545  HepMC::ConstGenParticlePtr pa = (*imc)->second.cptr();
546  if(!pa || !pa->production_vertex()) continue;
547 
548  // Charge != 0 test
549  //
550  int pdg = pa->pdg_id();
551  const HepPDT::ParticleData* pd = m_particleDataTable->particle(abs(pdg));
552  if(!pd || std::abs(pd->charge()) < .5) continue;
553 
554  // pT cut
555  //
556  double pt = pa->momentum().perp();
557  if( pt < m_pTmin ) continue;
558 
559 
560  // Rapidity cut
561  //
562  double t = std::abs(pa->momentum().pz())/pt;
563  if( t > m_tcut ) continue;
564 
565  // Radius cut
566  //
567  Point3D<double> v(pa->production_vertex()->position().x(),
568  pa->production_vertex()->position().y(),
569  pa->production_vertex()->position().z());
570  double r = sqrt(v.x()*v.x()+v.y()*v.y());
571  if( r < m_rmin || r > m_rmax) continue;
572 
573  lk.push_back((*imc));
574  }
575 
576  return lk;
577 }
578 
580 // Test detector element
582 
584 (int K,const Trk::PrepRawData* d)
585 {
587  for(; k!=m_kinecircle.end(); ++k) {
588 
589  if((*k).first!= K) return false;
590  if(d->detectorElement()==(*k).second->detectorElement()) return true;
591  }
592  return false;
593 }
594 
596 // Drift Circle truth information
598 std::list<PRD_MultiTruthCollection::const_iterator>
600 {
601  Q = true;
602  std::list<PRD_MultiTruthCollection::const_iterator> mc;
603  if (d) {
604  auto r = prdCollection->equal_range(d->identify());
605  for( auto i = r.first; i != r.second && i != prdCollection->end(); ++i){
606  mc.push_back(i);
607  }
608  }
609  if (mc.empty()) Q = false;
610 
611  return mc;
612 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
beamspotman.r
def r
Definition: beamspotman.py:676
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
InDet::TRT_DriftCircleOnTrack::prepRawData
virtual const TRT_DriftCircle * prepRawData() const override final
returns the PrepRawData - is a TRT_DriftCircle in this scope
Definition: TRT_DriftCircleOnTrack.h:202
InDet::SegmentDriftCircleAssValidation::m_ncircles
int m_ncircles
Definition: SegmentDriftCircleAssValidation.h:74
InDet::SegmentDriftCircleAssValidation::m_events
int m_events
Definition: SegmentDriftCircleAssValidation.h:73
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
InDet::SegmentDriftCircleAssValidation::m_rmax
double m_rmax
Definition: SegmentDriftCircleAssValidation.h:71
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
InDet::SegmentDriftCircleAssValidation::m_origtrackKey
SG::ReadHandleKey< Trk::SegmentCollection > m_origtrackKey
Definition: SegmentDriftCircleAssValidation.h:62
InDet::SegmentDriftCircleAssValidation::m_dccut
int m_dccut
Definition: SegmentDriftCircleAssValidation.h:69
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
InDet::SegmentDriftCircleAssValidation::m_rapcut
double m_rapcut
Definition: SegmentDriftCircleAssValidation.h:68
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDet::SegmentDriftCircleAssValidation::dumptools
MsgStream & dumptools(MsgStream &out) const
Definition: SegmentDriftCircleAssValidation.cxx:214
hist_file_dump.d
d
Definition: hist_file_dump.py:137
InDet::SegmentDriftCircleAssValidation::findTruth
std::list< PRD_MultiTruthCollection::const_iterator > findTruth(const InDet::TRT_DriftCircle *, bool &, const PRD_MultiTruthCollection *)
Definition: SegmentDriftCircleAssValidation.cxx:599
PRD_MultiTruthCollection
A PRD is mapped onto all contributing particles.
Definition: PRD_MultiTruthCollection.h:24
GenVertex.h
skel.it
it
Definition: skel.GENtoEVGEN.py:423
test_pyathena.pt
pt
Definition: test_pyathena.py:11
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
python.atlas_oh.im
im
Definition: atlas_oh.py:167
AthCommonMsg< Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
InDet::SegmentDriftCircleAssValidation::dump
MsgStream & dump(MsgStream &out) const
Definition: SegmentDriftCircleAssValidation.cxx:203
InDet::SegmentDriftCircleAssValidation::m_pTmin
double m_pTmin
Definition: SegmentDriftCircleAssValidation.h:66
InDet::SegmentDriftCircleAssValidation::kine
std::list< int > kine(const InDet::TRT_DriftCircle *, const PRD_MultiTruthCollection *prdCollection)
Definition: SegmentDriftCircleAssValidation.cxx:484
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::TrackSegment
Definition: TrackSegment.h:56
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
InDet::SegmentDriftCircleAssValidation::isTheSameStrawElement
bool isTheSameStrawElement(int, const Trk::PrepRawData *)
Definition: SegmentDriftCircleAssValidation.cxx:584
keylayer_zslicemap.se
se
Definition: keylayer_zslicemap.py:194
InDet::TRT_DriftCircleOnTrack
Definition: TRT_DriftCircleOnTrack.h:53
InDet::SegmentDriftCircleAssValidation::dumpevent
MsgStream & dumpevent(MsgStream &out) const
Definition: SegmentDriftCircleAssValidation.cxx:265
InDet::TRT_DriftCircle
Definition: TRT_DriftCircle.h:32
InDet::SegmentDriftCircleAssValidation::SegmentDriftCircleAssValidation
SegmentDriftCircleAssValidation(const std::string &name, ISvcLocator *pSvcLocator)
Definition: SegmentDriftCircleAssValidation.cxx:30
InDet::SegmentDriftCircleAssValidation::m_particleDataTable
const HepPDT::ParticleDataTable * m_particleDataTable
Definition: SegmentDriftCircleAssValidation.h:63
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
InDet::SegmentDriftCircleAssValidation::m_tracks
std::multimap< int, int > m_tracks
Definition: SegmentDriftCircleAssValidation.h:80
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Trk::Segment::numberOfMeasurementBases
unsigned int numberOfMeasurementBases() const
Return the number of contained Trk::MeasurementBase (s)
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:193
TrackSegment.h
InDet::SegmentDriftCircleAssValidation::newCirclesEvent
void newCirclesEvent(const PRD_MultiTruthCollection *)
Definition: SegmentDriftCircleAssValidation.cxx:297
InDet::SegmentDriftCircleAssValidation::QualityTracksSelection
int QualityTracksSelection()
Definition: SegmentDriftCircleAssValidation.cxx:346
InDet::SegmentDriftCircleAssValidation::m_nqsegments
int m_nqsegments
Definition: SegmentDriftCircleAssValidation.h:77
Track.h
InDet::SegmentDriftCircleAssValidation::m_particles
std::list< int > m_particles
Definition: SegmentDriftCircleAssValidation.h:78
Trk::PseudoMeasurementOnTrack
Class to handle pseudo-measurements in fitters and on track objects.
Definition: PseudoMeasurementOnTrack.h:44
SegmentDriftCircleAssValidation.h
InDet::SegmentDriftCircleAssValidation
Definition: SegmentDriftCircleAssValidation.h:30
mc
Definition: mc.PG_single_nu_valid.py:1
InDet::SegmentDriftCircleAssValidation::m_nprint
int m_nprint
Definition: SegmentDriftCircleAssValidation.h:61
lumiFormat.i
int i
Definition: lumiFormat.py:92
beamspotman.n
n
Definition: beamspotman.py:731
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
InDet::SegmentDriftCircleAssValidation::m_rmin
double m_rmin
Definition: SegmentDriftCircleAssValidation.h:70
TrackCollection.h
PseudoMeasurementOnTrack.h
Trk::Segment::measurement
const MeasurementBase * measurement(unsigned int) const
returns the Trk::MeasurementBase objects depending on the integer
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:184
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
TRT_DriftCircleOnTrack.h
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
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
DataVector< Trk::Segment >
InDet::SegmentDriftCircleAssValidation::efficiencyReconstruction
void efficiencyReconstruction()
Definition: SegmentDriftCircleAssValidation.cxx:452
AthAlgorithm
Definition: AthAlgorithm.h:47
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
InDet::SegmentDriftCircleAssValidation::kinpart
std::list< PRD_MultiTruthCollection::const_iterator > kinpart(const InDet::TRT_DriftCircle *, const PRD_MultiTruthCollection *)
Definition: SegmentDriftCircleAssValidation.cxx:532
Trk::PrepRawData
Definition: PrepRawData.h:62
HepMC::ConstGenParticlePtr
const GenParticle * ConstGenParticlePtr
Definition: GenParticle.h:38
ReadCellNoiseFromCoolCompare.s3
s3
Definition: ReadCellNoiseFromCoolCompare.py:380
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
InDet::SegmentDriftCircleAssValidation::m_efficiency
int m_efficiency[5]
Definition: SegmentDriftCircleAssValidation.h:81
InDet::SegmentDriftCircleAssValidation::tracksComparison
void tracksComparison(const Trk::SegmentCollection *, const PRD_MultiTruthCollection *)
Definition: SegmentDriftCircleAssValidation.cxx:381
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
python.PyAthena.v
v
Definition: PyAthena.py:157
InDet::SegmentDriftCircleAssValidation::m_kinecircle
std::multimap< int, const Trk::PrepRawData * > m_kinecircle
Definition: SegmentDriftCircleAssValidation.h:75
InDet::SegmentDriftCircleAssValidation::m_allBarcodes
std::list< int > m_allBarcodes
Definition: SegmentDriftCircleAssValidation.h:76
CalibCoolCompareRT.nm
nm
Definition: CalibCoolCompareRT.py:110
InDet::SegmentDriftCircleAssValidation::m_PRDTruthTRTKey
SG::ReadHandleKey< PRD_MultiTruthCollection > m_PRDTruthTRTKey
Definition: SegmentDriftCircleAssValidation.h:64
DEBUG
#define DEBUG
Definition: page_access.h:11
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
InDet::SegmentDriftCircleAssValidation::m_circlesTRTKey
SG::ReadHandleKey< TRT_DriftCircleContainer > m_circlesTRTKey
Definition: SegmentDriftCircleAssValidation.h:65
InDet::SegmentDriftCircleAssValidation::finalize
StatusCode finalize()
Definition: SegmentDriftCircleAssValidation.cxx:147
ReadHandle.h
Handle class for reading from StoreGate.
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
covarianceTool.mc
mc
Definition: covarianceTool.py:554
InDet::SegmentDriftCircleAssValidation::initialize
StatusCode initialize()
Definition: SegmentDriftCircleAssValidation.cxx:59
python.compressB64.c
def c
Definition: compressB64.py:93
InDet::SegmentDriftCircleAssValidation::m_tcut
double m_tcut
Definition: SegmentDriftCircleAssValidation.h:67
InDet::SegmentDriftCircleAssValidation::m_allParticles
std::multimap< int, int > m_allParticles
Definition: SegmentDriftCircleAssValidation.h:79
LheEventFiller_Common.ef
ef
Definition: SFGen_i/share/common/LheEventFiller_Common.py:7
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
InDet::SegmentDriftCircleAssValidation::execute
StatusCode execute()
Definition: SegmentDriftCircleAssValidation.cxx:105