Jamies SUSYView development page

This page is mainly for me to remeber what i want to try, what i have tried and what does and doenst work. It may be useful for me to point people too who are working on the same thing?

Things that i want to do at some point

  • Get truth jets running using AtlFast AOD
  • Get Evt generation, Atl Fast and SUSYView to run in one job
  • Tidy up python

quick list

  • make truth ntuples with reco matching and dump very detailed reco aod info for elec / muon / tau
  • check with simon that atlfast missing et is mising LSP. fix this
  • update to use configurables
  • make inserter / selected / overlap tables for susy signal send to amir/ kyle / akira (also do for nooverlapremoval)
  • atlfast eff looks bad. why?? look at resoln??
  • add pt balance (rms) variable??
  • check that jet insertion is working ok? (fixing the truth jet bug??)
  • check that in 12series the atlfast truth jets is working and that atlfast aod is produced with full aod
  • get the lepton endpoint stuff working with labels for ???
  • compare my plots with those from talks at trg phys susy session. do they compare ok? howabout trying to see a signal over top?
  • add trg aod info when it is available

some new things i thought of: 11 series....

  • make simple event counter tell you howmany events (total) have been run on at the end.
  • make sure have added the Matcher thing of amir's properly and in cvs
  • add tracks near electrons
  • get steffans stuff committed - needs rec->tru matching
  • add detailed photon info to user data??

12 series...

  • port changes from 111 -> 12 (including Electron id var's improvement) (diff entries file in EventViewuserData in 11 and 12).
  • test with AtlFast - does truth jets work?? / PJet/TJet issue...
  • test with trigger does what we expect..

could try porting trigger stuff back to 11.0.5 and see if it makes sense with trg aod's??

Study of insertion of truth Jets versus Photons

  • with the standard truth insertion setup (photon inserter above jet inserter and no isolation cut on photon) you quite often get what you would want to call a jet inserted as a photon (if it contains a true photon).
  • this can mess up things for example the leading jet Pt distbn for J5 can look like the middle plot below. whereas it should look like the left plot.
j5_1.gif
  • so i have had a little look at this issue i have used J5 for jet sample and higgs to gamma gamma as a sample of useful gammas (this could be extended to heavy flavour jets where leptons in the jet could casue similar problems but i havent looked at this)
  • firstly i ran the inserters in 3 configurations i) jet as first inserter ii) jet as last inserter iii) jet as last inserter and photon inserter with isolation requirement
  • plots of jet multiplicty for the 3 cases for J5 (top) and hgg (bottom) are shown below
PJet_N.gif
  • same plots for photon multiplicty
Ph_N.gif
  • the 2 sets of plots above show that for the J5 sample the left is what they should look like. for the hgg sample the middle is what they should look like. and the right plots do a pretty good job of looking like we would want
  • i have also looked at associating the nearest true photon to the inserted jets and looking at the deltaR distbn for the 3 cases and 2 samples. plots of deltaR are shown below:
jet_TrueGamma_DeltaR_1.gif

below is old stuff (may still be relevent??)

Get truth jets running using AtlFast AOD

Using the standard 11.0.41 tags AtlFast AOD doesnt contain the StoreGate container with key ConeTruthParticleJets. Which means you get no true jets when running with AtlFast - not ideal! Amir suggested adding the Jet reconstruction and Jet building to the file SUSYViewAtlFast_topOptions.py so i added
# add in the truth jet building (or try at least!)
include("JetRec/ConeTruthJet_jobOptions.py")
include("JetRec/Cone4TruthJet_jobOptions.py")
include("JetRec/KtTruthJet_jobOptions.py")
theApp.Dlls += ["CaloUtils"]
include("JetMissingEtAlgs/TruthParticleJetBuilder_jobOptions.py")

(CaloUtils Dll added to get rid of warnings about message H1WeightToolG4 - thanks Kyle).

i added this just after the line:

include( "PartPropSvc/PartPropSvc.py" )

you still get these warnings every event:

