Program Listing for File EventInfo.cxx

Return to documentation for file (Root/EventInfo.cxx)

#include "xAODAnaHelpers/EventInfo.h"
#include <xAODAnaHelpers/HelperFunctions.h>
#include <iostream>
#include "xAODTruth/TruthEventContainer.h"
#include "xAODEventShape/EventShape.h"
#include "xAODCaloEvent/CaloClusterContainer.h"


using namespace xAH;

EventInfo::EventInfo(const std::string& detailStr, float units, bool mc, bool storeSyst)
  : m_infoSwitch(detailStr), m_mc(mc), m_debug(false), m_storeSyst(storeSyst), m_units(units)
{
}

EventInfo::~EventInfo()
{
  if(m_debug) std::cout << " Deleting EventInfo "  << std::endl;
}

void EventInfo::setTree(TTree *tree)
{

  if (!m_infoSwitch.m_noDataInfo){ // saved always (unless specifically requiring not to)
    connectBranch<int>     (tree, "runNumber",   &m_runNumber);
    connectBranch<Long64_t>(tree, "eventNumber", &m_eventNumber);
    connectBranch<int>     (tree, "lumiBlock",   &m_lumiBlock);
    connectBranch<uint32_t>(tree, "coreFlags",   &m_coreFlags);
    connectBranch<int     >(tree, "bcid",                       &m_bcid);
  }

  if(m_mc){
    connectBranch<int     >(tree, "mcEventNumber",              &m_mcEventNumber);
    connectBranch<int     >(tree, "mcChannelNumber",            &m_mcChannelNumber);
    connectBranch<float   >(tree, "mcEventWeight",              &m_mcEventWeight);
    if ( m_infoSwitch.m_weightsSys ) {
      connectBranch< std::vector<float> >(tree, "mcEventWeights", &m_mcEventWeights);
    }
  }

  if ( m_infoSwitch.m_bcidInfo && !m_mc ){
    connectBranch<int     >(tree, "DistEmptyBCID",               &m_DistEmptyBCID);
    connectBranch<int     >(tree, "DistLastUnpairedBCID",        &m_DistLastUnpairedBCID);
    connectBranch<int     >(tree, "DistNextUnpairedBCID",        &m_DistNextUnpairedBCID);
  }

  if ( m_infoSwitch.m_eventCleaning ) {
    connectBranch<uint32_t>(tree, "timeStamp",                  &m_timeStamp);
    connectBranch<uint32_t>(tree, "timeStampNSOffset",          &m_timeStampNSOffset);
    connectBranch<bool    >(tree, "TileError",                  &m_TileError);
    connectBranch<bool    >(tree, "SCTError",                   &m_SCTError);
    connectBranch<bool    >(tree, "LArError",                   &m_LArError);
    connectBranch<uint32_t>(tree, "TileFlags",                  &m_TileFlags);
    connectBranch<uint32_t>(tree, "SCTFlags",                   &m_SCTFlags);
    connectBranch<uint32_t>(tree, "LArFlags",                   &m_LArFlags);
    connectBranch<bool    >(tree, "eventClean_LooseBad",        &m_eventClean_LooseBad);
    connectBranch<bool    >(tree, "eventClean_TightBad",        &m_eventClean_TightBad);
  }

  if ( m_infoSwitch.m_pileup ) {
    connectBranch<int  >(tree, "NPV",                              &m_npv);
    connectBranch<float>(tree, "actualInteractionsPerCrossing",    &m_actualMu);
    connectBranch<float>(tree, "averageInteractionsPerCrossing",   &m_averageMu);
    connectBranch<float>(tree, "weight_pileup",                    &m_weight_pileup);
    connectBranch<float>(tree, "correctedAverageMu",               &m_correctedAvgMu);
    connectBranch<float>(tree, "correctedAndScaledAverageMu",      &m_correctedAndScaledAvgMu);
    connectBranch<float>(tree, "correctedActualMu",                &m_correctedMu);
    connectBranch<float>(tree, "correctedAndScaledActualMu",       &m_correctedAndScaledMu);
    if ( m_infoSwitch.m_pileupsys ) {
      connectBranch<float>(tree, "weight_pileup_up",               &m_weight_pileup_up);
      connectBranch<float>(tree, "weight_pileup_down",             &m_weight_pileup_down);
    }
    if(m_mc){
      connectBranch<int  >(tree, "rand_run_nr",                &m_rand_run_nr);
      connectBranch<int  >(tree, "rand_lumiblock_nr",          &m_rand_lumiblock_nr);
    }
  }

  if ( m_infoSwitch.m_shapeEM ) {
    connectBranch<double>(tree, "rhoEM",   &m_rhoEM);
  }

  if ( m_infoSwitch.m_shapeEMPFLOW ) {
    connectBranch<double>(tree, "rhoEMPFLOW",   &m_rhoEMPFLOW);
  }

  if ( m_infoSwitch.m_shapeLC ) {
    connectBranch<double>(tree, "rhoLC",   &m_rhoLC);
  }

    // truth
  if( m_infoSwitch.m_truth && m_mc ) {
    connectBranch<int  >(tree, "pdgId1",  &m_pdgId1);
    connectBranch<int  >(tree, "pdgId2",  &m_pdgId2);
    connectBranch<int  >(tree, "pdfId1",  &m_pdfId1);
    connectBranch<int  >(tree, "pdfId2",  &m_pdfId2);
    connectBranch<float>(tree, "x1",      &m_x1);
    connectBranch<float>(tree, "x2",      &m_x2);
    //connectBranch<float>(tree, "scale",   &m_scale);
    connectBranch<float>(tree, "q",       &m_q);
    //connectBranch<float>(tree, "pdf1",    &m_pdf1);
    //connectBranch<float>(tree, "pdf2",    &m_pdf2);
    connectBranch<float>(tree, "xf1",     &m_xf1);
    connectBranch<float>(tree, "xf2",     &m_xf2);
  }

  // CaloCluster
  if ( m_infoSwitch.m_caloClus ) {
    std::vector<float>*  m_caloCluster_pt_addr = &m_caloCluster_pt;
    HelperFunctions::connectBranch<float>("caloCluster", tree, "pt",  &m_caloCluster_pt_addr  );

    std::vector<float>*  m_caloCluster_eta_addr = &m_caloCluster_eta;
    HelperFunctions::connectBranch<float>("caloCluster", tree, "eta", &m_caloCluster_eta_addr );

    std::vector<float>*  m_caloCluster_phi_addr = &m_caloCluster_phi;
    HelperFunctions::connectBranch<float>("caloCluster", tree, "phi", &m_caloCluster_phi_addr );

    std::vector<float>*  m_caloCluster_e_addr = &m_caloCluster_e;
    HelperFunctions::connectBranch<float>("caloCluster", tree, "e",   &m_caloCluster_e_addr   );
  }

  if ( m_infoSwitch.m_beamspotweight ) {
    connectBranch<float>(tree, "beamSpotWeight",                    &m_beamspotweight);
  }
}


