ATLAS Offline Software
EFTrackingSmearingAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
9 
10 #include "TH1.h"
11 
12 #ifndef XAOD_ANALYSIS
15 #else
16 
17 namespace Amg
18 {
19  // expression template to evaluate the required size of the compressed matrix at compile time
20  template<int N>
22  static const int value = N + CalculateCompressedSize<N - 1>::value;
23  };
24 
25  template<>
26  struct CalculateCompressedSize<1> {
27  static const int value = 1;
28  };
29 
30  template<int N>
31  inline void compress(const AmgSymMatrix(N)& covMatrix, std::vector<float>& vec ) {
33  for (unsigned int i = 0; i < N ; ++i)
34  for (unsigned int j = 0; j <= i; ++j)
35  vec.push_back(covMatrix(i,j));
36  }
37  inline void compress(const MatrixX& covMatrix, std::vector<float>& vec) {
38  int rows = covMatrix.rows();
39  for (int i = 0; i < rows; ++i) {
40  for (int j = 0; j <= i; ++j) {
41  vec.push_back(covMatrix(i, j));
42  }
43  }
44  }
45 }
46 
47 namespace Trk
48 {
49  enum ParamDefs {
50  // Enums for LocalParameters - LocalPosition/
51  loc1=0, loc2=1,
52  locX=0, locY=1 ,
53  locRPhi=0, locPhiR=0, locZ=1,
54  locR=0, locPhi=1,
55  iPhi=0, iEta=1,
56  distPhi=0, distEta=1,
57  driftRadius=0,
58  // Enums for const Amg::Vector3D & GlobalMomentum /
59  x=0, y=1, z=2,
60  px=0, py=1, pz=2,
61  // Enums for Perigee //
62  d0=0, z0=1, phi0=2, theta=3, qOverP=4,
63  /* Enums for TrackState on Surfaces
64  The first two enums in the TrackParameters refer to the local Frame, i.e.
65  - LocalCartesian for AtanArbitraryPlane
66  - LocalCylindrical for AtaCylinder (includes line)
67  - LocalPolar for AtaDisc
68  The other three enums are standard \f$(\phi, \eta, \frac{q}{p_{T}})\f$
69  */
70  phi=2,
72  u=0, v=1,
73 
75  trkMass=5
76 
77  };
78 
79 }
80 #endif
81 
82 
83 // from Tracking/TrkEventCnv/TrkEventTPCnv/TrkEventTPCnv/helpers/EigenHelpers.h
84 namespace EigenHelpers
85 {
86  template <class VECTOR, class COVARIANCE>
87  inline static void eigenMatrixToVector(VECTOR& vec, COVARIANCE& cov, const char* ) {
89  }
90 }
91 
92 
93 
94 EFTrackingSmearingAlg::EFTrackingSmearingAlg( const std::string& name, ISvcLocator* pSvcLocator )
95 : AthHistogramAlgorithm( name, pSvcLocator ){}
96 
97 
99 
100 
102  ATH_MSG_INFO ("Initializing " << name() << "...");
103 
106 
108  ATH_CHECK( m_outputTruthParticleKey.initialize() );
109 
110  // Decoration keys
114 
115  ATH_CHECK(m_d0DecoratorKey.initialize());
116  ATH_CHECK(m_z0DecoratorKey.initialize());
117  ATH_CHECK(m_ptDecoratorKey.initialize());
118 
119  ATH_MSG_INFO("########## EFTrackingSmearingAlg Configurations are ########## ");
120  ATH_MSG_INFO("------- InputTrackParticleKey: "<<m_inputTrackParticleKey.key());
121  ATH_MSG_INFO("------- OutputTrackParticleKey: "<<m_outputTrackParticleKey.key());
122  ATH_MSG_INFO("------- InputTruthParticleKey: " <<m_inputTruthParticleKey.key());
123  ATH_MSG_INFO("------- OutputTruthParticleKey: "<<m_outputTruthParticleKey.key());
124  ATH_MSG_INFO("------- inputTracksPtCut [GeV]: "<<m_inputTracksPtCut);
125  ATH_MSG_INFO("------- outputTracksPtCut [GeV]: "<<m_outputTracksPtCut);
126  ATH_MSG_INFO("------- SmearingSigma: "<<m_SigmaScaleFactor);
127  ATH_MSG_INFO("------- trackEfficiency: "<<m_smearedTrackEfficiency);
128  ATH_MSG_INFO("------- parameterizedEfficiency: "<<m_parameterizedTrackEfficiency);
129  ATH_MSG_INFO("------- parameterizedEfficiency LRT: "<<m_parameterizedTrackEfficiency_LRT);
130  ATH_MSG_INFO("------- parameterizedEfficiency LRT high d0 cut: "<<m_smearedTrackEfficiency_d0high_LRT );
131  ATH_MSG_INFO("------- parameterizedEfficiency LRT low d0 cut: "<<m_smearedTrackEfficiency_d0low_LRT );
132  ATH_MSG_INFO("------- UseResolutionPtCutOff: "<<m_UseResolutionPtCutOff);
133  ATH_MSG_INFO("------- SetResolutionPtCutOff: "<<m_SetResolutionPtCutOff);
134  ATH_MSG_INFO("------- EnableMonitoring:" <<m_enableMonitoring);
135  ATH_MSG_INFO("------- SmearTruthParticle:"<< m_smearTruthParticle);
136 
137  ATH_MSG_INFO("------- IncludeDuplicatesAndFakes: "<<m_EnableFakes);
138  ATH_MSG_INFO("------- RandomSeed: " <<m_RandomSeed);
139  ATH_MSG_INFO("------- UseCoinToss: " <<m_UseCoinToss);
140  ATH_MSG_INFO("------- FakeKillerEnable: "<<m_FakeKillerEnable);
141  ATH_MSG_INFO("------- IncludeFakesInResolutionCalculation: "<<m_IncludeFakesInResolutionCalculation);
142  ATH_MSG_INFO("########## EFTrackingSmearingAlg Configurations: That's it. ########## ");
143 
144  std::string smearerName;
146  ATH_MSG_INFO("Will output new truth container with name "<<m_outputTruthParticleKey.key());
147  smearerName = m_outputTruthParticleKey.key()+"_smearer";
148  }
149  else {
150  ATH_MSG_INFO("Will output new track container with name "<<m_outputTrackParticleKey.key());
151  smearerName = m_outputTrackParticleKey.key()+"_smearer";
152  }
153 
154  // configure the Smearer
155  m_mySmearer = (void *) new FakeTrackSmearer(smearerName, m_RandomSeed, msgLvl (MSG::DEBUG));
157  ((FakeTrackSmearer *) m_mySmearer)->SetOutputTracksPtCut(m_outputTracksPtCut);
158  ((FakeTrackSmearer *) m_mySmearer)->SetTrackingEfficiency(m_smearedTrackEfficiency);
159  ((FakeTrackSmearer *) m_mySmearer)->SetParameterizedEfficiency(m_parameterizedTrackEfficiency);
160  ((FakeTrackSmearer *) m_mySmearer)->SetParameterizedEfficiency_LRT(m_parameterizedTrackEfficiency_LRT);
161  ((FakeTrackSmearer *) m_mySmearer)->SetParameterizedEfficiency_highd0_LRT(m_smearedTrackEfficiency_d0high_LRT);
162  ((FakeTrackSmearer *) m_mySmearer)->SetParameterizedEfficiency_lowd0_LRT(m_smearedTrackEfficiency_d0low_LRT);
163 
164  ((FakeTrackSmearer *) m_mySmearer)->SetSigmaScaleFactor(m_SigmaScaleFactor.value());
165  ((FakeTrackSmearer *) m_mySmearer)->UseResolutionPtCutOff(m_UseResolutionPtCutOff.value());
166  ((FakeTrackSmearer *) m_mySmearer)->SetResolutionPtCutOff(m_SetResolutionPtCutOff.value());
167 
168  ((FakeTrackSmearer *) m_mySmearer)->EnableFakes(m_EnableFakes.value());
169  ((FakeTrackSmearer *) m_mySmearer)->UseCoinToss(m_UseCoinToss.value());
170  ((FakeTrackSmearer *) m_mySmearer)->FakeKillerEnable(m_FakeKillerEnable.value());
171  ((FakeTrackSmearer *) m_mySmearer)->IncludeFakesInResolutionCalculation(m_IncludeFakesInResolutionCalculation.value());
172 
173  if (m_enableMonitoring) {
174  // store the smearing functions
175  TF1 *d0res_eta = ((FakeTrackSmearer *) m_mySmearer)->d0res_eta;
176  TF1 *z0res_eta = ((FakeTrackSmearer *) m_mySmearer)->z0res_eta;
177  TF1 *curvres_eta = ((FakeTrackSmearer *) m_mySmearer)->curvres_eta;
178  TF1 *d0res_pt = ((FakeTrackSmearer *) m_mySmearer)->d0res_pt;
179  TF1 *z0res_pt = ((FakeTrackSmearer *) m_mySmearer)->z0res_pt;
180  TF1 *curvres_pt = ((FakeTrackSmearer *) m_mySmearer)->curvres_pt;
181  TF1 *effLRT_d0 = ((FakeTrackSmearer *) m_mySmearer)->effLRT_d0;
182 
183  CHECK(book(new TH1F("d0res_function_vs_eta","#eta of track (p_{T}=10GeV);#eta",100, 0.0,4.0)));
184  CHECK(book(new TH1F("z0res_function_vs_eta","#eta of track (p_{T}=10GeV);#eta",100, 0.0,4.0)));
185  CHECK(book(new TH1F("curvres_function_vs_eta","#eta of track (p_{T}=10GeV);#eta",100, 0.0,4.0)));
186  CHECK(book(new TH1F("d0res_function_vs_pt","p_{T} of track (#eta=1);p_{T} [GeV]",100, 1.0,200.0)));
187  CHECK(book(new TH1F("z0res_function_vs_pt","p_{T} of track (#eta=1);p_{T} [GeV]",100, 1.0,200.0)));
188  CHECK(book(new TH1F("curvres_function_vs_pt","p_{T} of track (#eta=1);p_{T} [GeV]",100, 1.0,200.0)));
189  CHECK(book(new TH1F("effLRT_function_vs_d0","d_{0} of track;d_{0} [mm]",100, 0.001,600.0)));
190  hist("d0res_function_vs_eta")->Add(d0res_eta);
191  hist("z0res_function_vs_eta")->Add(z0res_eta);
192  hist("curvres_function_vs_eta")->Add(curvres_eta);
193  hist("d0res_function_vs_pt")->Add(d0res_pt);
194  hist("z0res_function_vs_pt")->Add(z0res_pt);
195  hist("curvres_function_vs_pt")->Add(curvres_pt);
196  hist("effLRT_function_vs_d0")->Add(effLRT_d0);
197  // book historgams
199  }
200  return StatusCode::SUCCESS;
201 }
202 
203 
205  ATH_MSG_INFO ("Finalizing " << name() << "...");
206  delete((FakeTrackSmearer *)m_mySmearer);
207  return StatusCode::SUCCESS;
208 }
209 
210 
212 
214  const xAOD::TruthParticleContainer* inputTruth = inputTruth_handle.cptr();
215  if (not inputTruth) {
216  ATH_MSG_FATAL("Unable to retrieve input truth particle");
217  return StatusCode::FAILURE;
218  }
220  ATH_CHECK( outputTruth_handle.record( std::make_unique<xAOD::TruthParticleContainer>(), std::make_unique<xAOD::TruthParticleAuxContainer>() ) );
221  auto outputTruth = outputTruth_handle.ptr();
222 
223  // create decorators
227 
228 
229  // clear the smearear
230  FakeTrackSmearer *mySmearer=static_cast<FakeTrackSmearer *>(m_mySmearer);
231  mySmearer->Clear();
232 
233  static const SG::ConstAccessor<float> ptAcc("pt");
234  static const SG::ConstAccessor<float> d0Acc("d0");
235  static const SG::ConstAccessor<float> z0Acc("z0");
236  static const SG::ConstAccessor<float> thetaAcc("theta");
237 
238  int n_input_tracks=0;
239  int n_output_tracks=0;
240  int n_output_broad_tracks=0;
241  int n_output_narrow_tracks=0;
242  ATH_MSG_DEBUG ("Found "<<inputTruth->size()<< " input truth particles");
243  for ( const auto* part : *inputTruth )
244  {
245  double pt = part->pt();// MeV
246  float theta = thetaAcc(*part);
247  float z0 = z0Acc(*part);
248  float d0 = d0Acc(*part);
249  float eta = part->eta();
250  float phi = part->phi();
251  if (part->isNeutral()) continue;
252  if (pt <=0.) continue;
253 
254  ATH_MSG_DEBUG ("===> New Truth: "
255  <<" curv=" << 1./part->pt()
256  <<" phi=" << part->phi()
257  <<" eta=" << part->eta()
258  <<" d0=" << d0Acc(*part)
259  <<" z0=" << z0Acc(*part)
260  <<" pT=" << part->pt()
261  <<" PDGID=" << part->pdgId()
262  <<" status=" << part->status()
263  );
264  if (part->parent()) ATH_MSG_DEBUG (" parent status=" << part->parent()->pdgId());
265 
266  if (std::abs(pt)/1000. > m_inputTracksPtCut) //GeV cut
267  {
268  n_input_tracks++;
269  if (m_enableMonitoring) {
270  hist("track_input_eta")->Fill(eta);
271  hist("track_input_theta")->Fill(theta);
272  hist("track_input_pt" )->Fill(pt/1000.);
273  hist("track_input_phi")->Fill(phi);
274  hist("track_input_z0" )->Fill(z0);
275  hist("track_input_d0" )->Fill(d0);
276  }
277  double qoverPt = part->charge()*1000./pt; //this must be in GeV
278  mySmearer->AddTrack(d0,z0,qoverPt,eta,phi); // smearing here
279  n_output_tracks += mySmearer->GetNTracks();
280 
281  ATH_MSG_DEBUG ("Looping on output tracks #"<< mySmearer->GetNTracks());
282  for (const auto& otrack : mySmearer->Tracks)
283  {
285  outputTruth->push_back(newtrk);
286  *newtrk = *part;
287  auto newpt = part->pt();
288  if (m_SigmaScaleFactor !=0) {
289  // set the decorators
290  d0Decorator(*newtrk) = otrack.d0();
291  z0Decorator(*newtrk) = otrack.z0();
292  ptDecorator(*newtrk) = otrack.pt()*1000.; //MeV
293  //TrackParticle has already ::pt(), so the smeared value is in the decorator
294  // and can be accessed by
295  newpt = ptAcc(*newtrk);
296  }
297  if (newpt==0.) continue;
298  ATH_MSG_DEBUG ("Smeared Truth: "
299  <<" curv=" << 1./newpt
300  <<" phi=" << newtrk->phi()
301  <<" eta=" << newtrk->eta()
302  <<" d0=" << d0Acc(*newtrk)
303  <<" z0=" << z0Acc(*newtrk)
304  <<" pT=" << newpt
305  <<" PDGID=" << newtrk->pdgId()
306  <<" status=" << newtrk->status()
307  );
308  if (newtrk->parent()) ATH_MSG_DEBUG (" parent status=" << newtrk->parent()->pdgId());
309 
310  if (m_enableMonitoring) {
311  hist("track_output_eta")->Fill(otrack.eta());
312  hist("track_output_theta")->Fill(otrack.theta());
313  hist("track_output_pt" )->Fill(part->charge()*otrack.pt() );
314  hist("track_output_phi")->Fill(otrack.phi());
315  hist("track_output_z0" )->Fill(otrack.z0() );
316  hist("track_output_d0" )->Fill(otrack.d0() );
317 
318  hist("track_outputcoll_eta")->Fill(newtrk->eta());
319  hist("track_outputcoll_theta")->Fill(thetaAcc(*newtrk));
320  hist("track_outputcoll_pt" )->Fill(part->charge()* newpt/1000.);
321  hist("track_outputcoll_phi")->Fill(newtrk->phi());
322  hist("track_outputcoll_z0" )->Fill(z0Acc(*newtrk));
323  hist("track_outputcoll_d0" )->Fill(d0Acc(*newtrk));
324 
325  hist("track_delta_eta")->Fill(newtrk->eta() - part->eta());
326  hist("track_delta_pt") ->Fill((newpt - part->pt())/1000.);
327  hist("track_delta_crv")->Fill(newtrk->charge()*1000./newpt - ((part->charge()*1000./part->pt())));
328  hist("track_delta_phi")->Fill(newtrk->phi() - part->phi());
329  hist("track_delta_z0" )->Fill(z0Acc(*newtrk) - z0Acc(*part));
330  hist("track_delta_d0" )->Fill(d0Acc(*newtrk) - d0Acc(*part));
331  }
332  } // end of loop
333  }
334  mySmearer->Clear(); // clear the smearer after each input track
335  }
336 
337  ATH_MSG_DEBUG ("End of loop track #"<<n_input_tracks<<" ---> "<<" "<< n_output_tracks
338  <<" "<<n_output_narrow_tracks<<" "<<n_output_broad_tracks);
339  if (m_enableMonitoring) {
340  hist("n_input_tracks")->Fill(n_input_tracks);
341  hist("n_output_tracks")->Fill(n_output_tracks);
342  hist("n_output_narrow_tracks")->Fill(n_output_narrow_tracks);
343  hist("n_output_broad_tracks")->Fill(n_output_broad_tracks);
344  }
345  return StatusCode::SUCCESS;
346 }
347 
348 
349 
351  ATH_MSG_DEBUG ("Executing " << name() << "...");
352 
353  auto ctx = getContext() ;
355  return smearTruthParticles(ctx);
356 
358  const xAOD::TrackParticleContainer* inputTracks = inputTracks_handle.cptr();
359  if (not inputTracks) {
360  ATH_MSG_FATAL("Unable to retrieve input ID tacks");
361  return StatusCode::FAILURE;
362  }
363 
365  ATH_CHECK( outputTracks_handle.record( std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>() ) );
366  auto outputTracks = outputTracks_handle.ptr();
367 
368  // clear the smearear
370  mySmearer->Clear();
371 
372  //int trackno=0;
373  int n_input_tracks=0;
374  int n_output_tracks=0;
375  int n_output_broad_tracks=0;
376  int n_output_narrow_tracks=0;
377  ATH_MSG_DEBUG ("Found "<<inputTracks->size()<< " input tracks");
378  for ( const auto* trk : *inputTracks )
379  {
380  // get Cov matrix of input track
381  xAOD::ParametersCovMatrix_t trkcov = trk->definingParametersCovMatrix();
382  auto trkcovvec = trk->definingParametersCovMatrixVec();
383  double theta=trk->theta();
384  double pt = std::sin(theta)/std::abs(trk->qOverP());// MeV
385 
386  ATH_MSG_DEBUG ("===> New Track: "
387  <<" curv=" << 1./trk->pt()
388  <<" phi=" << trk->phi0()
389  <<" eta=" << trk->eta()
390  <<" d0=" << trk->d0()
391  <<" z0=" << trk->z0()
392  <<" pT=" << trk->pt()
393  <<" cov_d0=" << trkcov(Trk::d0,Trk::d0)
394  <<" cov_z0=" << trkcov(Trk::z0,Trk::z0)
395  <<" sigma_d0=" << std::sqrt(std::abs(trkcov(Trk::d0,Trk::d0)))
396  <<" sigma_z0=" << std::sqrt(std::abs(trkcov(Trk::z0,Trk::z0))) );
397 
398 
399 
400  if (std::abs(pt) > m_inputTracksPtCut)
401  {
402  n_input_tracks++;
403  if (m_enableMonitoring) {
404  hist("track_input_eta")->Fill(trk->eta());
405  hist("track_input_theta")->Fill(trk->theta());
406  hist("track_input_pt" )->Fill(pt/1000.);
407  hist("track_input_phi")->Fill(trk->phi0());
408  hist("track_input_z0" )->Fill(trk->z0());
409  hist("track_input_d0" )->Fill(trk->d0());
410 
411  hist("track_input_sigma_theta") ->Fill(std::sqrt(trkcov(Trk::theta,Trk::theta)));
412  hist("track_input_sigma_qOverP")->Fill(std::sqrt(trkcov(Trk::qOverP,Trk::qOverP)));
413  hist("track_input_sigma_phi") ->Fill(std::sqrt(trkcov(Trk::phi0,Trk::phi0)));
414  hist("track_input_sigma_z0") ->Fill(std::sqrt(trkcov(Trk::z0,Trk::z0)));
415  hist("track_input_sigma_d0") ->Fill(std::sqrt(trkcov(Trk::d0,Trk::d0)));
416  }
417 
418  // get Cov matrix of input track
419  auto trkcovvec = trk->definingParametersCovMatrixVec();
420  double qoverPt = trk->charge()*1000./pt; //this must be in GeV
421  mySmearer->AddTrack(trk->d0(),trk->z0(),qoverPt,trk->eta(),trk->phi0());
422  n_output_tracks += mySmearer->GetNTracks();
423 
424  ATH_MSG_DEBUG ("Looping on output tracks #"<< mySmearer->GetNTracks());
425  for (const auto& otrack : mySmearer->Tracks)
426  {
427  xAOD::TrackParticle * newtrk = new xAOD::TrackParticle(*trk);
428  outputTracks->push_back(newtrk);
429  *newtrk = *trk;
430 
431  double sintheta=std::sin(otrack.theta());
432  trkcov = trk->definingParametersCovMatrix();
433  auto newtrkcov = trkcov;
434  if (m_SigmaScaleFactor !=0) {
435  // modify the cov matrix
436  ATH_MSG_DEBUG ("Setting parameters in covariance vector");
437  for (int ii=0;ii<5;ii++) for (int jj=0;jj<5;jj++) {
438  // correct the CM to be consistent with the smearing ofthe parameters
439  newtrkcov(ii,jj)=trkcov(ii,jj) * (std::pow(m_SigmaScaleFactor,2) + 1);
440  }
441  trkcovvec.clear();
442  EigenHelpers::eigenMatrixToVector(trkcovvec,newtrkcov,"");
443  newtrk->setDefiningParametersCovMatrixVec(trkcovvec);
444  ATH_MSG_DEBUG ("Setting parameters covariance");
445  newtrk->setDefiningParametersCovMatrix(newtrkcov);
446 
447  /* old method stays for reference, since it's not yet validated
448  for (int ii=0;ii<5;ii++) for (int jj=0;jj<5;jj++) if (ii!=jj) trkcov(ii,jj)=0.0;
449  trkcov(Trk::d0 ,Trk::d0 ) = otrack.sigma_d0() * otrack.sigma_d0() ;
450  trkcov(Trk::z0 ,Trk::z0 ) = otrack.sigma_z0() * otrack.sigma_z0() ;
451  trkcov(Trk::theta ,Trk::theta ) = otrack.sigma_theta()* otrack.sigma_theta();
452  trkcov(Trk::phi0 ,Trk::phi0 ) = otrack.sigma_phi() * otrack.sigma_phi() ;
453  trkcov(Trk::qOverP,Trk::qOverP) = otrack.sigma_curv()/1000. * otrack.sigma_curv()/1000. *sintheta*sintheta;
454 
455  trkcovvec.clear();
456  EigenHelpers::eigenMatrixToVector(trkcovvec,trkcov,"");
457  newtrk->setDefiningParametersCovMatrixVec(trkcovvec);
458  ATH_MSG_DEBUG ("Setting parameters covariance");
459  newtrk->setDefiningParametersCovMatrix(trkcov);
460  */
461 
462  //(float d0, float z0, float phi0, float theta, float qOverP)
463  newtrk->setDefiningParameters(
464  otrack.d0(),
465  otrack.z0(),
466  otrack.phi(),
467  otrack.theta(),
468  (otrack.curv()*sintheta/1000.) //oneOverp in MeV
469  );
470  }
471  xAOD::ParametersCovMatrix_t trkcov_out = newtrk->definingParametersCovMatrix();
472 
473 
474  ATH_MSG_DEBUG ("Smeared Track: "
475  <<" curv=" << 1./newtrk->pt()
476  <<" phi=" << newtrk->phi()
477  <<" eta=" << newtrk->eta()
478  <<" d0=" << newtrk->d0()
479  <<" z0=" << newtrk->z0()
480  <<" pT=" << newtrk->pt()
481  <<" cov_d0=" << trkcov_out(Trk::d0,Trk::d0)
482  <<" cov_z0=" << trkcov_out(Trk::z0,Trk::z0)
483  <<" sigma_d0=" << std::sqrt(std::abs(trkcov_out(Trk::d0,Trk::d0)))
484  <<" sigma_z0=" << std::sqrt(std::abs(trkcov_out(Trk::z0,Trk::z0))) );
485 
486 
487  if (m_enableMonitoring) {
488  hist("track_output_eta")->Fill(otrack.eta());
489  hist("track_output_theta")->Fill(otrack.theta());
490  hist("track_output_pt" )->Fill(trk->charge()*otrack.pt() );
491  hist("track_output_phi")->Fill(otrack.phi());
492  hist("track_output_z0" )->Fill(otrack.z0() );
493  hist("track_output_d0" )->Fill(otrack.d0() );
494 
495  hist("track_outputcoll_eta")->Fill(newtrk->eta());
496  hist("track_outputcoll_theta")->Fill(newtrk->theta());
497  hist("track_outputcoll_pt" )->Fill(trk->charge()*std::sin(newtrk->theta())/(1000.0*newtrk->qOverP()));
498  hist("track_outputcoll_phi")->Fill(newtrk->phi0());
499  hist("track_outputcoll_z0" )->Fill(newtrk->z0());
500  hist("track_outputcoll_d0" )->Fill(newtrk->d0());
501 
502  hist("track_delta_eta")->Fill(newtrk->eta() - trk->eta());
503  hist("track_delta_pt")->Fill((newtrk->pt() - trk->pt())/1000.);
504  hist("track_delta_crv")->Fill((1000.0*newtrk->qOverP()/std::sin(theta))-((1000.0*trk->qOverP())/std::sin(theta)));
505  hist("track_delta_phi")->Fill(newtrk->phi() - trk->phi0());
506  hist("track_delta_z0" )->Fill(newtrk->z0() - trk->z0());
507  hist("track_delta_d0" )->Fill(newtrk->d0() - trk->d0());
508 
509  auto trkcov_original = trk->definingParametersCovMatrix();
510  hist("track_delta_sigma_theta") ->Fill(std::sqrt(trkcov_out(Trk::theta,Trk::theta)) - std::sqrt(trkcov_original(Trk::theta,Trk::theta)));
511  hist("track_delta_sigma_qOverP")->Fill(std::sqrt(trkcov_out(Trk::qOverP,Trk::qOverP)) - std::sqrt(trkcov_original(Trk::qOverP,Trk::qOverP)));
512  hist("track_delta_sigma_phi") ->Fill(std::sqrt(trkcov_out(Trk::phi0,Trk::phi0)) - std::sqrt(trkcov_original(Trk::phi0,Trk::phi0)));
513  hist("track_delta_sigma_z0") ->Fill(std::sqrt(trkcov_out(Trk::z0,Trk::z0)) - std::sqrt(trkcov_original(Trk::z0,Trk::z0)));
514  hist("track_delta_sigma_d0") ->Fill(std::sqrt(trkcov_out(Trk::d0,Trk::d0)) - std::sqrt(trkcov_original(Trk::d0,Trk::d0)));
515 
516 
517  hist("track_outputcoll_sigma_theta") ->Fill(std::sqrt(trkcov(Trk::theta,Trk::theta)));
518  hist("track_outputcoll_sigma_qOverP")->Fill(std::sqrt(trkcov(Trk::qOverP,Trk::qOverP)));
519  hist("track_outputcoll_sigma_phi") ->Fill(std::sqrt(trkcov(Trk::phi0,Trk::phi0)));
520  hist("track_outputcoll_sigma_z0") ->Fill(std::sqrt(trkcov(Trk::z0,Trk::z0)));
521  hist("track_outputcoll_sigma_d0") ->Fill(std::sqrt(trkcov(Trk::d0,Trk::d0)));
522 
523  }
524  // do we need this hack?
525  // hack!!!
526  // Chi2: 1 -> "Broad Fake"
527  // 0 -> "core tracks"
528  //
529  // NDF: index of parent track in input track collection
530  //newtrk->setFitQuality(otrack.FakeFlags(),trackno);
531 
532 
533  }
534 
535  }
536  mySmearer->Clear(); // clear teh smearer after each input track
537  //trackno++;
538  }
539 
540  ATH_MSG_DEBUG ("End of loop track #"<<n_input_tracks<<" ---> "<<" "<< n_output_tracks
541  <<" "<<n_output_narrow_tracks<<" "<<n_output_broad_tracks);
542  if (m_enableMonitoring) {
543  hist("n_input_tracks")->Fill(n_input_tracks);
544  hist("n_output_tracks")->Fill(n_output_tracks);
545  hist("n_output_narrow_tracks")->Fill(n_output_narrow_tracks);
546  hist("n_output_broad_tracks")->Fill(n_output_broad_tracks);
547  }
548  return StatusCode::SUCCESS;
549 }
550 
551 
552 
553 
555 {
556  double b_eta[3]={50,-5,5};
557  CHECK(book(new TH1F("track_input_eta","#eta of input tracks",b_eta[0],b_eta[1],b_eta[2])));
558  CHECK(book(new TH1F("track_input_theta","#Theta of input tracks",50,0.0,4.0)));
559  CHECK(book(new TH1F("track_input_pt" ,"p_T of input tracks",50.0,-10.0,10.0)));
560  CHECK(book(new TH1F("track_input_phi","#phi of input tracks",50,-6.28,6.28)));
561  CHECK(book(new TH1F("track_input_z0" ,"z_0 of input tracks",100,-50,50)));
562  CHECK(book(new TH1F("track_input_d0" ,"d_0 of input tracks",50,-5,5)));
563 
564  CHECK(book(new TH1F("track_input_sigma_theta","#sigma_{#Theta} of input tracks" ,50,0.0,0.001)));
565  CHECK(book(new TH1F("track_input_sigma_qOverP" ,"#sigma_{q/P} of input tracks" ,50.0,0.0,0.0001)));
566  CHECK(book(new TH1F("track_input_sigma_phi" ,"#sigma_{#phi} of input tracks" ,50,0.0,0.002)));
567  CHECK(book(new TH1F("track_input_sigma_z0" ,"#sigma_{z_0} of input tracks" ,100,0.0,5)));
568  CHECK(book(new TH1F("track_input_sigma_d0" ,"#sigma_{d_0} of input tracks" ,50,0.0,5)));
569 
570  int maxtracks=500;
571  CHECK(book(new TH1F("n_input_tracks" ,"Number of input tracks" ,maxtracks,0,maxtracks)));
572  CHECK(book(new TH1F("n_output_tracks" ,"Number of output tracks" ,maxtracks,0,maxtracks)));
573  CHECK(book(new TH1F("n_output_narrow_tracks","Number of output tracks (narrow)" ,maxtracks,0,maxtracks)));
574  CHECK(book(new TH1F("n_output_broad_tracks" ,"Number of output tracks (broad)" ,maxtracks,0,maxtracks)));
575 
576  CHECK(book(new TH1F("track_output_eta","#eta of output tracks",50,-5,5)));
577  CHECK(book(new TH1F("track_output_theta","#Theta of output tracks",50,0.0,4.0)));
578  CHECK(book(new TH1F("track_output_pt" ,"p_T of output tracks [GeV]",50,-10,10)));
579  CHECK(book(new TH1F("track_output_phi","#phi of output tracks",50,-6.28,6.28)));
580  CHECK(book(new TH1F("track_output_z0" ,"z_0 of output tracks",100,-50,50)));
581  CHECK(book(new TH1F("track_output_d0" ,"d_0 of output tracks",50,-5,5)));
582 
583  CHECK(book(new TH1F("track_outputcoll_eta","#eta of output tracks collection",50,-5,5)));
584  CHECK(book(new TH1F("track_outputcoll_theta","#Theta of output tracks collection",50,0.0,4.0)));
585  CHECK(book(new TH1F("track_outputcoll_pt" ,"p_T of output tracks collection [GeV]",50,-10,10)));
586  CHECK(book(new TH1F("track_outputcoll_phi","#phi of output tracks collection",50,-6.28,6.28)));
587  CHECK(book(new TH1F("track_outputcoll_z0" ,"z_0 of output tracks collection",100,-50,50)));
588  CHECK(book(new TH1F("track_outputcoll_d0" ,"d_0 of output tracks collection",50,-5,5)));
589 
590  CHECK(book(new TH1F("track_outputcoll_sigma_theta","#sigma_{#Theta} of output tracks collection" ,50,0.0,0.001)));
591  CHECK(book(new TH1F("track_outputcoll_sigma_qOverP" ,"#sigma_{q/P} of output tracks collection",50.0,0.0,0.0001)));
592  CHECK(book(new TH1F("track_outputcoll_sigma_phi" ,"#sigma_{#phi} of output tracks collection" ,50,0.0,0.002)));
593  CHECK(book(new TH1F("track_outputcoll_sigma_z0" ,"#sigma_{z_0} of output tracks collection" ,100,0.0,5)));
594  CHECK(book(new TH1F("track_outputcoll_sigma_d0" ,"#sigma_{d_0} of output tracks collection" ,50,0.0,5)));
595 
596  CHECK(book(new TH1F("track_delta_sigma_theta", "#sigma_{#Theta} of output tracks collection",100,-0.001,0.001)));
597  CHECK(book(new TH1F("track_delta_sigma_qOverP", "#sigma_{q/P} of output tracks collection",100,-0.0001,0.0001)));
598  CHECK(book(new TH1F("track_delta_sigma_phi", "#sigma_{#phi} of output tracks collection" ,100,-0.002,0.002)));
599  CHECK(book(new TH1F("track_delta_sigma_z0", "#sigma_{z_0} of output tracks collection" ,100,-1.,1.)));
600  CHECK(book(new TH1F("track_delta_sigma_d0", "#sigma_{d_0} of output tracks collection" ,100,-0.5,0.5)));
601 
602  CHECK(book(new TH1F("track_delta_eta","tracks #Delta #eta",50,-1,1)));
603  CHECK(book(new TH1F("track_delta_pt","tracks #Delta #pt [GeV]",50,-2.,2.)));
604  CHECK(book(new TH1F("track_delta_crv" ,"tracks #Delta crv",50,-1,1)));
605  CHECK(book(new TH1F("track_delta_phi","tracks #Delta #phi",50,-0.5,0.5)));
606  CHECK(book(new TH1F("track_delta_z0" ,"tracks #Delta z_0 ",100,-10,10)));
607  CHECK(book(new TH1F("track_delta_d0" ,"tracks #Delta d_0 ",50,-2,2)));
608  return StatusCode::SUCCESS;
609 }
610 
611 
612 
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
EFTrackingSmearingAlg::smearTruthParticles
StatusCode smearTruthParticles(const EventContext &ctx)
Definition: EFTrackingSmearingAlg.cxx:211
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:73
xAOD::TruthParticle_v1::parent
const TruthParticle_v1 * parent(size_t i=0) const
Retrieve the i-th mother (TruthParticle) of this TruthParticle.
Definition: TruthParticle_v1.cxx:131
Trk::y
@ y
Definition: ParamDefs.h:62
Trk::py
@ py
Definition: ParamDefs.h:66
EFTrackingSmearingAlg::m_smearedTrackEfficiency_d0low_LRT
DoubleProperty m_smearedTrackEfficiency_d0low_LRT
Definition: EFTrackingSmearingAlg.h:61
EFTrackingSmearingAlg::m_outputTracksPtCut
DoubleProperty m_outputTracksPtCut
Definition: EFTrackingSmearingAlg.h:53
EFTrackingSmearingAlg::m_EnableFakes
BooleanProperty m_EnableFakes
Definition: EFTrackingSmearingAlg.h:64
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:29
EFTrackingSmearingAlg::m_z0DecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_z0DecoratorKey
Definition: EFTrackingSmearingAlg.h:44
Amg::compress
void compress(const AmgSymMatrix(N) &covMatrix, std::vector< float > &vec)
Definition: EventPrimitivesHelpers.h:56
Trk::z
@ z
global position (cartesian)
Definition: ParamDefs.h:63
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Trk::locX
@ locX
Definition: ParamDefs.h:43
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:44
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
AthHistogramming::book
StatusCode book(const TH1 &hist, const std::string &tDir="", const std::string &stream="")
Simplify the booking and registering (into THistSvc) of histograms.
Definition: AthHistogramming.h:303
EFTrackingSmearingAlg::book_histograms
StatusCode book_histograms()
Definition: EFTrackingSmearingAlg.cxx:554
EFTrackingSmearingAlg::m_IncludeFakesInResolutionCalculation
BooleanProperty m_IncludeFakesInResolutionCalculation
Definition: EFTrackingSmearingAlg.h:66
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
EFTrackingSmearingAlg::m_smearTruthParticle
BooleanProperty m_smearTruthParticle
Definition: EFTrackingSmearingAlg.h:57
xAOD::TrackParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TrackParticle_v1.cxx:77
EFTrackingSmearingAlg::m_ptDecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_ptDecoratorKey
Definition: EFTrackingSmearingAlg.h:45
Trk::ParamDefs
ParamDefs
Definition: ParamDefs.h:38
EventPrimitivesHelpers.h
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
Trk::locRPhi
@ locRPhi
Definition: ParamDefs.h:46
FakeTrackSmearer
Definition: FakeTrackSmearer.h:29
Amg::CalculateCompressedSize
constexpr int CalculateCompressedSize(int n)
Definition: EventPrimitivesHelpers.h:51
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
test_pyathena.pt
pt
Definition: test_pyathena.py:11
xAOD::TrackParticle_v1::z0
float z0() const
Returns the parameter.
xAOD::TrackParticle_v1::setDefiningParameters
void setDefiningParameters(float d0, float z0, float phi0, float theta, float qOverP)
Set the defining parameters.
Definition: TrackParticle_v1.cxx:177
Trk::z0
@ z0
Definition: ParamDefs.h:70
AthCommonMsg< Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
Trk::loc2
@ loc2
generic first and second local coordinate
Definition: ParamDefs.h:41
athena.value
value
Definition: athena.py:122
JetTiledMap::N
@ N
Definition: TiledEtaPhiMap.h:44
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
SG::ConstAccessor< float >
Trk::locR
@ locR
Definition: ParamDefs.h:50
EFTrackingSmearingAlg::m_outputTruthParticleKey
SG::WriteHandleKey< xAOD::TruthParticleContainer > m_outputTruthParticleKey
Definition: EFTrackingSmearingAlg.h:39
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
EFTrackingSmearingAlg::m_mySmearer
void * m_mySmearer
Definition: EFTrackingSmearingAlg.h:73
Trk::pz
@ pz
global momentum (cartesian)
Definition: ParamDefs.h:67
ParamDefs.h
FakeTrackSmearer::Tracks
std::vector< EFTrackingSmearing::FTS_Track > Tracks
Definition: FakeTrackSmearer.h:360
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
xAOD::TrackParticle_v1::d0
float d0() const
Returns the parameter.
EFTrackingSmearingAlg::m_d0DecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_d0DecoratorKey
Definition: EFTrackingSmearingAlg.h:43
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
Trk::iEta
@ iEta
(old readout) will be skipped
Definition: ParamDefs.h:54
EFTrackingSmearingAlg::m_UseResolutionPtCutOff
BooleanProperty m_UseResolutionPtCutOff
Definition: EFTrackingSmearingAlg.h:50
EFTrackingSmearingAlg::m_inputTrackParticleKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_inputTrackParticleKey
Definition: EFTrackingSmearingAlg.h:30
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:48
FakeTrackSmearer::Clear
void Clear()
Definition: FakeTrackSmearer.h:173
Trk::distEta
@ distEta
readout for silicon
Definition: ParamDefs.h:57
python.TrigInDetConfig.inputTracks
inputTracks
Definition: TrigInDetConfig.py:168
lumiFormat.i
int i
Definition: lumiFormat.py:92
EFTrackingSmearingAlg::m_inputTruthParticleKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_inputTruthParticleKey
Definition: EFTrackingSmearingAlg.h:36
Trk::theta
@ theta
Definition: ParamDefs.h:72
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::covMatrix
covMatrix
Definition: TrackMeasurement_v1.cxx:19
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
Trk::driftRadius
@ driftRadius
trt, straws
Definition: ParamDefs.h:59
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:99
xAOD::TruthParticle
TruthParticle_v1 TruthParticle
Typedef to implementation.
Definition: Event/xAOD/xAODTruth/xAODTruth/TruthParticle.h:15
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
Trk::px
@ px
Definition: ParamDefs.h:65
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
EFTrackingSmearingAlg::m_outputTrackParticleKey
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_outputTrackParticleKey
Definition: EFTrackingSmearingAlg.h:33
beamspotnt.rows
list rows
Definition: bin/beamspotnt.py:1112
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::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
EFTrackingSmearingAlg::finalize
virtual StatusCode finalize() override
Definition: EFTrackingSmearingAlg.cxx:204
TH1::Fill
int Fill(double)
Definition: rootspy.cxx:285
AthHistogramAlgorithm
Definition: AthHistogramAlgorithm.h:32
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
Trk::distPhi
@ distPhi
Definition: ParamDefs.h:56
EigenHelpers::eigenMatrixToVector
static void eigenMatrixToVector(VECTOR &vec, COVARIANCE &cov, const char *)
Helper fn to get raw data (vec<float>) from the covariance.
Definition: EigenHelpers.h:30
EigenHelpers
Definition: EFTrackingSmearingAlg.cxx:85
xAOD::TrackParticle_v1::phi0
float phi0() const
Returns the parameter, which has range to .
Definition: TrackParticle_v1.cxx:158
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
xAOD::TrackParticle_v1::qOverP
float qOverP() const
Returns the parameter.
xAOD::TrackParticle_v1::definingParametersCovMatrix
const ParametersCovMatrix_t definingParametersCovMatrix() const
Returns the 5x5 symmetric matrix containing the defining parameters covariance matrix.
Definition: TrackParticle_v1.cxx:246
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::d0
@ d0
Definition: ParamDefs.h:69
EFTrackingSmearingAlg::m_parameterizedTrackEfficiency
BooleanProperty m_parameterizedTrackEfficiency
Definition: EFTrackingSmearingAlg.h:55
Trk::trkMass
@ trkMass
Extended perigee: mass.
Definition: ParamDefs.h:87
Trk::locPhi
@ locPhi
local polar
Definition: ParamDefs.h:51
FakeTrackSmearer::SetInputTracksPtCut
void SetInputTracksPtCut(double ptcut)
Definition: FakeTrackSmearer.h:165
xAOD::TruthParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TruthParticle_v1.cxx:174
xAOD::TrackParticle_v1::setDefiningParametersCovMatrix
void setDefiningParametersCovMatrix(const ParametersCovMatrix_t &cov)
Set the defining parameters covariance matrix.
Definition: TrackParticle_v1.cxx:213
EFTrackingSmearingAlg::m_inputTracksPtCut
DoubleProperty m_inputTracksPtCut
Definition: EFTrackingSmearingAlg.h:52
EFTrackingSmearingAlg::initialize
virtual StatusCode initialize() override
Definition: EFTrackingSmearingAlg.cxx:101
Trk::iPhi
@ iPhi
Definition: ParamDefs.h:53
EFTrackingSmearingAlg::m_smearedTrackEfficiency
DoubleProperty m_smearedTrackEfficiency
Definition: EFTrackingSmearingAlg.h:54
EFTrackingSmearingAlg::m_RandomSeed
LongLongProperty m_RandomSeed
Definition: EFTrackingSmearingAlg.h:71
xAOD::TrackParticle_v1::setDefiningParametersCovMatrixVec
void setDefiningParametersCovMatrixVec(const std::vector< float > &cov)
Definition: TrackParticle_v1.cxx:460
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
EFTrackingSmearingAlg::m_UseCoinToss
BooleanProperty m_UseCoinToss
Definition: EFTrackingSmearingAlg.h:68
xAOD::TruthParticle_v1::status
int status() const
Status code.
FakeTrackSmearer::AddTrack
void AddTrack(double d0, double z0, double curv, double eta, double phi)
Definition: FakeTrackSmearer.h:187
VertexContainer.h
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
VECTOR
TVectorD VECTOR
Definition: sincos_poly.cxx:20
Trk::locPhiR
@ locPhiR
Definition: ParamDefs.h:47
xAOD::TruthParticle_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
Definition: TruthParticle_v1.cxx:181
EFTrackingSmearingAlg::~EFTrackingSmearingAlg
virtual ~EFTrackingSmearingAlg()
Definition: EFTrackingSmearingAlg.cxx:98
EFTrackingSmearingAlg::execute
virtual StatusCode execute() override
Definition: EFTrackingSmearingAlg.cxx:350
DEBUG
#define DEBUG
Definition: page_access.h:11
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
AthHistogramming::hist
TH1 * hist(const std::string &histName, const std::string &tDir="", const std::string &stream="")
Simplify the retrieval of registered histograms of any type.
Definition: AthHistogramming.cxx:198
Trk::phi
@ phi
Definition: ParamDefs.h:81
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
EFTrackingSmearingAlg::m_smearedTrackEfficiency_d0high_LRT
DoubleProperty m_smearedTrackEfficiency_d0high_LRT
Definition: EFTrackingSmearingAlg.h:60
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
ConstAccessor.h
Helper class to provide constant type-safe access to aux data.
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Trk::x
@ x
Definition: ParamDefs.h:61
EFTrackingSmearingAlg.h
EFTrackingSmearingAlg::m_enableMonitoring
BooleanProperty m_enableMonitoring
Definition: EFTrackingSmearingAlg.h:56
EFTrackingSmearingAlg::m_SigmaScaleFactor
DoubleProperty m_SigmaScaleFactor
Definition: EFTrackingSmearingAlg.h:49
FakeTrackSmearer::GetNTracks
int GetNTracks()
Definition: FakeTrackSmearer.h:177
xAOD::TruthParticle_v1::pdgId
int pdgId() const
PDG ID code.
Trk::loc1
@ loc1
Definition: ParamDefs.h:40
EFTrackingSmearingAlg::EFTrackingSmearingAlg
EFTrackingSmearingAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: EFTrackingSmearingAlg.cxx:94
EFTrackingSmearingAlg::m_parameterizedTrackEfficiency_LRT
BooleanProperty m_parameterizedTrackEfficiency_LRT
Definition: EFTrackingSmearingAlg.h:59
xAOD::TrackParticle_v1::theta
float theta() const
Returns the parameter, which has range 0 to .
EFTrackingSmearingAlg::m_FakeKillerEnable
BooleanProperty m_FakeKillerEnable
Definition: EFTrackingSmearingAlg.h:65
EFTrackingSmearingAlg::m_SetResolutionPtCutOff
DoubleProperty m_SetResolutionPtCutOff
Definition: EFTrackingSmearingAlg.h:51
Trk::phi0
@ phi0
Definition: ParamDefs.h:71
xAOD::TruthParticle_v1::charge
double charge() const
Physical charge.
Trk::v
@ v
Definition: ParamDefs.h:84
xAOD::TrackParticle_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)