> KtTruthParticleJetBuilder.ParticleJetBuilderToolWARNING no primary vertex
> KtTruthParticleJetBuilder.ParticleJetBuilderToolWARNING no primary vertex
> KtTruthParticleJetBuilder.ParticleJetBuilderToolWARNING no primary vertex
> KtTruthParticleJetBuilder.ParticleJetBuilderToolWARNING no primary vertex
> KtTruthParticleJetBuilder.ParticleJetBuilderToolWARNING no primary vertex
> KtTruthParticleJetBuilder.ParticleJetBuilderToolWARNING no primary vertex
> Cone4TruthParticleJetBuilder.ParticleJetBuild...WARNING no primary vertex
> Cone4TruthParticleJetBuilder.ParticleJetBuild...WARNING no primary vertex
> Cone4TruthParticleJetBuilder.ParticleJetBuild...WARNING no primary vertex
> Cone4TruthParticleJetBuilder.ParticleJetBuild...WARNING no primary vertex
> Cone4TruthParticleJetBuilder.ParticleJetBuild...WARNING no primary vertex
> Cone4TruthParticleJetBuilder.ParticleJetBuild...WARNING no primary vertex
> ConeTruthParticleJetBuilder.ParticleJetBuilde...WARNING no primary vertex
> ConeTruthParticleJetBuilder.ParticleJetBuilde...WARNING no primary vertex
> ConeTruthParticleJetBuilder.ParticleJetBuilde...WARNING no primary vertex
> ConeTruthParticleJetBuilder.ParticleJetBuilde...WARNING no primary vertex
> ConeTruthParticleJetBuilder.ParticleJetBuilde...WARNING no primary vertex
> ConeTruthParticleJetBuilder.ParticleJetBuilde...WARNING no primary vertex

Kyle suggested

cmt co PhysicsAnlaysis/JetMissingEtID/JetMissingEtUtils

go to the src/PartticleJetBuilder.cxx file

and change this bit

// origin vertex (primary for now)
    const VxContainer* vxContainer(0);
    sc = m_storeGate->retrieve(vxContainer, m_vxCandidatesName);

    if (sc == StatusCode::SUCCESS && vxContainer->size() > 0)
      particleJet->set_origin(vxContainer, 0);
    else {
      log << MSG::WARNING << "no primary vertex" << endreq;
      return StatusCode::FAILURE;
    }

so that it returns  StatusCode::SUCCESS instead

which i tried but i still no truth Jets it seems. need to investigate - maybe i should return in src/ParticleJetBuilder.cxx but use a default Vertex position?

Running generation / Atlfast / SUSYView in one job

I asked Simon Dean about this and he had said:

The easiest way to start is by issuing 'get_files
PythiatoAtlfasttoAOD.py' in your run directory. If you look at the
script, you'll see that it reads in a file containing generator options
("AtlfastAlgs/Atlfast_RunPythia"). You can run with different options by
checking this file out locally and changing it, as described on this page:
  http://www.hep.ucl.ac.uk/atlas/atlfast/NewJobOptionFiles.html
If you run PythiatoAtlfasttoAOD.py, it will get as far as producing a fast
sim AOD file. You can either use this AOD file as input to another script
that runs your analysis or you can add the options for running your
analysis to the end of PythiatoAtlfasttoAOD.py to do it all in one. The
StoreGate keys for fast sim AOD can be seen here:
  http://www.hep.ucl.ac.uk/atlas/atlfast/AtlfastAOD.html

i tried the above - i have taken my analysis job option removed the lines:

# EventView POOL Persistency
include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" )
EventSelector = Service( "EventSelector" )
EventSelector.BackNavigation = True
# the POOL converters
include( "ParticleEventAthenaPool/AOD_PoolCnv_jobOptions.py")
EventSelector.InputCollections = [ './data/fast_aod.pool.root']

which were loading in the AtlFast AOD from a pool file. and instead put in the line:

include("PythiatoAtlfasttoAOD.py")

from the top of SUSYViewAtlFast_topOptions.py

when i first tried this it crashed - i could see that the Atlfast AOD was still being written to pool and i thought this maybe the problem so i hacked around a little like:

PythiatoAtlfasttoAOD.py
replacing: AtlfastAlgs/Atlfast_MakeAOD.py
with:
from ParticleEventAthenaPool.AODFlags import AODFlags
AODFlags.allSetOff()
AODFlags.fastSetOn()
AODFlags.SpclMC = True
AODFlags.MissingEtTruth = True
AODFlags.McEventKey="GEN_EVENT"
AODFlags.Print()
(which i took from AtlfastAlgs/Atlfast_MakeAOD.py - so i was trying to get
rid of the write the AOD to pool part of AtlfastAlgs/Atlfast_MakeAOD.py ).
and i also got rid of the
include ( "TestAtlfast/TestAtlfast_RunSimpleTest.py" )

it still crashes but from EventView not being able to retrieve the AtlFats AOD objects.

defaultEventView.EVElectronInserter               ERROR Could not retrieve container (AtlfastElectronCollection)
defaultEventView.EVPhotonInserter                 ERROR Could not retrieve container (AtlfastPhotonCollection)
defaultEventView.EVMuonInserter                   ERROR Could not retrieve container (AtlfastMuonCollection)
defaultEventView.EVTauJetInserter                 ERROR Could not retrieve container (AtlfastTauJetContainer)
defaultEventView.EVJetTagInserter                 ERROR Could not retrieve container (AtlfastBJetContainer)
defaultEventView.EVParticleJetInserter            ERROR Could not retrieve container (AtlfastParticleJetContainer)
defaultEventView.EVMissingEtUserData              ERROR Could not retrieve MissingET object
defaultEventView.EVMissingEtUserData              ERROR Could not retrieve MissingET truth object
defaultEventView.EVTrueElectron                   ERROR Could not retrieve container (SpclMC)
defaultEventView.EVTruePhoton                     ERROR Could not retrieve container (SpclMC)
defaultEventView.EVTrueMuon                       ERROR Could not retrieve container (SpclMC)
defaultEventView.EVTrueTau                        ERROR Could not retrieve container (SpclMC)

