TrkQual: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
= Under Construction = | = Under Construction = | ||
This | This page is currently being written so please excuse any mistakes, errors or omissions. | ||
= Introduction = | = Introduction = | ||
Line 51: | Line 51: | ||
} | } | ||
</nowiki> | </nowiki> | ||
=== ...And TrkQualCollection === | === ...And TrkQualCollection === | ||
You can grab the <code>TrkQualCollection</code> like so: | You can grab the <code>TrkQualCollection</code> like so: | ||
Line 67: | Line 67: | ||
= For Trainers = | = For Trainers = | ||
TMVAGui.C is your friend | |||
Note that there is a worked example in [[TrkAna_Tutorial_Session#Exercise_3:_Retraining_TrkQual|this TrkAna tutorial exercise]] | Note that there is a worked example in [[TrkAna_Tutorial_Session#Exercise_3:_Retraining_TrkQual|this TrkAna tutorial exercise]] | ||
== ...Who Are Retraining TrkQual == | == ...Who Are Retraining TrkQual == | ||
Run the script RunTrainTrkQual.C | |||
If want to change dataset to produce a new set of weights | |||
== ...Who Are Training a New TrkQual and... == | == ...Who Are Training a New TrkQual and... == | ||
=== ...Are Removing Variables === | === ...Are Removing Variables === | ||
Can simply comment them out in TrainTrkQual.C. The Offline infrastructure handles this behaviour easily. | |||
=== ...Are Adding Variables === | === ...Are Adding Variables === | ||
If just want to test a new variable (or combination of variables) that already exists in TrkAna, can add it to TrainTrkQual.C | |||
=== ...Are Other Parameters === | If this variable becomes permanent, need to add it in the following places: | ||
* add it to TrkQual (including enum and name) | |||
* fill it in in TrackQuality_module.cc | |||
=== ...Are Changing Other Parameters === | |||
Plenty of parameters you might want to change in TrainTrkQual.C, including: | |||
* signal and background definitions | |||
* background weight expression | |||
== ...Who Are Calibrating == | == ...Who Are Calibrating == | ||
Run the script RunCalibTrkQual.C | |||
This adds an XML blcok to the XML file. If this already exists the script won't run, so delete it from the XML file, if you need |
Revision as of 20:13, 10 April 2020
Under Construction
This page is currently being written so please excuse any mistakes, errors or omissions.
Introduction
TrkQual is an artificial neural network (ANN) that evaluates the reconstruction quality of tracks. It uses certain reconstructed parameters of the track (e.g. number of hits) to separate "good" tracks from "bad" tracks and is trained on a simulation sample.
There are two classes of users:
- analyzers: people who use the result of TrkQual in their analyses; and,
- trainers: people who train and calibrate the TrkQual ANN.
This wiki page tries to guide both groups to accomplish the tasks they need. If this wiki page is lacking (or out of date), then additional help can be found in the usual places (hypernews, Slack, DocDB etc.).
For Everyone
There may be a few different trainings of TrkQual available. Questions to ask:
- what simulation sample was it trained on?
- what input variables are used?
- what definition of good quality and bad quality was used?
- has the output been calibrated?
Calibration
For Analyzers...
...Using A TrkAna Tree
If you are using a TrkAna tree for your analysis, then there are two useful leaves that you can apply cuts to:
- dequal.TrkQual
- dequal.TrkQualCalib
which are the uncalibrated and calibrated output values respectively. Note that it is probably best to use the calibrated value, since the effect of this should stay the same even if the underlying training changes.
If you have configured the TrackAnalysisReco module correctly, then you may also have the branch:
- detrkqual
which contains all the input variables that were available to be trained on. Note that it is possible for some trainings to "comment-out" input variables and so it is best not to assume that all the input variables seen in this branch were used...
...Using An Art Module...
If you are using an art module for your analysis, then there are two data products you can use:
- RecoQual, which contains the uncalibrated and calibrated output values; or,
- TrkQual, which contains the values of the input variables and the uncalibrated output value.
Note that RecoQual
is a general data product that can exist for other ANNs too (e.g. TrkPID)
...And RecoQual Collection
You can grab the RecoQualCollection
like so:
auto recoQualCollsH = event.getValidHandle<RecoQualCollection>(_inputTag);
where _inputTag
is the art::InputTag
for the module that produced the RecoQualCollection
(e.g. TrkQualDeM
).
You can then get the output value for each RecoQual object like this:
for(const auto& i_recoQual : *recoQualCollsH) { std::cout << "TrkQual Uncalibrated Output = " << i_trkQual._value << std::endl; std::cout << "TrkQual Calibrated Output = " << i_trkQual._calib << std::endl; }
...And TrkQualCollection
You can grab the TrkQualCollection
like so:
auto trkQualCollsH = event.getValidHandle<TrkQualCollection>(_inputTag);
where _inputTag
is the art::InputTag
for the module that produced the TrkQualCollection
(e.g. TrkQualDeM
).
You can then get the output value for each TrkQual object like this:
for(const auto& i_trkQual : *trkQualCollsH) { std::cout << "TrkQual Output = " << i_trkQual.MVAOutput() << std::endl; }
Note that this is the uncalibrated output value.
For Trainers
TMVAGui.C is your friend
Note that there is a worked example in this TrkAna tutorial exercise
...Who Are Retraining TrkQual
Run the script RunTrainTrkQual.C
If want to change dataset to produce a new set of weights
...Who Are Training a New TrkQual and...
...Are Removing Variables
Can simply comment them out in TrainTrkQual.C. The Offline infrastructure handles this behaviour easily.
...Are Adding Variables
If just want to test a new variable (or combination of variables) that already exists in TrkAna, can add it to TrainTrkQual.C
If this variable becomes permanent, need to add it in the following places:
- add it to TrkQual (including enum and name)
- fill it in in TrackQuality_module.cc
...Are Changing Other Parameters
Plenty of parameters you might want to change in TrainTrkQual.C, including:
- signal and background definitions
- background weight expression
...Who Are Calibrating
Run the script RunCalibTrkQual.C
This adds an XML blcok to the XML file. If this already exists the script won't run, so delete it from the XML file, if you need