void EventInfo::setBranches(TTree *tree)
{

  if (!m_infoSwitch.m_noDataInfo){ // saved always (unless specifically requiring not to)
    tree->Branch("runNumber",          &m_runNumber,      "runNumber/I");
    tree->Branch("eventNumber",        &m_eventNumber,    "eventNumber/L");
    tree->Branch("lumiBlock",          &m_lumiBlock,      "lumiBlock/I");
    tree->Branch("coreFlags",          &m_coreFlags,      "coreFlags/i");
    tree->Branch("bcid",               &m_bcid,           "bcid/I");
  }

  if( m_mc ) {
    tree->Branch("mcEventNumber",      &m_mcEventNumber,  "mcEventNumber/I");
    tree->Branch("mcChannelNumber",    &m_mcChannelNumber,"mcChannelNumber/I");
    tree->Branch("mcEventWeight",      &m_mcEventWeight,  "mcEventWeight/F");
    if ( m_infoSwitch.m_weightsSys ) {
      tree->Branch("mcEventWeights",   &m_mcEventWeights);
    }
  }

  if ( m_infoSwitch.m_bcidInfo && !m_mc ){
    tree->Branch("DistEmptyBCID",             &m_DistEmptyBCID,        "DistEmptyBCID/I");
    tree->Branch("DistLastUnpairedBCID",      &m_DistLastUnpairedBCID, "DistLastUnpairedBCID/I");
    tree->Branch("DistNextUnpairedBCID",      &m_DistNextUnpairedBCID, "DistNextUnpairedBCID/I");
  }

  if ( m_infoSwitch.m_eventCleaning ) {
    tree->Branch("timeStamp",          &m_timeStamp,          "timeStamp/i");
    tree->Branch("timeStampNSOffset",  &m_timeStampNSOffset,  "timeStampNSOffset/i");
    tree->Branch("TileError",          &m_TileError,          "TileError/O");
    tree->Branch("SCTError",           &m_SCTError,           "SCTError/O");
    tree->Branch("LArError",           &m_LArError,           "LArError/O");
    tree->Branch("TileFlags",          &m_TileFlags,          "TileFlags/i");
    tree->Branch("SCTFlags",           &m_SCTFlags,           "SCTFlags/i");
    tree->Branch("LArFlags",           &m_LArFlags,           "LArFlags/i");
    tree->Branch("eventClean_LooseBad",&m_eventClean_LooseBad,"eventClean_LooseBad/O");
    tree->Branch("eventClean_TightBad",&m_eventClean_TightBad,"eventClean_TightBad/O");
  }

  if ( m_infoSwitch.m_pileup ) {
    tree->Branch("NPV",                &m_npv,            "NPV/I");
    tree->Branch("actualInteractionsPerCrossing",  &m_actualMu,  "actualInteractionsPerCrossing/F");
    tree->Branch("averageInteractionsPerCrossing", &m_averageMu, "averageInteractionsPerCrossing/F");
    tree->Branch("weight_pileup",      &m_weight_pileup,  "weight_pileup/F");
    tree->Branch("correctedAverageMu",          &m_correctedAvgMu, "correctedAverageMu/F" );
    tree->Branch("correctedAndScaledAverageMu", &m_correctedAndScaledAvgMu, "correctedAndScaledAverageMu/F" );
    tree->Branch("correctedActualMu",           &m_correctedMu, "correctedActualMu/F"     );
    tree->Branch("correctedAndScaledActualMu",  &m_correctedAndScaledMu, "correctedAndScaledActualMu/F"     );
    if ( m_infoSwitch.m_pileupsys ) {
      tree->Branch("weight_pileup_up",      &m_weight_pileup_up,  "weight_pileup_up/F");
      tree->Branch("weight_pileup_down",    &m_weight_pileup_down,"weight_pileup_down/F");
    }
    if(m_mc){
      tree->Branch("rand_run_nr"      ,          &m_rand_run_nr      ,"rand_run_nr/I"      );
      tree->Branch("rand_lumiblock_nr",          &m_rand_lumiblock_nr,"rand_lumiblock_nr/I");
    }
  }

  if ( m_infoSwitch.m_shapeEM ) {
    tree->Branch("rhoEM",                &m_rhoEM,            "rhoEM/D");
  }

  if ( m_infoSwitch.m_shapeEMPFLOW ) {
    tree->Branch("rhoEMPFLOW",           &m_rhoEMPFLOW,       "rhoEMPFLOW/D");
  }

  if ( m_infoSwitch.m_shapeLC ) {
    tree->Branch("rhoLC",                &m_rhoLC,            "rhoLC/D");
  }

  if( m_infoSwitch.m_truth && m_mc ) {
    tree->Branch("pdgId1",            &m_pdgId1,        "pdgId1/I" );
    tree->Branch("pdgId2",            &m_pdgId2,        "pdgId2/I" );
    tree->Branch("pdfId1",            &m_pdfId1,        "pdfId1/I" );
    tree->Branch("pdfId2",            &m_pdfId2,        "pdfId2/I" );
    tree->Branch("x1",                &m_x1,            "x1/F"  );
    tree->Branch("x2",                &m_x2,            "x2/F"  );
    //tree->Branch("scale",             &m_scale,         "scale/F");
    tree->Branch("q",                 &m_q,             "q/F");
    //tree->Branch("pdf1",              &m_pdf1,          "pdf1/F");
    //tree->Branch("pdf2",              &m_pdf2,          "pdf2/F");
    tree->Branch("xf1",               &m_xf1,           "xf1/F");
    tree->Branch("xf2",               &m_xf2,           "xf2/F");
  }

  if ( m_infoSwitch.m_caloClus ) {
    tree->Branch("caloCluster_pt",  &m_caloCluster_pt);
    tree->Branch("caloCluster_phi", &m_caloCluster_phi);
    tree->Branch("caloCluster_eta", &m_caloCluster_eta);
    tree->Branch("caloCluster_e",   &m_caloCluster_e);
  }

  if ( m_infoSwitch.m_beamspotweight ) {
    tree->Branch("beamSpotWeight",   &m_beamspotweight);
  }

  return;
}


void EventInfo::clear()
{
  m_runNumber = m_eventNumber = m_mcEventNumber = m_mcChannelNumber = m_bcid = m_lumiBlock;
  m_coreFlags = 0;
  //eventCleaning
  m_LArError = false;
  m_TileError = false;
  m_SCTError = false;
  m_LArFlags = 0;
  m_TileFlags = 0;
  m_SCTFlags = 0;
  m_eventClean_LooseBad = false;
  m_eventClean_TightBad = false;
  m_mcEventWeight = 1.;
  m_DistEmptyBCID = -999;
  m_DistLastUnpairedBCID = -999;
  m_DistNextUnpairedBCID = -999;
  m_weight_pileup = 1.;
  m_weight_pileup_down = 1.;
  m_weight_pileup_up = 1.;
  m_timeStamp = -999;
  m_timeStampNSOffset = -999;
  // pileup
  m_npv = -999;
  m_actualMu = m_averageMu = -999;
  // shapeEM
  m_rhoEM = -999;
  // shapeEMPFLOW
  m_rhoEMPFLOW = -999;
  // shapeLC
  m_rhoLC = -999;
  // truth
  m_pdgId1 = m_pdgId2 = m_pdfId1 = m_pdfId2 = -999;
  m_x1 = m_x2 = -999;
  m_xf1 = m_xf2 = -999;

  //m_scale = m_q = m_pdf1 = m_pdf2 = -999;

  // mcEventWeights
  if ( m_infoSwitch.m_weightsSys ) {
    m_mcEventWeights.clear();
  }

  // CaloCluster
  if( m_infoSwitch.m_caloClus){
    m_caloCluster_pt.clear();
    m_caloCluster_eta.clear();
    m_caloCluster_phi.clear();
    m_caloCluster_e.clear();
  }

  if ( m_infoSwitch.m_beamspotweight ) {
    m_beamspotweight = 1.;
  }

  return;
}