if i run the same EventView stuff on AtlFast AOD read in from pool then it can find these objects. weird! I have e-mailed Simon Dean to see if he has any idea why this doesnt work.

Tidying up and moving forward

i discussed with Amir and we came up with the following list of improvements
  • Make our own version of Default and Truth JOs. this means we can have our own specific configuration (for example multiple EVs by default and having truth and reco particles have the same lables - which simplifies down stream algorithms)
  • Store objects as TVector3 and (later) TLorentzVector
  • Meff for truth doesnt make sense as missingEt is 0. there is a tool for true missingEt (cant remember where) change SimpleSusyVars to have the key for missingEt as a parameter so it can grab this for truth.
  • remove 3D from end of Sphericity name and store the vectors as Tvector3's
  • add lepton combiniatorics so can look for an end point
  • run on AtlFast output for real aod so you get 3 root files produced reco, truth , fast_reco
  • make it so can switch between different inputs / generators etc.. but still have your job configured how you want it. something like:
athena -c "theApp.EvtMax=100; someotherargs = ??" SUSYViewAtlFastFromGenerator.py GeneratorConfig.py
or
athena -c "theApp.EvtMax=100; mode = 'susy'" SUSYViewDefault.py MySpecialConfig.py

storing vectors etc..

  • i have updated the code so can store Sphericity axis as a TVector3 by changing SimpleSusyVars to look like:
    TVector3 sph(eigenVectors[0][ei[2]],eigenVectors[1][ei[2]],eigenVectors[2][ei[2]]);
    ev->setUserData<TVector3>(m_Prefix+"SphericityAxis",sph);
adding the lines to EVAANtupleDumper::FillAllTypes
  mLog << MSG::DEBUG << "Filling TVector3" <<  endreq;
  FillNtuplePointerItems< TVector3 > (ev,tree);

then in some python the line

from ROOT import TVector3
is required. i think from discussion that this should go in EventViewAANtupleCreation_jobOptions.py

endpoint spectrum creation

Amir and i wrote the following JO
theApp.Dlls+=["EventViewCombiners"]

def DiLeptonSpectra(alg) :
    alg.EventViewTools+=[ "EVSimpleCombo/LeptonPair" ]

    #Combinations
    alg.LeptonPair.Labels=["Electron","Muon"]          # input particle label - does this need to be Truth for truth??
    alg.LeptonPair.OutputLabel= "LeptonPair"  # output particle label
    alg.LeptonPair.LowMass = 0*GeV             # mass window
    alg.LeptonPair.HighMass = 10000*GeV
    alg.LeptonPair.NDaughters = 2               # Number of daughters
    alg.LeptonPair.CheckCharge= False               
    alg.LeptonPair.PDGID = 23                   # PDG id of Z... not really necessary
    alg.LeptonPair.PassOnNoCombo = True        
    alg.LeptonPair.DaughterLabel= "PairDaughter"
    alg.EventViewTools+=[ "EVUDInferredObjectLooper/PairLooper"]
    alg.PairLooper.Prefix= "Pair_"
    alg.PairLooper.Tools= [ "EVUDKinCalc" ]
    alg.EventViewTools+=[ "EVUDFinalStateLooper/PairDaughterLooper"]
    alg.PairDaughterLooper.Prefix= "PairD_"
    alg.PairDaughterLooper.RequireLabels= ["PairDaughter"]
    alg.PairDaughterLooper.MaxObjects=2    
    alg.PairDaughterLooper.Tools= ["EVUDKinCalc"]
    
DiLeptonSpectra(defaultEVAlg)
DiLeptonSpectra(truthEVAlg)

which makes all combination of lepton pairs. i ran on 10K atlfast aod susy event (generation file: ) and produced the right sign and wrong sign plots as well as subtracted spectra. spectra_10k.gif sub_spectra.gif however it looks like need much more stats.

questions from this

  • how can i get an eventcounter to tell me that every 1000 event is running ?
  • how can i change the random seeds used in generation and simulation/reco ?
  • can i get a signal susy chain generated rather than inclusive susy ?
  • want to add neutrinos to the truth (for Et miss studies) - how do i do that?

-- Main.jboyd - 13 Apr 2006

Edit | Attach | Watch | Print version | History: r6 < r5 < r4 < r3 < r2 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r6 - 2006-08-10 - JamieBoyd
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback