Difference between revisions of "Aod ntuple"
m (→Jet) |
m (→Muon) |
||
(32 intermediate revisions by 3 users not shown) | |||
Line 4: | Line 4: | ||
--[[User:Barison|Barison]] 18:12, 19 May 2005 (MET DST) | --[[User:Barison|Barison]] 18:12, 19 May 2005 (MET DST) | ||
+ | |||
+ | == Monte Carlo Truth Particles == | ||
+ | |||
+ | The ntuples contain the full MC truth information ("truth") that is contained in the AOD. For the T1 (ttbar) sample there is an additional block ("hardtruth") with the hard scatter information remade from the ESD by Eric Cogneras. In the Analysis Skeleton there is an example where some of the information is printed to the screen. | ||
+ | |||
+ | For each truth_particle the 4-vector, PDG code, status code and decay tree navigation information: references to decay products of any given truth particle are stored in <tt>tidx_dg0_truth</tt> through <tt>tidx_dg9_truth</tt>, which contain the indices of the decay products in the truth ntuple block. The actual number of daughters for a given decay is specified by <tt>numdg_truth</tt>. <tt>tidx_moth_truth</tt> contains the index of the mother particle in the truth ntuple block. If a given link does not exists (e.g. a particle has no mother), then the link index value is set to -1. For convenience, direct 'jump links' exist to the top quark and anti-top quark in the event (if present) in <tt>tidx_top_truth</tt> and <tt>tidx_antitop_truth</tt>. Direct jump links to the decay producs of the top (a W and a b quark) are also stored in <tt>tidx_Wplus_truth, tidx_Wminus_truth, tidx_b_truth</tt> and <tt>tidx_antib_truth</tt> | ||
+ | |||
+ | <b><font color="red">Note:</font></b> Due to some problems with the decoding of the HERWIG truth block it is not always very clear how to extract the kinematics from the top, the W and the b correctly. Please check this information before you use it and, if necessary, get the truth from these particles yourself from the full block. | ||
== Electron == | == Electron == | ||
− | {| border="1" cellpadding="10" cellspacing="10" style="border-collapse: collapse; border: | + | {| border="1" cellpadding="10" cellspacing="10" style="border-collapse: collapse; border: 3px solid orange" |
|+ ''' Electron in AOD/Woutuple ''' | |+ ''' Electron in AOD/Woutuple ''' | ||
| AOD Container Name | | AOD Container Name | ||
Line 209: | Line 217: | ||
== Photon == | == Photon == | ||
+ | |||
+ | We did not investigate this. | ||
== Muon == | == Muon == | ||
− | {| border="1" cellpadding="10" cellspacing="10" style="border-collapse: collapse; border: | + | {| border="1" cellpadding="10" cellspacing="10" style="border-collapse: collapse; border: 3px solid orange" |
|+ ''' Muon in AOD/Woutuple ''' | |+ ''' Muon in AOD/Woutuple ''' | ||
| AOD Container Name | | AOD Container Name | ||
Line 385: | Line 395: | ||
<code> | <code> | ||
− | const Rec::TrackParticle* cbndMuon = | + | const Rec::TrackParticle* cbndMuon = (*muonItr)->get_CombinedMuonTrackParticle(); |
if( cbndMuon ) { | if( cbndMuon ) { | ||
double chi2 = cbndMuon->fitQuality()->chiSquared(); | double chi2 = cbndMuon->fitQuality()->chiSquared(); | ||
Line 395: | Line 405: | ||
== Tau == | == Tau == | ||
+ | |||
+ | We did not investigate this. | ||
== Jet == | == Jet == | ||
− | There are three collections of jets | + | There are three collections of jets which are all stored |
+ | in the ntuple. The ntuple variable <tt>algo_jet</tt> tells | ||
+ | you which jet clustering algorithm created the jet. Be | ||
+ | sure to cut on algo_jet when you loop over the jets, otherwise | ||
+ | you'll see many jets 3 times. | ||
<ul> | <ul> | ||
− | <li>KtTowerParticleJets (Kt algorithm with parameter D=1)</li> | + | <li>KtTowerParticleJets (Kt algorithm with parameter D=1, algo_jet=0)</li> |
− | <li>Cone4TowerParticleJets (Cone algorithm with R=0.4)</li> | + | <li>Cone4TowerParticleJets (Cone algorithm with R=0.4, algo_jet=1)</li> |
− | <li>ConeTowerParticleJets (Cone algorithm with R=0.7)</li> | + | <li>ConeTowerParticleJets (Cone algorithm with R=0.7, algo_jet=2)</li> |
</ul> | </ul> | ||
− | |||
− | |||
− | |||
All three alogrithms have a common data structure. | All three alogrithms have a common data structure. | ||
Line 426: | Line 439: | ||
A trick used in CDF is to neglect jets which are close to an Electron (typically dR<0.7). The same trick should be applied for Photons and Taus. | A trick used in CDF is to neglect jets which are close to an Electron (typically dR<0.7). The same trick should be applied for Photons and Taus. | ||
− | {| border="1" cellpadding="10" cellspacing="10" style="border-collapse: collapse; border: | + | {| border="1" cellpadding="10" cellspacing="10" style="border-collapse: collapse; border: 3px solid orange" |
|+ ''' Jet in AOD/Woutuple ''' | |+ ''' Jet in AOD/Woutuple ''' | ||
| AOD Container Name | | AOD Container Name | ||
Line 645: | Line 658: | ||
| Energy lost in the cryostat — empiric evaluation sqrt(EMB3 * TileBar0) | | Energy lost in the cryostat — empiric evaluation sqrt(EMB3 * TileBar0) | ||
|} | |} | ||
+ | |||
+ | |||
+ | == Truth Jets == | ||
+ | |||
+ | Truth jets are formed by running the jet reconstruction algorithm on final Truth particles from the simulation. Jets created this way do not contain the effects of detector energy resolution and other experimental issues. The Woutuple contains truth jets generated with the same three jet algorithms as for reconstruction level jets (Cone,Cone4 and Kt). The author of each jet in the <tt>trujet</tt> block can be determined from the <tt>algo_trujet</tt> integer, which has the same meaning as the <tt>algo_jet</tt> variable in the reco-level jet block | ||
== BJet == | == BJet == | ||
+ | The default b-tagging algorithm is run on cone jets with R=0.7 | ||
+ | |||
+ | It is possible to run a b-tagging refit completely on AOD. Andi Wildauer has done a lot of work on this and documented it on: | ||
+ | |||
+ | [https://uimon.cern.ch/twiki/bin/view/Atlas/BTagging#Running_on_AOD BTagging refit on AOD] | ||
+ | |||
+ | For the top group this was done by Eric (T1 sample only) which is why for the T1 sample there is also a block containing the btag information for R=0.4 jets. The user can choose this by setting the bjet_algo to 1 in the Analysis Skeleton. | ||
== Missing Et == | == Missing Et == | ||
+ | |||
+ | There are seven(!) Missing Et objects available in AOD. | ||
+ | The Woutuple contains all of them | ||
+ | |||
+ | {| border="1" cellpadding="10" cellspacing="10" style="border-collapse: collapse; border: 3px solid orange" | ||
+ | |+ '''Missing Et objects available in AOD''' | ||
+ | |- | ||
+ | | Type || AOD Container Name || Include File || Comment | ||
+ | |- | ||
+ | |Missing Et || MET_Base | ||
+ | |rowspan="2"|[http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtCalo.h MissingEtCalo.h] || uncalibrated ETMiss | ||
+ | |- | ||
+ | |Missing Et calibrated || MET_Calib || calibrated ETMiss | ||
+ | |- | ||
+ | |Missing Et Truth || MET_Truth ||[http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtTruth.h MissingEtTruth.h] || ETMiss from Truth | ||
+ | |- | ||
+ | |Missing Et Muon || MET_Muon | ||
+ | |rowspan="4"|[http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingET.h MissingET.h] || ETMiss from Muons | ||
+ | |- | ||
+ | |Missing Et Final || MET_Final || ETMiss for Physics analysis : calib+muons+cryostat correction | ||
+ | |- | ||
+ | |Missing Et Cryostat correction || MET_Cryo || Cryostat term | ||
+ | |- | ||
+ | |Missing Et Topological Clusters || MET_Topo || ETMiss from Topological Jet Clusters | ||
+ | |} | ||
+ | |||
+ | The calibration of the MET is obtained by using a H1 algorithm. | ||
+ | This algorithm corrects the cell energy as a function of the energy density in the cell: | ||
+ | <math>weight=\frac{\ln\left(|E_{cell}/V|\right)}{\ln(2)}+26</math> | ||
+ | |||
+ | The weights are stored in a lookup table here: | ||
+ | [http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/*checkout*/offline/Reconstruction/MissingET/src/METH1WeightToolG4.cxx?rev=1.1 Code for H1 calibration] | ||
+ | |||
+ | {| border="1" cellpadding="10" cellspacing="10" style="border-collapse: collapse; border: 3px solid orange" | ||
+ | |+ '''Missing Et objects available in Woutuple''' | ||
+ | |- | ||
+ | | AOD Container Name || AOD Variable || Woutuple Variable || Variable Type || Comment | ||
+ | |- | ||
+ | |rowspan="7"| MET_Base || || et_base_etm || Double_t || Missing Et (uncalibrated) | ||
+ | |- | ||
+ | | || ht_base_etm || Double_t || Total Ht (uncalibrated) | ||
+ | |- | ||
+ | | || px_base_etm || Double_t || Missing Px (uncalibrated) | ||
+ | |- | ||
+ | | || py_base_etm || Double_t || Missing Py (uncalibrated) | ||
+ | |- | ||
+ | | || compet_base_etm[7] || Double_t* || Missing Et (uncalibrated) <br> 7 calorimeter samples <br> see [http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtCalo.h MissingEtCalo.h] | ||
+ | |- | ||
+ | | || comppx_base_etm[7] || Double_t* || Missing Px (uncalibrated) <br> 7 calorimeter samples <br> see [http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtCalo.h MissingEtCalo.h] | ||
+ | |- | ||
+ | | || comppy_base_etm[7] || Double_t* || Missing Py (uncalibrated) <br> 7 calorimeter samples <br> see [http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtCalo.h MissingEtCalo.h] | ||
+ | |- | ||
+ | |rowspan="7"| MET_Calib || || et_calib_etm || Double_t || Missing Et (calibrated) | ||
+ | |- | ||
+ | | || ht_calib_etm || Double_t || Total Ht (calibrated) | ||
+ | |- | ||
+ | | || px_calib_etm || Double_t || Missing Px (calibrated) | ||
+ | |- | ||
+ | | || py_calib_etm || Double_t || Missing Py (calibrated) | ||
+ | |- | ||
+ | | || compet_calib_etm[7] || Double_t* || Missing Et (calibrated) <br> 7 calorimeter samples <br> see [http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtCalo.h MissingEtCalo.h] | ||
+ | |- | ||
+ | | || comppx_calib_etm[7] || Double_t* || Missing Px (calibrated) <br> 7 calorimeter samples <br> see [http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtCalo.h MissingEtCalo.h] | ||
+ | |- | ||
+ | | || comppy_calib_etm[7] || Double_t* || Missing Py (calibrated) <br> 7 calorimeter samples <br> see [http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtCalo.h MissingEtCalo.h] | ||
+ | |- | ||
+ | |rowspan="7"| MET_Truth || || et_truth_etm || Double_t || Missing Et (MC Truth) | ||
+ | |- | ||
+ | | || ht_truth_etm || Double_t || Total Ht (MC Truth) | ||
+ | |- | ||
+ | | || px_truth_etm || Double_t || Missing Px (MC Truth) | ||
+ | |- | ||
+ | | || py_truth_etm || Double_t || Missing Py (MC Truth) | ||
+ | |- | ||
+ | | || truet_truth_etm[6] || Double_t* || Missing Et (MC Truth) <br> 6 components <br> see [http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtTruth.h MissingEtTruth.h] | ||
+ | |- | ||
+ | | || trupx_truth_etm[6] || Double_t* || Missing Px (MC Truth) <br> 6 components <br> see [http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtTruth.h MissingEtTruth.h] | ||
+ | |- | ||
+ | | || trupy_truth_etm[6] || Double_t* || Missing Py (MC Truth) <br> 6 components <br> see [http://reserve02.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/MissingETEvent/MissingETEvent/MissingEtTruth.h MissingEtTruth.h] | ||
+ | |- | ||
+ | |rowspan="4"| MET_Muon || || et_muon_etm || Double_t || Missing Et (Muon Spectrometer) | ||
+ | |- | ||
+ | | || ht_muon_etm || Double_t || Total Ht (Muon Spectrometer) | ||
+ | |- | ||
+ | | || px_muon_etm || Double_t || Missing Px (Muon Spectrometer) | ||
+ | |- | ||
+ | | || py_muon_etm || Double_t || Missing Py (Muon Spectrometer) | ||
+ | |- | ||
+ | |rowspan="4"| MET_Final || || et_final_etm || Double_t || Missing Et <br> (Final — default for physical analysis) | ||
+ | |- | ||
+ | | || ht_final_etm || Double_t || Total Ht <br> (Final — default for physical analysis) | ||
+ | |- | ||
+ | | || px_final_etm || Double_t || Missing Px <br> (Final — default for physical analysis) | ||
+ | |- | ||
+ | | || py_final_etm || Double_t || Missing Py <br> (Final — default for physical analysis) | ||
+ | |- | ||
+ | |rowspan="4"| MET_Cryo || || et_cryo_etm || Double_t || Missing Et (Cryostat) | ||
+ | |- | ||
+ | | || ht_cryo_etm || Double_t || Total Ht (Cryostat) | ||
+ | |- | ||
+ | | || px_cryo_etm || Double_t || Missing Px (Cryostat) | ||
+ | |- | ||
+ | | || py_cryo_etm || Double_t || Missing Py (Cryostat) | ||
+ | |- | ||
+ | |rowspan="4"| MET_Topo || || et_topo_etm || Double_t || Missing Et (Topological clustering) | ||
+ | |- | ||
+ | | || ht_topo_etm || Double_t || Total Ht (Topological clustering) | ||
+ | |- | ||
+ | | || px_topo_etm || Double_t || Missing Px (Topological clustering) | ||
+ | |- | ||
+ | | || py_topo_etm || Double_t || Missing Py (Topological clustering) | ||
+ | |} | ||
+ | |||
+ | The best variables for evaluating missing Et are MET_Final or a vector sum of (MET_Topo+MET_Cryo+MET_Muon) | ||
== External References == | == External References == |
Latest revision as of 15:07, 18 November 2005
This page contains basic prescriptions to get physics objects from the AOD and the AOD-based Root ntuple (from now on defined as Woutuple).
Some comments on quality selection cuts will be added as work progresses.
--Barison 18:12, 19 May 2005 (MET DST)
Monte Carlo Truth Particles
The ntuples contain the full MC truth information ("truth") that is contained in the AOD. For the T1 (ttbar) sample there is an additional block ("hardtruth") with the hard scatter information remade from the ESD by Eric Cogneras. In the Analysis Skeleton there is an example where some of the information is printed to the screen.
For each truth_particle the 4-vector, PDG code, status code and decay tree navigation information: references to decay products of any given truth particle are stored in tidx_dg0_truth through tidx_dg9_truth, which contain the indices of the decay products in the truth ntuple block. The actual number of daughters for a given decay is specified by numdg_truth. tidx_moth_truth contains the index of the mother particle in the truth ntuple block. If a given link does not exists (e.g. a particle has no mother), then the link index value is set to -1. For convenience, direct 'jump links' exist to the top quark and anti-top quark in the event (if present) in tidx_top_truth and tidx_antitop_truth. Direct jump links to the decay producs of the top (a W and a b quark) are also stored in tidx_Wplus_truth, tidx_Wminus_truth, tidx_b_truth and tidx_antib_truth
Note: Due to some problems with the decoding of the HERWIG truth block it is not always very clear how to extract the kinematics from the top, the W and the b correctly. Please check this information before you use it and, if necessary, get the truth from these particles yourself from the full block.
Electron
AOD Container Name | AOD Variable | Woutuple Variable | Variable Type | Comment |
ElectronCollection | (*elecTES)->size()
|
n_elec | Int | Number of electrons in the Woutuple |
(*elecItr)->hlv().x()
|
px_elec | Double | Px | |
(*elecItr)->hlv().y()
|
py_elec | Double | Py | |
(*elecItr)->hlv().z()
|
pz_elec | Double | Pz | |
(*elecItr)->hlv().perp()
|
pt_elec | Double | Pt | |
(*elecItr)->hlv().eta()
|
eta_elec | Double | Eta | |
(*elecItr)->hlv().phi()
|
phi_elec | Double | Phi | |
(*elecItr)->isEM()
|
isem_elec | Int | isEM flag (see below)
| |
(*elecItr)->hasTrack()
|
hastrk_elec | Int (bool) | HasTrack flag: presence of charged track in the Inner Detector
| |
(*elecItr)->z0wrtPrimVtx()
|
z0vtx_elec | Double | Intersection (z) of track with the beam axis | |
(*elecItr)->d0wrtPrimVtx()
|
d0vtx_elec | Double | Transverse impact parameter d0 | |
(*elecItr)->numberOfBLayerHits()
|
nblayerhits_elec | Int | Number of hits in the Pixel B-layer | |
(*elecItr)->numberOfPixelHits()
|
npixelhits_elec | Int | Number of hits in the Pixel detector | |
(*elecItr)->numberOfSCTHits()
|
nscthits_elec | Int | Number of hits in the SCT | |
(*elecItr)->numberOfTRTHits()
|
ntrthits_elec | Int | Number of hits in the TRT | |
(*elecItr)->numberOfTRTHighThresholdHits()
|
ntrththits_elec | Int | Number of high threshold hits in the TRT | |
(*elecItr)->author()
|
auth_elec | Int (enum) | Algorithm used to create the electron: unknown=0 , egamma=1 , softe=2
| |
(*elecItr)->parameter(ElectronParameters::EoverP)
|
eoverp_elec | Double | E/P ratio | |
(*elecItr)->parameter(ElectronParameters::etcone)
|
etcone_elec | Double | Energy deposition in a cone dR=0.45 around the electron cluster | |
(*elecItr)->parameter(ElectronParameters::etcone20)
|
etcone20_elec | Double | Energy deposition in a cone dR=0.20 around the electron cluster. Standard cone size for ATLFAST | |
(*elecItr)->parameter(ElectronParameters::etcone30)
|
etcone30_elec | Double | Energy deposition in a cone dR=0.30 around the electron cluster. Currently empty | |
(*elecItr)->parameter(ElectronParameters::etcone40)
|
etcone40_elec | Double | Energy deposition in a cone dR=0.40 around the electron cluster | |
(*elecItr)->parameter(ElectronParameters::emWeight)
|
emwgt_elec | Double | Weight for electrons (see below) | |
(*elecItr)->parameter(ElectronParameters::pionWeight)
|
piwgt_elec | Double | Weight for pions (see below) |
There are 3 types of quality cuts you can perform on the electron candidates:
- Cuts based on the
isEM
flag - Cuts based on likelihood
- Cuts based on NeuralNet output
1.
The isEM
flag uses both calorimeter and tracking information in addition to TRT
information. The flag is a bit field which marks whether the candidate passed or not some safety checks.
The bit field marks the following checks:
Cluster based egamma
ClusterEtaRange = 0,
ClusterHadronicLeakage = 1,
ClusterMiddleSampling = 2,
ClusterFirstSampling = 3,
Track based egamma
TrackEtaRange = 8,
TrackHitsA0 = 9,
TrackMatchAndEoP = 10,
TrackTRT = 11
In 9.0.4 there is a problem with TRT simulation so one has to mask TRT bit to recover the lost efficiency.
To get the flag in your AOD analysis you should use:
(*elec)->isEM()
To mask the TRT bits you should use: (*elec)->isEM()&0x7FF==0
If you use isEM
then you will select electrons with an overall efficiency of about
80% in the barrel but much lower in the crack and endcap.
2.
The likelihood ratio is constructed using the following variables: energy in different calorimeter samplings, shower shapes in both eta and phi and E/P ration. No TRT information is used here.
You need to access two variables called emweight
and pionweight
then you can construct the likelihood ratio, defined by: emweight/(emweight+pionweight)
.
In AOD, you use the following code:
ElecEMWeight = elec*->parameter(ElectronParameters::emWeight);
ElecPiWeight = elec*->parameter(ElectronParameters::pionWeight);
Then form the variable:
X = ElecEMWeight/(ElecEMWeight+ElecPiWeight);
Requiring X > 0.6 will give you more than 90% efficiency for electrons.
3.
The NeuralNet variable uses as inputs the same variables used for likelihood. To use it in AOD you should proceed as follow:
ElecepiNN = elec*->parameter(ElectronParameters::epiNN);
Requiring ElecepiNN > 0.6 will give you about 90% eff for electrons.
However, you should be aware that the NN was trained in full eta range while the likelihood was computed in 3 bins in eta: barrel, crack and endcap. So I would suggest to use likelihood for now.
To require an isolated electron, you have to cut on the energy deposited in the cone around the electron cluster. ATLFAST for example requires Et<10 GeV in a cone of dR=0.2. You can simulate the ATLFAST cut by requiring etcone20<10.*GeV
Photon
We did not investigate this.
Muon
AOD Container Name | AOD Variable | Woutuple Variable | Variable Type | Comment |
MuonCollection | (*muonTES)->size()
|
n_muon | Int | Number of muons in the Woutuple |
(*muonItr)->hlv().x()
|
px_muon | Double | Px | |
(*muonItr)->hlv().y()
|
py_muon | Double | Py | |
(*muonItr)->hlv().z()
|
pz_muon | Double | Pz | |
(*muonItr)->hlv().perp()
|
pt_muon | Double | Pt | |
(*muonItr)->hlv().eta()
|
eta_muon | Double | Eta | |
(*muonItr)->hlv().phi()
|
phi_muon | Double | Phi | |
(*muonItr)->author()
|
auth_muon | Int (enum) | Algorithm used to create the muon: unknown=0 , highPt=1 , lowPt=2
| |
(*muonItr)->chi2()
|
chi2_muon | Double | Chi2 of the track fit. Empty for now (see below) | |
(*muonItr)->getConeIsol()[0]
|
coneiso0_muon | Double | ||
(*muonItr)->getEtIsol()[0]
|
etiso0_muon | Double | ||
(*muonItr)->hasCombinedMuon()
|
hascombi_muon | Int (bool) | ||
(*muonItr)->hasInDetTrackParticle()
|
hasindettp_muon | Int (bool) | ||
(*muonItr)->hasMuonSpectrometerTrackParticle()
|
hasmuspectp_muon | Int (bool) | ||
(*muonItr)->hasMuonExtrapolatedTrackParticle()
|
hasmmuextrtp_muon | Int (bool) | ||
(*muonItr)->hasCombinedMuonTrackParticle()
|
hascombimutp_muon | Int (bool) | ||
(*muonItr)->hasCluster()
|
hasclus_muon | Int (bool) | ||
(*muonItr)->isHighPt()
|
ishipt_muon | Int (bool) | Is the muon produced with the highPt algorithm? (see also author() )
| |
(*muonItr)->isLowPt()
|
islopt_muon | Int (bool) | Is the muon produced with the lowPt algorithm? (see also author() )
| |
(*muonItr)->numberOfBLayerHits()
|
nblayerhits_muon | Int | ||
(*muonItr)->numberOfPixelHits(
|
npixelhits_muon | Int | ||
(*muonItr)->numberOfSCTHits()
|
nscthits_muon | Int | ||
(*muonItr)->numberOfTRTHits()
|
ntrthits_muon | Int | ||
(*muonItr)->numberOfMDTHits()
|
nmdthits_muon | Int | ||
(*muonItr)->numberOfCSCEtaHits()
|
ncscetahits_muon | Int | ||
(*muonItr)->numberOfCSCPhiHits()
|
ncscphihits_muon | Int | ||
(*muonItr)->numberOfRPCEtaHits()
|
nrpcetahits_muon | Int | ||
(*muonItr)->numberOfRPCPhiHits(
|
nrpcphihits_muon | Int | ||
(*muonItr)->numberOfTGCEtaHits()
|
ntgcetahits_muon | Int | ||
(*muonItr)->numberOfTGCPhiHits()
|
ntgcphihits_muon | Int | ||
(*muonItr)->z0wrtPrimVtx()
|
z0vtx_muon | Double | ||
(*muonItr)->d0wrtPrimVtx()
|
d0vtx_muon | Double |
temporary: The muons have highPt and lowPt algorithms. The overlap is removed, but you may want to only use the highPt ones. The chi2()
method is always 0 in 10.0.1, so you will have to access the CombinedMuon through something like
const Rec::TrackParticle* cbndMuon = (*muonItr)->get_CombinedMuonTrackParticle();
if( cbndMuon ) {
double chi2 = cbndMuon->fitQuality()->chiSquared();
int ndof = cbndMuon->fitQuality()->numberDoF();
if( ndof > 0 ) chi2 = chi2/ndof;
return chi2;
}
Tau
We did not investigate this.
Jet
There are three collections of jets which are all stored in the ntuple. The ntuple variable algo_jet tells you which jet clustering algorithm created the jet. Be sure to cut on algo_jet when you loop over the jets, otherwise you'll see many jets 3 times.
- KtTowerParticleJets (Kt algorithm with parameter D=1, algo_jet=0)
- Cone4TowerParticleJets (Cone algorithm with R=0.4, algo_jet=1)
- ConeTowerParticleJets (Cone algorithm with R=0.7, algo_jet=2)
All three alogrithms have a common data structure.
You can get the energy contributions to a jet from different calorimeter samplings.
Each calorimeter (Barrel and Endcap) has up to 4 samplings:
PreSamplerB, EMB1, EMB2, EMB3, // LAr barrel
PreSamplerE, EME1, EME2, EME3, // LAr EM endcap
HEC0, HEC1, HEC2, HEC3, // Hadronic end cap cal.
TileBar0, TileBar1, TileBar2, // Tile barrel
TileGap1, TileGap2, TileGap3, // Tile gap (ITC & scint)
TileExt0, TileExt1, TileExt2, // Tile extended barrel
FCAL0, FCAL1, FCAL2, // Forward EM endcap
Overlapping jets and fake jets: A trick used in CDF is to neglect jets which are close to an Electron (typically dR<0.7). The same trick should be applied for Photons and Taus.
AOD Container Name | AOD Variable | Woutuple Variable | Variable Type | Comment |
KtTowerParticleJets Cone4TowerParticleJets ConeTowerParticleJets | (*jetTES)->size()
|
n_jet | Int | Number of jets in the Woutuple |
(*jetItr)->hlv().x()
|
px_jet | Double | Px | |
(*jetItr)->hlv().y()
|
py_jet | Double | Py | |
(*jetItr)->hlv().z()
|
pz_jet | Double | Pz | |
(*jetItr)->hlv().perp()
|
pt_jet | Double | Pt | |
(*jetItr)->hlv().eta()
|
eta_jet | Double | Eta | |
(*jetItr)->hlv().phi()
|
phi_jet | Double | Phi | |
(*jetItr)->pCalo().x()
|
px_calo_jet | Double | ||
(*jetItr)->pCalo().y()
|
py_calo_jet | Double | ||
(*jetItr)->pCalo().z()
|
pz_calo_jet | Double | ||
(*jetItr)->etEM(0)
|
etem0_jet | Double | Et from EM_Calo Sample_1(B+E) and Presampler (B+E) | |
(*jetItr)->etEM(1)
|
etem1_jet | Double | Et from EM_Calo Sample_2(B+E) | |
(*jetItr)->etEM(2)
|
etem2_jet | Double | Et from EM_Calo Sample_3(B+E) | |
(*jetItr)->etHad(0)
|
ethad0_jet | Double | Et from HAD_Calo Sample_0(B+E) | |
(*jetItr)->etHad(1)
|
ethad1_jet | Double | Et from HAD_Calo Sample_1(B+E) | |
(*jetItr)->etHad(2)
|
ethad2_jet | Double | Et from HAD_Calo Sample_2(B+E) | |
(*jetItr)->energyInSample(CaloSampling::PreSamplerB)
|
epresb_jet | Double | Energy in PreSampler (Barrel) | |
(*jetItr)->energyInSample(CaloSampling::EMB1)
|
eemb1_jet | Double | Energy in EM_Calo Sample_1 (Barrel) | |
(*jetItr)->energyInSample(CaloSampling::EMB2)
|
eemb2_jet | Double | Energy in EM_Calo Sample_2 (Barrel) | |
(*jetItr)->energyInSample(CaloSampling::EMB3)
|
eemb3_jet | Double | Energy in EM_Calo Sample_3 (Barrel) | |
(*jetItr)->energyInSample(CaloSampling::PreSamplerE)
|
eprese_jet | Double | Energy in PreSampler (Endcap) | |
(*jetItr)->energyInSample(CaloSampling::EME1)
|
eeme1_jet | Double | Energy in EM_Calo Sample_1 (Endcap) | |
(*jetItr)->energyInSample(CaloSampling::EME2)
|
eeme2_jet | Double | Energy in EM_Calo Sample_2 (Endcap) | |
(*jetItr)->energyInSample(CaloSampling::EME3)
|
eeme3_jet | Double | Energy in EM_Calo Sample_3 (Endcap) | |
(*jetItr)->energyInSample(CaloSampling::HEC0)
|
ehec0_jet | Double | Energy in HAD_Calo Sample_0 (Endcap) | |
(*jetItr)->energyInSample(CaloSampling::HEC1)
|
ehec1_jet | Double | Energy in HAD_Calo Sample_1 (Endcap) | |
(*jetItr)->energyInSample(CaloSampling::HEC2)
|
ehec2_jet | Double | Energy in HAD_Calo Sample_2 (Endcap) | |
(*jetItr)->energyInSample(CaloSampling::HEC3)
|
ehec3_jet | Double | Energy in HAD_Calo Sample_3 (Endcap) | |
(*jetItr)->energyInSample(CaloSampling::TileBar0)
|
etilebar0_jet | Double | Energy in HAD_Calo Sample_0 (Barrel) | |
(*jetItr)->energyInSample(CaloSampling::TileBar1)
|
etilebar1_jet | Double | Energy in HAD_Calo Sample_1 (Barrel) | |
(*jetItr)->energyInSample(CaloSampling::TileBar2)
|
etilebar2_jet | Double | Energy in HAD_Calo Sample_2 (Barrel) | |
(*jetItr)->energyInSample(CaloSampling::TileGap1)
|
etilegap1_jet | Double | Energy in Tile_gap Sample_1 | |
(*jetItr)->energyInSample(CaloSampling::TileGap2)
|
etilegap2_jet | Double | Energy in Tile_gap Sample_2 | |
(*jetItr)->energyInSample(CaloSampling::TileGap3)
|
etilegap3_jet | Double | Energy in Tile_gap Sample_3 | |
(*jetItr)->energyInSample(CaloSampling::TileExt0)
|
etileext0_jet | Double | Energy in Tile Extended Barrel Sample_0 | |
(*jetItr)->energyInSample(CaloSampling::TileExt1)
|
etileext1_jet | Double | Energy in Tile Extended Barrel Sample_1 | |
(*jetItr)->energyInSample(CaloSampling::TileExt2)
|
etileext2_jet | Double | Energy in Tile Extended Barrel Sample_2 | |
(*jetItr)->energyInSample(CaloSampling::FCAL0)
|
efcal0_jet | Double | Energy in FCAL Sample_0 | |
(*jetItr)->energyInSample(CaloSampling::FCAL1)
|
efcal1_jet | Double | Energy in FCAL Sample_1 | |
(*jetItr)->energyInSample(CaloSampling::FCAL2)
|
efcal2_jet | Double | Energy in FCAL Sample_2 | |
(*jetItr)->energyInSample(CaloSampling::Unknown)
|
eunknown_jet | Double | WTF??? | |
(*jetItr)->energyInCryostat() ;
|
ecryo_jet | Double | Energy lost in the cryostat — empiric evaluation sqrt(EMB3 * TileBar0) |
Truth Jets
Truth jets are formed by running the jet reconstruction algorithm on final Truth particles from the simulation. Jets created this way do not contain the effects of detector energy resolution and other experimental issues. The Woutuple contains truth jets generated with the same three jet algorithms as for reconstruction level jets (Cone,Cone4 and Kt). The author of each jet in the trujet block can be determined from the algo_trujet integer, which has the same meaning as the algo_jet variable in the reco-level jet block
BJet
The default b-tagging algorithm is run on cone jets with R=0.7
It is possible to run a b-tagging refit completely on AOD. Andi Wildauer has done a lot of work on this and documented it on:
For the top group this was done by Eric (T1 sample only) which is why for the T1 sample there is also a block containing the btag information for R=0.4 jets. The user can choose this by setting the bjet_algo to 1 in the Analysis Skeleton.
Missing Et
There are seven(!) Missing Et objects available in AOD. The Woutuple contains all of them
Type | AOD Container Name | Include File | Comment |
Missing Et | MET_Base | MissingEtCalo.h | uncalibrated ETMiss |
Missing Et calibrated | MET_Calib | calibrated ETMiss | |
Missing Et Truth | MET_Truth | MissingEtTruth.h | ETMiss from Truth |
Missing Et Muon | MET_Muon | MissingET.h | ETMiss from Muons |
Missing Et Final | MET_Final | ETMiss for Physics analysis : calib+muons+cryostat correction | |
Missing Et Cryostat correction | MET_Cryo | Cryostat term | |
Missing Et Topological Clusters | MET_Topo | ETMiss from Topological Jet Clusters |
The calibration of the MET is obtained by using a H1 algorithm. This algorithm corrects the cell energy as a function of the energy density in the cell:
The weights are stored in a lookup table here: Code for H1 calibration
AOD Container Name | AOD Variable | Woutuple Variable | Variable Type | Comment |
MET_Base | et_base_etm | Double_t | Missing Et (uncalibrated) | |
ht_base_etm | Double_t | Total Ht (uncalibrated) | ||
px_base_etm | Double_t | Missing Px (uncalibrated) | ||
py_base_etm | Double_t | Missing Py (uncalibrated) | ||
compet_base_etm[7] | Double_t* | Missing Et (uncalibrated) 7 calorimeter samples see MissingEtCalo.h | ||
comppx_base_etm[7] | Double_t* | Missing Px (uncalibrated) 7 calorimeter samples see MissingEtCalo.h | ||
comppy_base_etm[7] | Double_t* | Missing Py (uncalibrated) 7 calorimeter samples see MissingEtCalo.h | ||
MET_Calib | et_calib_etm | Double_t | Missing Et (calibrated) | |
ht_calib_etm | Double_t | Total Ht (calibrated) | ||
px_calib_etm | Double_t | Missing Px (calibrated) | ||
py_calib_etm | Double_t | Missing Py (calibrated) | ||
compet_calib_etm[7] | Double_t* | Missing Et (calibrated) 7 calorimeter samples see MissingEtCalo.h | ||
comppx_calib_etm[7] | Double_t* | Missing Px (calibrated) 7 calorimeter samples see MissingEtCalo.h | ||
comppy_calib_etm[7] | Double_t* | Missing Py (calibrated) 7 calorimeter samples see MissingEtCalo.h | ||
MET_Truth | et_truth_etm | Double_t | Missing Et (MC Truth) | |
ht_truth_etm | Double_t | Total Ht (MC Truth) | ||
px_truth_etm | Double_t | Missing Px (MC Truth) | ||
py_truth_etm | Double_t | Missing Py (MC Truth) | ||
truet_truth_etm[6] | Double_t* | Missing Et (MC Truth) 6 components see MissingEtTruth.h | ||
trupx_truth_etm[6] | Double_t* | Missing Px (MC Truth) 6 components see MissingEtTruth.h | ||
trupy_truth_etm[6] | Double_t* | Missing Py (MC Truth) 6 components see MissingEtTruth.h | ||
MET_Muon | et_muon_etm | Double_t | Missing Et (Muon Spectrometer) | |
ht_muon_etm | Double_t | Total Ht (Muon Spectrometer) | ||
px_muon_etm | Double_t | Missing Px (Muon Spectrometer) | ||
py_muon_etm | Double_t | Missing Py (Muon Spectrometer) | ||
MET_Final | et_final_etm | Double_t | Missing Et (Final — default for physical analysis) | |
ht_final_etm | Double_t | Total Ht (Final — default for physical analysis) | ||
px_final_etm | Double_t | Missing Px (Final — default for physical analysis) | ||
py_final_etm | Double_t | Missing Py (Final — default for physical analysis) | ||
MET_Cryo | et_cryo_etm | Double_t | Missing Et (Cryostat) | |
ht_cryo_etm | Double_t | Total Ht (Cryostat) | ||
px_cryo_etm | Double_t | Missing Px (Cryostat) | ||
py_cryo_etm | Double_t | Missing Py (Cryostat) | ||
MET_Topo | et_topo_etm | Double_t | Missing Et (Topological clustering) | |
ht_topo_etm | Double_t | Total Ht (Topological clustering) | ||
px_topo_etm | Double_t | Missing Px (Topological clustering) | ||
py_topo_etm | Double_t | Missing Py (Topological clustering) |
The best variables for evaluating missing Et are MET_Final or a vector sum of (MET_Topo+MET_Cryo+MET_Muon)