Aod ntuple

From Atlas Wiki
Revision as of 15:55, 19 May 2005 by Barison (talk | contribs) (→‎Jet)
Jump to navigation Jump to search

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.


Electron

Electron in AOD/Woutuple
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:

  1. Cuts based on the isEM flag
  2. Cuts based on likelihood
  3. 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

Muon

Muon in AOD/Woutuple
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 = part->get_CombinedMuonTrackParticle();
 if( cbndMuon ) {
   double chi2 = cbndMuon->fitQuality()->chiSquared();
   int ndof =  cbndMuon->fitQuality()->numberDoF();
   if( ndof > 0 ) chi2 = chi2/ndof;
   return chi2;
 }

Tau

Jet

There are three collections of jets:

  • KtTowerParticleJets (Kt algorithm with parameter D=1)
  • Cone4TowerParticleJets (Cone algorithm with R=0.4)
  • ConeTowerParticleJets (Cone algorithm with R=0.7)

Unfortunately, the Woutuple contains only one collection for the time being. The collection can be selected when you produce the Woutuple, by modifying the jobOptions file.

All three alogrithms have a common data structure:

Jet in AOD/Woutuple
AOD Container Name AOD Variable Woutuple Variable Variable Type Comment
KtTowerParticleJets Cone4TowerParticleJets ConeTowerParticleJets (*jetTES)->size() n_elec Int Number of jets in the Woutuple
(*jetItr)->hlv().x() px_elec Double Px
(*jetItr)->hlv().y() py_elec Double Py
(*jetItr)->hlv().z() pz_elec Double Pz
(*jetItr)->hlv().perp() pt_elec Double Pt
(*jetItr)->hlv().eta() eta_elec Double Eta
(*jetItr)->hlv().phi() phi_elec 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
(*jetItr)->etEM(1) etem1_jet Double
(*jetItr)->etEM(2) etem2_jet Double
(*jetItr)->etHad(0) ethad0_jet Double
(*jetItr)->etHad(1) ethad1_jet Double
(*jetItr)->etHad(2) ethad2_jet Double
(*jetItr)->energyInSample(CaloSampling::PreSamplerB) epresb_jet Double
(*jetItr)->energyInSample(CaloSampling::EMB1) eemb1_jet Double
(*jetItr)->energyInSample(CaloSampling::EMB2) eemb2_jet Double
(*jetItr)->energyInSample(CaloSampling::EMB3) eemb3_jet Double

BJet

Missing Et

External References

Container/Object Names for AOD

Storegate Keys For AOD 10.x

Particle Preselection Cuts

Electron.h Include File

Muon.h Include File