ATLAS Offline Software
TRT_TrackSegmentsMaker_ATLxk.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // Implementation file for class TRT_TrackSegmentsMaker_ATLxk
8 // (c) ATLAS Detector software
10 // AlgTool used for TRT_DriftCircleOnTrack object production
12 // Version 1.0 21/04/2004 I.Gavrilenko
14 
16 
19 #include "TrkSurfaces/DiscBounds.h"
25 #include "StoreGate/ReadHandle.h"
26 #include <cmath>
28 // Constructor
30 
32 (const std::string& t,const std::string& n,const IInterface* p)
33  : AthAlgTool(t,n,p),
34  m_fieldmode ("MapSolenoid" ),
35  m_removeNoise (true ),
36  m_clustersCut (10 ),
37  m_pTmin (500. ),
38  m_sharedfrac (0.3 ),
39  m_nPhi (500 ),
40  m_nMom (70 )
41 {
42  declareInterface<ITRT_TrackSegmentsMaker>(this);
43 
44  declareProperty("MagneticFieldMode" ,m_fieldmode );
45  declareProperty("NumberAzimuthalChannel" ,m_nPhi );
46  declareProperty("NumberMomentumChannel" ,m_nMom );
47  declareProperty("MinNumberDriftCircles" ,m_clustersCut );
48  declareProperty("RemoveNoiseDriftCircles",m_removeNoise );
49  declareProperty("pTmin" ,m_pTmin );
50  declareProperty("sharedFrac" ,m_sharedfrac );
51 
52 }
53 
55 // Destructor
58 = default;
59 
60 
61 
63 // Initialisation
65 
67 {
69 
70  // Get tTools servise
71  //
72  IToolSvc* toolSvc;
73  if((sc=service("ToolSvc", toolSvc)).isFailure()){
74  ATH_MSG_FATAL("Tool service not found !");
75  return sc;
76  }
77 
78  // Initiate magnetic field properties
79  //
81 
82  // Initialize ReadHandle
83  //
85 
86  // Get tool for track extension to TRT
87  //
88  if(m_extensionTool.retrieve().isFailure()) {
89  ATH_MSG_FATAL("Failed to retrieve tool "<< m_extensionTool);
90  return StatusCode::FAILURE;
91  }
92  ATH_MSG_DEBUG("Retrieved tool " << m_extensionTool);
93 
94  // PRD-to-track association (optional)
97 
98  // TRT
99  if (detStore()->retrieve(m_trtid, "TRT_ID").isFailure()) {
100  ATH_MSG_FATAL("Could not get TRT ID helper");
101  return StatusCode::FAILURE;
102  }
103 
104  //Define set of private variables
105  m_Ts = m_nPhi*m_nMom ;
106  m_Psi = 2./float(m_nMom-1) ;
107  m_Psi128 = m_Psi*128. ;
108  m_Ns128 = m_nPhi*128 ;
109  m_A = float(m_nPhi)/(2.*M_PI) ;
110  m_Ai = 1./m_A ;
111  m_histsize = (m_nPhi*m_nMom*26/4) ;
112 
113  // Get output print level
114  //
115  m_outputlevel = msg().level()-MSG::DEBUG;
116  return sc;
117 }
118 
120 // Finalize
122 
124 {
125  StatusCode sc = AlgTool::finalize(); return sc;
126 }
127 
129 // Initialize tool for new event
131 
132 std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>
133 InDet::TRT_TrackSegmentsMaker_ATLxk::newEvent(const EventContext &ctx) const
134 {
135 
136  const float pi2 = 2.*M_PI;
137 
139 
140  // Get drift circles collection
141  //
143  if(not trtcontainer.isValid()) {
144  std::stringstream msg;
145  msg << name() << " Missing TRT_DriftCircleContainer " << m_trtname.key();
146  throw std::runtime_error(msg.str());
147  }
148 
149  SG::ReadHandle<Trk::PRDtoTrackMap> prd_to_track_map;
150  const Trk::PRDtoTrackMap *prd_to_track_map_cptr = nullptr;
151  if (!m_prdToTrackMap.key().empty()) {
153  if (!prd_to_track_map.isValid()) {
154  ATH_MSG_ERROR("Failed to read PRD to track association map: " << m_prdToTrackMap.key());
155  }
156  prd_to_track_map_cptr = prd_to_track_map.cptr();
157  }
158 
159 
160  std::unique_ptr<TRT_TrackSegmentsMaker_ATLxk::EventData>
161  event_data = std::make_unique<TRT_TrackSegmentsMaker_ATLxk::EventData>(trtcontainer.cptr(), condData.m_cirsize);
162 
163  // Initiate extension tool
164  //
165  event_data->m_extEventData = m_extensionTool->newEvent(ctx);
166 
167  InDet::TRT_DriftCircleContainer::const_iterator
168  w = trtcontainer->begin(),we = trtcontainer->end();
169  int n = 0;
170  if(w!=we) {
171 
172  eraseHistogramm(*event_data);
173 
174  for(; w!=we; ++w) {
175 
176  if(n >= condData.m_cirsize) break;
177 
178  Identifier ID = (*w)->identify();
179  int be = m_trtid->barrel_ec (ID);
180  int lw = m_trtid->layer_or_wheel(ID);
181  int sl = m_trtid->straw_layer (ID);
182 
183  int b; be < 0 ? b = be+2 : b = be+1;
184  int l = condData.m_flayers[b][lw]+sl;
185  unsigned int sb = condData.m_begin[b][l];
186  unsigned int se = condData.m_end [b][l];
187  unsigned int ad = 1000*b+l;
188 
189  // Loop through all clusters from given detector element
190  //
191  InDet::TRT_DriftCircleCollection::const_iterator
192  c = (*w)->begin(), ce = (*w)->end();
193  for(; c!=ce; ++c) {
194 
195  if(prd_to_track_map_cptr && prd_to_track_map_cptr->isUsed(*(*c))) continue;
196  if(m_removeNoise && (*c)->isNoise() ) continue;
197 
198  if(n >= condData.m_cirsize) break;
199 
200  int ns = m_trtid->straw((*c)->identify());
201  const Amg::Vector3D& sc = (*c)->detectorElement()->strawCenter(ns);
202  float Fs = std::atan2(sc.y(),sc.x()); if(Fs<0.) Fs+=pi2;
203  event_data->m_circles[n].set((*c),Fs,ad);
204 
205  // Loop through all dz/dr for given cluster
206  //
207  for(unsigned int s=sb; s<=se; ++s) fillHistogramm (Fs,s,*event_data);
208  ++n;
209  }
210  }
211  }
212  event_data->m_clusters = n;
213  return std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>(event_data.release());
214 }
215 
217 // Initialize tool for new region
219 
220 std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>
222 (const EventContext& ctx, const std::vector<IdentifierHash>& vTRT) const
223 {
224  const float pi2 = 2.*M_PI;
225 
227 
228  // Get drift cilrcles collection
229  //
231  if(not trtcontainer.isValid()) {
232  ATH_MSG_DEBUG("Could not get TRT_DriftCircleContainer");
233  }
234 
235  SG::ReadHandle<Trk::PRDtoTrackMap> prd_to_track_map;
236  const Trk::PRDtoTrackMap *prd_to_track_map_cptr = nullptr;
237  if (!m_prdToTrackMap.key().empty()) {
239  if (!prd_to_track_map.isValid()) {
240  ATH_MSG_ERROR("Failed to read PRD to track association map: " << m_prdToTrackMap.key());
241  }
242  prd_to_track_map_cptr = prd_to_track_map.cptr();
243  }
244 
245  std::unique_ptr<TRT_TrackSegmentsMaker_ATLxk::EventData>
246  event_data = std::make_unique<TRT_TrackSegmentsMaker_ATLxk::EventData>(trtcontainer.cptr(), condData.m_cirsize);
247 
248  if(trtcontainer.isValid()) {
249  // Initiate extension tool
250  //
251  event_data->m_extEventData = m_extensionTool->newEvent(ctx);
252 
253  eraseHistogramm(*event_data);
254 
255  std::vector<IdentifierHash>::const_iterator d=vTRT.begin(),de=vTRT.end();
256  int n = 0;
257  for(; d!=de; ++d) {
258 
259  const auto *w = trtcontainer->indexFindPtr((*d));
260 
261  if(w!=nullptr) {
262 
263  Identifier ID = w->identify();
264  int be = m_trtid->barrel_ec (ID);
265  int lw = m_trtid->layer_or_wheel(ID);
266  int sl = m_trtid->straw_layer (ID);
267 
268  int b; be < 0 ? b = be+2 : b = be+1;
269  int l = condData.m_flayers[b][lw]+sl;
270  unsigned int sb = condData.m_begin[b][l];
271  unsigned int se = condData.m_end [b][l];
272  unsigned int ad = 1000*b+l;
273 
274  InDet::TRT_DriftCircleCollection::const_iterator
275  c = w->begin(), ce = w->end();
276 
277  for(; c!=ce; ++c) {
278 
279  if(prd_to_track_map_cptr && prd_to_track_map_cptr->isUsed(*(*c))) continue;
280  if(m_removeNoise && (*c)->isNoise() ) continue;
281 
282  if(n >= condData.m_cirsize) break;
283 
284  int ns = m_trtid->straw((*c)->identify());
285  const Amg::Vector3D& sc = (*c)->detectorElement()->strawCenter(ns);
286  float Fs = std::atan2(sc.y(),sc.x()); if(Fs<0.) Fs+=pi2;
287  event_data->m_circles[n].set((*c),Fs,ad);
288 
289  // Loop through all dz/dr for given cluster
290  //
291  for(unsigned int s=sb; s<=se; ++s) fillHistogramm (Fs,s,*event_data);
292  ++n;
293  }
294  }
295  }
296  event_data->m_clusters = n;
297  }
298  return std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData>( event_data.release() );
299 }
300 
302 // Inform tool about end of event or region investigation
304 
306 {
307  if (msgLvl(MSG::DEBUG)) {
310  dumpEvent(msg(MSG::DEBUG),event_data);
312  msg(MSG::DEBUG) << endmsg;
313  }
314 }
315 
317 // Methods for seeds production without vertex constraint
319 void InDet::TRT_TrackSegmentsMaker_ATLxk::find(const EventContext &ctx,
322 {
325 
326  event_data.m_sizebin_iterator = event_data.m_sizebin.rbegin();
327 
328  if(event_data.m_clusters<m_clustersCut) return;
329 
331 
332  event_data.m_clusterSegment.clear();
333  event_data.m_qualitySegment.clear();
334 
335  unsigned int mc = event_data.m_clusters;
336 
337  for(unsigned int n=0; n!=mc; ++n) {
338 
339  unsigned int b = event_data.m_circles[n].buffer();
340  unsigned int l = event_data.m_circles[n].layer ();
341  unsigned int sb = condData.m_begin[b][l];
342  unsigned int se = condData.m_end [b][l];
343 
344  // Loop through all dz/dr for given cluster
345  //
346  unsigned char max = 0;
347  unsigned int maxbin = 0;
348 
349  for(unsigned int s=sb; s<=se; ++s) {
350  analyseHistogramm(max,maxbin,event_data.m_circles[n].phi(),s,event_data);
351  }
352 
353  if(int(max) > m_clustersCut) {
354  event_data.m_bincluster.insert(std::make_pair(localMaximum(maxbin,event_data),n));
355  }
356  }
357 
359  bc,bce =event_data.m_bincluster.end();
360 
361  unsigned int nbins = 0 ;
362  unsigned int fbin = 99999999;
363  for(bc = event_data.m_bincluster.begin(); bc!=bce; ++bc) {
364 
365  if((*bc).first==fbin) ++nbins;
366  else {
367  if(fbin!=99999999 && nbins>=5) event_data.m_sizebin.insert(std::make_pair(nbins,fbin));
368  fbin=(*bc).first; nbins = 1;
369  }
370  }
371  if(fbin!=99999999 && nbins>=5) event_data.m_sizebin.insert(std::make_pair(nbins,fbin));
372  event_data.m_sizebin_iterator = event_data.m_sizebin.rbegin();
373 
374  // @TODO add to event data
375  SG::ReadHandle<Trk::PRDtoTrackMap> prd_to_track_map;
376  const Trk::PRDtoTrackMap *prd_to_track_map_cptr = nullptr;
377  if (!m_prdToTrackMap.key().empty()) {
379  if (!prd_to_track_map.isValid()) {
380  ATH_MSG_ERROR("Failed to read PRD to track association map: " << m_prdToTrackMap.key());
381  }
382  prd_to_track_map_cptr = prd_to_track_map.cptr();
383  }
384 
385  // Local reconstruction and track segments production
386  //
387  while(event_data.m_sizebin_iterator!=event_data.m_sizebin.rend()) {
388 
389  unsigned int bin =(*event_data.m_sizebin_iterator++).second;
390  findLocaly(ctx, bin,prd_to_track_map_cptr, event_data, used);
391  }
392 
393  // Final segments preparation
394  //
395  segmentsPreparation(event_data);
396 
397  event_data.m_segiterator = event_data.m_segments.begin();
398 }
399 
401 // Pseudo iterator
403 
405 {
408 
409  if(event_data.m_segiterator!=event_data.m_segments.end()) return (*event_data.m_segiterator++);
410  return nullptr;
411 }
412 
414 // Dumps relevant information into the MsgStream
416 
417 MsgStream& InDet::TRT_TrackSegmentsMaker_ATLxk::dump( MsgStream& out ) const
418 {
419  out<<std::endl;
420  return dumpConditions(out);
421 }
422 
424 // Dumps conditions information into the MsgStream
426 
428 {
429 
431 
432  std::string fieldmode[9] ={"NoField" ,"ConstantField","SolenoidalField",
433  "ToroidalField" ,"Grid3DField" ,"RealisticField" ,
434  "UndefinedField","AthenaField" , "?????" };
435 
437  if(mode<0 || mode>8 ) mode = 8;
438 
439  int n = 62-fieldmode[mode].size();
440  std::string s3; for(int i=0; i<n; ++i) s3.append(" "); s3.append("|");
441 
442  n = 62-m_trtname.key().size();
443  std::string s4; for(int i=0; i<n; ++i) s4.append(" "); s4.append("|");
444 
445  n = 62-m_extensionTool.type().size();
446  std::string s7; for(int i=0; i<n; ++i) s7.append(" "); s7.append("|");
447 
448 
449  out<<"|----------------------------------------------------------------------"
450  <<"-------------------|"
451  <<std::endl;
452  out<<"| Tool tracks extension | "<<m_extensionTool.type()<<s7<<std::endl;
453  out<<"| Magnetic field mode | "<<fieldmode[mode] <<s3<<std::endl;
454  out<<"| TRT container | "<<m_trtname.key().size() <<s4<<std::endl;
455  out<<"| Min. number straws | "
456  <<std::setw(12)<<m_clustersCut
457  <<" |"<<std::endl;
458  out<<"| Number neg. bar. layers | "
459  <<std::setw(12)<<condData.m_nlayers[1]
460  <<" |"<<std::endl;
461  out<<"| Number pos. bar. layers | "
462  <<std::setw(12)<<condData.m_nlayers[2]
463  <<" |"<<std::endl;
464  out<<"| Number neg. end. layers | "
465  <<std::setw(12)<<condData.m_nlayers[0]
466  <<" |"<<std::endl;
467  out<<"| Number pos. end. layers | "
468  <<std::setw(12)<<condData.m_nlayers[3]
469  <<" |"<<std::endl;
470  out<<"| Number neg. bar. straws | "
471  <<std::setw(12)<<condData.m_nstraws[1]
472  <<" |"<<std::endl;
473  out<<"| Number pos. bar. straws | "
474  <<std::setw(12)<<condData.m_nstraws[2]
475  <<" |"<<std::endl;
476  out<<"| Number neg. end. straws | "
477  <<std::setw(12)<<condData.m_nstraws[0]
478  <<" |"<<std::endl;
479  out<<"| Number pos. end. straws | "
480  <<std::setw(12)<<condData.m_nstraws[3]
481  <<" |"<<std::endl;
482  out<<"| Number azimut. channels | "
483  <<std::setw(12)<<m_nPhi
484  <<" |"<<std::endl;
485  out<<"| Number moment. channels | "
486  <<std::setw(12)<<m_nMom
487  <<" |"<<std::endl;
488  out<<"| Number histog. channels | "
489  <<std::setw(12)<<m_histsize
490  <<" |"<<std::endl;
491  out<<"| Number cluster links | "
492  <<std::setw(12)<<condData.m_cirsize
493  <<" |"<<std::endl;
494  out<<"| Use PRD-to-track assoc.?| "
495  <<std::setw(12)<< (!m_prdToTrackMap.key().empty() ? "yes" : "no ")
496  <<" |"<<std::endl;
497  out<<"| Remove noise ? | "
498  <<std::setw(12)<<m_removeNoise
499  <<" |"<<std::endl;
500  out<<"|----------------------------------------------------------------------"
501  <<"-------------------|"
502  <<std::endl;
503  return out;
504 }
505 
507 // Dumps event information into the MsgStream
509 
512 {
515  out<<"|----------------------------------------------------------------------"
516  <<"-------------------|"
517  <<std::endl;
518  out<<"| Number drift circles | "
519  <<std::setw(12)<<event_data.m_clusters
520  <<" |"<<std::endl;
521  out<<"| Number local calls | "
522  <<std::setw(12)<<event_data.m_nlocal
523  <<" |"<<std::endl;
524  out<<"| Number found segments | "
525  <<std::setw(12)<<event_data.m_nsegments
526  <<" |"<<std::endl;
527  out<<"| Number save segments | "
528  <<std::setw(12)<<event_data.m_segments.size()
529  <<" |"<<std::endl;
530  out<<"|----------------------------------------------------------------------"
531  <<"-------------------|"
532  <<std::endl;
533  return out;
534 }
535 
537 // Dumps relevant information into the ostream
539 
540 std::ostream& InDet::TRT_TrackSegmentsMaker_ATLxk::dump( std::ostream& out ) const
541 {
542  return out;
543 }
544 
546 // Erase histogramm
548 
550 {
551  for(int i=0; i!=m_histsize; i+=10) {
552 
553  event_data.m_U.H4[i ]=0;
554 
555  event_data.m_U.H4[i+1]=0;
556  event_data.m_U.H4[i+2]=0;
557  event_data.m_U.H4[i+3]=0;
558  event_data.m_U.H4[i+4]=0;
559  event_data.m_U.H4[i+5]=0;
560  event_data.m_U.H4[i+6]=0;
561  event_data.m_U.H4[i+7]=0;
562  event_data.m_U.H4[i+8]=0;
563  event_data.m_U.H4[i+9]=0;
564  }
565 }
566 
568 // Fill histogramm
570 
572 (float Fs,int s, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
573 {
575 
576  int s0 = condData.m_ndzdr[s]*m_Ts;
577  int f = int((Fs*m_A-condData.m_slope[s])*128.); if(f<0) f+=m_Ns128;
578  int sf = condData.m_islope[s];
579 
580  // Loop through all momentum slopes
581  //
582  for(int i=s0; i!=s0+m_Ts; i+=m_nPhi) {
583  int k =(f>>7); f+=sf; k<m_nPhi ? ++event_data.m_U.H[k+i] : ++event_data.m_U.H[k+i-m_nPhi];
584  }
585 }
586 
587 
589 // Analyse histogramm
591 
593 (unsigned char& max,unsigned int& maxbin,float Fs,int s, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
594 {
596 
597  int s0 = condData.m_ndzdr[s]*m_Ts;
598  int f = int((Fs*m_A-condData.m_slope[s])*128.); if(f<0) f+=m_Ns128;
599  int sf = condData.m_islope[s];
600 
601  // Loop through all momentum slopes
602  //
603  for(int i=s0; i!=s0+m_Ts; i+=m_nPhi) {
604  int k =(f>>7); f+=sf; if(k>=m_nPhi) k-=m_nPhi;
605  if(event_data.m_U.H[k+i] > max) max = event_data.m_U.H[maxbin = k+i];
606  }
607 }
608 
610 // TRT seeds production
612 
614  unsigned int bin,
615  const Trk::PRDtoTrackMap *prd_to_track_map,
618 {
620 
621  const double pi=M_PI, pi2 = 2.*M_PI;
622 
623  std::multimap<const InDet::TRT_DriftCircle*,Trk::TrackSegment*>::const_iterator
624  cse = event_data.m_clusterSegment.end();
625 
627  bc ,
628  bcb = event_data.m_bincluster.find(bin),
629  bce = event_data.m_bincluster.end() ;
630  int nfree = 0;
631  for(bc=bcb; bc!=bce; ++bc) {
632 
633  if((*bc).first!=bin) break;
634  if(event_data.m_clusterSegment.find(event_data.m_circles[(*bc).second].circle())==cse) ++nfree;
635  }
636  if(nfree<5) return;
637  unsigned int ndzdr = bin/m_Ts;
638  unsigned int b = bin-ndzdr*m_Ts;
639  unsigned int m = b/m_nPhi;
640  float c0 = (1.-float(m)*m_Psi)*m_Ai;
641 
642  bce=bc;
643  float fm = 0. ;
644  float Fo = 0. ;
645  bool first = false;
646  for(bc=bcb; bc!=bce; ++bc) {
647 
648  unsigned int n = (*bc).second;
649 
650  unsigned int b = event_data.m_circles[n].buffer();
651  unsigned int l = event_data.m_circles[n].layer ();
652  unsigned int s = condData.m_begin[b][l];
653  unsigned int se = condData.m_end [b][l];
654 
655  for(; s<= se; ++s) {if(condData.m_ndzdr[s]==ndzdr) break;}
656  if(s>se) continue;
657  float F = event_data.m_circles[n].phi()-condData.m_slope[s]*c0;
658 
659  if(!first) {
660  Fo = F; first = true;
661  }
662  else {
663  float df = F-Fo;
664  if (df > pi) df-=pi2;
665  else if(df <-pi) df+=pi2;
666  fm+=df;
667  }
668  }
669  fm = Fo+fm/float(nfree);
670 
671  if (fm > pi) fm = fmod(fm+pi,pi2)-pi;
672  else if(fm <-pi) fm = fmod(fm-pi,pi2)+pi;
673 
674  double pT = m_pTmin/(double(m)*m_Psi-1.);
675 
676  double pin = 1./(pT*std::sqrt((1.+condData.m_dzdr[ndzdr]*condData.m_dzdr[ndzdr])));
677 
678  Amg::Vector3D PSV(0.,0.,0.); Trk::PerigeeSurface PS(PSV);
679  auto Tp = PS.createUniqueTrackParameters(
680  0., 0., fm, std::atan2(1., condData.m_dzdr[ndzdr]), pin, std::nullopt);
681  ++event_data.m_nlocal;
682 
683  Trk::TrackSegment* seg = m_extensionTool->findSegment(ctx, Tp.get(), *(event_data.m_extEventData),used);
684  if(!seg) return;
685 
686  // Momentum cut
687  //
688  double T = seg->localParameters().get(Trk::theta );
689  double iP = seg->localParameters().get(Trk::qOverP);
690 
691  // ME: let's not use a soft cut here
692  if(std::sin(T) < 0.9*m_pTmin*std::abs(iP)) {delete seg; return;}
693 
694 
695  ++event_data.m_nsegments;
696 
697  bool isbarrel=false;
698  const Trk::MeasurementBase *lastmeas=seg->containedMeasurements().back();
699  if (std::abs(lastmeas->globalPosition().z())<750.) isbarrel=true;
700  // Number drift circles test
701  //
702  unsigned int size = isbarrel ? seg->numberOfMeasurementBases()-1 : seg->numberOfMeasurementBases()-2;
703 
704  if(int(size) < m_clustersCut) {delete seg; return;}
705 
706  std::vector<const Trk::MeasurementBase*>::const_iterator
707  s = seg->containedMeasurements().begin(), se = seg->containedMeasurements().end();
708 
709  if(prd_to_track_map) {
710 
711  // Test number unused drift circles
712  //
713  int nu = 0, ntot = 0;
714  for(++s; s!=se; ++s) {
715 
716  const Trk::RIO_OnTrack* rio = dynamic_cast<const Trk::RIO_OnTrack*>(*s);
717  if(rio) {
718  ++ntot;
719  if (prd_to_track_map->isUsed(*rio->prepRawData())) ++nu;
720  }
721  }
722  // ME: use fraction cut
723  if( nu > int(ntot*m_sharedfrac)) {delete seg; return;}
724  }
725 
726  // Save information about qiality and segment
727  //
728  int quality = size;
729  double Xi2 = seg->fitQuality()->chiSquared()/double(seg->fitQuality()->numberDoF());
730 
731  if(Xi2 > .5) {
732  if (Xi2 > 6) quality-=9;
733  else if(Xi2 > 5.) quality-=7;
734  else if(Xi2 > 3.) quality-=5;
735  else if(Xi2 > 2.) quality-=3;
736  else if(Xi2 > 1.) quality-=1;
737  }
738 
739  event_data.m_qualitySegment.insert(std::make_pair(quality,seg));
740 
741  s = seg->containedMeasurements().begin();
742 
743  // Save information about TRT clusters and segments
744  //
745  for(++s; s!=se; ++s) {
746  const Trk::RIO_OnTrack* rio = dynamic_cast<const Trk::RIO_OnTrack*>(*s);
747  if (!rio) continue;
748  const InDet::TRT_DriftCircle* dc = ((const InDet::TRT_DriftCircleOnTrack*)(*s))->prepRawData();
749  if(dc) event_data.m_clusterSegment.insert(std::make_pair(dc,seg));
750  }
751 }
752 
754 // Remove fake TRT segments
756 
758 {
759  std::multimap<int,Trk::TrackSegment*>::reverse_iterator
760  qs = event_data.m_qualitySegment.rbegin();
761 
762  for(; qs!=event_data.m_qualitySegment.rend(); ++qs) {
763 
764  int nfree = 0;
765 
766  std::vector<const Trk::MeasurementBase*>::const_iterator
767  s =(*qs).second->containedMeasurements().begin(),
768  se =(*qs).second->containedMeasurements().end ();
769 
770  for(++s; s!=se; ++s) {
771  const Trk::RIO_OnTrack* rio = dynamic_cast<const Trk::RIO_OnTrack*>(*s);
772  if (!rio) continue;
773 
774  const InDet::TRT_DriftCircle* dc = ((const InDet::TRT_DriftCircleOnTrack*)(*s))->prepRawData();
775  if(dc && event_data.m_clusterSegment.erase(dc)) ++nfree;
776  }
777  if(nfree >= 7) event_data.m_segments.push_back((*qs).second);
778  else delete (*qs).second;
779  }
780 }
781 
783 // Local maximum
785 
787 (unsigned int bin, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
788 {
789  int b = bin-(bin/m_Ts)*m_Ts ;
790  int m = b/m_nPhi ;
791  int f = b-m*m_nPhi ;
792  unsigned int maxb = bin ;
793  unsigned char max = event_data.m_U.H[bin];
794 
795  int a1 = bin-1; if(f== 0 ) a1+=m_nPhi; if(event_data.m_U.H[a1]>max) {max=event_data.m_U.H[a1]; maxb=a1;}
796  int a2 = bin+1; if(f==m_nPhi-1) a2-=m_nPhi; if(event_data.m_U.H[a2]>max) {max=event_data.m_U.H[a2]; maxb=a2;}
797 
798  if ( m < m_nMom-1) {
799 
800  int a = bin+m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
801  a = a1 +m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
802  a = a2 +m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
803 
804  }
805  if ( m > 0 ) {
806 
807  int a = bin-m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
808  a = a1 -m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
809  a = a2 -m_nPhi; if(event_data.m_U.H[a]>max) {max=event_data.m_U.H[a]; maxb=a;}
810  }
811  return maxb;
812 }
813 
815 {
816  // Build MagneticFieldProperties
817  //
821 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
used
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
CalculateHighPtTerm.pT
pT
Definition: ICHEP2016/CalculateHighPtTerm.py:57
InDet::TRT_TrackSegmentsMaker_ATLxk::findLocaly
void findLocaly(const EventContext &ctx, unsigned int, const Trk::PRDtoTrackMap *prd_to_track_map, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:613
InDet::TRT_TrackSegmentsToolCondData_xk::m_end
unsigned int m_end[4][200]
Definition: TRT_TrackSegmentsToolCondData_xk.h:18
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
InDet::TRT_TrackSegmentsMaker_ATLxk::m_outputlevel
int m_outputlevel
Definition: TRT_TrackSegmentsMaker_ATLxk.h:150
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_qualitySegment
std::multimap< int,Trk::TrackSegment * > m_qualitySegment
Definition: TRT_TrackSegmentsMaker_ATLxk.h:128
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
DiscBounds.h
InDet::TRT_TrackSegmentsMaker_ATLxk::dumpEvent
static MsgStream & dumpEvent(MsgStream &out, InDet::ITRT_TrackSegmentsMaker::IEventData &event_data)
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:510
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
ID
std::vector< Identifier > ID
Definition: CalibHitIDCheck.h:24
RectangleBounds.h
InDet::TRT_DriftCircleLinkN_xk::circle
const TRT_DriftCircle * circle() const
Definition: TRT_DriftCircleLinkN_xk.h:39
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
InDet::TRT_TrackSegmentsToolCondData_xk
Definition: TRT_TrackSegmentsToolCondData_xk.h:13
InDet::TRT_TrackSegmentsMaker_ATLxk::m_histsize
int m_histsize
Definition: TRT_TrackSegmentsMaker_ATLxk.h:162
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
InDet::TRT_TrackSegmentsMaker_ATLxk::dump
virtual MsgStream & dump(MsgStream &out) const override
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:417
InDet::TRT_TrackSegmentsMaker_ATLxk::m_pTmin
float m_pTmin
Definition: TRT_TrackSegmentsMaker_ATLxk.h:154
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
Trk::PRDtoTrackMap
Definition: PRDtoTrackMap.h:17
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
hist_file_dump.d
d
Definition: hist_file_dump.py:137
InDet::TRT_TrackSegmentsMaker_ATLxk::m_Ai
float m_Ai
Definition: TRT_TrackSegmentsMaker_ATLxk.h:159
InDet::TRT_TrackSegmentsMaker_ATLxk::m_nMom
int m_nMom
Definition: TRT_TrackSegmentsMaker_ATLxk.h:161
python.LumiCalcWorking.lw
lw
Definition: LumiCalcWorking.py:112
initialize
void initialize()
Definition: run_EoverP.cxx:894
InDet::TRT_DriftCircleLinkN_xk::layer
unsigned int layer() const
Definition: TRT_DriftCircleLinkN_xk.h:43
InDet::TRT_TrackSegmentsToolCondData_xk::m_begin
unsigned int m_begin[4][200]
Definition: TRT_TrackSegmentsToolCondData_xk.h:17
InDet::TRT_TrackSegmentsMaker_ATLxk::m_prdToTrackMap
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
Definition: TRT_TrackSegmentsMaker_ATLxk.h:147
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
python.PhysicalConstants.pi2
float pi2
Definition: PhysicalConstants.py:52
M_PI
#define M_PI
Definition: ActiveFraction.h:11
bin
Definition: BinsDiffFromStripMedian.h:43
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_clusterSegment
std::multimap< const InDet::TRT_DriftCircle *, Trk::TrackSegment * > m_clusterSegment
Definition: TRT_TrackSegmentsMaker_ATLxk.h:127
InDet::TRT_TrackSegmentsMaker_ATLxk::newEvent
virtual std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventData > newEvent(const EventContext &ctx) const override
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:133
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_extEventData
std::unique_ptr< InDet::ITRT_TrackExtensionTool::IEventData > m_extEventData
Definition: TRT_TrackSegmentsMaker_ATLxk.h:112
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_segiterator
std::list< Trk::TrackSegment * >::iterator m_segiterator
Definition: TRT_TrackSegmentsMaker_ATLxk.h:121
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
ReadCellNoiseFromCoolCompare.s4
s4
Definition: ReadCellNoiseFromCoolCompare.py:381
InDet::TRT_TrackSegmentsMaker_ATLxk::m_trtid
const TRT_ID * m_trtid
Definition: TRT_TrackSegmentsMaker_ATLxk.h:143
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::TrackSegment
Definition: TrackSegment.h:56
InDet::TRT_TrackSegmentsMaker_ATLxk::dumpConditions
MsgStream & dumpConditions(MsgStream &out) const
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:427
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_nsegments
int m_nsegments
Definition: TRT_TrackSegmentsMaker_ATLxk.h:115
InDet::TRT_TrackSegmentsMaker_ATLxk::m_sharedfrac
float m_sharedfrac
Definition: TRT_TrackSegmentsMaker_ATLxk.h:155
keylayer_zslicemap.se
se
Definition: keylayer_zslicemap.py:194
InDet::TRT_DriftCircleOnTrack
Definition: TRT_DriftCircleOnTrack.h:53
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_U
union InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::@96 m_U
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::H4
unsigned int H4[227500]
Definition: TRT_TrackSegmentsMaker_ATLxk.h:125
InDet::TRT_DriftCircle
Definition: TRT_DriftCircle.h:32
InDet::TRT_TrackSegmentsMaker_ATLxk::fillHistogramm
void fillHistogramm(float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:572
pi
#define pi
Definition: TileMuonFitter.cxx:65
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
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
InDet::TRT_TrackSegmentsMaker_ATLxk::analyseHistogramm
void analyseHistogramm(unsigned char &, unsigned int &, float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:593
Trk::FastField
@ FastField
call the fast field access method of the FieldSvc
Definition: MagneticFieldMode.h:20
Trk::LocalParameters::get
double get(ParamDefs par) const
Retrieve specified parameter (const version).
SCT_CalibAlgs::nbins
@ nbins
Definition: SCT_CalibNumbers.h:10
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
hotSpotInTAG.c0
c0
Definition: hotSpotInTAG.py:192
InDet::TRT_TrackSegmentsMaker_ATLxk::getConditionsData
const TRT_TrackSegmentsToolCondData_xk * getConditionsData() const
Definition: TRT_TrackSegmentsMaker_ATLxk.h:170
Ringer::PS
@ PS
Definition: CaloRingsDefs.h:46
mc
Definition: mc.PG_single_nu_valid.py:1
TRT_ID::straw
int straw(const Identifier &id) const
Definition: TRT_ID.h:902
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData
Definition: TRT_TrackSegmentsMaker_ATLxk.h:97
InDet::TRT_TrackSegmentsMaker_ATLxk::endEvent
void endEvent(InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:305
lumiFormat.i
int i
Definition: lumiFormat.py:92
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_clusters
int m_clusters
Definition: TRT_TrackSegmentsMaker_ATLxk.h:113
InDet::TRT_TrackSegmentsMaker_ATLxk::m_Ts
int m_Ts
Definition: TRT_TrackSegmentsMaker_ATLxk.h:152
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
Trk::theta
@ theta
Definition: ParamDefs.h:72
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::TRT_DriftCircleLinkN_xk::buffer
unsigned int buffer() const
Definition: TRT_DriftCircleLinkN_xk.h:42
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::Segment::containedMeasurements
const std::vector< const Trk::MeasurementBase * > & containedMeasurements() const
returns the vector of Trk::MeasurementBase objects
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:166
ITRT_TrackExtensionTool.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Preparation.mode
mode
Definition: Preparation.py:95
InDet::TRT_TrackSegmentsMaker_ATLxk::segmentsPreparation
static void segmentsPreparation(TRT_TrackSegmentsMaker_ATLxk::EventData &event_data)
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:757
InDet::TRT_TrackSegmentsToolCondData_xk::m_slope
float * m_slope
Definition: TRT_TrackSegmentsToolCondData_xk.h:22
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
TRT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: TRT_ID.h:866
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
InDet::TRT_TrackSegmentsMaker_ATLxk::initialize
virtual StatusCode initialize() override
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:66
TRT_ID::straw_layer
int straw_layer(const Identifier &id) const
Definition: TRT_ID.h:893
InDet::TRT_TrackSegmentsMaker_ATLxk::m_clustersCut
int m_clustersCut
Definition: TRT_TrackSegmentsMaker_ATLxk.h:151
TRT_ID::layer_or_wheel
int layer_or_wheel(const Identifier &id) const
Definition: TRT_ID.h:884
InDet::TRT_TrackSegmentsMaker_ATLxk::m_trtname
SG::ReadHandleKey< InDet::TRT_DriftCircleContainer > m_trtname
Definition: TRT_TrackSegmentsMaker_ATLxk.h:144
InDet::TRT_TrackSegmentsMaker_ATLxk::m_extensionTool
ToolHandle< ITRT_TrackExtensionTool > m_extensionTool
Definition: TRT_TrackSegmentsMaker_ATLxk.h:140
Trk::PRDtoTrackMap::isUsed
bool isUsed(const PrepRawData &prd) const
does this PRD belong to at least one track?
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition: MagneticFieldMode.h:21
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
IGeoModelTool.h
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_nlocal
int m_nlocal
Definition: TRT_TrackSegmentsMaker_ATLxk.h:114
InDet::TRT_TrackSegmentsMaker_ATLxk::m_removeNoise
bool m_removeNoise
Definition: TRT_TrackSegmentsMaker_ATLxk.h:149
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_bincluster
std::multimap< unsigned int, unsigned int > m_bincluster
Definition: TRT_TrackSegmentsMaker_ATLxk.h:117
InDet::TRT_TrackSegmentsToolCondData_xk::m_nlayers
unsigned int m_nlayers[4]
Definition: TRT_TrackSegmentsToolCondData_xk.h:14
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::H
unsigned char H[227500 *4]
Definition: TRT_TrackSegmentsMaker_ATLxk.h:125
InDet::TRT_TrackSegmentsToolCondData_xk::m_cirsize
int m_cirsize
Definition: TRT_TrackSegmentsToolCondData_xk.h:23
Trk::MeasurementBase
Definition: MeasurementBase.h:58
InDet::TRT_TrackSegmentsMaker_ATLxk::eraseHistogramm
void eraseHistogramm(TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:549
Trk::NoField
@ NoField
Field is set to 0., 0., 0.,.
Definition: MagneticFieldMode.h:18
InDet::TRT_TrackSegmentsMaker_ATLxk::~TRT_TrackSegmentsMaker_ATLxk
virtual ~TRT_TrackSegmentsMaker_ATLxk()
keylayer_zslicemap.sb
sb
Definition: keylayer_zslicemap.py:192
ReadCellNoiseFromCoolCompare.s3
s3
Definition: ReadCellNoiseFromCoolCompare.py:380
InDet::TRT_TrackSegmentsMaker_ATLxk::m_condDataKey
SG::ReadCondHandleKey< InDet::TRT_TrackSegmentsToolCondData_xk > m_condDataKey
Definition: TRT_TrackSegmentsMaker_ATLxk.h:145
InDet::TRT_TrackSegmentsToolCondData_xk::m_ndzdr
unsigned int * m_ndzdr
Definition: TRT_TrackSegmentsToolCondData_xk.h:20
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
InDet::TRT_TrackSegmentsMaker_ATLxk::next
virtual Trk::TrackSegment * next(InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:404
plotBeamSpotVxVal.bin
int bin
Definition: plotBeamSpotVxVal.py:83
InDet::TRT_TrackSegmentsMaker_ATLxk::m_Psi
float m_Psi
Definition: TRT_TrackSegmentsMaker_ATLxk.h:156
InDet::TRT_TrackSegmentsMaker_ATLxk::m_fieldprop
Trk::MagneticFieldProperties m_fieldprop
Definition: TRT_TrackSegmentsMaker_ATLxk.h:142
Trk::MeasurementBase::globalPosition
virtual const Amg::Vector3D & globalPosition() const =0
Interface method to get the global Position.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
InDet::TRT_TrackSegmentsMaker_ATLxk::find
virtual void find(const EventContext &ctx, InDet::ITRT_TrackSegmentsMaker::IEventData &event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const override
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:319
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::MagneticFieldProperties::magneticFieldMode
MagneticFieldMode magneticFieldMode() const
Returns the MagneticFieldMode as specified.
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.
TRT_TrackSegmentsMaker_ATLxk.h
InDet::TRT_TrackSegmentsToolCondData_xk::m_flayers
unsigned int m_flayers[4][30]
Definition: TRT_TrackSegmentsToolCondData_xk.h:16
InDet::TRT_TrackSegmentsMaker_ATLxk::m_fieldmode
std::string m_fieldmode
Definition: TRT_TrackSegmentsMaker_ATLxk.h:138
Trk::MeasurementBase::localParameters
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Definition: MeasurementBase.h:132
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_segments
std::list< Trk::TrackSegment * > m_segments
Definition: TRT_TrackSegmentsMaker_ATLxk.h:120
CylinderBounds.h
InDet::TRT_TrackSegmentsToolCondData_xk::m_islope
int * m_islope
Definition: TRT_TrackSegmentsToolCondData_xk.h:21
a
TList * a
Definition: liststreamerinfos.cxx:10
InDet::TRT_TrackSegmentsMaker_ATLxk::m_Ns128
int m_Ns128
Definition: TRT_TrackSegmentsMaker_ATLxk.h:153
InDet::TRT_TrackSegmentsMaker_ATLxk::m_A
float m_A
Definition: TRT_TrackSegmentsMaker_ATLxk.h:158
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
InDet::TRT_TrackSegmentsToolCondData_xk::m_nstraws
unsigned int m_nstraws[4]
Definition: TRT_TrackSegmentsToolCondData_xk.h:15
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_circles
TRT_DriftCircleLinkN_xk * m_circles
Definition: TRT_TrackSegmentsMaker_ATLxk.h:130
InDet::TRT_TrackSegmentsMaker_ATLxk::m_Psi128
float m_Psi128
Definition: TRT_TrackSegmentsMaker_ATLxk.h:157
DeMoScan.first
bool first
Definition: DeMoScan.py:534
InDet::TRT_TrackSegmentsMaker_ATLxk::finalize
virtual StatusCode finalize() override
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:123
DEBUG
#define DEBUG
Definition: page_access.h:11
F
#define F(x, y, z)
Definition: MD5.cxx:112
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
TRT_Numerology.h
Trk::FitQuality::chiSquared
double chiSquared() const
returns the of the overall track fit
Definition: FitQuality.h:56
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
Trk::FitQuality::numberDoF
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
Definition: FitQuality.h:60
InDet::TRT_DriftCircleLinkN_xk::phi
const float & phi() const
Definition: TRT_DriftCircleLinkN_xk.h:40
Trk::EventDataBase< EventData, InDet::ITRT_TrackSegmentsMaker::IEventData >::getPrivateEventData
static EventData & getPrivateEventData(InDet::ITRT_TrackSegmentsMaker::IEventData &virt_event_data)
Definition: EventDataBase.h:19
InDet::TRT_TrackSegmentsMaker_ATLxk::magneticFieldInit
void magneticFieldInit()
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:814
InDet::TRT_TrackSegmentsMaker_ATLxk::newRegion
virtual std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventData > newRegion(const EventContext &ctx, const std::vector< IdentifierHash > &) const override
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:222
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
ReadHandle.h
Handle class for reading from StoreGate.
InDet::TRT_TrackSegmentsMaker_ATLxk::m_nPhi
int m_nPhi
Definition: TRT_TrackSegmentsMaker_ATLxk.h:160
AthAlgTool
Definition: AthAlgTool.h:26
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
covarianceTool.mc
mc
Definition: covarianceTool.py:554
Trk::Segment::fitQuality
const FitQuality * fitQuality() const
return the FitQuality object, returns NULL if no FitQuality is defined
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:160
FitQuality.h
InDet::TRT_TrackSegmentsMaker_ATLxk::localMaximum
unsigned int localMaximum(unsigned int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:787
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_sizebin_iterator
std::multimap< unsigned int, unsigned int >::reverse_iterator m_sizebin_iterator
Definition: TRT_TrackSegmentsMaker_ATLxk.h:123
InDet::ITRT_TrackSegmentsMaker::IEventData
Definition: ITRT_TrackSegmentsMaker.h:53
InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::m_sizebin
std::multimap< unsigned int, unsigned int > m_sizebin
Definition: TRT_TrackSegmentsMaker_ATLxk.h:118
python.compressB64.c
def c
Definition: compressB64.py:93
PlotCalibFromCool.be
be
Definition: PlotCalibFromCool.py:398
python.TriggerAPI.TriggerAPISession.df
df
Definition: TriggerAPISession.py:359
InDet::TRT_TrackSegmentsMaker_ATLxk::TRT_TrackSegmentsMaker_ATLxk
TRT_TrackSegmentsMaker_ATLxk(const std::string &, const std::string &, const IInterface *)
Definition: TRT_TrackSegmentsMaker_ATLxk.cxx:32
readCCLHist.float
float
Definition: readCCLHist.py:83
fitman.k
k
Definition: fitman.py:528
InDet::TRT_TrackSegmentsToolCondData_xk::m_dzdr
float m_dzdr[26]
Definition: TRT_TrackSegmentsToolCondData_xk.h:19