D3PD2MiniSLTruth

Once TtjetsClassifier is compiled inside TopRootCore one needs to make several internal changes to run and get the partons and particles MC information:


1. We will need a macro like the one we find here:

https://svnweb.cern.ch/cern/wsvn/atlasinst/Institutes/UniGe/TopPhysics/TtjetsUnfolding/tags/TtjetsUnfolding-00-00-23/TtjetsUnfolding/TtjetsApp.h

https://svnweb.cern.ch/cern/wsvn/atlasinst/Institutes/UniGe/TopPhysics/TtjetsUnfolding/tags/TtjetsUnfolding-00-00-23/Root/TtjetsApp.cxx

<see TtjetsApp HERE>

2. Copy these files as, for example, TtjetsClassifier/TtjetsClassifier/TtjetsApp.h and TtjetsClassifier/Root/TtjetsApp.cxx

and change the #include path in TtjetsApp.cxx as:

#include "TtjetsUnfolding/TtjetsApp.h" => #include "TtjetsClassifier/TtjetsApp.h"

and add package dependencies in TtjetsClassifier/cmt/Makefile.RootCore

PACKAGE_DEP = TopD3PDSelection TopAnalysisBase TopD3PDAnalysis

3. Build new dependencies: ./RootCore/scripts/build.sh



1. Create a macro based on D3PD2MiniSL called D3PD2MiniSLTruth with: cp TopMiniNtuple/util/D3PD2MiniSL.cxx TopMiniNtuple/util/D3PD2MiniSLTruth.cxx

IMPORTANT: From here, all changes are referred to extra code added to the original D3PD2MiniSL function. Results for reco level should be exactly the same.


Changes on D3PD2MiniSLTruth.cxx:

1. Add dependency on:

  • #include "TtjetsClassifier/TtjetsApp.h"
  • #include "TtjetsClassifier/McEvent.h"
  • #include "TtjetsClassifier/McSemiLeptonic.h
IMPORTANT: Add TtjetsClassifier to TopMiniNtuple/cmt/Makefile.RootCore dependencies and ./RootCore/scripts/build.sh

2. CutFlow class constructor <add McSemiLeptonic members for truth particle selection>

  • Declarations:
    • m_partSlElec(false, 0.5, true), // (bool useOverlapRemoval, double dRjetjet, bool symmetricLeptons)
    • m_partSlMuon(false, 0.5, true),
3. CutFlow private members <add McSemiLeptonic members for truth particle selection>


In CutFlow::initialize(int argc, char *argv[])

1. Turn on the branches needed for TtjetsClassifier

  • if(ntupleSvc->isMC())
  • TtjetsApp *m_ttjetsApp =NULL;
  • if((ret_val = m_ttjetsApp->enableClassifierBranches()) = 0) <get an error if ! = 0>
2. When SemiLepRun::initialize() (now SemiLepRunTruth) is called, MiniSL::initialize() (now MiniSLTruth) is called.


In CutFlow::execute()

1. If MC, when calling SemiLepRun::runEd(), change it to SemiLepRunTruth::runMC(); (For now, just do the truth for nominal electron and muon MC)

  • if(*m_myIsMC) {
    • m_slElec->runMC(ed,m_partSlElec,passGRL);
    • m_slMuon->runMC(ed,m_partSlMuon,passGRL);
  • }



In CutFlow::finalize()

NOTHING for now smile

Edit | Attach | Watch | Print version | History: r6 < r5 < r4 < r3 < r2 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r6 - 2013-11-04 - PatriciaFernandez
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Sandbox 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.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback