Program Listing for File ElectronContainer.h

Return to documentation for file (xAODAnaHelpers/ElectronContainer.h)

#ifndef xAODAnaHelpers_ElectronContainer_H
#define xAODAnaHelpers_ElectronContainer_H

#include <TTree.h>
#include <TLorentzVector.h>

#include <vector>
#include <string>

#include "xAODEgamma/ElectronContainer.h"

#include <xAODAnaHelpers/HelperClasses.h>

#include <xAODAnaHelpers/Electron.h>
#include <xAODAnaHelpers/ParticleContainer.h>

namespace xAH {

  class ElectronContainer : public ParticleContainer<Electron,HelperClasses::ElectronInfoSwitch>
    {
    public:
      ElectronContainer(const std::string& name = "el", const std::string& detailStr="", float units = 1e3, bool mc = false, bool storeSystSFs = true);
      virtual ~ElectronContainer();

      virtual void setTree(TTree *tree);
      virtual void setBranches(TTree *tree);
      virtual void clear();
      virtual void FillElectron( const xAOD::Electron* elec, const xAOD::Vertex* primaryVertex );
      virtual void FillElectron( const xAOD::IParticle* particle, const xAOD::Vertex* primaryVertex );
      using ParticleContainer::setTree; // make other overloaded version of execute() to show up in subclass

    protected:
      virtual void updateParticle(uint idx, Electron& elec);

    private:

      // kinematics
      std::vector<float>*  m_caloCluster_eta;
      std::vector<float>* m_charge;

      // trigger
      std::vector<int>*  m_isTrigMatched;
      std::vector<std::vector<int> >* m_isTrigMatchedToChain;
      std::vector<std::vector<std::string> >* m_listTrigChains;

      // isolation
      std::map< std::string, std::vector< int >* >* m_isIsolated;
      std::vector<float>* m_topoetcone20;
      std::vector<float>* m_ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt500;
      std::vector<float>* m_ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt1000;
      std::vector<float>* m_ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt500;
      std::vector<float>* m_ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt1000;
      std::vector<float>* m_neflowisol20;
      std::vector<float>* m_topoetcone20_CloseByCorr;
      std::vector<float>* m_ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt1000_CloseByCorr;
      std::vector<float>* m_ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt1000_CloseByCorr;

      // PID
      std::map< std::string, std::vector< int >* >* m_PID;

      // scale factors w/ sys
      // per object
      std::vector< std::vector< float > >* m_RecoEff_SF;

      std::map< std::string, std::vector< std::vector< float > >* >* m_PIDEff_SF;
      std::map< std::string, std::vector< std::vector< float > >* >* m_IsoEff_SF;
      std::map< std::string, std::vector< std::vector< float > >* >* m_TrigEff_SF;
      std::map< std::string, std::vector< std::vector< float > >* >* m_TrigMCEff;

      // reco parameters
      std::vector<int>* m_author;
      std::vector<int>* m_OQ;

      // track parameters
      std::vector<float>* m_trkd0;
      std::vector<float>* m_trkd0sig;
      std::vector<float>* m_trkz0;
      std::vector<float>* m_trkz0sintheta;
      std::vector<float>* m_trkphi0;
      std::vector<float>* m_trktheta;
      std::vector<float>* m_trkcharge;
      std::vector<float>* m_trkqOverP;

      // track hit content
      std::vector<int>*   m_trknSiHits;
      std::vector<int>*   m_trknPixHits;
      std::vector<int>*   m_trknPixHoles;
      std::vector<int>*   m_trknSCTHits;
      std::vector<int>*   m_trknSCTHoles;
      std::vector<int>*   m_trknTRTHits;
      std::vector<int>*   m_trknTRTHoles;
      std::vector<int>*   m_trknBLayerHits;
      std::vector<int>*   m_trknInnermostPixLayHits; // not available in DC14
      std::vector<float>* m_trkPixdEdX;            // not available in DC14

      // prompt lepton
      std::vector<float>* m_PromptLeptonInput_DL1mu;
      std::vector<float>* m_PromptLeptonInput_DRlj;
      std::vector<float>* m_PromptLeptonInput_LepJetPtFrac;
      std::vector<float>* m_PromptLeptonInput_PtFrac;
      std::vector<float>* m_PromptLeptonInput_PtRel;
      std::vector<int>*   m_PromptLeptonInput_TrackJetNTrack;
      std::vector<float>* m_PromptLeptonInput_ip2;
      std::vector<float>* m_PromptLeptonInput_ip3;
      std::vector<float>* m_PromptLeptonInput_rnnip;
      std::vector<int>*   m_PromptLeptonInput_sv1_jf_ntrkv;
      std::vector<float>* m_PromptLeptonIso;
      std::vector<float>* m_PromptLeptonVeto;

      // passSel
      std::vector<char>* m_passSel;
      // passOR
      std::vector<char>* m_passOR;
      // isLRT
      std::vector<char>* m_isLRT;
    };
}
#endif // xAODAnaHelpers_ElectronContainer_H