ATLAS Offline Software
SCTTracksMonTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
10 #include "SCTTracksMonTool.h"
11 
12 #include "SCT_NameFormatter.h"
13 
16 #include "Identifier/Identifier.h"
17 #include "InDetIdentifier/SCT_ID.h"
20 #include "StoreGate/ReadHandle.h"
23 
24 #include "GaudiKernel/IToolSvc.h"
25 #include "GaudiKernel/ListItem.h"
26 #include "GaudiKernel/StatusCode.h"
27 
28 #include "TF1.h"
29 #include "TH1F.h"
30 #include "TH2F.h"
31 #include "TProfile2D.h"
32 
33 #include <cmath>
34 
35 using namespace SCT_Monitoring;
36 
37 namespace {
38  // some possible parameter key values
39  enum ParameterKey {
40  ONE_D_LOCATION=1, TWO_D_LOCATION=3, TRACK_SEGMENT=11, OLD_PARAMETERS_VECTOR=31
41  };
42 
43  // segregate the eta regions
44  float
45  etaRegion(const float eta) {
46  // eta cut when segregating the tracks per region histogram
47  static const float etaBoundary(1.0);
48 
49  if (eta < -etaBoundary) {
50  return 0.0; // EC C
51  }
52  if (eta > etaBoundary) {
53  return 2.0; // EC A
54  }
55  return 1.0; // Barrel
56  }
57 }
58 
59 const std::string SCTTracksMonTool::s_triggerNames[] = {
60  "RNDM", "BPTX", "L1CAL", "TGC", "RPC", "MBTS", "COSM", "Calib"
61 };
62 
63 // ====================================================================================================
70 // ====================================================================================================
72  const std::string& name,
73  const IInterface* parent)
75 }
76 
77 // ====================================================================================================
78 // ====================================================================================================
80  ATH_CHECK( m_tracksName.initialize() );
83  if (m_doUnbiasedCalc) {
84  ATH_CHECK(m_updator.retrieve());
85  } else {
86  m_updator.disable();
87  }
88  ATH_CHECK(detStore()->retrieve(m_pSCTHelper, "SCT_ID"));
90 }
91 
92 // ====================================================================================================
93 // SCTTracksMonTool :: bookHistograms
94 // ====================================================================================================
97  ATH_MSG_DEBUG("SCTTracksMonTool::bookHistograms");
98  m_gpath = (m_useIDGlobal) ? ("/InDetGlobal/") : ("");
99  if (newRunFlag()) {
100  m_numberOfEvents = 0;
101  }
102  // Booking Track related Histograms
104 
105  return StatusCode::SUCCESS;
106 }
107 
108 // ====================================================================================================
109 // SCTTracksMonTool :: bookHistograms
110 // ====================================================================================================
113  ATH_MSG_DEBUG("SCTTracksMonTool::bookHistograms");
114  m_gpath = (m_useIDGlobal) ? ("/InDetGlobal/") : ("");
115  if (newRunFlag()) {
116  m_numberOfEvents = 0;
117  }
118  // Booking Track related Histograms
120 
121 
122  return StatusCode::SUCCESS;
123 }
124 
125 // ====================================================================================================
126 // SCTTracksMonTool :: fillHistograms
128 // ====================================================================================================
131 
132  ATH_MSG_DEBUG("SCTTracksMonTool::fillHistograms()");
133 
134  const bool doThisSubsystem[N_REGIONS] = {
136  };
137 
138  std::bitset<N_TRIGGER_TYPES> firedTriggers{0};
139  if (m_doTrigger and (not checkTriggers(firedTriggers).isSuccess())) {
140  ATH_MSG_WARNING("Triggers not found!");
141  }
142 
144  if (not tracks.isValid()) {
145  ATH_MSG_WARNING("No collection named " << m_tracksName.key() << " in StoreGate");
146  return StatusCode::SUCCESS;
147  }
148 
149  // Fill trigger info once if no tracks are reconstructed.
150  if (tracks->size()==0) {
151  for (int i{0}; i < N_REGIONS; ++i) {
152  m_trackRate->Fill(i, 0);
153  }
154  }
155 
156  ATH_MSG_DEBUG("Begin loop over " << tracks->size() << " tracks");
157  int goodTrks_N{0};
158  for (const Trk::Track* track: *tracks) {
159  if (track==nullptr) {
160  ATH_MSG_ERROR("No pointer to track");
161  break;
162  }
163  int local_scthits{0};
164  int scthits_on_trk{0}; // Breaks out of loop if track has less than 3 sct hits
165  const Trk::TrackSummary* trkSum{track->trackSummary()};
166  if (trkSum) {
167  scthits_on_trk = trkSum->get(Trk::numberOfSCTHits);
168  } else {
169  ATH_MSG_WARNING("TrackSummary not found not using track!");
170  }
171  if (scthits_on_trk < m_trackHitCut) {
172  ATH_MSG_DEBUG("track fails minimum SCT hit requirement");
173  break;
174  }
175  goodTrks_N++;
176  if (track->fitQuality()->numberDoF() > 0.) { // Fill Track Chi2/ndf histogram
177  m_trk_chi2->Fill(track->fitQuality()->chiSquared() / track->fitQuality()->numberDoF());
178  }
179  if (track->perigeeParameters() == nullptr) {
180  continue;
181  }
182  double trackPerigeeTheta{track->perigeeParameters()->parameters()[Trk::theta]};
183  double trackPerigeeEta{-std::log(std::tan(0.5 * trackPerigeeTheta))};
184  m_tracksPerRegion->Fill(etaRegion(trackPerigeeEta));
185  m_trk_eta->Fill(trackPerigeeEta);
186  if (track->perigeeParameters()->parameters()[Trk::qOverP] != 0.) {
187  m_trk_pt->Fill(std::abs(1. / (track->perigeeParameters()->parameters()[Trk::qOverP] * 1000.)));
188  }
189  m_trk_d0->Fill(track->perigeeParameters()->parameters()[Trk::d0]);
190  m_trk_z0->Fill(track->perigeeParameters()->parameters()[Trk::z0]);
191  m_trk_phi->Fill(track->perigeeParameters()->parameters()[Trk::phi]);
192  //
193  if (m_doTrigger) {
194  for (int trig{0}; trig < N_TRIGGER_TYPES; ++trig) {
195  if (hasTriggerFired(trig, firedTriggers)) {
196  m_trackTrigger->Fill(trig);
197  }
198  }
199  }
200  bool hasHits[N_REGIONS] = {
201  false, false, false
202  }; // Define bools to check whether the track has barrel, EA/C hits
203  // Get pointer to track state on surfaces
204  const Trk::TrackStates* trackStates{track->trackStateOnSurfaces()};
205  if (not trackStates) {
206  ATH_MSG_ERROR("for current track, TrackStateOnSurfaces == Null, no data will be written for this track");
207  break;
208  }
209  for (const Trk::TrackStateOnSurface* tsos: *trackStates) {
210  if (tsos->type(Trk::TrackStateOnSurface::Measurement)) {
211  const InDet::SiClusterOnTrack* clus{dynamic_cast<const InDet::SiClusterOnTrack*>(tsos->measurementOnTrack())};
212  if (clus) { // Is it a SiCluster? If yes...
213  const InDet::SiCluster* RawDataClus{dynamic_cast<const InDet::SiCluster*>(clus->prepRawData())};
214  if (RawDataClus==nullptr) {
215  continue; // Continue if dynamic_cast returns null
216  }
217  if (RawDataClus->detectorElement()->isSCT()) {
218  const Identifier sct_id{clus->identify()};
219  const int bec{m_pSCTHelper->barrel_ec(sct_id)};
220  const unsigned int subsystemIndex{bec2Index(bec)};
221  const bool doThisDetector{doThisSubsystem[subsystemIndex]};
222  hasHits[subsystemIndex] = true;
223  std::unique_ptr<const Trk::TrackParameters> trkParameters(nullptr);
224  const Trk::TrackParameters* trkParam{tsos->trackParameters()};
225  const Trk::RIO_OnTrack* rio{dynamic_cast<const Trk::RIO_OnTrack*>(tsos->measurementOnTrack())};
226  if (rio) {
227 #ifndef NDEBUG
228  ATH_MSG_DEBUG("if rio");
229 #endif
230  if (m_doUnbiasedCalc) {
231  if (trkParam) {
232  trkParameters = m_updator->removeFromState(
233  *trkParam, rio->localParameters(), rio->localCovariance());
234  // need to take ownership of the returned pointer
235  if (trkParameters) {
236  trkParam = trkParameters.get();
237  }
238  }
239  }
240  } else {
241  ATH_MSG_DEBUG("not rio");
242  }
243  if (trkParam) {
244  const AmgVector(5) LocalTrackParameters{trkParam->parameters()};
245 #ifndef NDEBUG
246  ATH_MSG_DEBUG("Track Position Phi= " << LocalTrackParameters[Trk::locX]);
247  ATH_MSG_DEBUG("Cluster Position Phi= " << clus->localParameters()[Trk::locX]);
248 #endif
249  if (not m_residualPullCalculator.empty()) {
250  std::optional<Trk::ResidualPull> residualPull{
251  m_residualPullCalculator->residualPull(
252  rio, trkParam,
255  if (not residualPull) {
256  ATH_MSG_WARNING("Residual Pull Calculator did not succeed!");
257  return StatusCode::SUCCESS;
258  } else {
259  double local_residual{residualPull->residual()[Trk::locX]};
260  double local_pull{residualPull->pull()[Trk::locX]};
261  if (doThisDetector) {
262  m_totalResidual[bec2Index(bec)]->Fill(local_residual, 1.);
263  m_totalPull[bec2Index(bec)]->Fill(local_pull, 1.);
264  }
265  }
266  }
267  } else { // no measured local parameters, pull won't be calculated
268  ATH_MSG_WARNING("No measured local parameters, pull won't be calculated");
269  }
270  ++local_scthits; // TODO This is not correct, change it
271  } // end if SCT..
272  } // end if (clus)
273  } // if (tsos->type(Trk::TrackStateOnSurface::Measurement))
274  }// end of loop on TrackStatesonSurface (they can be SiClusters, TRTHits,..)
275  m_trk_ncluHisto->Fill(local_scthits, 1.);
276  // We now know whether this particular track had hits in the barrel or endcaps- update the profile histogram
277  for (unsigned int region{0}; region < N_REGIONS; ++region) {
278  m_trackRate->Fill(static_cast<float>(region), static_cast<float>(hasHits[region])); // note: ordering was different in original code (was
279  // barrel, Eca, Ecb)
280  }
281  } // end of loop on tracks
282  m_trk_N->Fill(goodTrks_N);
283 
285  if ((m_numberOfEvents == 1) or ((m_numberOfEvents > 1) and (m_numberOfEvents % m_checkrate == 0))) {
286  ATH_MSG_DEBUG("Calling checkHists(false); false := during run");
287  if (checkHists(false).isFailure()) {
288  ATH_MSG_WARNING("Error in checkHists(false)");
289  }
290  }
291  // Time Dependent SP plots only online
292  m_nTracks_buf[m_nTracks_pos] = static_cast<int>(m_trk_chi2->GetEntries());
293  m_nTracks_pos++;
294  if (m_nTracks_pos == m_evtsbins) {
295  m_nTracks_pos = 0;
296  }
297  if (m_numberOfEvents % m_checkrate == 0) {
298  m_nTracks->Reset();
299  int latest_nTracks_pos{m_nTracks_pos};
300  for (int i{1}; i < m_evtsbins; ++i) {
301  if (latest_nTracks_pos == m_evtsbins) {
302  latest_nTracks_pos = 0;
303  }
305  if (i < m_nTracks_pos) {
306  m_nTracks->SetBinContent(i, m_nTracks_buf[i]);
307  } else {
308  m_nTracks->SetBinContent(i, 0);
309  }
310  } else {
311  m_nTracks->SetBinContent(i, m_nTracks_buf[latest_nTracks_pos]);
313  }
314  latest_nTracks_pos++;
315  if (latest_nTracks_pos == m_evtsbins) {
316  latest_nTracks_pos = 0;
317  }
318  }
319  }
320  }
321 
323 
324  return StatusCode::SUCCESS;
325 }
326 
327 // ====================================================================================================
328 // SCTTracksMonTool :: procHistograms
329 // ====================================================================================================
332  if (endOfRunFlag()) {
333  ATH_MSG_DEBUG("SCTTracksMonTool::procHistograms");
334  ATH_MSG_DEBUG("Total Rec Event Number: " << m_numberOfEvents);
335  ATH_MSG_DEBUG("Calling checkHists(true); true := end of run");
336  if (checkHists(true).isFailure()) {
337  ATH_MSG_WARNING("Error in checkHists(true)");
338  }
339  }
340  ATH_MSG_DEBUG("Exiting finalHists");
341  return StatusCode::SUCCESS;
342 }
343 
345 SCTTracksMonTool::checkHists(bool /*fromFinalize*/) {
346 
347  return StatusCode::SUCCESS;
348 }
349 
350 // ====================================================================================================
351 // SCTTracksMonTool :: calculatePull
352 // ====================================================================================================
353 float
354 SCTTracksMonTool::calculatePull(const float residual, const float trkErr, const float hitErr) const {
355  float errorSum{std::sqrt(trkErr * trkErr + hitErr * hitErr)};
356 
357  if (errorSum > 1.0e-20) { // as floats are rarely exactly zero
358  return residual / errorSum;
359  } else {
360  ATH_MSG_DEBUG("Error on Track and Cluster are 0. Returning Pull value 0.");
361  return 0.;
362  }
363 }
364 
365 // ====================================================================================================
366 // SCTTracksMonTool :: bookGeneralHistos
367 // ====================================================================================================
370  if (newRunFlag()) {
371  std::string stem{m_gpath + "/SCT/GENERAL/tracks/"};
372  MonGroup Tracks{this, m_gpath + "SCT/GENERAL/tracks", run, ATTRIB_UNMANAGED};
373 
374  const std::string regionNames[N_REGIONS]{"EndCapC", "Barrel", "EndCapA"};
375 
376  // Book histogram of number of tracks per region
377  m_tracksPerRegion = new TH1F("tracksPerRegion", "Number of tracks in eta regions", N_REGIONS, 0, N_REGIONS);
378  for (unsigned int iReg{0}; iReg<N_REGIONS; iReg++) {
379  m_tracksPerRegion->GetXaxis()->SetBinLabel(iReg+1, regionNames[iReg].c_str());
380  }
382  for(unsigned int iReg{0}; iReg<N_REGIONS; iReg++) {
383  m_totalResidual[iReg] = new TH1F(("total"+regionNames[iReg]+"Residual").c_str(),
384  ("Overall Residual Distribution for the "+regionNames[iReg]).c_str(),
385  100, -0.5, 0.5);
386  m_totalResidual[iReg]->GetXaxis()->SetTitle("Residual [mm]");
387  ATH_CHECK(Tracks.regHist(m_totalResidual[iReg]));
388 
389  m_totalPull[iReg] = new TH1F(("total"+regionNames[iReg]+"Pull").c_str(),
390  ("Overall Pull Distribution for the "+regionNames[iReg]).c_str(),
391  100, -5, 5);
392  m_totalPull[iReg]->GetXaxis()->SetTitle("Pull");
393  ATH_CHECK(Tracks.regHist(m_totalPull[iReg]));
394  }
395 
396  if (m_doTrigger) {
397  m_trackTrigger = new TH1I("trackTriggers", "Tracks for different trigger types", N_TRIGGER_TYPES, -0.5, 7.5);
398  // first bin, last bin
399  for (int trig{0}; trig < N_TRIGGER_TYPES; ++trig) {
400  m_trackTrigger->GetXaxis()->SetBinLabel(trig + 1, s_triggerNames[trig].c_str());
401  }
402  ATH_CHECK(Tracks.regHist(m_trackTrigger));
403  }
404  // Book histogram of track rate for different regions of the detector
405  m_trackRate = new TProfile("SCTTrackRate", "Track per event for SCT regions", 3, 0.0, 3.0);
406  for(unsigned int iReg{0}; iReg<N_REGIONS; iReg++) {
407  m_trackRate->GetXaxis()->SetBinLabel(iReg+1, regionNames[iReg].c_str());
408  }
409 
410  ATH_CHECK(Tracks.regHist(m_trackRate));
411  //
412  m_trk_ncluHisto = new TH1F("trk_sct_hits", "SCT HITS per single Track", N_HIT_BINS, FIRST_HIT_BIN, LAST_HIT_BIN);
413  m_trk_ncluHisto->GetXaxis()->SetTitle("Num of Hits");
414  ATH_CHECK(Tracks.regHist(m_trk_ncluHisto));
415 
416 
417  m_trk_chi2 = new TH1F("trk_chi2", "Track #chi^{2} div ndf", 150, 0., 150.);
418  m_trk_chi2->GetXaxis()->SetTitle("Number of track #chi^{2}/NDF");
419  ATH_CHECK(Tracks.regHist(m_trk_chi2));
420 
421  m_trk_N = new TH1F("trk_N", "Number of tracks", 400, 0, 4000);
422  m_trk_N->GetXaxis()->SetTitle("Number of tracks");
423  ATH_CHECK(Tracks.regHist(m_trk_N));
424 
425 
426  m_trk_pt = new TH1F("trk_pt", "Track P_{T}", 150, 0., 150.);
427  m_trk_pt->GetXaxis()->SetTitle("P_{T} [GeV]");
428  ATH_CHECK(Tracks.regHist(m_trk_pt));
429 
430  m_trk_d0 = new TH1F("trk_d0", "Track d0", 160, -40., 40.);
431  m_trk_d0->GetXaxis()->SetTitle("d0 [mm]");
432  ATH_CHECK(Tracks.regHist(m_trk_d0));
433 
434  m_trk_z0 = new TH1F("trk_z0", "Track z0", 200, -200., 200.);
435  m_trk_z0->GetXaxis()->SetTitle("z0 [mm]");
436  ATH_CHECK(Tracks.regHist(m_trk_z0));
437 
438  m_trk_phi = new TH1F("trk_phi", "Track Phi", 160, -4, 4.);
439  m_trk_phi->GetXaxis()->SetTitle("#phi [rad]");
440  ATH_CHECK(Tracks.regHist(m_trk_phi));
441 
442  m_trk_eta = new TH1F("trk_eta", "Track Eta", 160, -4., 4.);
443  m_trk_eta->GetXaxis()->SetTitle("#eta");
444  ATH_CHECK(Tracks.regHist(m_trk_eta));
445 
447  m_nTracks = new TH1I("sct_tracks_vs_en", "Number of Tracks vs Event Number", m_evtsbins, 1, m_evtsbins + 1);
448  m_nTracks->GetXaxis()->SetTitle("Event Number");
449  m_nTracks->GetYaxis()->SetTitle("Num of Tracks");
450  m_nTracks_buf.reserve(m_evtsbins);
451  m_nTracks_pos = 0;
452  ATH_CHECK(Tracks.regHist(m_nTracks));
453  }
454  }
455  return StatusCode::SUCCESS;
456 }
457 
458 
460 SCTTracksMonTool::h1Factory(const std::string& name, const std::string& title, const float extent, MonGroup& registry,
461  std::vector<TH1F*>& storageVector) const {
462  static const unsigned int nbins{100};
463  const float lo{-extent};
464  const float hi{extent};
465  TH1F* tmp{new TH1F{name.c_str(), title.c_str(), nbins, lo, hi}};
466 
467  ATH_CHECK(registry.regHist(tmp));
468  storageVector.push_back(tmp);
469  return StatusCode::SUCCESS;
470 }
471 
473 SCTTracksMonTool::checkTriggers(std::bitset<N_TRIGGER_TYPES>& firedTriggers) const {
475  if (evtInfo.isValid()) {
476  firedTriggers = evtInfo->level1TriggerType();
477 
478  return StatusCode::SUCCESS;
479  }
480  return StatusCode::FAILURE;
481 }
482 
483 bool
484 SCTTracksMonTool::hasTriggerFired(const unsigned int trigger, const std::bitset<N_TRIGGER_TYPES>& firedTriggers) const {
485  return ((trigger < N_TRIGGER_TYPES) ? firedTriggers.test(trigger) : false);
486 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
python.Dso.registry
registry
Definition: Control/AthenaServices/python/Dso.py:159
SCT_NameFormatter.h
SCTTracksMonTool::m_doUnbiasedCalc
BooleanProperty m_doUnbiasedCalc
Definition: SCTTracksMonTool.h:129
SCT_CalibAlgs::bec2Index
unsigned int bec2Index(const int bec)
Definition: SCT_CalibUtilities.cxx:60
SCTTracksMonTool::procHistograms
virtual StatusCode procHistograms() override final
process histograms at the end (we only use 'isEndOfRun')
Definition: SCTTracksMonTool.cxx:331
SCTTracksMonTool::hasTriggerFired
bool hasTriggerFired(const unsigned int trigger, const std::bitset< N_TRIGGER_TYPES > &firedTriggers) const
Get the status of a particular trigger bit (trigger bit 0-7)
Definition: SCTTracksMonTool.cxx:484
SCTTracksMonTool::m_tracksName
SG::ReadHandleKey< TrackCollection > m_tracksName
Name of the Track collection to use.
Definition: SCTTracksMonTool.h:132
SCTTracksMonTool::m_tracksPerRegion
TH1F * m_tracksPerRegion
Definition: SCTTracksMonTool.h:88
SCT_ID.h
This is an Identifier helper class for the SCT subdetector. This class is a factory for creating comp...
TrackParameters.h
Trk::locX
@ locX
Definition: ParamDefs.h:43
SCT_ConditionsData::N_REGIONS
@ N_REGIONS
Definition: SCT_ConditionsParameters.h:28
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
SCT_Monitoring::LAST_HIT_BIN
@ LAST_HIT_BIN
Definition: SCT_MonitoringNumbers.h:39
ManagedMonitorToolBase
Provides functionality for users to implement and save histograms, ntuples, and summary data,...
Definition: ManagedMonitorToolBase.h:74
ClusterSeg::residual
@ residual
Definition: ClusterNtuple.h:20
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
SCTTracksMonTool::m_trk_chi2
TH1F * m_trk_chi2
Pointer to 1D histogram of Track chi2.
Definition: SCTTracksMonTool.h:97
SCTTracksMonTool::checkHists
virtual StatusCode checkHists(bool fromFinalize) override final
helper function used in procHistograms
Definition: SCTTracksMonTool.cxx:345
SCTTracksMonTool::m_nTracks
TH1I * m_nTracks
Definition: SCTTracksMonTool.h:81
Trk::ResidualPull::Unbiased
@ Unbiased
RP with track state that has measurement not included.
Definition: ResidualPull.h:57
SCTTracksMonTool::s_triggerNames
static const std::string s_triggerNames[N_TRIGGER_TYPES]
Abbreviations for level 1 trigger types.
Definition: SCTTracksMonTool.h:67
SCTTracksMonTool::initialize
virtual StatusCode initialize() override final
Definition: SCTTracksMonTool.cxx:79
Trk::z0
@ z0
Definition: ParamDefs.h:70
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
SiClusterOnTrack.h
SCT_Monitoring::N_HIT_BINS
@ N_HIT_BINS
Definition: SCT_MonitoringNumbers.h:39
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
SCT_Monitoring::FIRST_HIT_BIN
@ FIRST_HIT_BIN
Definition: SCT_MonitoringNumbers.h:39
SCTTracksMonTool::m_trk_d0
TH1F * m_trk_d0
Pointer to 1D histogram of Track d0.
Definition: SCTTracksMonTool.h:105
SCT_Monitoring
Definition: SCT_MonitoringNumbers.h:17
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
SCTTracksMonTool::m_trk_z0
TH1F * m_trk_z0
Pointer to 1D histogram of Track z0.
Definition: SCTTracksMonTool.h:108
SCTTracksMonTool::m_checkrate
IntegerProperty m_checkrate
CheckHists() frequency.
Definition: SCTTracksMonTool.h:121
SCT_CalibAlgs::nbins
@ nbins
Definition: SCT_CalibNumbers.h:10
SCTTracksMonTool::m_updator
ToolHandle< Trk::IUpdator > m_updator
Definition: SCTTracksMonTool.h:140
ManagedMonitorToolBase::MonGroup
A container of information describing a monitoring object.
Definition: ManagedMonitorToolBase.h:138
SCTTracksMonTool::m_gpath
std::string m_gpath
Definition: SCTTracksMonTool.h:70
SCTTracksMonTool::m_doPositiveEndcap
BooleanProperty m_doPositiveEndcap
Definition: SCTTracksMonTool.h:127
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
SCTTracksMonTool::SCTTracksMonTool
SCTTracksMonTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor, calls base class constructor with parameters.
Definition: SCTTracksMonTool.cxx:71
FlavorTagDiscriminants::internal::Tracks
std::vector< const xAOD::TrackParticle * > Tracks
Definition: DataPrepUtilities.h:65
ManagedMonitorToolBase::initialize
virtual StatusCode initialize()
Definition: ManagedMonitorToolBase.cxx:669
SCTTracksMonTool::N_TRIGGER_TYPES
@ N_TRIGGER_TYPES
Definition: SCTTracksMonTool.h:64
lumiFormat.i
int i
Definition: lumiFormat.py:92
SCTTracksMonTool::fillHistograms
virtual StatusCode fillHistograms() override final
Fill histograms in each loop.
Definition: SCTTracksMonTool.cxx:130
python.TrigEgammaMonitorHelper.TProfile
def TProfile(*args, **kwargs)
Definition: TrigEgammaMonitorHelper.py:81
Trk::theta
@ theta
Definition: ParamDefs.h:72
SCTTracksMonTool::m_totalResidual
TH1F * m_totalResidual[SCT_Monitoring::N_REGIONS]
Definition: SCTTracksMonTool.h:83
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::numberOfSCTHits
@ numberOfSCTHits
number of SCT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:71
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthenaMonManager::online
@ online
Definition: AthenaMonManager.h:49
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
SCTTracksMonTool::calculatePull
float calculatePull(const float, const float, const float) const
Calculate Pull value for MeasuredAtPlane TrackStates.
Definition: SCTTracksMonTool.cxx:354
covarianceTool.title
title
Definition: covarianceTool.py:542
SCTTracksMonTool::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
ReadHandleKey of EventInfo.
Definition: SCTTracksMonTool.h:134
SCTTracksMonTool::m_totalPull
TH1F * m_totalPull[SCT_Monitoring::N_REGIONS]
Definition: SCTTracksMonTool.h:84
ManagedMonitorToolBase::ATTRIB_UNMANAGED
@ ATTRIB_UNMANAGED
Definition: ManagedMonitorToolBase.h:131
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SCTTracksMonTool::bookHistograms
virtual StatusCode bookHistograms() override final
An inheriting class should either override this function or bookHists().
Definition: SCTTracksMonTool.cxx:112
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
TrackSummary.h
Trk::ParametersBase
Definition: ParametersBase.h:55
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
DataVector< const Trk::TrackStateOnSurface >
SCTTracksMonTool::m_evtsbins
IntegerProperty m_evtsbins
Tracks vs evt.
Definition: SCTTracksMonTool.h:123
ManagedMonitorToolBase::m_environment
AthenaMonManager::Environment_t m_environment
Definition: ManagedMonitorToolBase.h:902
Trk::PrepRawData::identify
Identifier identify() const
return the identifier
SCTTracksMonTool::bookHistogramsRecurrent
virtual StatusCode bookHistogramsRecurrent() override final
Book histograms in initialization.
Definition: SCTTracksMonTool.cxx:96
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
Trk::TrackSummary
A summary of the information contained by a track.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:287
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Trk::d0
@ d0
Definition: ParamDefs.h:69
SCTTracksMonTool::m_trackRate
TProfile * m_trackRate
Definition: SCTTracksMonTool.h:91
errorcheck.h
Helpers for checking error return status codes and reporting errors.
SiCluster.h
SCTTracksMonTool::m_trk_phi
TH1F * m_trk_phi
Pointer to 1D histogram of Track phi.
Definition: SCTTracksMonTool.h:114
SCTTracksMonTool::m_trk_N
TH1F * m_trk_N
Definition: SCTTracksMonTool.h:99
SCTTracksMonTool::m_numberOfEvents
int m_numberOfEvents
Definition: SCTTracksMonTool.h:77
SCTTracksMonTool.h
SCTTracksMonTool::m_residualPullCalculator
ToolHandle< Trk::IResidualPullCalculator > m_residualPullCalculator
Kalman Updator for SCT Unbiased states in Residual calculation.
Definition: SCTTracksMonTool.h:139
ManagedMonitorToolBase::run
@ run
Definition: ManagedMonitorToolBase.h:116
SCTTracksMonTool::m_doNegativeEndcap
BooleanProperty m_doNegativeEndcap
Definition: SCTTracksMonTool.h:128
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
Trk::ResidualPull::Biased
@ Biased
RP with track state including the hit.
Definition: ResidualPull.h:55
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
SCTTracksMonTool::m_nTracks_buf
std::vector< int > m_nTracks_buf
Definition: SCTTracksMonTool.h:75
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
SCTTracksMonTool::m_trk_ncluHisto
TH1F * m_trk_ncluHisto
Pointer to 1D histogram of Number of SCT Clusters per Track.
Definition: SCTTracksMonTool.h:94
ManagedMonitorToolBase::endOfRunFlag
bool endOfRunFlag() const
Definition: ManagedMonitorToolBase.h:859
SCTTracksMonTool::bookGeneralHistos
StatusCode bookGeneralHistos()
Definition: SCTTracksMonTool.cxx:369
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
SCTTracksMonTool::checkTriggers
StatusCode checkTriggers(std::bitset< N_TRIGGER_TYPES > &firedTriggers) const
Fill the m_firedTriggers bitset according to event information.
Definition: SCTTracksMonTool.cxx:473
SCTTracksMonTool::m_trk_eta
TH1F * m_trk_eta
Pointer to 1D histogram of Track eta.
Definition: SCTTracksMonTool.h:111
SCTTracksMonTool::m_pSCTHelper
const SCT_ID * m_pSCTHelper
SCT Helper class.
Definition: SCTTracksMonTool.h:143
SCTTracksMonTool::m_useIDGlobal
BooleanProperty m_useIDGlobal
Definition: SCTTracksMonTool.h:125
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
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
SCTTracksMonTool::m_trackHitCut
IntegerProperty m_trackHitCut
Cut on number of SCT hits on track.
Definition: SCTTracksMonTool.h:119
ReadHandle.h
Handle class for reading from StoreGate.
SCTTracksMonTool::h1Factory
StatusCode h1Factory(const std::string &name, const std::string &title, const float extent, MonGroup &registry, std::vector< TH1F * > &storageVector) const
Factory + register for the 1D histograms, returns whether successfully registered.
Definition: SCTTracksMonTool.cxx:460
SCTTracksMonTool::m_trk_pt
TH1F * m_trk_pt
Pointer to 1D histogram of Track pt.
Definition: SCTTracksMonTool.h:102
InDet::SiCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiCluster.h:40
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
SCTTracksMonTool::m_doTrigger
BooleanProperty m_doTrigger
Definition: SCTTracksMonTool.h:126
SCTTracksMonTool::m_nTracks_pos
int m_nTracks_pos
Definition: SCTTracksMonTool.h:76
PhysDESDM_Quirks.trigger
trigger
Definition: PhysDESDM_Quirks.py:27
InDet::SiClusterOnTrack
Definition: SiClusterOnTrack.h:39
SCTTracksMonTool::m_trackTrigger
TH1I * m_trackTrigger
Definition: SCTTracksMonTool.h:82
ManagedMonitorToolBase::newRunFlag
bool newRunFlag() const
Definition: ManagedMonitorToolBase.h:854