void EventInfo::FillEvent( const xAOD::EventInfo* eventInfo, xAOD::TEvent* event, const xAOD::VertexContainer* vertices) {

  if (!m_infoSwitch.m_noDataInfo){ // saved always (unless specifically requiring not to)
    m_runNumber             = eventInfo->runNumber();
    m_eventNumber           = eventInfo->eventNumber();
    m_lumiBlock             = eventInfo->lumiBlock();
    m_coreFlags             = eventInfo->eventFlags(xAOD::EventInfo::Core);
    m_bcid                  = eventInfo->bcid();
  }

  if ( m_mc ) {
    m_mcEventNumber         = eventInfo->mcEventNumber();
    m_mcChannelNumber       = eventInfo->mcChannelNumber();
    m_mcEventWeight         = eventInfo->mcEventWeight();
    if ( m_infoSwitch.m_weightsSys ) {
      if ( m_storeSyst ) {
        m_mcEventWeights      = eventInfo->mcEventWeights();
      } else {
        m_mcEventWeights      = std::vector<float>{m_mcEventWeight};
      }
    }
  }

  if ( m_infoSwitch.m_bcidInfo && !m_mc ){
    static SG::AuxElement::ConstAccessor< int > DistEmptyBCID ("DistEmptyBCID");
    if ( DistEmptyBCID.isAvailable( *eventInfo ) )   { m_DistEmptyBCID = DistEmptyBCID( *eventInfo ); }     else { m_DistEmptyBCID = -999; }
    static SG::AuxElement::ConstAccessor< int > DistLastUnpairedBCID ("DistLastUnpairedBCID");
    if ( DistLastUnpairedBCID.isAvailable( *eventInfo ) )   { m_DistLastUnpairedBCID = DistLastUnpairedBCID( *eventInfo ); }     else { m_DistLastUnpairedBCID = -999; }
    static SG::AuxElement::ConstAccessor< int > DistNextUnpairedBCID ("DistNextUnpairedBCID");
    if ( DistNextUnpairedBCID.isAvailable( *eventInfo ) )   { m_DistNextUnpairedBCID = DistNextUnpairedBCID( *eventInfo ); }     else { m_DistNextUnpairedBCID = -999; }
  }

  if ( m_infoSwitch.m_eventCleaning ) {

    if ( eventInfo->errorState(xAOD::EventInfo::LAr)==xAOD::EventInfo::Error ) m_LArError = true;
    else m_LArError = false;
    m_LArFlags = eventInfo->eventFlags(xAOD::EventInfo::LAr);

    if ( eventInfo->errorState(xAOD::EventInfo::Tile)==xAOD::EventInfo::Error ) m_TileError = true;
    else m_TileError = false;
    m_TileFlags = eventInfo->eventFlags(xAOD::EventInfo::Tile);

    if ( eventInfo->errorState(xAOD::EventInfo::SCT)==xAOD::EventInfo::Error ) m_SCTError = true;
    else m_SCTError = false;
    m_SCTFlags = eventInfo->eventFlags(xAOD::EventInfo::SCT);

    m_timeStamp = eventInfo->timeStamp();
    m_timeStampNSOffset = eventInfo->timeStampNSOffset();

    static SG::AuxElement::ConstAccessor< char > acc_DFCommonJets_eventClean_LooseBad("DFCommonJets_eventClean_LooseBad");
    if ( acc_DFCommonJets_eventClean_LooseBad.isAvailable( *eventInfo ))
      m_eventClean_LooseBad = acc_DFCommonJets_eventClean_LooseBad( *eventInfo );
    static SG::AuxElement::ConstAccessor< char > acc_DFCommonJets_eventClean_TightBad("DFCommonJets_eventClean_TightBad");
    if ( acc_DFCommonJets_eventClean_TightBad.isAvailable( *eventInfo ))
      m_eventClean_TightBad = acc_DFCommonJets_eventClean_TightBad( *eventInfo );

  }

  if ( m_infoSwitch.m_pileup ) {

    m_npv = -1;
    if(vertices) m_npv = HelperFunctions::countPrimaryVertices(vertices, 2);

    m_actualMu  = eventInfo->actualInteractionsPerCrossing();
    m_averageMu = eventInfo->averageInteractionsPerCrossing();

    static SG::AuxElement::ConstAccessor< float >  correctedAvgMu("corrected_averageInteractionsPerCrossing");
    static SG::AuxElement::ConstAccessor< float >  correctedAndScaledAvgMu("correctedScaled_averageInteractionsPerCrossing");
    static SG::AuxElement::ConstAccessor< float >  correctedMu("corrected_actualInteractionsPerCrossing");
    static SG::AuxElement::ConstAccessor< float >  correctedAndScaledMu("correctedScaled_actualInteractionsPerCrossing");
    if ( correctedAvgMu.isAvailable( *eventInfo ) ) {
      m_correctedAvgMu = correctedAvgMu( *eventInfo );
    }   else {
      m_correctedAvgMu = -1.0;
    }
    if ( correctedAndScaledAvgMu.isAvailable( *eventInfo ) )    {
      m_correctedAndScaledAvgMu = correctedAndScaledAvgMu( *eventInfo );
    }   else {
      m_correctedAndScaledAvgMu = -1.0;
    }
    if ( correctedMu.isAvailable( *eventInfo ) )    {
      m_correctedMu = correctedMu( *eventInfo );
    }   else {
      m_correctedMu = -1.0;
    }
    if ( correctedAndScaledMu.isAvailable( *eventInfo ) )   {
      m_correctedAndScaledMu = correctedAndScaledMu( *eventInfo );
    }   else {
      m_correctedAndScaledMu = -1.0;
    }

    if ( m_mc ) {

      static SG::AuxElement::ConstAccessor< float > weight_pileup ("PileupWeight");
      static SG::AuxElement::ConstAccessor< unsigned int > rand_run_nr("RandomRunNumber");
      static SG::AuxElement::ConstAccessor< unsigned int > rand_lumiblock_nr("RandomLumiBlockNumber");

      if ( weight_pileup.isAvailable( *eventInfo ) )     { m_weight_pileup = weight_pileup( *eventInfo ); }     else { m_weight_pileup = 1.0; }
      if ( rand_run_nr.isAvailable( *eventInfo ) )   { m_rand_run_nr = rand_run_nr( *eventInfo ); }         else { m_rand_run_nr = 900000; }
      if ( rand_lumiblock_nr.isAvailable( *eventInfo ) ) { m_rand_lumiblock_nr = rand_lumiblock_nr( *eventInfo ); } else { m_rand_lumiblock_nr = 0; }

      static SG::AuxElement::ConstAccessor< float > weight_pileup_up ("PileupWeight_UP");
      static SG::AuxElement::ConstAccessor< float > weight_pileup_down ("PileupWeight_DOWN");
      if ( weight_pileup_up.isAvailable( *eventInfo ) )  { m_weight_pileup_up = weight_pileup_up( *eventInfo );}    else { m_weight_pileup_up = 1.0; }
      if ( weight_pileup_down.isAvailable( *eventInfo ) ){ m_weight_pileup_down = weight_pileup_down( *eventInfo );}else { m_weight_pileup_down = 1.0; }

    }


  }

  if ( m_infoSwitch.m_shapeLC && event ) {
    const xAOD::EventShape* evtShape(nullptr);
    HelperFunctions::retrieve( evtShape, "Kt4LCTopoOriginEventShape", event, 0 );
    if ( !evtShape->getDensity( xAOD::EventShape::Density, m_rhoLC ) ) {
      Info("FillEvent()","Could not retrieve xAOD::EventShape::Density from xAOD::EventShape");
      m_rhoLC = -999;
    }
  }

  if ( m_infoSwitch.m_shapeEM && event ) {
    const xAOD::EventShape* evtShape(nullptr);
    HelperFunctions::retrieve( evtShape, "Kt4EMTopoOriginEventShape", event, 0 );
    if ( !evtShape->getDensity( xAOD::EventShape::Density, m_rhoEM ) ) {
      Info("FillEvent()","Could not retrieve xAOD::EventShape::Density from xAOD::EventShape");
      m_rhoEM = -999;
    }
  }

  if ( m_infoSwitch.m_shapeEMPFLOW && event ) {
    const xAOD::EventShape* evtShape(nullptr);
    HelperFunctions::retrieve( evtShape, "Kt4EMPFlowEventShape", event, 0 );
    if ( !evtShape->getDensity( xAOD::EventShape::Density, m_rhoEMPFLOW ) ) {
      Info("FillEvent()","Could not retrieve xAOD::EventShape::Density from xAOD::EventShape");
      m_rhoEMPFLOW = -999;
    }
  }

  if( m_infoSwitch.m_caloClus && event ) {
    const xAOD::CaloClusterContainer* caloClusters = 0;
    HelperFunctions::retrieve( caloClusters, "CaloCalTopoClusters", event, 0);
    // save the clusters at the EM scale
    for( auto clus : * caloClusters ) {
      if ( clus->pt ( xAOD::CaloCluster::State::UNCALIBRATED ) < 2000 ) { continue; } // 2 GeV cut
      m_caloCluster_pt. push_back( clus->pt ( xAOD::CaloCluster::State::UNCALIBRATED ) / m_units );
      m_caloCluster_eta.push_back( clus->eta( xAOD::CaloCluster::State::UNCALIBRATED ) );
      m_caloCluster_phi.push_back( clus->phi( xAOD::CaloCluster::State::UNCALIBRATED ) );
      m_caloCluster_e.  push_back( clus->e  ( xAOD::CaloCluster::State::UNCALIBRATED ) / m_units );
    }
  }

  if( m_infoSwitch.m_truth && event && m_mc ) {
    //MC Truth
    const xAOD::TruthEventContainer* truthE = 0;
    HelperFunctions::retrieve( truthE, "TruthEvents", event, 0 );
    if( truthE ) {
      const xAOD::TruthEvent* truthEvent = truthE->at(0);
      truthEvent->pdfInfoParameter(m_pdgId1,   xAOD::TruthEvent::PDGID1);
      truthEvent->pdfInfoParameter(m_pdgId2,   xAOD::TruthEvent::PDGID2);
      truthEvent->pdfInfoParameter(m_pdfId1,   xAOD::TruthEvent::PDFID1);
      truthEvent->pdfInfoParameter(m_pdfId2,   xAOD::TruthEvent::PDFID2);
      truthEvent->pdfInfoParameter(m_x1,       xAOD::TruthEvent::X1);
      truthEvent->pdfInfoParameter(m_x2,       xAOD::TruthEvent::X2);
      //truthEvent->pdfInfoParameter(m_scale,    xAOD::TruthEvent::SCALE);
      truthEvent->pdfInfoParameter(m_q,        xAOD::TruthEvent::Q);
      //truthEvent->pdfInfoParameter(m_pdf1,     xAOD::TruthEvent::PDF1);
      //truthEvent->pdfInfoParameter(m_pdf2,     xAOD::TruthEvent::PDF2);
      truthEvent->pdfInfoParameter(m_xf1,      xAOD::TruthEvent::XF1);
      truthEvent->pdfInfoParameter(m_xf2,      xAOD::TruthEvent::XF2);
    }

  }

  if ( m_infoSwitch.m_beamspotweight ) {
    m_beamspotweight = eventInfo->beamSpotWeight();
  }

  return;
}