CATTools
Intro
- Cat tools is a common edm based tuple maker for KCMS.
- Design such that switching from PAT to CAT takes minimal effort
- Code can be found in https://github.com/vallot/CATTools
.
- Setup and run instructions are below
.
- Since catTools reads miniAODs for input, the selections on the physics objects are set by the cuts in the MiniAOD
slimmer
- To request new features please add to issues
- For help cat-tools@cern.ch
Analysis Examples
- Steps and examples for cattuple usage is shown in here
.
Datasets
- Location and details of cattuple datasets made with CATTools is here
.
Physics Object Details
Object |
Label |
C++ class |
Selection |
Detailed information |
Muons |
catMuons |
std::vector<cat::Muon> |
includes muons with pT > 5 GeV or that pass the PF muon ID (see below) |
All standard muon ID and isolations, the associated tracker, outer and global tracks, muonBestTrack and typePMuonBestTrack |
Electrons |
catElectrons |
std::vector<cat::Electron> |
all gedGsfElectrons electrons |
For electrons of pT > 5 GeV, full information is saved (supercluster, seed cluster, interesting rechits, isolation and id variables). For electrons below the threshold, only the superCluster and seedCluster are provided, and the id and isolation variables are zeroed out to save space |
Taus |
catTaus |
std::vector<cat::Tau> |
taus from hpsPFTauProducer with pT > 18 GeV, and passing the basic decayModeFinding id |
All POG-supported tau id discriminators are included. Links to the PF candidates are also provided. Not included in CATTools unless required by users |
Photons |
catPhotons |
std::vector<cat::Photon> |
gedPhotons with pT > 14 GeV and hadTowOverEm() < 0.15 |
For photons that pass a minimal r9 or isolation cut, full information is saved (supercluster, seed cluster, interesting rechits, isolation and id variables). The requirement is the logical or of the three conditions r9()>0.8 , chargedHadronIso()<20 , chargedHadronIso()<0.3*pt() Not included in CATTools unless required by users |
Jets |
catJets |
std::vector<cat::Jet> |
ak4PFJetsCHS with pT > 10 GeV |
L1+L2+L3+residual corrections are applied; b-tagging and pileup jet id information are embedded. Links are provided to the constituent PF candidates. |
MET |
catMETs |
std::vector<cat::MET> |
the type1 PF MET |
MET uncertainties are provided |
Secondary Vertex |
catSecVertexs |
std::vector<cat::SecVertexs> |
vertex of 2 same flavour, opposite charge vertex |
used for j/psi |
Naming conventions for the variables are the same as PAT if they exists in the PAT Object.
Muons
- isGlobalMuon()
- isPFMuon()
- isTightMuon()
- isLooseMuon()
- isSoftMuon()
- normalizedChi2()
- numberOfValidHits()
- numberOfValidMuonHits()
- numberOfMatchedStations()
- numberOfValidPixelHits()
- trackerLayersWithMeasurement()
- dxy()
- dz()
- relIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- chargedHadronIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- puChargedHadronIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- neutralHadronIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- photonIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- genParticle()
- shiftedEnUp() and shiftedEnDown()
Electrons
- electronID(const std::string& name) to get the electron PID, currently all PID from miniAODs are saved.
- scEta()
- passConversionVeto()
- isGsfCtfScPixChargeConsistent()
- isPF()
- dxy()
- dz()
- relIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- chargedHadronIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- puChargedHadronIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- neutralHadronIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- photonIso(float dR=0.3 ) function returns either dR=0.3 or 0.4, default is 0.3.
- genParticle()
- shiftedEnUp() and shiftedEnDown()
Jets
- LooseId?()
- pileupJetId() is pileupJetId:fullDiscriminant
- bDiscriminator(const std::string &theLabel) to get the btagging variable, currently all btagging from miniAODs are saved.
- vtxMass() is the mass of the vertex
- vtxNtracks() is the number of tracks in it
- vtx3DVal() is the decay length value
- vtx3DSig() is the decay length significance
- genParticle()
- genJet()
- partonFlavour()
- hadronFlavour()
- partonPdgId()
- smearedRes(), smearedResDown(), smearedResUp()
- shiftedEnUp() and shiftedEnDown()
Secondary Vertexs
- lxy() is the 2D distance from the primary vertex to the secondary vertex
- l3D() is the 3D distance from the primary vertex to the secondary vertex
- vProb() is the probabiltiy of the vertex (TMath::Prob( vertex chi2, vertex no. degrees of freedom))
- pdgId() returns 11 or 13 depending on weather the vertex was made with electrons or muons respectively
- ipos() and ineg() returns the index of the muon or electron used in the vertex, i.e. ipos 3 is the 3rd lepton from either muon or electron collection
How To
Below is the description for CMSSW 7. For CMSSW 5, follow this
readme
.
Setting up CMSSW and checking out CATTools
%CODE{"bash"}%
scram p -n cat CMSSW CMSSW_7_2_2_patch1
cd cat/src
cmsenv
git clone
git@github.com:vallot/CATTools.git
cd CATTools
git checkout cat72x
cd ..
scram b -j 8
%ENDCODE%
To run on
MiniAODs
%CODE{"bash"}%
cd $SRT_CMSSW_BASE_SCRAMRTDEL/src/CATTools/CatProducer/prod/
cmsRun runCat.py useMiniAOD=True inputFiles=file:/pnfs/user/jlee/DYJetsToLL_M-50_13TeV-madgraph-pythia8/miniaod.root
%ENDCODE%
To run on AODs, it is important to have the right
globalTag
used.
%CODE{"bash"}%
cd $SRT_CMSSW_BASE_SCRAMRTDEL/src/CATTools/CatProducer/prod/
cmsRun runCat.py useMiniAOD=False globalTag='PHYS14_25_V1::All' inputFiles=/store/mc/Phys14DR/DYJetsToLL_M-50_13TeV-madgraph-pythia8/AODSIM/PU20bx25_PHYS14_25_V1-v1/00000/00CC714A-F86B-E411-B99A-0025904B5FB8.root
%ENDCODE%
Please note that the the global tags are CMSSW version dependant. For
PHYS14X?, use CMSSW_7_2_0 and above. For
PLS170X?, use CMSSW_7_0 (below CMSSW_7_2_0)