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
  • 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?

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

Topic attachments
I Attachment History Action Size Date Who Comment
GIFgif spectra_10k.gif r1 manage 249.7 K 2006-04-13 - 10:15 JamieBoyd di lepton spectra 10k inclusive susy evts
GIFgif sub_spectra.gif r1 manage 187.9 K 2006-04-13 - 10:16 JamieBoyd right sign - wrong sign spectra
Edit | Attach | Watch | Print version | History: r6 | r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r2 - 2006-05-31 - 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-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback