diff --git a/Calorimeter/CaloCondPhysAlgs/CaloCondPhysAlgs/LArHVMapTool.h b/Calorimeter/CaloCondPhysAlgs/CaloCondPhysAlgs/LArHVMapTool.h deleted file mode 100644 index 15e73e63ec3916fe1bf5e8a19b4f344560efaf1f..0000000000000000000000000000000000000000 --- a/Calorimeter/CaloCondPhysAlgs/CaloCondPhysAlgs/LArHVMapTool.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ -#ifndef LARHVMAPTOOL_H -#define LARHVMAPTOOL_H - -#include "GaudiKernel/ToolHandle.h" -#include "StoreGate/DataHandle.h" -#include "AthenaBaseComps/AthAlgTool.h" - -#include "LArCabling/LArHVCablingTool.h" -#include "CxxUtils/checker_macros.h" - -class CaloDetDescrManager; -class Identifier; -class CaloIdManager; -class LArEM_ID; -class LArHEC_ID; -class LArFCAL_ID; -//class LArHVCablingTool; - -static const InterfaceID IID_LArHVMapTool("LArHVMapTool", 1 ,0); - -class ATLAS_NOT_THREAD_SAFE LArHVMapTool: public AthAlgTool -{ - - public: - LArHVMapTool(const std::string& type, const std::string& name, - const IInterface* parent); - - virtual ~LArHVMapTool(){} - - static const InterfaceID& interfaceID() { return IID_LArHVMapTool; } - - virtual StatusCode initialize(); - virtual StatusCode execute(); - virtual StatusCode finalize(){return StatusCode::SUCCESS;} - - - std::vector<int> GetHVLines ATLAS_NOT_THREAD_SAFE(const Identifier& id); - - private: - - const DataHandle<CaloIdManager> m_caloIdMgr; - const DataHandle<CaloDetDescrManager> m_calodetdescrmgr; - const LArEM_ID* m_larem_id; - const LArHEC_ID* m_larhec_id; - const LArFCAL_ID* m_larfcal_id; - - ToolHandle<LArHVCablingTool> m_hvCablingTool; -}; - -#endif diff --git a/Calorimeter/CaloCondPhysAlgs/share/EMB_EMEC_PS_HV_Energy_Rescale.py b/Calorimeter/CaloCondPhysAlgs/share/EMB_EMEC_PS_HV_Energy_Rescale.py index 28b45c8ae67bb79beef49bf8607face95fcaeb17..a243a279bc4a5488005f52ba52d32d94ea5f35ce 100644 --- a/Calorimeter/CaloCondPhysAlgs/share/EMB_EMEC_PS_HV_Energy_Rescale.py +++ b/Calorimeter/CaloCondPhysAlgs/share/EMB_EMEC_PS_HV_Energy_Rescale.py @@ -107,10 +107,6 @@ theRescaler.HVvalues = [ 0.992, 0.992, 0.992, 0.992, 0.992, 0.992, 0.992, 0.992, topSequence += theRescaler -from CaloCondPhysAlgs.CaloCondPhysAlgsConf import LArHVMapTool -theLArHV=LArHVMapTool("LArHVMapTool") -ToolSvc += theLArHV - #-------------------------------------------------------------- #--- Dummy event loop parameters #-------------------------------------------------------------- diff --git a/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.cxx b/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.cxx index c52d8665666503f92363838f20b012b521beb37e..9cbdbee7759a8983d78988564df645baa27d7930 100644 --- a/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.cxx +++ b/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.cxx @@ -34,7 +34,34 @@ #include "CoolKernel/types.h" #include "CoolKernel/Record.h" #include "CoralBase/AttributeListSpecification.h" -#include "CaloCondPhysAlgs/LArHVMapTool.h" + +#include "CxxUtils/checker_macros.h" + + +struct ATLAS_NOT_THREAD_SAFE CaloCellCalcEnergyCorr::HVData +{ + HVData (const LArHVManager& manager); + EMBHVManager::EMBHVData m_hvdata_EMB; + EMBPresamplerHVManager::EMBPresamplerHVData m_hvdata_EMBPS; + EMECHVManager::EMECHVData m_hvdata_EMEC_IN; + EMECHVManager::EMECHVData m_hvdata_EMEC_OUT; + EMECPresamplerHVManager::EMECPresamplerHVData m_hvdata_EMECPS; + HECHVManager::HECHVData m_hvdata_HEC; + FCALHVManager::FCALHVData m_hvdata_FCAL; +}; + + +CaloCellCalcEnergyCorr::HVData::HVData (const LArHVManager& manager) + : m_hvdata_EMB (manager.getEMBHVManager().getData()), + m_hvdata_EMBPS (manager.getEMBPresamplerHVManager().getData()), + m_hvdata_EMEC_IN (manager.getEMECHVManager(EMECHVModule::IOType::INNER).getData()), + m_hvdata_EMEC_OUT (manager.getEMECHVManager(EMECHVModule::IOType::OUTER).getData()), + m_hvdata_EMECPS (manager.getEMECPresamplerHVManager().getData()), + m_hvdata_HEC (manager.getHECHVManager().getData()), + m_hvdata_FCAL (manager.getFCALHVManager().getData()) +{ +} + CaloCellCalcEnergyCorr::CaloCellCalcEnergyCorr( const std::string& name, ISvcLocator* pSvcLocator ) : @@ -95,7 +122,7 @@ StatusCode CaloCellCalcEnergyCorr::execute() return StatusCode::SUCCESS; } -StatusCode CaloCellCalcEnergyCorr::stop() +StatusCode CaloCellCalcEnergyCorr::stop ATLAS_NOT_THREAD_SAFE () { const CaloCell_ID* calocell_id; @@ -145,6 +172,10 @@ StatusCode CaloCellCalcEnergyCorr::stop() CHECK(detStore()->record(attrList,m_folder)); + const LArHVManager* manager = nullptr; + CHECK( detStore()->retrieve (manager) ); + HVData hvdata (*manager); + std::vector<float> setVec(1,1); unsigned nSet=0; unsigned nSetHV=0; @@ -159,8 +190,7 @@ StatusCode CaloCellCalcEnergyCorr::stop() // check if we have also HVLine for this cell if(!m_hvlines.empty() && m_hvlines[0]>0) { Identifier offId=calocell_id->cell_id(h); - std::vector<int> hvlineId = GetHVLines(offId); - //std::cout<<offId.getString()<<" : "; + std::vector<int> hvlineId = GetHVLines(hvdata, offId); int nfound=0; float hvval=-1; std::vector<int>::const_iterator poshv; @@ -176,7 +206,6 @@ StatusCode CaloCellCalcEnergyCorr::stop() } } } - //std::cout << h << " " << value << std::endl; setVec[0]=value; flt->setData(h,0,setVec); }//end loop over hash @@ -188,7 +217,8 @@ StatusCode CaloCellCalcEnergyCorr::stop() } -std::vector<int> CaloCellCalcEnergyCorr::GetHVLines(const Identifier& id) { +std::vector<int> CaloCellCalcEnergyCorr::GetHVLines(const HVData& hvdata, + const Identifier& id) { std::set<int> hv; // LAr EMB @@ -200,7 +230,7 @@ std::vector<int> CaloCellCalcEnergyCorr::GetHVLines(const Identifier& id) { unsigned int nelec = cell->getNumElectrodes(); for (unsigned int i=0;i<nelec;i++) { const EMBHVElectrode& electrode = cell->getElectrode(i); - for (unsigned int igap=0;igap<2;igap++) hv.insert(electrode.hvLineNo(igap)); + for (unsigned int igap=0;igap<2;igap++) hv.insert(hvdata.m_hvdata_EMB.hvLineNo (electrode, igap)); } } else { // LAr EMEC const EMECDetectorElement* emecElement = dynamic_cast<const EMECDetectorElement*>(m_calodetdescrmgr->get_element(id)); @@ -209,7 +239,13 @@ std::vector<int> CaloCellCalcEnergyCorr::GetHVLines(const Identifier& id) { unsigned int nelec = cell->getNumElectrodes(); for (unsigned int i=0;i<nelec;i++) { const EMECHVElectrode& electrode = cell->getElectrode(i); - for (unsigned int igap=0;igap<2;igap++) hv.insert(electrode.hvLineNo(igap)); + const EMECHVManager::EMECHVData& hvdata_EMEC = + electrode.getModule().getWheelIndex() == EMECHVModule::INNER ? + hvdata.m_hvdata_EMEC_IN : + hvdata.m_hvdata_EMEC_OUT ; + for (unsigned int igap=0;igap<2;igap++) { + hv.insert(hvdata_EMEC.hvLineNo (electrode, igap)); + } } } } else if (m_larhec_id->is_lar_hec(id)) { // LAr HEC @@ -219,7 +255,7 @@ std::vector<int> CaloCellCalcEnergyCorr::GetHVLines(const Identifier& id) { unsigned int nsubgaps = cell->getNumSubgaps(); for (unsigned int igap=0;igap<nsubgaps;igap++) { const HECHVSubgap& subgap = cell->getSubgap(igap); - hv.insert(subgap.hvLineNo()); + hv.insert(hvdata.m_hvdata_HEC.hvLineNo (subgap)); } } else if (m_larfcal_id->is_lar_fcal(id)) { // LAr FCAL const FCALDetectorElement* fcalElement = dynamic_cast<const FCALDetectorElement*>(m_calodetdescrmgr->get_element(id)); @@ -228,7 +264,7 @@ std::vector<int> CaloCellCalcEnergyCorr::GetHVLines(const Identifier& id) { unsigned int nlines = tile->getNumHVLines(); for (unsigned int i=0;i<nlines;i++) { const FCALHVLine* line = tile->getHVLine(i); - if(line) hv.insert(line->hvLineNo()); + if(line) hv.insert(hvdata.m_hvdata_FCAL.hvLineNo (*line)); } } else if (m_larem_id->is_lar_em(id) && m_larem_id->sampling(id)==0) { // Presamplers if (abs(m_larem_id->barrel_ec(id))==1) { @@ -236,13 +272,13 @@ std::vector<int> CaloCellCalcEnergyCorr::GetHVLines(const Identifier& id) { if (!embElement) std::abort(); const EMBCellConstLink cell = embElement->getEMBCell(); const EMBPresamplerHVModule& hvmodule = cell->getPresamplerHVModule(); - for (unsigned int igap=0;igap<2;igap++) hv.insert(hvmodule.hvLineNo(igap)); + for (unsigned int igap=0;igap<2;igap++) hv.insert(hvdata.m_hvdata_EMBPS.hvLineNo (hvmodule, igap)); } else { const EMECDetectorElement* emecElement = dynamic_cast<const EMECDetectorElement*>(m_calodetdescrmgr->get_element(id)); if (!emecElement) std::abort(); const EMECCellConstLink cell = emecElement->getEMECCell(); const EMECPresamplerHVModule& hvmodule = cell->getPresamplerHVModule (); - for (unsigned int igap=0;igap<2;igap++) hv.insert(hvmodule.hvLineNo(igap)); + for (unsigned int igap=0;igap<2;igap++) hv.insert(hvdata.m_hvdata_EMECPS.hvLineNo (hvmodule, igap)); } } diff --git a/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.h b/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.h index fcef8d3bb89ffba609d21b93f088b5c95e98e7b0..fb44b125a58eca9b24922ad78e9bc9ef8389a9aa 100644 --- a/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.h +++ b/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.h @@ -1,7 +1,7 @@ ///////////////////////// -*- C++ -*- ///////////////////////////// /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef CALOCONDPHYSALGS_CALOCELLCALCENERGYCORR_H @@ -37,9 +37,11 @@ class CaloCellCalcEnergyCorr: public AthAlgorithm virtual StatusCode initialize(); virtual StatusCode execute(); virtual StatusCode finalize(); - virtual StatusCode stop ATLAS_NOT_THREAD_SAFE /* calls ctor of AthenaAttributeList*/(); + virtual StatusCode stop ATLAS_NOT_THREAD_SAFE /* Calls getData() method of HV managers */(); private: + struct ATLAS_NOT_THREAD_SAFE HVData; + // Properties std::string m_folder; std::vector<int> m_calosample; // which CaloSamples to be filled (numbers from CaloSample enum in CaloCell_Base_ID @@ -53,7 +55,7 @@ private: const LArHEC_ID* m_larhec_id; const LArFCAL_ID* m_larfcal_id; - std::vector<int> GetHVLines(const Identifier& id) ; + std::vector<int> GetHVLines(const HVData& hvdata, const Identifier& id) ; }; #endif //> !CALOCONDPHYSALGS_CALOCELLCALCENERGYCORR_H diff --git a/Calorimeter/CaloCondPhysAlgs/src/LArHVMapTool.cxx b/Calorimeter/CaloCondPhysAlgs/src/LArHVMapTool.cxx deleted file mode 100644 index c982ef7d0c5fe72c50c235785d4569b6934a754d..0000000000000000000000000000000000000000 --- a/Calorimeter/CaloCondPhysAlgs/src/LArHVMapTool.cxx +++ /dev/null @@ -1,168 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#include "CaloCondPhysAlgs/LArHVMapTool.h" -#include "CaloDetDescr/CaloDetDescrManager.h" -#include "CaloDetDescr/CaloDetectorElements.h" -#include "CaloIdentifier/LArEM_ID.h" -#include "CaloIdentifier/LArHEC_ID.h" -#include "CaloIdentifier/LArFCAL_ID.h" -#include "CaloIdentifier/CaloIdManager.h" - -#include "LArHV/EMBHVElectrode.h" -#include "LArHV/EMBPresamplerHVModule.h" -#include "LArHV/EMECHVElectrode.h" -#include "LArHV/EMECPresamplerHVModule.h" -#include "LArHV/HECHVSubgap.h" -#include "LArHV/FCALHVLine.h" -#include "LArReadoutGeometry/EMECCell.h" -#include "LArReadoutGeometry/HECCell.h" -#include "LArReadoutGeometry/EMBCell.h" -#include "LArReadoutGeometry/FCALTile.h" -#include "LArReadoutGeometry/EMBCellConstLink.h" -#include "LArReadoutGeometry/EMECCellConstLink.h" -#include "LArReadoutGeometry/HECCellConstLink.h" -#include "LArReadoutGeometry/FCALTubeConstLink.h" - -#include "LArHV/LArHVManager.h" - - - -LArHVMapTool::LArHVMapTool(const std::string& type, const std::string& name, const IInterface* parent) - : AthAlgTool(type,name,parent) - { - declareInterface<LArHVMapTool>( this ); - } - -StatusCode LArHVMapTool::initialize(){ - - CHECK(detStore()->retrieve(m_caloIdMgr)); - - m_larem_id = m_caloIdMgr->getEM_ID(); - m_larhec_id = m_caloIdMgr->getHEC_ID(); - m_larfcal_id = m_caloIdMgr->getFCAL_ID(); - - CHECK(detStore()->retrieve(m_calodetdescrmgr)); - - - return StatusCode::SUCCESS; -} - -StatusCode LArHVMapTool::execute() { - - - CHECK(m_hvCablingTool.retrieve()); - - IdentifierHash h=0; - Identifier offId; - m_larem_id->get_id(h,offId); - std::vector<int> hvlineId = GetHVLines(offId); - //std::cout<<"LArHVMapTool::execute "<<offId.getString()<<" : "<<hvlineId.size()<<std::endl; - //if(hvlineId.size()>0) std::cout<<hvlineId[0]<<std::endl; - - return StatusCode::SUCCESS; -} - - -std::vector<int> LArHVMapTool::GetHVLines(const Identifier& id) { - std::set<int> hv; - - // LAr EMB - if (m_larem_id->is_lar_em(id) && m_larem_id->sampling(id)>0) { - if (abs(m_larem_id->barrel_ec(id))==1) { - const EMBDetectorElement* embElement = dynamic_cast<const EMBDetectorElement*>(m_calodetdescrmgr->get_element(id)); - if (embElement) { - const EMBCellConstLink cell = embElement->getEMBCell(); - unsigned int nelec = cell->getNumElectrodes(); - for (unsigned int i=0;i<nelec;i++) { - const EMBHVElectrode& electrode = cell->getElectrode(i); - for (unsigned int igap=0;igap<2;igap++) { - hv.insert(electrode.hvLineNo(igap)); - } - } - } - else { - ATH_MSG_ERROR( "Failed d'cast to EMBDetectorElement" ); - } - } else { // LAr EMEC - const EMECDetectorElement* emecElement = dynamic_cast<const EMECDetectorElement*>(m_calodetdescrmgr->get_element(id)); - if (emecElement) { - const EMECCellConstLink cell = emecElement->getEMECCell(); - unsigned int nelec = cell->getNumElectrodes(); - for (unsigned int i=0;i<nelec;i++) { - const EMECHVElectrode& electrode = cell->getElectrode(i); - for (unsigned int igap=0;igap<2;igap++) hv.insert(electrode.hvLineNo(igap)); - } - } - else { - ATH_MSG_ERROR( "Failed d'cast to EMECDetectorElement" ); - } - } - } else if (m_larhec_id->is_lar_hec(id)) { // LAr HEC - const HECDetectorElement* hecElement = dynamic_cast<const HECDetectorElement*>(m_calodetdescrmgr->get_element(id)); - if (hecElement) { - const HECCellConstLink cell = hecElement->getHECCell(); - unsigned int nsubgaps = cell->getNumSubgaps(); - for (unsigned int igap=0;igap<nsubgaps;igap++) { - const HECHVSubgap& subgap = cell->getSubgap(igap); - hv.insert(subgap.hvLineNo()); - } - } - else { - ATH_MSG_ERROR( "Failed d'cast to HECDetectorElement" ); - } - } else if (m_larfcal_id->is_lar_fcal(id)) { // LAr FCAL - const FCALDetectorElement* fcalElement = dynamic_cast<const FCALDetectorElement*>(m_calodetdescrmgr->get_element(id)); - if (fcalElement) { - const FCALTile* tile = fcalElement->getFCALTile(); - unsigned int nlines = tile->getNumHVLines(); - unsigned int nlines_found=0; - for (unsigned int i=0;i<nlines;i++) { - const FCALHVLine* line = tile->getHVLine(i); - if (line) nlines_found++; - } - if ( nlines_found>0 ) { - for (unsigned int i=0;i<nlines;i++) { - const FCALHVLine* line = tile->getHVLine(i); - if (!line) continue; - hv.insert(line->hvLineNo()); - } - } - } - else { - ATH_MSG_ERROR( "Failed d'cast to FCALDetectorElement" ); - } - - } else if (m_larem_id->is_lar_em(id) && m_larem_id->sampling(id)==0) { // Presamplers - if (abs(m_larem_id->barrel_ec(id))==1) { - const EMBDetectorElement* embElement = dynamic_cast<const EMBDetectorElement*>(m_calodetdescrmgr->get_element(id)); - if (embElement) { - const EMBCellConstLink cell = embElement->getEMBCell(); - const EMBPresamplerHVModule& hvmodule = cell->getPresamplerHVModule(); - for (unsigned int igap=0;igap<2;igap++) hv.insert(hvmodule.hvLineNo(igap)); - } - else { - ATH_MSG_ERROR( "Failed d'cast to EMBDetectorElement (for presampler)" ); - } - } else { - const EMECDetectorElement* emecElement = dynamic_cast<const EMECDetectorElement*>(m_calodetdescrmgr->get_element(id)); - if (emecElement) { - const EMECCellConstLink cell = emecElement->getEMECCell(); - const EMECPresamplerHVModule& hvmodule = cell->getPresamplerHVModule (); - for (unsigned int igap=0;igap<2;igap++) hv.insert(hvmodule.hvLineNo(igap)); - } - else { - ATH_MSG_ERROR( "Failed d'cast to EMECDetectorElement (for presampler)" ); - } - } - } - - std::vector<int> hvlines; - for (std::set<int>::iterator i=hv.begin();i!=hv.end();++i) hvlines.push_back(*i); - //std::cout<<"LArHVMapTool hvlines size: "<<hvlines.size()<<std::endl; - //if(hvlines.size()>0) std::cout<<hvlines[0]<<std::endl; - return hvlines; -} - - diff --git a/Calorimeter/CaloRec/python/CaloCellFlags.py b/Calorimeter/CaloRec/python/CaloCellFlags.py index 407313f26fb54d8d6f54b7cf06ec68196ae5ce19..8a016e6d2abe62a94c52c63561ead5c1e20ce8fe 100644 --- a/Calorimeter/CaloRec/python/CaloCellFlags.py +++ b/Calorimeter/CaloRec/python/CaloCellFlags.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # @file: CaloCellFlags.py # @purpose: a container of flags for CaloCell making configuring @@ -73,13 +73,6 @@ class doMinBiasAverage(JobProperty): allowedTypes = ['bool'] StoredValue = False -class doLArRecalibration(JobProperty): - """ Flag to activate cell recalibration, undoing online energy computation and applying new calibration - """ - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - class doLArNoiseMasking(JobProperty): """ Flag to activate masking of high noise / dead cell for all events """ @@ -183,7 +176,6 @@ list_jobproperties = [ doLArHVCorr, doPedestalCorr, doMinBiasAverage, - doLArRecalibration, doLArNoiseMasking, doLArSporadicMasking, doLArBadFebMasking, diff --git a/Calorimeter/CaloRec/python/CaloCellGetter.py b/Calorimeter/CaloRec/python/CaloCellGetter.py index bb48fc6e9d8239ad55dfba34d33babe128c00071..662c90b416b71280a9c95cc5a88a7a79ac310ff7 100644 --- a/Calorimeter/CaloRec/python/CaloCellGetter.py +++ b/Calorimeter/CaloRec/python/CaloCellGetter.py @@ -492,67 +492,6 @@ class CaloCellGetter (Configured) : #theCaloCellMaker += theHVCorrTool theCaloCellMaker.CaloCellMakerToolNames += [theLArCellHVCorrTool] - # - # correction to undo online calibration and apply new LAr electronics calibration for ADC->MeV conversion - # - doLArRecalibration = False - if jobproperties.CaloCellFlags.doLArRecalibration.statusOn: - from AthenaCommon.GlobalFlags import globalflags - from LArConditionsCommon.LArCondFlags import larCondFlags - if jobproperties.CaloCellFlags.doLArRecalibration() and globalflags.DataSource() == 'data' and (not larCondFlags.SingleVersion()) : - doLArRecalibration = True - mlog.info("Redoing LAr electronics calibration for ADC->MeV") - - - if doLArRecalibration: - - # get tool for cell recalibration - try: - from LArCellRec.LArCellRecConf import LArCellRecalibration - theLArCellRecalibration = LArCellRecalibration("LArCellRecalibration") - except Exception: - mlog.error("could not get handle to LArCellRecalibration Quit") - print(traceback.format_exc()) - return False - - # get new ADC2MeVTool - try: - from LArRecUtils.LArADC2MeVToolDefault import LArADC2MeVToolDefault - theLArADC2MeVToolDefault = LArADC2MeVToolDefault() - except Exception: - mlog.error("Could not get handle to LArADC2MeVToolDefault Quit") - print(traceback.format_exc()) - return False - ToolSvc += theLArADC2MeVToolDefault - - # get old ADC2MeVTool - try: - from LArRecUtils.LArADC2MeVToolOnline import LArADC2MeVToolOnline - theLArADC2MeVToolOnline = LArADC2MeVToolOnline() - except Exception: - mlog.error("Could not get handle to LArADC2MeVToolOnline Quit") - print(traceback.format_exc()) - return False - ToolSvc += theLArADC2MeVToolOnline - - theLArCellRecalibration.adc2MeVTool = theLArADC2MeVToolDefault - theLArCellRecalibration.adc2MeVToolOnline = theLArADC2MeVToolOnline - - - try: - from CaloRec.CaloRecConf import CaloCellContainerCorrectorTool - from CaloIdentifier import SUBCALO - theLArRecalibrationTool = CaloCellContainerCorrectorTool("LArRecalibrationTool", - CaloNums=[ SUBCALO.LAREM, SUBCALO.LARHEC, SUBCALO.LARFCAL ], - CellCorrectionToolNames=[ theLArCellRecalibration]) - except Exception: - mlog.error("could not get handle to HVCorrTool Quit") - print(traceback.format_exc()) - return False - theCaloCellMaker += theLArRecalibrationTool - theCaloCellMaker.CaloCellMakerToolNames += [theLArRecalibrationTool] - - # # Correction for MinBias energy shift for MC pileup reco # diff --git a/Calorimeter/CaloTriggerTool/CaloTriggerTool/LArTTCellMap.h b/Calorimeter/CaloTriggerTool/CaloTriggerTool/LArTTCellMap.h index 3f3fbc6f9faf09065210b8c2b605cdc7d846aa5c..46b64f9025b86236a0659db6e759c67f6976e3cf 100755 --- a/Calorimeter/CaloTriggerTool/CaloTriggerTool/LArTTCellMap.h +++ b/Calorimeter/CaloTriggerTool/CaloTriggerTool/LArTTCellMap.h @@ -8,12 +8,12 @@ #include "Identifier/Identifier.h" #include "CaloTriggerTool/LArTTCell.h" #include "CaloTriggerTool/LArTTCell_P.h" -#include "CaloIdentifier/LArID_Exception.h" +#include "CaloIdentifier/LArID_Exception.h" +#include "AthenaBaseComps/AthMessaging.h" #include <vector> #include <map> -class MsgStream ; /** @brief This is a StoreGate object holding the offline TT-cell map @@ -25,6 +25,7 @@ class MsgStream ; */ class LArTTCellMap + : public AthMessaging { public: @@ -70,8 +71,6 @@ private: // std::map<HWIdentifier,Identifier> m_on2offIdMap; LArTTCell_P m_persData; - - MsgStream* m_msg ; }; #include "AthenaKernel/CLASS_DEF.h" diff --git a/Calorimeter/CaloTriggerTool/src/LArTTCellMap.cxx b/Calorimeter/CaloTriggerTool/src/LArTTCellMap.cxx index dae9643d1b2c939a4701e9b5e8e025984f9f7203..872bc478625e2574ee8076bbd7687ac76a267e1c 100755 --- a/Calorimeter/CaloTriggerTool/src/LArTTCellMap.cxx +++ b/Calorimeter/CaloTriggerTool/src/LArTTCellMap.cxx @@ -7,25 +7,17 @@ #include "CaloIdentifier/LArEM_ID.h" #include "CaloIdentifier/LArHEC_ID.h" #include "CaloIdentifier/LArFCAL_ID.h" -#include "GaudiKernel/ISvcLocator.h" -#include "GaudiKernel/Bootstrap.h" +#include "AthenaKernel/getMessageSvc.h" #include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" +#include "GaudiKernel/ServiceHandle.h" #include "StoreGate/StoreGateSvc.h" #include <iostream> -LArTTCellMap::LArTTCellMap( ): m_msg(nullptr) +LArTTCellMap::LArTTCellMap( ) + : AthMessaging (Athena::getMessageSvc(), "LArTTCellMap") { - - IMessageSvc *msgSvc; - StatusCode status =Gaudi::svcLocator()->service("MessageSvc",msgSvc); - if(status.isFailure()){ - std::cout << "Cannot locate MessageSvc" << std::endl; - } - m_msg = new MsgStream ( msgSvc, "LArTTCellMap"); - msgSvc->release() ; } @@ -40,35 +32,30 @@ void LArTTCellMap::set( const LArTTCell& m ) convert_to_P(m); - if (m_msg->level() <= MSG::DEBUG) { - (*m_msg) <<MSG::DEBUG<<" LArTTCell size = "<<m.size() <<endmsg; - } - StoreGateSvc * detStore; - StatusCode status = Gaudi::svcLocator()->service("DetectorStore",detStore); - if(status.isFailure()){ - (*m_msg) << MSG::ERROR << "Cannot locate DetectorStore" << endmsg; - } + ATH_MSG_DEBUG( " LArTTCell size = "<<m.size() ); + + ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "LArTTCellMap"); const LArEM_ID* em_id; const LArHEC_ID* hec_id; const LArFCAL_ID* fcal_id; const CaloLVL1_ID* lvl1_id; - status=detStore->retrieve(em_id); + StatusCode status=detStore->retrieve(em_id); if(status.isFailure()){ - (*m_msg) << MSG::ERROR << "Cannot retrieve em_id" << endmsg; + ATH_MSG_ERROR( "Cannot retrieve em_id" ); } status=detStore->retrieve(hec_id); if(status.isFailure()){ - (*m_msg) << MSG::ERROR << "Cannot retrieve hec_id" << endmsg; + ATH_MSG_ERROR( "Cannot retrieve hec_id" ); } status=detStore->retrieve(fcal_id); if(status.isFailure()){ - (*m_msg) << MSG::ERROR << "Cannot retrieve fcal_id" << endmsg; + ATH_MSG_ERROR( "Cannot retrieve fcal_id" ); } status=detStore->retrieve(lvl1_id); if(status.isFailure()){ - (*m_msg) << MSG::ERROR << "Cannot retrieve lvl1_id" << endmsg; + ATH_MSG_ERROR( "Cannot retrieve lvl1_id" ); } LArTTCell::const_iterator it = m.begin(); LArTTCell::const_iterator it_e = m.end(); @@ -93,35 +80,29 @@ void LArTTCellMap::set( const LArTTCell& m ) id = fcal_id->channel_id(t.pn,t.region,t.eta,t.phi); } else { - (*m_msg) <<MSG::ERROR <<" Wrong input Detector Number " << t.det << endmsg; + ATH_MSG_ERROR( " Wrong input Detector Number " << t.det ); } Identifier sid = lvl1_id->layer_id(t.tpn,t.tsample,t.tregion,t.teta,t.tphi,t.layer); - if (m_msg->level() <= MSG::VERBOSE) { - (*m_msg) <<MSG::VERBOSE - << " db struct= " - <<" det="<<t.det - <<" pn="<<t.pn - <<" region="<<t.region - <<" sample="<<t.sample - <<" eta="<<t.eta<<" phi="<<t.phi - <<" trig pn="<<t.tpn - <<" trig region="<<t.tregion - <<" trig sample="<<t.tsample - <<" trig eta="<<t.teta<<" trig phi="<<t.tphi - <<" layer="<<t.layer - << endmsg; - - (*m_msg) <<MSG::VERBOSE<< " lvl1 id = " << sid<<" offline id ="<<id<<endmsg; - } + ATH_MSG_VERBOSE( " db struct= " + <<" det="<<t.det + <<" pn="<<t.pn + <<" region="<<t.region + <<" sample="<<t.sample + <<" eta="<<t.eta<<" phi="<<t.phi + <<" trig pn="<<t.tpn + <<" trig region="<<t.tregion + <<" trig sample="<<t.tsample + <<" trig eta="<<t.teta<<" trig phi="<<t.tphi + <<" layer="<<t.layer ); + ATH_MSG_VERBOSE( " lvl1 id = " << sid<<" offline id ="<<id ); if(!(cellIdSet.insert(id)).second) { - (*m_msg) <<MSG::ERROR<<" Duplicate cell id " - << lvl1_id->show_to_string(id) - << " in TT= " - << lvl1_id->show_to_string(sid) - << endmsg; + ATH_MSG_ERROR( " Duplicate cell id " + << lvl1_id->show_to_string(id) + << " in TT= " + << lvl1_id->show_to_string(sid) ); } m_cell2ttIdMap[id] = sid; @@ -167,13 +148,11 @@ void LArTTCellMap::set( const LArTTCell& m ) catch (LArID_Exception& except) { - (*m_msg) <<MSG::ERROR<<" Failed in LArTTCellMap::set " << endmsg; - (*m_msg) <<MSG::ERROR<< (std::string) except << endmsg ; + ATH_MSG_ERROR( " Failed in LArTTCellMap::set " ); + ATH_MSG_ERROR( (std::string) except ); } - if (m_msg->level() <= MSG::DEBUG) { - (*m_msg) <<MSG::DEBUG<<" LArTTCellMap::set : number of cell Ids="<<m_cell2ttIdMap.size()<<std::endl; - } + ATH_MSG_DEBUG( " LArTTCellMap::set : number of cell Ids="<<m_cell2ttIdMap.size() ); detStore->release() ; @@ -190,7 +169,7 @@ Identifier LArTTCellMap::whichTTID(const Identifier& id) const return (*it).second; } - (*m_msg) <<MSG::ERROR<<" Offline TT ID not found for cell "<< id <<endmsg; + ATH_MSG_ERROR( " Offline TT ID not found for cell "<< id ); return Identifier(); @@ -211,9 +190,7 @@ LArTTCellMap::createCellIDvec(const Identifier & sid) const return (*it).second; } - if (m_msg->level() <= MSG::VERBOSE) { - (*m_msg) <<MSG::VERBOSE<<" vector of offline cell ID not found, TT id = " <<sid.get_compact()<< endmsg; - } + ATH_MSG_VERBOSE( " vector of offline cell ID not found, TT id = " <<sid.get_compact() ); static const std::vector<Identifier> v; return v ; diff --git a/Commission/CommissionEvent/CommissionEvent/ATLAS_CHECK_THREAD_SAFETY b/Commission/CommissionEvent/CommissionEvent/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..d4e4cf4831700b199488063662bc876b1714c0d0 --- /dev/null +++ b/Commission/CommissionEvent/CommissionEvent/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +Commission/CommissionEvent diff --git a/Control/AthenaBaseComps/src/AthHistogramAlgorithm.cxx b/Control/AthenaBaseComps/src/AthHistogramAlgorithm.cxx index 2e9fd336431465edebda3e624b1eb1dac2face52..dbdb3798d05db55564dd17648acba2beed6bb4da 100644 --- a/Control/AthenaBaseComps/src/AthHistogramAlgorithm.cxx +++ b/Control/AthenaBaseComps/src/AthHistogramAlgorithm.cxx @@ -44,7 +44,7 @@ AthHistogramAlgorithm::AthHistogramAlgorithm( const std::string& name, "ROOT objects to ROOT files" ); // declareProperty("THistService", m_histSvc, "The THistSvc" ); - declareProperty("RootStreamName", m_prefix = "/", "Name of the output ROOT stream (file) that the THistSvc uses"); + declareProperty("RootStreamName", m_prefix = "/ANALYSIS", "Name of the output ROOT stream (file) that the THistSvc uses"); declareProperty("RootDirName", m_rootDir = "", "Name of the ROOT directory inside the ROOT file where the histograms will go"); diff --git a/Control/AthenaBaseComps/src/AthHistogramFilterAlgorithm.cxx b/Control/AthenaBaseComps/src/AthHistogramFilterAlgorithm.cxx index dc49753b528d7d1429f53b5576f52f172f2cf960..a3298420a3ff94b00db862a8a33c1941f3258060 100644 --- a/Control/AthenaBaseComps/src/AthHistogramFilterAlgorithm.cxx +++ b/Control/AthenaBaseComps/src/AthHistogramFilterAlgorithm.cxx @@ -43,7 +43,7 @@ AthHistogramFilterAlgorithm::AthHistogramFilterAlgorithm( const std::string& nam "ROOT objects to ROOT files" ); //declareProperty("THistService", m_histSvc, "The THistSvc" ); - declareProperty("RootStreamName", m_prefix = "/", "Name of the output ROOT stream (file) that the THistSvc uses"); + declareProperty("RootStreamName", m_prefix = "/ANALYSIS", "Name of the output ROOT stream (file) that the THistSvc uses"); declareProperty("RootDirName", m_rootDir = "", "Name of the ROOT directory inside the ROOT file where the histograms will go"); diff --git a/Control/AthenaBaseComps/src/AthHistogramTool.cxx b/Control/AthenaBaseComps/src/AthHistogramTool.cxx index 9ef638090f9b4fd7f0468465385c1ae9664f9d07..707641e5233e9e98534471c6065a3d4e7a9726b0 100644 --- a/Control/AthenaBaseComps/src/AthHistogramTool.cxx +++ b/Control/AthenaBaseComps/src/AthHistogramTool.cxx @@ -41,7 +41,7 @@ AthHistogramTool::AthHistogramTool( const std::string& type, "Handle to a THistSvc instance: it will be used to write " "ROOT objects to ROOT files" ); - declareProperty("RootStreamName", m_prefix = "/", "Name of the output ROOT stream (file) that the THistSvc uses"); + declareProperty("RootStreamName", m_prefix = "/ANALYSIS", "Name of the output ROOT stream (file) that the THistSvc uses"); declareProperty("RootDirName", m_rootDir = "", "Name of the ROOT directory inside the ROOT file where the histograms will go"); diff --git a/Control/AthenaConfiguration/python/ComponentAccumulator.py b/Control/AthenaConfiguration/python/ComponentAccumulator.py index d48d9ceac08366b0a81f41f0a84cbdf59d520a65..65124a53af8e4d0ee058dfabcde4d24edad25c57 100644 --- a/Control/AthenaConfiguration/python/ComponentAccumulator.py +++ b/Control/AthenaConfiguration/python/ComponentAccumulator.py @@ -939,6 +939,11 @@ def conf2toConfigurable( comp, indent="", suppressDupes=False ): def __areSettingsSame( existingConfigurableInstance, newConf2Instance, indent="" ): _log.debug( "%sChecking if settings are the same %s %s", indent, existingConfigurableInstance.getFullName(), newConf2Instance.getFullJobOptName() ) + if (existingConfigurableInstance.getType() != newConf2Instance.__cpp_type__): + raise ConfigurationError("Old/new ({} | {}) cpp types are not the same for ({} | {}) !".format( + existingConfigurableInstance.getType(),newConf2Instance.__cpp_type__, + existingConfigurableInstance.getFullName(), newConf2Instance.getFullJobOptName() ) ) + alreadySetProperties = existingConfigurableInstance.getValuedProperties().copy() _log.debug( "Existing properties: %s", alreadySetProperties ) _log.debug( "New properties: %s", newConf2Instance._properties ) @@ -950,18 +955,35 @@ def conf2toConfigurable( comp, indent="", suppressDupes=False ): indent, compName(newConf2Instance), pname, compName(pvalue) ) continue propType = newConf2Instance._descriptors[pname].cpp_type - _log.debug( "%sComparing type: %s for: %s", indent, propType, pname ) + _log.debug( "%sComparing type: %s for: %s in: %s", indent, propType, pname, existingConfigurableInstance.getFullJobOptName() ) if "PrivateToolHandleArray" in propType: toolDict = {_.getName(): _ for _ in alreadySetProperties[pname]} _log.debug('Private tool properties? %s', toolDict) newCdict = {_.getName() : _ for _ in pvalue} oldCset = set(toolDict); newCset = set(newCdict) _log.debug('Private tool property names? %s %s', oldCset, newCset) + if ( not (oldCset == newCset) ): + _log.warning('%s PrivateToolHandleArray %s does not have the same named components',indent, pname ) + _log.warning('%s Old (conf1) %s for %s',indent, oldCset, existingConfigurableInstance.getFullJobOptName()) + _log.warning('%s New (conf2) %s for %s',indent, newCset, newConf2Instance.getFullJobOptName()) + _log.warning('%s Will try to merge them, but this might go wrong!',indent) for oldC in oldCset & newCset: __areSettingsSame( toolDict[oldC], newCdict[oldC], __indent(indent)) + # And now just the new properties in conf2 (the stuff just in conf1 is already in the objec) for newC in newCset-oldCset: - # clone new config to old array - alreadySetProperties[pname].append(conf2toConfigurable(newCdict[newC])) + className = newCdict[newC].getFullJobOptName().split( "/" )[0] + _log.debug('%s %s not in oldconfig. Will try to create conf1 instance using this className: %s, and merge.',indent, newC, className) + configurableClass = __findConfigurableClass( className ) + # Do not create with existing name, or it will try to get an existing public tool, if available + # (and public tools cannot be added to a PrivateToolHandleArray) + instance = configurableClass( newC + className + str(len(indent)) ) + + # Now give it the correct name + instance._name = newCdict[newC].name + + __setProperties( instance, newCdict[newC], __indent( indent ) ) + _log.debug('%s will now add %s to array.',indent, instance) + alreadySetProperties[pname].append(instance) elif "PublicToolHandleArray" in propType: toolSet = {_.getName() for _ in alreadySetProperties[pname]} _log.debug('Public tool handle array properties? %s %s', toolSet, pvalue) @@ -982,6 +1004,9 @@ def conf2toConfigurable( comp, indent="", suppressDupes=False ): "skipping deeper checks, configuration may be incorrect", indent, propType, newConf2Instance.name, pname, pvalue) else: + if pvalue is None: + _log.debug("%sThe property value for %s of %s is None. Skipping.", indent, pname, newConf2Instance.name ) + continue _log.debug( "%sSome kind of handle and, object type %s existing %s", indent, type(pvalue), type(existingVal) ) __areSettingsSame( existingVal, pvalue, indent) @@ -991,22 +1016,36 @@ def conf2toConfigurable( comp, indent="", suppressDupes=False ): if pname not in alreadySetProperties: _log.info( "%sAdding property: %s for %s", indent, pname, newConf2Instance.getName() ) - setattr(existingConfigurableInstance, pname, pvalue) + try: + setattr(existingConfigurableInstance, pname, pvalue) + except AttributeError: + _log.info("%s Could not set attribute. Type of existingConfigurableInstance %s.",indent, type(existingConfigurableInstance) ) + raise elif alreadySetProperties[pname] != pvalue: _log.info( "%sMerging property: %s for %s", indent, pname, newConf2Instance.getName() ) # create surrogate clone = newConf2Instance.getInstance("Clone") setattr(clone, pname, alreadySetProperties[pname]) - updatedPropValue = __listHelperToList(newConf2Instance._descriptors[pname].semantics.merge( getattr(newConf2Instance, pname), getattr(clone, pname))) - - setattr(existingConfigurable, pname, updatedPropValue) + try: + updatedPropValue = __listHelperToList(newConf2Instance._descriptors[pname].semantics.merge( getattr(newConf2Instance, pname), getattr(clone, pname))) + except ValueError: + _log.warning( "Failed merging new config value (%s) and old config value (%s) for (%s) property of %s (%s) old (new). Will take value from NEW configuration, but this should be checked!", + getattr(newConf2Instance, pname),getattr(clone, pname),pname,existingConfigurableInstance.getFullJobOptName() ,newConf2Instance.getFullJobOptName() ) + updatedPropValue=getattr(newConf2Instance, pname) + # Necessary because default value is returned for lists... see e.g.: + # https://gitlab.cern.ch/atlas/athena/-/blob/630b82d0540fff24c2a1da6716efc0adb53727c9/Control/AthenaCommon/python/PropertyProxy.py#L109 + _log.debug("existingConfigurable.name: %s, pname: %s, updatedPropValue: %s", existingConfigurableInstance.name(), pname, updatedPropValue ) + + setattr(existingConfigurableInstance, pname, updatedPropValue) del clone _log.info("%s invoked GaudiConf2 semantics to merge the %s and the %s to %s " "for property %s of %s", indent, alreadySetProperties[pname], pvalue, pname, updatedPropValue, existingConfigurable.getFullName()) - + + _log.debug( "%s Conf2 Full name: %s ", indent, comp.getFullJobOptName() ) existingConfigurable = __alreadyConfigured( comp.name ) + if existingConfigurable: # if configurable exists we try to merge with it _log.debug( "%sPre-existing configurable %s was found, checking if has the same properties", indent, comp.getName() ) __areSettingsSame( existingConfigurable, comp ) diff --git a/Control/AthenaMPTools/src/SharedHiveEvtQueueConsumer.cxx b/Control/AthenaMPTools/src/SharedHiveEvtQueueConsumer.cxx index 4e4822fa597aba8a251e3d569c5577f7a3839b5f..c268827e057c5fbbf6166c11235cf8fac75bb888 100644 --- a/Control/AthenaMPTools/src/SharedHiveEvtQueueConsumer.cxx +++ b/Control/AthenaMPTools/src/SharedHiveEvtQueueConsumer.cxx @@ -415,8 +415,6 @@ SharedHiveEvtQueueConsumer::bootstrap_func() // ___________________ Fire UpdateAfterFork incident _________________ p_incidentSvc->fireIncident(AthenaInterprocess::UpdateAfterFork(m_rankId,getpid(),name())); - p_incidentSvc->fireIncident(Incident(name(),"ReloadProxies")); - // Declare success and return *(int*)(outwork->data) = 0; return outwork; diff --git a/Control/IOVSvc/share/IOVSvcTool_test.ref b/Control/IOVSvc/share/IOVSvcTool_test.ref index 1c035c978afbfdba04ab25afa86fcd359f6e6d09..b8e788a14594751076066d215d09b17979158732 100644 --- a/Control/IOVSvc/share/IOVSvcTool_test.ref +++ b/Control/IOVSvc/share/IOVSvcTool_test.ref @@ -63,7 +63,6 @@ IncidentSvc DEBUG Adding [BeginEvent] listener 'ConditionStore' with pri IncidentSvc DEBUG Adding [BeginEvent] listener 'ToolSvc.IOVSvcTool' with priority 100 IncidentSvc DEBUG Adding [BeginRun] listener 'ToolSvc.IOVSvcTool' with priority 100 ToolSvc.IOVSvcTool INFO IOVRanges will be checked at every Event -IncidentSvc DEBUG Adding [ReloadProxies] listener 'ToolSvc.IOVSvcTool' with priority 100 ToolSvc.IOVSvcTool DEBUG Tool initialized ClassIDSvc INFO getRegistryEntries: read 372 CLIDRegistry entries for module ALL ToolSvc.IOVSvcTool DEBUG registering proxy [Dooo:6666/old] at 0x2309460 diff --git a/Control/IOVSvc/src/CondInputLoader.cxx b/Control/IOVSvc/src/CondInputLoader.cxx index ff3f6acc4d2151a355657bb6ab02bb09284ee72b..7e1423097b18d465c362c4c7ba30da0b76e0e881 100644 --- a/Control/IOVSvc/src/CondInputLoader.cxx +++ b/Control/IOVSvc/src/CondInputLoader.cxx @@ -24,6 +24,7 @@ #include "xAODEventInfo/EventInfo.h" #include "AthenaKernel/BaseInfo.h" +#include "ICondSvcSetupDone.h" #include "TClass.h" @@ -265,6 +266,12 @@ CondInputLoader::start() return StatusCode::FAILURE; } + // Let the conditions service know that we've finished creating + // conditions containers. + ServiceHandle<ICondSvcSetupDone> condSvcDone ("CondSvc", name()); + ATH_CHECK( condSvcDone.retrieve() ); + ATH_CHECK( condSvcDone->setupDone() ); + return StatusCode::SUCCESS; } diff --git a/Control/IOVSvc/src/CondSvc.cxx b/Control/IOVSvc/src/CondSvc.cxx index 8202e2c6be742f5cbd74cd87f51dd465db81424c..659e9dd302812286871d152af0f80f0113843a89 100644 --- a/Control/IOVSvc/src/CondSvc.cxx +++ b/Control/IOVSvc/src/CondSvc.cxx @@ -130,6 +130,15 @@ CondSvc::finalize() { } +StatusCode +CondSvc::start() +{ + // Call this now, in case there's no CondInputLoader. + ATH_CHECK( setupDone() ); + return StatusCode::SUCCESS; +} + + StatusCode CondSvc::stop() { @@ -342,7 +351,10 @@ CondSvc::getValidIDs(const EventContext& ctx, DataObjIDColl& validIDs) { bool CondSvc::isValidID(const EventContext& ctx, const DataObjID& id) const { - std::lock_guard<mutex_t> lock(m_lock); + // Don't take out the lock here. + // In many-thread jobs, a lock here becomes heavily contended. + // The only potential conflict is with startConditionSetup(), + // which should only be called during START. EventIDBase now(ctx.eventID()); @@ -352,13 +364,15 @@ CondSvc::isValidID(const EventContext& ctx, const DataObjID& id) const { sk.erase(0,15); } - if (m_sgs->contains<CondContBase>( sk ) ) { - CondContBase *cib; - if (m_sgs->retrieve(cib, sk).isSuccess()) { - ATH_MSG_VERBOSE("CondSvc::isValidID: now: " << ctx.eventID() << " id : " - << id << (cib->valid(now) ? ": T" : ": F") ); - return cib->valid(now); - } + auto it = m_condConts.find (sk); + if (it != m_condConts.end()) { + bool valid = it->second->valid (now); + ATH_MSG_VERBOSE("CondSvc::isValidID: now: " << ctx.eventID() << " id : " + << id << (valid ? ": T" : ": F") ); + return valid; + } + else { + ATH_MSG_ERROR( "Cannot find CondCont " << id ); } ATH_MSG_DEBUG("CondSvc::isValidID: now: " << ctx.eventID() << " id: " @@ -396,3 +410,20 @@ CondSvc::conditionIDs() const { } +//--------------------------------------------------------------------------- + + +StatusCode CondSvc::setupDone() +{ + std::lock_guard<mutex_t> lock(m_lock); + + SG::ConstIterator<CondContBase> cib, cie; + if (m_sgs->retrieve(cib,cie).isSuccess()) { + while(cib != cie) { + m_condConts[cib.key()] = &*cib; + ++cib; + } + } + + return StatusCode::SUCCESS; +} diff --git a/Control/IOVSvc/src/CondSvc.h b/Control/IOVSvc/src/CondSvc.h index 1e0185de4813ecd7c76d9bac4d43cfcd21972b3c..b8a62c368826c569d1febb1a63feec48f9577271 100644 --- a/Control/IOVSvc/src/CondSvc.h +++ b/Control/IOVSvc/src/CondSvc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef IOVSVC_CONDSVC_H @@ -10,7 +10,9 @@ #include "AthenaBaseComps/AthService.h" #include "StoreGate/StoreGateSvc.h" #include "AthenaBaseComps/AthService.h" +#include "ICondSvcSetupDone.h" +#include <unordered_map> #include <map> #include <set> #include <vector> @@ -19,38 +21,45 @@ class ConditionSlotFuture; class ICondtionIOSvc; -class ATLAS_CHECK_THREAD_SAFETY CondSvc: public extends1<AthService, ICondSvc> { +class ATLAS_CHECK_THREAD_SAFETY CondSvc: public extends<AthService, ICondSvc, ICondSvcSetupDone> { public: CondSvc(const std::string& name, ISvcLocator* svc); ~CondSvc(); - virtual StatusCode initialize(); - virtual StatusCode finalize(); - virtual StatusCode stop(); + virtual StatusCode initialize() override; + virtual StatusCode finalize() override; + virtual StatusCode start() override; + virtual StatusCode stop() override; // from ICondSvc public: - virtual StatusCode regHandle(IAlgorithm* alg, const Gaudi::DataHandle& id); + virtual StatusCode regHandle(IAlgorithm* alg, const Gaudi::DataHandle& id) override; virtual bool getInvalidIDs(const EventContext&, DataObjIDColl& ids); virtual bool getValidIDs(const EventContext&, DataObjIDColl& ids); virtual bool getIDValidity(const EventContext&, DataObjIDColl& validIDs, DataObjIDColl& invalidIDs); - virtual bool isValidID(const EventContext&, const DataObjID&) const; + virtual bool isValidID(const EventContext&, const DataObjID&) const override; - virtual const std::set<IAlgorithm*>& condAlgs() const { return m_condAlgs; } + virtual const std::set<IAlgorithm*>& condAlgs() const override { return m_condAlgs; } - virtual bool isRegistered(const DataObjID&) const; - virtual bool isRegistered(IAlgorithm*) const; + virtual bool isRegistered(const DataObjID&) const override; + virtual bool isRegistered(IAlgorithm*) const override; - virtual const DataObjIDColl& conditionIDs() const; + virtual const DataObjIDColl& conditionIDs() const override; virtual StatusCode validRanges( std::vector<EventIDRange>& ranges, - const DataObjID& id ) const; + const DataObjID& id ) const override; // virtual void dump() const; - virtual void dump(std::ostream&) const; + virtual void dump(std::ostream&) const override; + + /// To be called after changes to the set of conditions containers + /// in the conditions store. + /// May not be called concurrently with any other methods of this class. + virtual StatusCode setupDone() override; + public: // unimplemented interfaces @@ -62,7 +71,7 @@ public: /// register an IConditionIOSvc (alternative to Algorithm processing of /// Conditions) - virtual StatusCode registerConditionIOSvc(IConditionIOSvc*) { + virtual StatusCode registerConditionIOSvc(IConditionIOSvc*) override { return StatusCode::FAILURE; } @@ -103,6 +112,11 @@ private: DataObjIDColl m_condIDs; + // Map from keys to CondContBase instances. + // Populated by startConditionSetup(). + typedef std::unordered_map<std::string, const CondContBase*> CondContMap_t; + CondContMap_t m_condConts; + typedef std::mutex mutex_t; mutable mutex_t m_lock; diff --git a/Control/IOVSvc/src/ICondSvcSetupDone.h b/Control/IOVSvc/src/ICondSvcSetupDone.h new file mode 100644 index 0000000000000000000000000000000000000000..bc5f870098d295ae099df4d6797677ba49b62d68 --- /dev/null +++ b/Control/IOVSvc/src/ICondSvcSetupDone.h @@ -0,0 +1,32 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. +/* + * Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration. + */ +/** + * @file IOVSvc/src/ICondSvcSetupDone.h + * @author scott snyder <snyder@bnl.gov> + * @date Nov, 2020 + * @brief Interface to tell CondSvc to cache conditions containers. + */ + + +#ifndef IOVSVC_ICONDSVCSETUPDONE_H +#define IOVSVC_ICONDSVCSETUPDONE_H + + +#include "GaudiKernel/IInterface.h" + + +class ICondSvcSetupDone + : virtual public IInterface +{ +public: + DeclareInterfaceID( ICondSvcSetupDone, 1, 0 ); + + /// To be called after creating conditions containers + /// in the conditions store. + virtual StatusCode setupDone() = 0; +}; + + +#endif // not IOVSVC_ICONDSVCSETUPDONE_H diff --git a/Control/IOVSvc/src/IOVSvcTool.cxx b/Control/IOVSvc/src/IOVSvcTool.cxx index a83d3c5bc45a187bbced3e3bb6ae53550aa798f1..5be93c07d9f79cd6c9f5406be51c712bbb088bf4 100644 --- a/Control/IOVSvc/src/IOVSvcTool.cxx +++ b/Control/IOVSvc/src/IOVSvcTool.cxx @@ -216,9 +216,6 @@ IOVSvcTool::initialize() { msg() << "IOV Data will be preloaded at the same interval" << endmsg; } - // For hybrid MP/MT - p_incSvc->addListener( this, "ReloadProxies", pri, true); - ATH_MSG_DEBUG("Tool initialized"); return StatusCode::SUCCESS; @@ -236,11 +233,6 @@ IOVSvcTool::handle(const Incident &inc) { bool first = m_first; - // hybrid MP/MT: need to reload everything after workers fork - if (inc.type() == "ReloadProxies") { - m_resetAllCallbacks = true; - } - // Don't bother doing anything if we're handled the first run, and // preLoadData has been set, or if we only want to check once at the // beginning of the job diff --git a/Control/RootUtils/CMakeLists.txt b/Control/RootUtils/CMakeLists.txt index 0bb8ca72952e1051be1f163085057c29b4a5f4ab..a3e11e0870e7e12ec5ce7642385d4e3e3bb43edf 100644 --- a/Control/RootUtils/CMakeLists.txt +++ b/Control/RootUtils/CMakeLists.txt @@ -9,6 +9,9 @@ find_package( Python COMPONENTS Development ) find_package( ROOT COMPONENTS RIO Hist Tree Core MathCore ROOTTPython cppyy${Python_VERSION_MAJOR}_${Python_VERSION_MINOR} ) +set( ROOT_LIBRARIES_PYROOT ${ROOT_LIBRARIES} ) +find_package( ROOT COMPONENTS RIO Hist Tree Core MathCore ) + # Component(s) in the package: atlas_generate_reflex_dictionary( dict_cpp RootUtils HEADER ${CMAKE_CURRENT_SOURCE_DIR}/RootUtils/RootUtilsDict.h @@ -28,7 +31,7 @@ atlas_add_library( RootUtilsPyROOT PUBLIC_HEADERS RootUtils INCLUDE_DIRS ${Python_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${Python_LIBRARIES} ${Boost_LIBRARIES} ${ROOT_LIBRARIES} + LINK_LIBRARIES ${Python_LIBRARIES} ${Boost_LIBRARIES} ${ROOT_LIBRARIES_PYROOT} CxxUtils ) atlas_add_dictionary( RootUtilsPyROOTDict diff --git a/Database/APR/ImplicitCollection/src/ImplicitCollection.cpp b/Database/APR/ImplicitCollection/src/ImplicitCollection.cpp index 2e05fcf0177065276b8b8dae169ec8dca8a5ac0a..164a16c60bf60c42c20b5d2ab161455e42631c13 100755 --- a/Database/APR/ImplicitCollection/src/ImplicitCollection.cpp +++ b/Database/APR/ImplicitCollection/src/ImplicitCollection.cpp @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "ImplicitCollection.h" @@ -24,8 +24,8 @@ namespace pool { ImplicitCollection:: ImplicitCollection( ISession* session, - std::string connection, - std::string name, + const std::string& connection, + const std::string& name, ICollection::OpenMode mode ) : m_container( 0 ), diff --git a/Database/APR/ImplicitCollection/src/ImplicitCollection.h b/Database/APR/ImplicitCollection/src/ImplicitCollection.h index 32855c71215ddb93ee3329100b7994064115d1c1..7c7b12750303f76fa58d44b6e7508db9b2fa939c 100755 --- a/Database/APR/ImplicitCollection/src/ImplicitCollection.h +++ b/Database/APR/ImplicitCollection/src/ImplicitCollection.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef INCLUDE_IMPLICITCOLLECTION_IMPLICITCOLLECTION_H @@ -36,8 +36,8 @@ namespace pool { @param mode collection's open mode. For the moment only READONLY mode is allowed. */ ImplicitCollection( ISession* session, - std::string connection, - std::string name, + const std::string& connection, + const std::string& name, ICollection::OpenMode mode ); /// Constructor compying to the new Collections API diff --git a/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.cxx b/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.cxx index bac247aea3a13c6916d89014166ff174dbfe5a01..11763c8887b8aa989d5d2bdfef6af3845a3736c7 100644 --- a/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.cxx +++ b/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.cxx @@ -77,9 +77,10 @@ namespace xAODMaker { if( detStore()->contains< AthenaAttributeList >( INDET_BEAMPOS ) ) { m_beamCondSvcAvailable = true; } else { - ATH_MSG_WARNING( "Beam conditions service not available" ); - ATH_MSG_WARNING( "Will not fill beam spot information into " - "xAOD::EventInfo" ); + // This is normal in some cases, but tell the user anyway + ATH_MSG_INFO( "Beam conditions service not available" ); + ATH_MSG_INFO( "Will not fill beam spot information into " + "xAOD::EventInfo" ); m_beamCondSvcAvailable = false; } if(m_disableBeamSpot){ diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/CMakeLists.txt b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/CMakeLists.txt index 6216832195e0c92ffa1c8b5919e3d5ff22f45117..0158445ca9a96ffdcbbe1896655c452b5cfa81bf 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/CMakeLists.txt +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/CMakeLists.txt @@ -19,4 +19,4 @@ atlas_add_component( PixelRawDataByteStreamCnv LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} ByteStreamData AthenaKernel EventContainers GaudiKernel InDetRawData AthenaBaseComps AthContainers CxxUtils StoreGateLib ByteStreamCnvSvcBaseLib InDetIdentifier PixelReadoutGeometry IRegionSelector - xAODEventInfo TrigSteeringEvent InDetByteStreamErrors PixelConditionsData PixelRawDataByteStreamCnvLib PixelCablingLib ) + xAODEventInfo TrigSteeringEvent InDetByteStreamErrors PixelConditionsData PixelRawDataByteStreamCnvLib PixelCablingLib ByteStreamCnvSvcLib ) diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.cxx b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.cxx index 8929df71b1f2e3ee832d573d47d9356c025891cb..b6ad13efc883300f8c6c8dbcc9c115e7cfafc168 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.cxx +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -21,6 +21,7 @@ #include "PixelRawContByteStreamTool.h" #include "ByteStreamCnvSvcBase/ByteStreamCnvSvcBase.h" #include "InDetRawData/PixelRDORawData.h" +#include "AthenaKernel/StorableConversions.h" //#define PIXEL_DEBUG @@ -29,11 +30,9 @@ // constructor //////////////////////// PixelRawContByteStreamCnv::PixelRawContByteStreamCnv(ISvcLocator* svcloc) : - Converter(storageType(), classID(),svcloc), + AthConstConverter(storageType(), classID(),svcloc, "PixelRawContByteStreamCnv"), m_PixelRawContBSTool(nullptr), - m_ByteStreamEventAccess(nullptr), - m_StoreGate(nullptr), - m_log(msgSvc(), "PixelRawContByteStreamCnv") + m_ByteStreamEventAccess("ByteStreamCnvSvc", "PixelRawContByteStreamCnv") {} //////////////////////// @@ -41,39 +40,16 @@ PixelRawContByteStreamCnv::PixelRawContByteStreamCnv(ISvcLocator* svcloc) : //////////////////////// StatusCode PixelRawContByteStreamCnv::initialize() { - StatusCode sc = Converter::initialize(); - if(StatusCode::SUCCESS!=sc) { - return sc; - } - - // Check ByteStreamCnvSvc - if (StatusCode::SUCCESS != service("ByteStreamCnvSvc", m_ByteStreamEventAccess) || !m_ByteStreamEventAccess) { - m_log << MSG::ERROR << "Can't get ByteStreamEventAccess interface" << endmsg; - return StatusCode::FAILURE; - } - m_log << MSG::INFO << "ByteStreamCnvSvc retrieved" << endmsg; - - // retrieve Tool - IToolSvc* toolSvc; - if(StatusCode::SUCCESS != service("ToolSvc",toolSvc)) { - m_log << MSG::ERROR << "Can't get ToolSvc" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK( AthConstConverter::initialize() ); - std::string toolType; + ATH_CHECK( m_ByteStreamEventAccess.retrieve() ); + ATH_MSG_INFO( "ByteStreamCnvSvc retrieved" ); - toolType = "PixelRawContByteStreamTool"; - if(StatusCode::SUCCESS != toolSvc->retrieveTool(toolType,m_PixelRawContBSTool)) { - m_log << MSG::ERROR << "Can't get PixelRawContByteStreamTool Tool" << endmsg; - return StatusCode::FAILURE; - } + ServiceHandle<IToolSvc> toolSvc ("ToolSvc", name()); + ATH_CHECK( toolSvc.retrieve() ); - // Get an Identifier helper object - sc = service("DetectorStore",m_StoreGate); - if (sc.isFailure()) { - m_log << MSG::FATAL << "Detector service not found" << endmsg; - return StatusCode::FAILURE; - } + const std::string toolType = "PixelRawContByteStreamTool"; + ATH_CHECK( toolSvc->retrieveTool(toolType,m_PixelRawContBSTool) ); return StatusCode::SUCCESS; } @@ -95,28 +71,20 @@ long PixelRawContByteStreamCnv::storageType() //////////////////////// // createRep() - convert Pixel_RDO in the container into ByteStream //////////////////////// -StatusCode PixelRawContByteStreamCnv::createRep(DataObject* pObj, IOpaqueAddress*& pAddr) { +StatusCode PixelRawContByteStreamCnv::createRepConst(DataObject* pObj, IOpaqueAddress*& pAddr) const { - // StatusCode sc = StatusCode::SUCCESS; - RawEventWrite* re = m_ByteStreamEventAccess->getRawEvent(); PixelRDO_Container* cont=0; - StoreGateSvc::fromStorable(pObj,cont); + SG::fromStorable(pObj,cont); if(!cont) { - m_log << MSG::ERROR << "Can not cast to PixelRDO_Container" << endmsg; - return StatusCode::FAILURE; + ATH_MSG_ERROR( "Can not cast to PixelRDO_Container" ); + return StatusCode::FAILURE; } std::string nm = pObj->registry()->name(); - ByteStreamAddress* addr = new ByteStreamAddress(classID(),nm,""); - pAddr = addr; - // return m_PixelRawContBSTool->convert(cont,re,m_log); - - StatusCode sc = m_PixelRawContBSTool->convert(cont, re) ; - if(sc.isFailure()){ - m_log << MSG::ERROR<< " Could not convert rdo with m_PixelRawContBSTool " << endmsg ; - return StatusCode::FAILURE ; - } + pAddr = new ByteStreamAddress(classID(),nm,""); + + ATH_CHECK( m_PixelRawContBSTool->convert(cont) ); return StatusCode::SUCCESS ; } diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.h index b64083102946c4f883d5984795df55a846f409d3..794bee47379c4e1238bc71d08ade09172e78711a 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.h +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.h @@ -21,14 +21,13 @@ #include <stdint.h> #include <string> -#include "GaudiKernel/Converter.h" - - #include "ByteStreamData/RawEvent.h" #include "InDetRawData/InDetRawDataCLASS_DEF.h" -#include "GaudiKernel/MsgStream.h" +#include "GaudiKernel/ServiceHandle.h" +#include "AthenaBaseComps/AthConstConverter.h" +#include "ByteStreamCnvSvcBase/IByteStreamEventAccess.h" #include "StoreGate/StoreGateSvc.h" class ByteStreamAddress; @@ -37,7 +36,7 @@ class IByteStreamEventAccess; class PixelRDORawData; -class PixelRawContByteStreamCnv: public Converter { +class PixelRawContByteStreamCnv: public AthConstConverter { public: typedef InDetRawDataCollection<Pixel1RawData> COLLECTION; // define collection format here @@ -47,7 +46,7 @@ class PixelRawContByteStreamCnv: public Converter { virtual StatusCode initialize() override; //! this creates the RawEvent fragments for Pixel - virtual StatusCode createRep(DataObject* pObj, IOpaqueAddress*& pAddr) override; + virtual StatusCode createRepConst(DataObject* pObj, IOpaqueAddress*& pAddr) const override; /// Storage type and class ID virtual long repSvcType() const override { return i_repSvcType(); } @@ -55,15 +54,8 @@ class PixelRawContByteStreamCnv: public Converter { static const CLID& classID(); private: - - PixelRawContByteStreamTool* m_PixelRawContBSTool; - - IByteStreamEventAccess* m_ByteStreamEventAccess; - - StoreGateSvc* m_StoreGate; - - MsgStream m_log; - + const PixelRawContByteStreamTool* m_PixelRawContBSTool; + ServiceHandle<IByteStreamEventAccess> m_ByteStreamEventAccess; }; #endif // PIXELBYTESTREAM_PXIELRAWCONTRAWEVENTCNV_H diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.cxx b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.cxx index 20c4eebe0ea8a693372625b08c3210dac398ab33..4d5b3b86d14826896f4c8122d75267b323ee0241 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.cxx +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -22,8 +22,7 @@ //////////////////////// PixelRawContByteStreamTool::PixelRawContByteStreamTool(const std::string& type,const std::string& name,const IInterface* parent) : AthAlgTool(type,name,parent), - m_pixelCabling("PixelCablingSvc", name), - m_log(msgSvc(), "PixelRawContByteStreamTool") + m_pixelCabling("PixelCablingSvc", name) { declareInterface<PixelRawContByteStreamTool>(this); declareProperty("RodBlockVersion",m_RodBlockVersion=0); @@ -49,6 +48,8 @@ StatusCode PixelRawContByteStreamTool::initialize() { ATH_CHECK(m_condCablingKey.initialize()); ATH_CHECK(m_condHitDiscCnfgKey.initialize()); + + ATH_CHECK( m_byteStreamCnvSvc.retrieve() ); return StatusCode::SUCCESS; } @@ -63,12 +64,14 @@ StatusCode PixelRawContByteStreamTool::finalize() { //////////////////////// // convert - //////////////////////// -StatusCode PixelRawContByteStreamTool::convert(PixelRDO_Container* cont,RawEventWrite* re) { - m_fea.clear(); +StatusCode PixelRawContByteStreamTool::convert(PixelRDO_Container* cont) const { + FullEventAssembler<SrcIdMap>* fea = nullptr; + ATH_CHECK( m_byteStreamCnvSvc->getFullEventAssembler (fea, + "PixelRawCont") ); FullEventAssembler<SrcIdMap>::RODDATA* theROD; // set ROD Minor version - m_fea.setRodMinorVersion(m_RodBlockVersion); + fea->setRodMinorVersion(m_RodBlockVersion); ATH_MSG_DEBUG("Setting ROD Minor Version Number to: " << m_RodBlockVersion); //loop over the Pixel modules @@ -96,7 +99,7 @@ StatusCode PixelRawContByteStreamTool::convert(PixelRDO_Container* cont,RawEvent std::vector<const PixelRDORawData*> RDOs; for(; it_b!=it_e; ++it_b){ RDOs.push_back((*it_b)); } - theROD = m_fea.getRodData(rodId); + theROD = fea->getRodData(rodId); fillROD( *theROD, RDOs, m_BCs_per_LVL1ID); } @@ -104,7 +107,6 @@ StatusCode PixelRawContByteStreamTool::convert(PixelRDO_Container* cont,RawEvent ATH_MSG_WARNING("IDC contains NULLpointer to collection, skipping collection"); } } - m_fea.fill(re,m_log); return StatusCode::SUCCESS; } @@ -118,7 +120,7 @@ const InterfaceID& PixelRawContByteStreamTool::interfaceID() { //////////////////////// // fillROD() - convert Pixel RDO to a vector of 32bit words //////////////////////// -void PixelRawContByteStreamTool::fillROD(std::vector<uint32_t>& v32rod, std::vector<const PixelRDORawData*> RDOs, int BCs_per_LVL1ID) { +void PixelRawContByteStreamTool::fillROD(std::vector<uint32_t>& v32rod, std::vector<const PixelRDORawData*> RDOs, int BCs_per_LVL1ID) const { ATH_MSG_DEBUG("#####################################################################################"); ATH_MSG_DEBUG("Entering PixelRodEncoder"); @@ -614,7 +616,7 @@ void PixelRawContByteStreamTool::fillROD(std::vector<uint32_t>& v32rod, std::vec // encode module Header for Pixels // Pixel Header: 001PtlbxxnnnnnnnMMMMLLLLBBBBBBBB, //////////////////////// -uint32_t PixelRawContByteStreamTool::packLinkHeader(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t lvl1idskip, uint32_t errors) { +uint32_t PixelRawContByteStreamTool::packLinkHeader(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t lvl1idskip, uint32_t errors) const { lvl1idskip = 0; // FIXME LVL1IDskip hardcoded as 0 uint32_t result = 0; result = PRB_LINKHEADER | ((bcid & PRB_BCIDmask) << PRB_BCIDskip) | ((lvl1id & PRB_L1IDmask) << PRB_L1IDskip) | ((lvl1idskip & PRB_L1IDSKIPmask) << PRB_L1IDSKIPskip) | ((module & PRB_MODULEmask) << PRB_MODULEskip) | ((errors & PRB_HEADERERRORSmask) << PRB_HEADERERRORSskip); @@ -630,7 +632,7 @@ uint32_t PixelRawContByteStreamTool::packLinkHeader(uint32_t module, uint32_t bc // encode module Header for IBL // IBL Header: 001nnnnnFLLLLLLLLLLLLLBBBBBBBBBB //////////////////////// -uint32_t PixelRawContByteStreamTool::packLinkHeader_IBL(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t feFlag) { +uint32_t PixelRawContByteStreamTool::packLinkHeader_IBL(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t feFlag) const { uint32_t result = 0; result = PRB_LINKHEADER | ((bcid & PRB_BCIDmask_IBL) << PRB_BCIDskip_IBL) | ((lvl1id & PRB_L1IDmask_IBL) << PRB_L1IDskip_IBL) | ((module & PRB_MODULEmask_IBL) << PRB_MODULEskip_IBL) | ((feFlag & PRB_FeI4BFLAGmask_IBL) << PRB_FeI4BFLAGskip_IBL); #ifdef PIXEL_DEBUG @@ -647,7 +649,7 @@ uint32_t PixelRawContByteStreamTool::packLinkHeader_IBL(uint32_t module, uint32_ //////////////////////// // encode IBL non-condensed hit word: 0-8: row,9-15: column, 16-23:TOT, 24-28: nLink ----> 100xxnnnTTTTTTTTCCCCCCCRRRRRRRRR //////////////////////// -uint32_t PixelRawContByteStreamTool::packRawDataWord_IBL(uint32_t row, uint32_t column, int ToT, uint32_t nLink) { +uint32_t PixelRawContByteStreamTool::packRawDataWord_IBL(uint32_t row, uint32_t column, int ToT, uint32_t nLink) const { uint32_t result = 0; result = PRB_DATAWORD | ((row & PRB_ROWmask_IBL) << PRB_ROWskip_IBL) | ((column & PRB_COLUMNmask_IBL) << PRB_COLUMNskip_IBL) | ((ToT & PRB_TOTmask) << PRB_TOTskip) | ((nLink & PRB_LINKNUMHITmask_IBL) << PRB_LINKNUMHITskip_IBL); #ifdef PIXEL_DEBUG @@ -663,7 +665,7 @@ uint32_t PixelRawContByteStreamTool::packRawDataWord_IBL(uint32_t row, uint32_t //////////////////////// // encode PIXEL hit word: bits 0-7:row,8-12:column,16-23:TOT,24-27:FE ----> 100xFFFFTTTTTTTTxxxCCCCCRRRRRRRR //////////////////////// -uint32_t PixelRawContByteStreamTool::packRawDataWord(uint32_t FE, uint32_t row, uint32_t column, uint32_t ToT) { +uint32_t PixelRawContByteStreamTool::packRawDataWord(uint32_t FE, uint32_t row, uint32_t column, uint32_t ToT) const { uint32_t result = 0; result = PRB_DATAWORD | ((row & PRB_ROWmask) << PRB_ROWskip) | ((column & PRB_COLUMNmask) << PRB_COLUMNskip) | ((ToT & PRB_TOTmask) << PRB_TOTskip) | ((FE & PRB_FEmask) << PRB_FEskip); @@ -678,7 +680,7 @@ uint32_t PixelRawContByteStreamTool::packRawDataWord(uint32_t FE, uint32_t row, //////////////////////// // encode PIXEL module trailer (bits 26-28:trailer errors) //////////////////////// -uint32_t PixelRawContByteStreamTool::packLinkTrailer(uint32_t errors) { +uint32_t PixelRawContByteStreamTool::packLinkTrailer(uint32_t errors) const { uint32_t result = PRB_LINKTRAILER | ((errors & PRB_TRAILERERRORSmask) << PRB_TRAILERERRORSskip); #ifdef PLOTS std::cout << "[PlotA]:0x " << std::hex << result << std::dec << std::endl; @@ -691,7 +693,7 @@ uint32_t PixelRawContByteStreamTool::packLinkTrailer(uint32_t errors) { //////////////////////// // encode IBL module trailer (bits 26-28:trailer errors) //////////////////////// -uint32_t PixelRawContByteStreamTool::packLinkTrailer_IBL(uint32_t linknum, bool timeOutErrorBit, bool condensedModeBit, bool linkMasked) { +uint32_t PixelRawContByteStreamTool::packLinkTrailer_IBL(uint32_t linknum, bool timeOutErrorBit, bool condensedModeBit, bool linkMasked) const { // return PRB_LINKTRAILER |((timeOutErrorBit & PRB_TIMEOUTERRORmask_IBL) << PRB_TIMEOUTERRORskip_IBL) | ((condensedModeBit & PRB_CONDENSEDMODEmask_IBL) << PRB_CONDENSEDMODEskip_IBL) | ((linkMasked & PRB_LINKMASKEDmask_IBL) << PRB_LINKMASKEDskip_IBL) | ((linknum & PRB_LINKNUMTRAILERmask_IBL) << PRB_LINKNUMTRAILERskip_IBL); uint32_t result; result = PRB_LINKTRAILER | (timeOutErrorBit << PRB_TIMEOUTERRORskip_IBL) | (condensedModeBit << PRB_CONDENSEDMODEskip_IBL) | (linkMasked << PRB_LINKMASKEDskip_IBL) | ((linknum & PRB_LINKNUMTRAILERmask_IBL) << PRB_LINKNUMTRAILERskip_IBL); @@ -715,7 +717,7 @@ uint32_t PixelRawContByteStreamTool::packLinkTrailer_IBL(uint32_t linknum, bool // 4th word: 111 TTTTTTTTCCCCCCCRRRRRRRRRTTTTT //////////////////////// -void PixelRawContByteStreamTool::packIBLcondensed(std::vector <uint32_t> & v32rod, std::vector <uint32_t> & vRows, std::vector <uint32_t> & vCols, std::vector<int> & vTots) { +void PixelRawContByteStreamTool::packIBLcondensed(std::vector <uint32_t> & v32rod, std::vector <uint32_t> & vRows, std::vector <uint32_t> & vCols, std::vector<int> & vTots) const { unsigned int condWord[nCondensedWords]; condWord[0] = PRB_FIRSTHITCONDENSEDWORD | vRows[0] | (vCols[0] << skipRow) | (vTots[0] << (skipRow + skipCol) | ((vRows[1] & mask5) << (skipRow + skipCol + skipTOT))); diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.h b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.h index 2ddced4154f9cbbeb4fc92e3b3e53d297f7e2cdd..c4e3692148713aa273b779898031cb492020a8ee 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.h +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -29,6 +29,7 @@ #include "PixelReadoutGeometry/PixelDetectorManager.h" #include "ByteStreamCnvSvcBase/FullEventAssembler.h" // needed, template class +#include "ByteStreamCnvSvc/ByteStreamCnvSvc.h" #include "PixelByteStreamModuleMask.h" #include "PixelCabling/IPixelCablingSvc.h" @@ -51,33 +52,33 @@ class PixelRawContByteStreamTool: public AthAlgTool { // AlgTool InterfaceID static const InterfaceID& interfaceID(); - virtual StatusCode initialize(); - virtual StatusCode finalize(); - StatusCode convert(PixelRDO_Container* cont,RawEventWrite* re); + virtual StatusCode initialize() override; + virtual StatusCode finalize() override; + StatusCode convert(PixelRDO_Container* cont) const; - void fillROD(std::vector<uint32_t>& v32rod, std::vector<const PixelRDORawData*> RDOs, int BCs_per_LVL1ID); + void fillROD(std::vector<uint32_t>& v32rod, std::vector<const PixelRDORawData*> RDOs, int BCs_per_LVL1ID) const; - void packIBLcondensed(std::vector <uint32_t > & v32rod, std::vector <uint32_t > & vRows, std::vector <uint32_t > & vCols, std::vector<int> & vTots); + void packIBLcondensed(std::vector <uint32_t > & v32rod, std::vector <uint32_t > & vRows, std::vector <uint32_t > & vCols, std::vector<int> & vTots) const; void packIBLCondensed(std::vector <uint32_t > & v32rod, const std::vector<const PixelRDORawData*> &rdos_sameIBL_offlineId); - uint32_t packLinkHeader(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t lvl1idskip, uint32_t errors); - uint32_t packLinkHeader_IBL(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t feFlag); - uint32_t packRawDataWord(uint32_t FE, uint32_t row, uint32_t column, uint32_t ToT); - uint32_t packRawDataWord_IBL(uint32_t row, uint32_t column, int ToT, uint32_t nLink); - uint32_t packLinkTrailer(uint32_t errors); // for Pixel - uint32_t packLinkTrailer_IBL(uint32_t FEonSLink, bool timeOutErrorBit, bool condensedModeBit, bool linkMasked); // for IBL + uint32_t packLinkHeader(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t lvl1idskip, uint32_t errors) const; + uint32_t packLinkHeader_IBL(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t feFlag) const; + uint32_t packRawDataWord(uint32_t FE, uint32_t row, uint32_t column, uint32_t ToT) const; + uint32_t packRawDataWord_IBL(uint32_t row, uint32_t column, int ToT, uint32_t nLink) const; + uint32_t packLinkTrailer(uint32_t errors) const; // for Pixel + uint32_t packLinkTrailer_IBL(uint32_t FEonSLink, bool timeOutErrorBit, bool condensedModeBit, bool linkMasked) const; // for IBL private: + ServiceHandle<ByteStreamCnvSvc> m_byteStreamCnvSvc + { this, "ByteStreamCnvSvc", "ByteStreamCnvSvc" }; + ServiceHandle<IPixelCablingSvc> m_pixelCabling; const PixelID* m_PixelID; const InDetDD::PixelDetectorManager* m_pixelManager; - FullEventAssembler<SrcIdMap> m_fea; unsigned short m_RodBlockVersion; int m_BCs_per_LVL1ID; - MsgStream m_log; - SG::ReadCondHandleKey<PixelCablingCondData> m_condCablingKey {this, "PixelCablingCondData", "PixelCablingCondData", "Pixel cabling key"}; diff --git a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py index 73d6dac3144173acbac583ae8e1e76196ec9ff9a..845c1e93ebbc3a834ea7d9c564cc3be90cbe0cde 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py @@ -343,9 +343,9 @@ def getNnClusterizationFactory(name='NnClusterizationFactory', **kwargs) : from IOVDbSvc.CondDB import conddb if (conddb.dbmc == "OFLP200" or (conddb.dbdata=="OFLP200" and globalflags.DataSource=='data')) : - conddb.addOverride("/PIXEL/PixelClustering/PixelNNCalibJSON","PixelNNCalibJSON-SIM-RUN2-000-01") + conddb.addOverride("/PIXEL/PixelClustering/PixelNNCalibJSON","PixelNNCalibJSON-SIM-RUN2-000-02") if ((conddb.dbmc == "CONDBR2" and globalflags.DataSource!='data') or conddb.dbdata == "CONDBR2") : - conddb.addOverride("/PIXEL/PixelClustering/PixelNNCalibJSON","PixelNNCalibJSON-DATA-RUN2-000-01") + conddb.addOverride("/PIXEL/PixelClustering/PixelNNCalibJSON","PixelNNCalibJSON-DATA-RUN2-000-02") ## End of temporary code log.debug("Setting up lwtnn system") diff --git a/InnerDetector/InDetRecTools/SiClusterizationTool/CMakeLists.txt b/InnerDetector/InDetRecTools/SiClusterizationTool/CMakeLists.txt index cce538a2ded0d823f829e60ba43fb513e2e6dd0f..8f2ad316714b4248e5ed7b1dd3a3462082b4f62a 100644 --- a/InnerDetector/InDetRecTools/SiClusterizationTool/CMakeLists.txt +++ b/InnerDetector/InDetRecTools/SiClusterizationTool/CMakeLists.txt @@ -5,6 +5,7 @@ atlas_subdir( SiClusterizationTool ) # External dependencies: find_package( lwtnn ) +find_package( Eigen ) find_package( CLHEP ) find_package( ROOT COMPONENTS Core MathCore Hist ) find_package( COOL COMPONENTS CoolKernel CoolApplication ) @@ -13,10 +14,10 @@ find_package( COOL COMPONENTS CoolKernel CoolApplication ) atlas_add_library( SiClusterizationToolLib SiClusterizationTool/*.h src/*.cxx PUBLIC_HEADERS SiClusterizationTool - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${LWTNN_INCLUDE_DIRS} + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${LWTNN_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${COOL_INCLUDE_DIRS} PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} ${LWTNN_LIBRARIES} ${ROOT_LIBRARIES} AthenaBaseComps AthenaKernel BeamSpotConditionsData EventPrimitives GaudiKernel GeoPrimitives Identifier InDetCondTools InDetConditionsSummaryService InDetIdentifier InDetPrepRawData InDetRawData InDetReadoutGeometry InDetRecToolInterfaces InDetSimData PixelCablingLib PixelConditionsData PixelGeoModelLib PoolSvcLib StoreGateLib TrkNeuralNetworkUtilsLib TrkParameters TrkSurfaces + LINK_LIBRARIES ${CLHEP_LIBRARIES} ${LWTNN_LIBRARIES} ${EIGEN_LIBRARIES} ${ROOT_LIBRARIES} AthenaBaseComps AthenaKernel BeamSpotConditionsData EventPrimitives GaudiKernel GeoPrimitives Identifier InDetCondTools InDetConditionsSummaryService InDetIdentifier InDetPrepRawData InDetRawData InDetReadoutGeometry InDetRecToolInterfaces InDetSimData PixelCablingLib PixelConditionsData PixelGeoModelLib PoolSvcLib StoreGateLib TrkNeuralNetworkUtilsLib TrkParameters TrkSurfaces LwtnnUtils PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${COOL_LIBRARIES} AthenaPoolUtilities AtlasDetDescr AtlasHepMCLib DetDescrCondToolsLib FileCatalog PixelReadoutGeometry SCT_ReadoutGeometry TrkEventPrimitives VxVertex ) atlas_add_component( SiClusterizationTool diff --git a/InnerDetector/InDetRecTools/SiClusterizationTool/SiClusterizationTool/LWTNNCollection.h b/InnerDetector/InDetRecTools/SiClusterizationTool/SiClusterizationTool/LWTNNCollection.h index 885b24a055afa75a0856b938d9c8b7c4ea294759..fb0e97ed20946f23d861a4074ef88ee03b0622a3 100644 --- a/InnerDetector/InDetRecTools/SiClusterizationTool/SiClusterizationTool/LWTNNCollection.h +++ b/InnerDetector/InDetRecTools/SiClusterizationTool/SiClusterizationTool/LWTNNCollection.h @@ -6,10 +6,10 @@ #define _LWTNNCollection_H_ //#include <vector> -#include "lwtnn/LightweightGraph.hh" +#include "LwtnnUtils/FastGraph.h" class LWTNNCollection - : public std::map<int, std::unique_ptr<lwt::LightweightGraph> > + : public std::map<int, std::unique_ptr<lwt::atlas::FastGraph> > { public: diff --git a/InnerDetector/InDetRecTools/SiClusterizationTool/SiClusterizationTool/NnClusterizationFactory.h b/InnerDetector/InDetRecTools/SiClusterizationTool/SiClusterizationTool/NnClusterizationFactory.h index 2a84f885ef5f658a3da0cc6bbf41f31a2a62c812..8c375be5135ba492db3aa4e1dc4a4cd339c31f19 100644 --- a/InnerDetector/InDetRecTools/SiClusterizationTool/SiClusterizationTool/NnClusterizationFactory.h +++ b/InnerDetector/InDetRecTools/SiClusterizationTool/SiClusterizationTool/NnClusterizationFactory.h @@ -43,6 +43,9 @@ #include "PixelConditionsData/PixelChargeCalibCondData.h" #include "StoreGate/ReadCondHandleKey.h" +#include <Eigen/Dense> + + class TTrainedNetwork; class TH1; class ICoolHistSvc; @@ -102,37 +105,29 @@ namespace InDet { virtual StatusCode finalize() { return StatusCode::SUCCESS; }; std::vector<double> estimateNumberOfParticles(const InDet::PixelCluster& pCluster, - Amg::Vector3D & beamSpotPosition, - int sizeX=7, - int sizeY=7) const; + Amg::Vector3D & beamSpotPosition) const; std::vector<double> estimateNumberOfParticles(const InDet::PixelCluster& pCluster, const Trk::Surface& pixelSurface, - const Trk::TrackParameters& trackParsAtSurface, - int sizeX=7, - int sizeY=7) const; + const Trk::TrackParameters& trackParsAtSurface) const; /* Public-facing method 1: no track parameters */ std::vector<Amg::Vector2D> estimatePositions(const InDet::PixelCluster& pCluster, Amg::Vector3D & beamSpotPosition, std::vector<Amg::MatrixX> & errors, - int numberSubClusters, - int sizeX=7, - int sizeY=7) const; + int numberSubClusters) const; /* Public-facing method 1: with track parameters */ std::vector<Amg::Vector2D> estimatePositions(const InDet::PixelCluster& pCluster, const Trk::Surface& pixelSurface, const Trk::TrackParameters& trackParsAtSurface, std::vector<Amg::MatrixX> & errors, - int numberSubClusters, - int sizeX=7, - int sizeY=7) const; + int numberSubClusters) const; private: // Handling lwtnn inputs - typedef std::map<std::string, std::map<std::string, double> > InputMap; + typedef std::vector<Eigen::VectorXd> InputVector; /* Estimate number of particles for both with and w/o tracks */ /* Method 1: using older TTrainedNetworks */ @@ -140,8 +135,9 @@ namespace InDet { std::vector<double> inputData) const; /* Estimate number of particles for both with and w/o tracks */ - /* Method 2: using lwtnn for more flexible interfacing */ - std::vector<double> estimateNumberOfParticlesLWTNN(NnClusterizationFactory::InputMap & input) const; + /* Method 2: using lwtnn for more flexible interfacing with an ordered vector + * Vector order MUST match variable order. */ + std::vector<double> estimateNumberOfParticlesLWTNN(NnClusterizationFactory::InputVector & input) const; /* Estimate position for both with and w/o tracks */ /* Method 1: using older TTrainedNetworks */ @@ -150,15 +146,14 @@ namespace InDet { const std::vector<double>& inputData, const NNinput& input, const InDet::PixelCluster& pCluster, - int sizeX, - int sizeY, int numberSubClusters, std::vector<Amg::MatrixX> & errors) const; /* Estimate position for both with and w/o tracks */ - /* Method 2: using lwtnn for more flexible interfacing */ + /* Method 2: using lwtnn for more flexible interfacing with an ordered vector + * Vector order MUST match variable order. */ std::vector<Amg::Vector2D> estimatePositionsLWTNN( - NnClusterizationFactory::InputMap & input, + NnClusterizationFactory::InputVector & input, NNinput& rawInput, const InDet::PixelCluster& pCluster, int numberSubClusters, @@ -167,14 +162,12 @@ namespace InDet { // For error formatting in lwtnn cases double correctedRMSX(double posPixels) const; - double correctedRMSY(double posPixels, double sizeY, std::vector<float>& pitches) const; + double correctedRMSY(double posPixels, std::vector<float>& pitches) const; /* algorithmic component */ NNinput createInput(const InDet::PixelCluster& pCluster, Amg::Vector3D & beamSpotPosition, - double & tanl, - int sizeX=7, - int sizeY=7) const; + double & tanl) const; void addTrackInfoToInput(NNinput& input, const Trk::Surface& pixelSurface, @@ -182,23 +175,16 @@ namespace InDet { const double tanl) const; - std::vector<double> assembleInputRunI(NNinput& input, - int sizeX, - int sizeY) const; + std::vector<double> assembleInputRunI(NNinput& input) const; + std::vector<double> assembleInputRunII(NNinput& input) const; - std::vector<double> assembleInputRunII(NNinput& input, - int sizeX, - int sizeY) const; - - InputMap flattenInput(NNinput & input) const; + InputVector eigenInput(NNinput & input) const; std::vector<Amg::Vector2D> getPositionsFromOutput(std::vector<double> & output, const NNinput & input, - const InDet::PixelCluster& pCluster, - int sizeX=7, - int sizeY=7) const; + const InDet::PixelCluster& pCluster) const; void getErrorMatrixFromOutput(std::vector<double>& outputX, @@ -239,7 +225,7 @@ namespace InDet { std::vector< std::vector<unsigned int> > m_NNId; // Function to be called to assemble the inputs - std::vector<double> (InDet::NnClusterizationFactory:: *m_assembleInput)(NNinput& input,int sizeX, int sizeY) const {&NnClusterizationFactory::assembleInputRunII}; + std::vector<double> (InDet::NnClusterizationFactory:: *m_assembleInput)(NNinput& input) const {&NnClusterizationFactory::assembleInputRunII}; // Function to be called to compute the output std::vector<Double_t> (::TTrainedNetwork:: *m_calculateOutput)(const std::vector<Double_t> &input) const {&TTrainedNetwork::calculateNormalized}; @@ -264,6 +250,22 @@ namespace InDet { {this, "NnCollectionJSONReadKey", "PixelClusterNNJSON", "The conditions key for the pixel cluster NNs configured via JSON file and accessed with lwtnn"}; + // this is written into the JSON config "node_index" + // this can be found from the LWTNN GraphConfig object used to initalize the collection objects + // opiton size_t index = graph_config.outputs.at("output_node_name").node_index + // + Gaudi::Property< std::size_t > m_outputNodesPos1 + {this, "OutputNodePos1", 7, + "Output node for the 1 position networks (LWTNN)"}; + + Gaudi::Property< std::vector<std::size_t> > m_outputNodesPos2 + {this, "OutputNodePos2", { 10, 11 }, + "List of output nodes for the 2 position network (LWTNN)"}; + + Gaudi::Property< std::vector<std::size_t> > m_outputNodesPos3 + {this, "OutputNodePos3", { 13, 14, 15 }, + "List of output nodes for the 3 position networks (LWTNN)"}; + Gaudi::Property<unsigned int> m_maxSubClusters {this, "MaxSubClusters", 3, "Maximum number of sub cluster supported by the networks." }; @@ -291,6 +293,11 @@ namespace InDet { Gaudi::Property<bool> m_useRecenteringNNWithTracks {this, "useRecenteringNNWithTracks",false,"Recenter x position when evaluating NN with track input."}; + Gaudi::Property<int> m_sizeX + {this, "sizeX",7,"Size of pixel matrix along X"}; + + Gaudi::Property<int> m_sizeY + {this, "sizeY",7,"Size of pixel matrix along Y"}; }; diff --git a/InnerDetector/InDetRecTools/SiClusterizationTool/src/LWTNNCondAlg.cxx b/InnerDetector/InDetRecTools/SiClusterizationTool/src/LWTNNCondAlg.cxx index 994403f4fc4d075d43080eeb1edb4a3bb4f05100..43d1533eadae55eba743b814e487d43e1cf93a5d 100644 --- a/InnerDetector/InDetRecTools/SiClusterizationTool/src/LWTNNCondAlg.cxx +++ b/InnerDetector/InDetRecTools/SiClusterizationTool/src/LWTNNCondAlg.cxx @@ -5,6 +5,7 @@ * */ #include "LWTNNCondAlg.h" +#include "LwtnnUtils/InputOrder.h" #include "AthenaPoolUtilities/CondAttrListCollection.h" #include "AthenaPoolUtilities/AthenaAttributeList.h" @@ -53,7 +54,7 @@ namespace InDet { return StatusCode::SUCCESS; } - StatusCode LWTNNCondAlg::configureLwtnn(std::unique_ptr<lwt::LightweightGraph> & thisNN, + StatusCode LWTNNCondAlg::configureLwtnn(std::unique_ptr<lwt::atlas::FastGraph> & thisNN, const std::string& thisJson) { // Read DNN weights from input json config @@ -66,9 +67,15 @@ namespace InDet { return StatusCode::FAILURE; } + // pass the input order for the FastGraph + lwt::atlas::InputOrder order; + order.scalar.push_back( std::make_pair("NNinputs", m_variableOrder) ); + // sequence not needed for NN (more for RNN, but set anyway) + order.sequence.push_back( std::make_pair("NNinputs", m_variableOrder) ); + // Build the network try { - thisNN.reset(new lwt::LightweightGraph(config, "merge_1")); + thisNN.reset(new lwt::atlas::FastGraph(config, order, "merge_1")); } catch (lwt::NNConfigurationException& exc) { ATH_MSG_ERROR("NN configuration problem: " << exc.what()); return StatusCode::FAILURE; @@ -128,7 +135,7 @@ namespace InDet { // First, extract configuration for the number network. pt::ptree subtreeNumberNetwork = parentTree.get_child("NumberNetwork"); - writeCdo->insert(std::make_pair(0,std::unique_ptr<lwt::LightweightGraph>(nullptr))); + writeCdo->insert(std::make_pair(0,std::unique_ptr<lwt::atlas::FastGraph>(nullptr))); // If this json is empty, just fill a null pointer. if(subtreeNumberNetwork.empty()) { ATH_MSG_INFO("Not using lwtnn for number network."); @@ -153,7 +160,7 @@ namespace InDet { std::string posNetworkConfig = configStream.str(); // Put a lwt network into the map - writeCdo->insert(std::make_pair(i,std::unique_ptr<lwt::LightweightGraph>(nullptr))); + writeCdo->insert(std::make_pair(i,std::unique_ptr<lwt::atlas::FastGraph>(nullptr))); // Now do empty check: if any one of these is empty we won't use lwtnn if(subtreePosNetwork.empty()) { diff --git a/InnerDetector/InDetRecTools/SiClusterizationTool/src/LWTNNCondAlg.h b/InnerDetector/InDetRecTools/SiClusterizationTool/src/LWTNNCondAlg.h index 2678f02c10395a614100d4c96eeac5aca60d08d4..515fba6eb94dbdeb0ce9c4992a2f7cf5fa39f670 100644 --- a/InnerDetector/InDetRecTools/SiClusterizationTool/src/LWTNNCondAlg.h +++ b/InnerDetector/InDetRecTools/SiClusterizationTool/src/LWTNNCondAlg.h @@ -21,7 +21,8 @@ class IPoolSvc; namespace lwt { class NanReplacer; - class LightweightGraph; + //class LightweightGraph; + namespace atlas { class FastGraph; } } namespace InDet { @@ -44,12 +45,9 @@ class LWTNNCondAlg : public AthAlgorithm { ServiceHandle<ICondSvc> m_condSvc {this, "CondSvc", "CondSvc", "The conditions service to register new conditions data."}; -/* ServiceHandle<IPoolSvc> m_poolsvc - {this, "PoolSvc", "PoolSvc", "The service to retrieve files by GUID."}; - ToolHandle<Trk::NeuralNetworkToHistoTool> m_networkToHistoTool - {this,"NetworkToHistoTool", "Trk::NeuralNetworkToHistoTool/NeuralNetworkToHistoTool", "Tool to create a neural network from a set of histograms." }; -*/ - StatusCode configureLwtnn(std::unique_ptr<lwt::LightweightGraph> & thisNN, const std::string& thisJson); + + //StatusCode configureLwtnn(std::unique_ptr<lwt::LightweightGraph> & thisNN, const std::string& thisJson); + StatusCode configureLwtnn(std::unique_ptr<lwt::atlas::FastGraph> & thisNN, const std::string& thisJson); SG::ReadCondHandleKey<CondAttrListCollection> m_readKey {this, "ReadKey", "/PIXEL/PixelClustering/PixelNNCalibJSON", "Cool folder name for the cluster NN input histogram file."}; @@ -57,13 +55,72 @@ class LWTNNCondAlg : public AthAlgorithm { SG::WriteCondHandleKey<LWTNNCollection> m_writeKey {this, "WriteKey", "PixelClusterNNJSON", "The conditions statore key for the pixel cluster NNs"}; - Gaudi::Property< std::vector<std::string> > m_nnOrder - {this, "NetworkNames", { - "NumberNetwork", - "PositionNetwork_N1", - "PositionNetwork_N2", - "PositionNetwork_N3"}, - "List of network names, which are indexe in map in this order"}; + // as of now, the number and position networks all use the same variables + // only need one of these + Gaudi::Property< std::vector<std::string> > m_variableOrder + {this, "VariableOrder", { + "NN_matrix0", + "NN_matrix1", + "NN_matrix2", + "NN_matrix3", + "NN_matrix4", + "NN_matrix5", + "NN_matrix6", + "NN_matrix7", + "NN_matrix8", + "NN_matrix9", + "NN_matrix10", + "NN_matrix11", + "NN_matrix12", + "NN_matrix13", + "NN_matrix14", + "NN_matrix15", + "NN_matrix16", + "NN_matrix17", + "NN_matrix18", + "NN_matrix19", + "NN_matrix20", + "NN_matrix21", + "NN_matrix22", + "NN_matrix23", + "NN_matrix24", + "NN_matrix25", + "NN_matrix26", + "NN_matrix27", + "NN_matrix28", + "NN_matrix29", + "NN_matrix30", + "NN_matrix31", + "NN_matrix32", + "NN_matrix33", + "NN_matrix34", + "NN_matrix35", + "NN_matrix36", + "NN_matrix37", + "NN_matrix38", + "NN_matrix39", + "NN_matrix40", + "NN_matrix41", + "NN_matrix42", + "NN_matrix43", + "NN_matrix44", + "NN_matrix45", + "NN_matrix46", + "NN_matrix47", + "NN_matrix48", + "NN_pitches0", + "NN_pitches1", + "NN_pitches2", + "NN_pitches3", + "NN_pitches4", + "NN_pitches5", + "NN_pitches6", + "NN_layer", + "NN_barrelEC", + "NN_phi", + "NN_theta"}, + "List of training variables for the LWTNN networks in the order they are fed to evaluate the networks"}; + /* Gaudi::Property<std::string> m_layerInfoHistogram {this, "LayerInfoHistogram", "LayersInfo","Name about the layer info histogram."}; diff --git a/InnerDetector/InDetRecTools/SiClusterizationTool/src/NnClusterizationFactory.cxx b/InnerDetector/InDetRecTools/SiClusterizationTool/src/NnClusterizationFactory.cxx index 716f562270135c53d979161dfe6a907a3e56bf0c..470836d3e58d58f33e84b35a9c3599745724c4fd 100644 --- a/InnerDetector/InDetRecTools/SiClusterizationTool/src/NnClusterizationFactory.cxx +++ b/InnerDetector/InDetRecTools/SiClusterizationTool/src/NnClusterizationFactory.cxx @@ -159,27 +159,18 @@ namespace InDet { } - std::vector<double> NnClusterizationFactory::assembleInputRunII(NNinput& input, - int sizeX, - int sizeY) const + std::vector<double> NnClusterizationFactory::assembleInputRunII(NNinput& input) const { std::vector<double> inputData; - for (int u=0;u<sizeX;u++) + for (int u=0;u<m_sizeX;u++) { - for (int s=0;s<sizeY;s++) + for (int s=0;s<m_sizeY;s++) { - if (m_useToT) - { - inputData.push_back(input.matrixOfToT[u][s]); - } - else - { - inputData.push_back(input.matrixOfToT[u][s]); - } + inputData.push_back(input.matrixOfToT[u][s]); } } - for (int s=0;s<sizeY;s++) + for (int s=0;s<m_sizeY;s++) { inputData.push_back(input.vectorOfPitchesY[s]); } @@ -200,7 +191,6 @@ namespace InDet { - return inputData; } @@ -208,14 +198,12 @@ namespace InDet { - std::vector<double> NnClusterizationFactory::assembleInputRunI(NNinput& input, - int sizeX, - int sizeY) const + std::vector<double> NnClusterizationFactory::assembleInputRunI(NNinput& input) const { std::vector<double> inputData; - for (int u=0;u<sizeX;u++) + for (int u=0;u<m_sizeX;u++) { - for (int s=0;s<sizeY;s++) + for (int s=0;s<m_sizeY;s++) { if (m_useToT) { @@ -227,7 +215,7 @@ namespace InDet { } } } - for (int s=0;s<sizeY;s++) + for (int s=0;s<m_sizeY;s++) { const double rawPitch(input.vectorOfPitchesY[s]); const double normPitch(norm_pitch(rawPitch,m_addIBL)); @@ -253,57 +241,68 @@ namespace InDet { return inputData; } - NnClusterizationFactory::InputMap NnClusterizationFactory::flattenInput(NNinput & input) const + NnClusterizationFactory::InputVector NnClusterizationFactory::eigenInput(NNinput & input) const { - // Format for use with lwtnn - std::map<std::string, std::map<std::string, double> > flattened; + // we know the size to be + // - m_sizeX x m_sizeY pixel ToT values + // - m_sizeY pitch sizes in y + // - 2 values: detector location + // - 2 values: track incidence angles + // - optional: eta module + int vecSize = m_sizeX*m_sizeY + m_sizeY + 4; + if(!input.useTrackInfo) { vecSize += 1; } + Eigen::VectorXd valuesVector( vecSize ); // Fill it! - // Variable names here need to match the ones in the configuration. + // Variable names here need to match the ones in the configuration... + // ...IN THE SAME ORDER!!! + // location in eigen matrix object where next element goes + int location(0); - std::map<std::string, double> simpleInputs; for (unsigned int x = 0; x < input.matrixOfToT.size(); x++) { for (unsigned int y = 0; y < input.matrixOfToT.at(0).size(); y++) { - unsigned int index = x*input.matrixOfToT.at(0).size()+y; - std::string varname = "NN_matrix"+std::to_string(index); - simpleInputs[varname] = input.matrixOfToT.at(x).at(y); + valuesVector[location] = input.matrixOfToT.at(x).at(y); + location++; } } for (unsigned int p = 0; p < input.vectorOfPitchesY.size(); p++) { - std::string varname = "NN_pitches" + std::to_string(p); - simpleInputs[varname] = input.vectorOfPitchesY.at(p); + valuesVector[location] = input.vectorOfPitchesY.at(p); + location++; } - simpleInputs["NN_layer"] = input.ClusterPixLayer; - simpleInputs["NN_barrelEC"] = input.ClusterPixBarrelEC; - simpleInputs["NN_phi"] = input.phi; - simpleInputs["NN_theta"] = input.theta; - - if (input.useTrackInfo) simpleInputs["NN_etaModule"] = input.etaModule; + valuesVector[location] = input.ClusterPixLayer; + location++; + valuesVector[location] = input.ClusterPixBarrelEC; + location++; + valuesVector[location] = input.phi; + location++; + valuesVector[location] = input.theta; + location++; + + if (!input.useTrackInfo) { + valuesVector[location] = input.etaModule; + location++; + } // We have only one node for now, so we just store things there. - flattened["NNinputs"] = simpleInputs; - - return flattened; - + // Format for use with lwtnn + std::vector<Eigen::VectorXd> vectorOfEigen; + vectorOfEigen.push_back(valuesVector); + return vectorOfEigen; } std::vector<double> NnClusterizationFactory::estimateNumberOfParticles(const InDet::PixelCluster& pCluster, - Amg::Vector3D & beamSpotPosition, - int sizeX, - int sizeY) const + Amg::Vector3D & beamSpotPosition) const { double tanl=0; NNinput input( createInput(pCluster, beamSpotPosition, - tanl, - sizeX, - sizeY) ); + tanl) ); if (!input) { @@ -311,11 +310,12 @@ namespace InDet { } - std::vector<double> inputData=(this->*m_assembleInput)(input,sizeX,sizeY); - // If using old TTrainedNetworks, fetch correct ones for the // without-track situation and call them now. if (m_useTTrainedNetworks) { + + std::vector<double> inputData=(this->*m_assembleInput)(input); + SG::ReadCondHandle<TTrainedNetworkCollection> nn_collection( m_readKeyWithoutTrack ); if (!nn_collection.isValid()) { ATH_MSG_ERROR( "Failed to get trained network collection with key " << m_readKeyWithoutTrack.key() ); @@ -324,16 +324,14 @@ namespace InDet { } // Otherwise, prepare lwtnn input map and use new networks. - NnClusterizationFactory::InputMap nnInputData = flattenInput(input); - return estimateNumberOfParticlesLWTNN(nnInputData); + NnClusterizationFactory::InputVector nnInputVector = eigenInput(input); + return estimateNumberOfParticlesLWTNN(nnInputVector); } std::vector<double> NnClusterizationFactory::estimateNumberOfParticles(const InDet::PixelCluster& pCluster, const Trk::Surface& pixelSurface, - const Trk::TrackParameters& trackParsAtSurface, - int sizeX, - int sizeY) const + const Trk::TrackParameters& trackParsAtSurface) const { Amg::Vector3D dummyBS(0,0,0); @@ -342,9 +340,7 @@ namespace InDet { NNinput input( createInput(pCluster, dummyBS, - tanl, - sizeX, - sizeY) ); + tanl) ); if (!input) { @@ -353,7 +349,7 @@ namespace InDet { addTrackInfoToInput(input,pixelSurface,trackParsAtSurface,tanl); - std::vector<double> inputData=(this->*m_assembleInput)(input,sizeX,sizeY); + std::vector<double> inputData=(this->*m_assembleInput)(input); // If using old TTrainedNetworks, fetch correct ones for the // with-track situation and call them now. @@ -366,8 +362,8 @@ namespace InDet { } // Otherwise, prepare lwtnn input map and use new networks. - NnClusterizationFactory::InputMap nnInputData = flattenInput(input); - return estimateNumberOfParticlesLWTNN(nnInputData); + NnClusterizationFactory::InputVector nnInputVector = eigenInput(input); + return estimateNumberOfParticlesLWTNN(nnInputVector); } @@ -385,18 +381,20 @@ namespace InDet { return resultNN_TTN; } - std::vector<double> NnClusterizationFactory::estimateNumberOfParticlesLWTNN(NnClusterizationFactory::InputMap & input) const + + std::vector<double> NnClusterizationFactory::estimateNumberOfParticlesLWTNN(NnClusterizationFactory::InputVector & input) const { SG::ReadCondHandle<LWTNNCollection> lwtnn_collection(m_readKeyJSON) ; if (!lwtnn_collection.isValid()) { ATH_MSG_ERROR( "Failed to get LWTNN network collection with key " << m_readKeyJSON.key() ); } ATH_MSG_DEBUG("Using lwtnn number network"); - // Evaluate the number network once per cluster - lwt::ValueMap discriminant = lwtnn_collection->at(0)->compute(input); - double num0 = discriminant["output_number0"]; - double num1 = discriminant["output_number1"]; - double num2 = discriminant["output_number2"]; + // Order of output matches order in JSON config in "outputs" + // Only 1 node here, simple compute function + Eigen::VectorXd discriminant = lwtnn_collection->at(0)->compute(input); + double num0 = discriminant[0]; + double num1 = discriminant[1]; + double num2 = discriminant[2]; // Get normalized predictions double prob1 = num0/(num0+num1+num2); double prob2 = num1/(num0+num1+num2); @@ -408,14 +406,14 @@ namespace InDet { " (3): " << number_probabilities[2]); return number_probabilities; + } + std::vector<Amg::Vector2D> NnClusterizationFactory::estimatePositions(const InDet::PixelCluster& pCluster, Amg::Vector3D & beamSpotPosition, std::vector<Amg::MatrixX> & errors, - int numberSubClusters, - int sizeX, - int sizeY) const + int numberSubClusters) const { ATH_MSG_VERBOSE(" Starting to estimate positions..."); @@ -424,32 +422,30 @@ namespace InDet { NNinput input( createInput(pCluster, beamSpotPosition, - tanl, - sizeX, - sizeY) ); + tanl) ); if (!input) { return std::vector<Amg::Vector2D>(); } - std::vector<double> inputData=(this->*m_assembleInput)(input,sizeX,sizeY); - // If using old TTrainedNetworks, fetch correct ones for the // without-track situation and call them now. if (m_useTTrainedNetworks) { + + std::vector<double> inputData=(this->*m_assembleInput)(input); + SG::ReadCondHandle<TTrainedNetworkCollection> nn_collection( m_readKeyWithoutTrack ); if (!nn_collection.isValid()) { ATH_MSG_ERROR( "Failed to get trained network collection with key " << m_readKeyWithoutTrack.key() ); } // *(ReadCondHandle<>) returns a pointer rather than a reference ... - return estimatePositionsTTN(**nn_collection, inputData,input,pCluster,sizeX,sizeY,numberSubClusters,errors); + return estimatePositionsTTN(**nn_collection, inputData,input,pCluster,numberSubClusters,errors); } // Otherwise, prepare lwtnn input map and use new networks. - NnClusterizationFactory::InputMap nnInputData = flattenInput(input); - return estimatePositionsLWTNN(nnInputData,input,pCluster,numberSubClusters,errors); - + NnClusterizationFactory::InputVector nnInputVector = eigenInput(input); + return estimatePositionsLWTNN(nnInputVector,input,pCluster,numberSubClusters,errors); } @@ -457,9 +453,7 @@ namespace InDet { const Trk::Surface& pixelSurface, const Trk::TrackParameters& trackParsAtSurface, std::vector<Amg::MatrixX> & errors, - int numberSubClusters, - int sizeX, - int sizeY) const + int numberSubClusters) const { ATH_MSG_VERBOSE(" Starting to estimate positions..."); @@ -470,9 +464,7 @@ namespace InDet { NNinput input( createInput(pCluster, dummyBS, - tanl, - sizeX, - sizeY) ); + tanl) ); if (!input) { @@ -481,22 +473,22 @@ namespace InDet { addTrackInfoToInput(input,pixelSurface,trackParsAtSurface,tanl); - std::vector<double> inputData=(this->*m_assembleInput)(input,sizeX,sizeY); // If using old TTrainedNetworks, fetch correct ones for the // without-track situation and call them now. if (m_useTTrainedNetworks) { + std::vector<double> inputData=(this->*m_assembleInput)(input); SG::ReadCondHandle<TTrainedNetworkCollection> nn_collection( m_readKeyWithTrack ); if (!nn_collection.isValid()) { ATH_MSG_ERROR( "Failed to get trained network collection with key " << m_readKeyWithTrack.key() ); } - return estimatePositionsTTN(**nn_collection, inputData,input,pCluster,sizeX,sizeY,numberSubClusters,errors); + return estimatePositionsTTN(**nn_collection, inputData,input,pCluster,numberSubClusters,errors); } // Otherwise, prepare lwtnn input map and use new networks. - NnClusterizationFactory::InputMap nnInputData = flattenInput(input); - return estimatePositionsLWTNN(nnInputData,input,pCluster,numberSubClusters,errors); + NnClusterizationFactory::InputVector nnInputVector = eigenInput(input); + return estimatePositionsLWTNN(nnInputVector,input,pCluster,numberSubClusters,errors); } @@ -505,8 +497,6 @@ namespace InDet { const std::vector<double>& inputData, const NNinput& input, const InDet::PixelCluster& pCluster, - int sizeX, - int sizeY, int numberSubClusters, std::vector<Amg::MatrixX> & errors) const { @@ -519,7 +509,7 @@ namespace InDet { // get position network id for the given cluster multiplicity then // dereference unique_ptr<TTrainedNetwork> then call calculateOutput : std::vector<double> position1P(((*(nn_collection.at( m_NNId[kPositionNN-1].at(numberSubClusters-1)))).*m_calculateOutput)(inputData)); - std::vector<Amg::Vector2D> myPosition1=getPositionsFromOutput(position1P,input,pCluster,sizeX,sizeY); + std::vector<Amg::Vector2D> myPosition1=getPositionsFromOutput(position1P,input,pCluster); assert( position1P.size() % 2 == 0); for (unsigned int i=0; i<position1P.size()/2 ; ++i) { @@ -553,8 +543,9 @@ namespace InDet { return allPositions; } + std::vector<Amg::Vector2D> NnClusterizationFactory::estimatePositionsLWTNN( - NnClusterizationFactory::InputMap & input, + NnClusterizationFactory::InputVector & input, NNinput& rawInput, const InDet::PixelCluster& pCluster, int numberSubClusters, @@ -572,6 +563,7 @@ namespace InDet { std::vector<Amg::MatrixX> errorMatrices; errorMatrices.reserve(numberSubClusters); positionValues.reserve(numberSubClusters * 2); + std::size_t outputNode(0); for (int cluster = 1; cluster < numberSubClusters+1; cluster++) { // Check that the network is defined. @@ -580,23 +572,35 @@ namespace InDet { ATH_MSG_ERROR( "No lwtnn network configured for this run! If you are outside the valid range for lwtnn-based configuration, plesae run with useNNTTrainedNetworks instead." << m_readKeyJSON.key() ); } - std::string outNodeName = "merge_"+std::to_string(cluster); - std::map<std::string, double> position = lwtnn_collection->at(numberSubClusters)->compute(input, {},outNodeName); + if(numberSubClusters==1) { + outputNode = m_outputNodesPos1; } + else if(numberSubClusters==2) { + outputNode = m_outputNodesPos2[cluster-1]; + } else if(numberSubClusters==3) { + outputNode = m_outputNodesPos3[cluster-1]; + } else { + ATH_MSG_ERROR( "Cannot evaluate LWTNN networks with " << numberSubClusters << " numberSubClusters" ); + } + + // Order of output matches order in JSON config in "outputs" + // "alpha", "mean_x", "mean_y", "prec_x", "prec_y" + // Assume here that 1 particle network is in position 1, 2 at 2, and 3 at 3. + Eigen::VectorXd position = lwtnn_collection->at(numberSubClusters)->compute(input, {}, outputNode); ATH_MSG_DEBUG("Testing for numberSubClusters " << numberSubClusters << " and cluster " << cluster); - for (const auto& item : position) { - ATH_MSG_DEBUG(item.first << ": " << item.second); + for (int i=0; i<position.rows(); i++) { + ATH_MSG_DEBUG(" position " << position[i]); } - positionValues.push_back(position["mean_x"]); - positionValues.push_back(position["mean_y"]); + positionValues.push_back(position[1]); //mean_x + positionValues.push_back(position[2]); //mean_y // Fill errors. // Values returned by NN are inverse of variance, and we want variances. - float rawRmsX = sqrt(1.0/position["prec_x"]); - float rawRmsY = sqrt(1.0/position["prec_y"]); + float rawRmsX = sqrt(1.0/position[3]); //prec_x + float rawRmsY = sqrt(1.0/position[4]); //prec_y // Now convert to real space units double rmsX = correctedRMSX(rawRmsX); - double rmsY = correctedRMSY(rawRmsY, 7., rawInput.vectorOfPitchesY); + double rmsY = correctedRMSY(rawRmsY, rawInput.vectorOfPitchesY); ATH_MSG_DEBUG(" Estimated RMS errors (1) x: " << rmsX << ", y: " << rmsY); // Fill matrix @@ -614,7 +618,6 @@ namespace InDet { for (unsigned int index = 0; index < errorMatrices.size(); index++) errors.push_back(errorMatrices.at(index)); return myPositions; - } double NnClusterizationFactory::correctedRMSX(double posPixels) const @@ -628,18 +631,17 @@ namespace InDet { } double NnClusterizationFactory::correctedRMSY(double posPixels, - double sizeY, std::vector<float>& pitches) const { - double p = posPixels + (sizeY - 1) / 2.0; + double p = posPixels + (m_sizeY - 1) / 2.0; double p_Y = -100; double p_center = -100; double p_actual = 0; - for (int i = 0; i < sizeY; i++) { + for (int i = 0; i < m_sizeY; i++) { if (p >= i && p <= (i + 1)) p_Y = p_actual + (p - i + 0.5) * pitches.at(i); - if (i == (sizeY - 1) / 2) + if (i == (m_sizeY - 1) / 2) p_center = p_actual + 0.5 * pitches.at(i); p_actual += pitches.at(i); } @@ -758,10 +760,8 @@ namespace InDet { std::vector<Amg::Vector2D> NnClusterizationFactory::getPositionsFromOutput(std::vector<double> & output, - const NNinput & input, - const InDet::PixelCluster& pCluster, - int /* sizeX */, - int /* sizeY */) const + const NNinput & input, + const InDet::PixelCluster& pCluster) const { std::vector<Amg::Vector2D> invalidResult; ATH_MSG_VERBOSE(" Translating output back into a position " ); @@ -904,9 +904,7 @@ namespace InDet { NNinput NnClusterizationFactory::createInput(const InDet::PixelCluster& pCluster, Amg::Vector3D & beamSpotPosition, - double & tanl, - int sizeX, - int sizeY) const + double & tanl) const { NNinput input; @@ -1071,8 +1069,8 @@ namespace InDet { ATH_MSG_VERBOSE(" weighted pos row: " << rowWeightedPosition << " col: " << columnWeightedPosition ); - int centralIndexX=(sizeX-1)/2; - int centralIndexY=(sizeY-1)/2; + int centralIndexX=(m_sizeX-1)/2; + int centralIndexY=(m_sizeY-1)/2; if (abs(rowWeightedPosition-rowMin)>centralIndexX || @@ -1089,12 +1087,12 @@ namespace InDet { return input; } - input.matrixOfToT.reserve(sizeX); - for (int a=0;a<sizeX;a++) + input.matrixOfToT.reserve(m_sizeX); + for (int a=0;a<m_sizeX;a++) { - input.matrixOfToT.emplace_back(sizeY, 0.0); + input.matrixOfToT.emplace_back(m_sizeY, 0.0); } - input.vectorOfPitchesY.assign(sizeY, 0.4); + input.vectorOfPitchesY.assign(m_sizeY, 0.4); rdosBegin = rdos.begin(); //charge = chList.size() ? chList.begin() : chListRecreated.begin(); @@ -1132,14 +1130,14 @@ namespace InDet { } - if (absrow <0 || absrow > sizeX) + if (absrow <0 || absrow > m_sizeX) { - ATH_MSG_WARNING(" problem with index: " << absrow << " min: " << 0 << " max: " << sizeX); + ATH_MSG_WARNING(" problem with index: " << absrow << " min: " << 0 << " max: " << m_sizeX); return input; } - if (abscol <0 || abscol > sizeY) + if (abscol <0 || abscol > m_sizeY) { - ATH_MSG_WARNING(" problem with index: " << abscol << " min: " << 0 << " max: " << sizeY); + ATH_MSG_WARNING(" problem with index: " << abscol << " min: " << 0 << " max: " << m_sizeY); return input; } InDetDD::SiCellId cellId = element->cellIdFromIdentifier(*rdosBegin); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml index 85c485645d0a8e012baa8bf735518de26899acb0..8a3e04e692761681962c5724779d1e466257fb66 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml @@ -2011,3 +2011,12 @@ <x title="jet_{p_{T}} [GeV]" n="20" lo="100.0" hi="5000."/> <y title="Fake Rate" lo="0.0" hi="2.0"/> </h> + +<h id="ntracks_vs_mu" type="TH2" title="Number of tracks versus #GT#mu#LT"> + <x title="#GT#mu#LT" n="100" lo="0.0" hi="&EXPMU;"/> + <y title="Number of Tracks" n="200" lo="0.0" hi="&EXPTRK;"/> +</h> +<h id="ntracks_vs_nvertices" type="TH2" title="Number of tracks versus number ofvertices"> + <x title="Number of Vertices" n="100" lo="0.0" hi="&EXPMU;"/> + <y title="Number of Tracks" n="200" lo="0.0" hi="&EXPTRK;"/> +</h> diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefRun2.xml b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefRun2.xml index 9bae4ec990e780ac7e4e8d232c99534b79acaa1f..68ea7a0c2b7b20f4b15280e68f97f9ff520927ef 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefRun2.xml +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefRun2.xml @@ -33,6 +33,9 @@ <!-- dR plots for tracks in jets --> <!ENTITY DRMAX "0.4"> <!ENTITY SMALLDRMAX "0.1"> +<!-- Number of tracks vs MU --> +<!ENTITY EXPMU "100"> +<!ENTITY EXPTRK "2000"> <!-- histogram definitions common to Run2 and ITk --> <!ENTITY Common SYSTEM "InDetPVMPlotDefCommon.xml"> ]> diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.cxx index e6cb8020c71a8fa1174e5150d281b67784fa96f3..a261480fd99862f5bc7b39c0e41fbf1136ab93c7 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.cxx @@ -29,6 +29,9 @@ InDetPerfPlot_nTracks::initializePlots() { hd = retrieveDefinition("num_truthmatch_match"); m_counters[MATCHEDRECO] = Book1D(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, prependDirectory); + + book(m_ntracks_vs_mu,"ntracks_vs_mu"); + book(m_ntracks_vs_nvertices,"ntracks_vs_nvertices"); } void @@ -37,3 +40,10 @@ InDetPerfPlot_nTracks::fill(const unsigned int freq, const CounterCategory count fillHisto((m_counters[counter]), freq); } } + +void InDetPerfPlot_nTracks::fill(const unsigned int ntracks, const unsigned int muu, const unsigned int nvertices) { + + fillHisto(m_ntracks_vs_mu, muu, ntracks); + fillHisto(m_ntracks_vs_nvertices, nvertices, ntracks); + +} diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.h index 4f81209f9a1a4fb21f738d83d8931f038157b1ca..2028fdb69937495c3c2ac575a55cf1cebefefe99 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.h @@ -23,9 +23,12 @@ public: ALLRECO, SELECTEDRECO, ALLTRUTH, SELECTEDTRUTH, ALLASSOCIATEDTRUTH, MATCHEDRECO, N_COUNTERS }; void fill(const unsigned int freq, const CounterCategory counter); + void fill(const unsigned int ntracks, const unsigned int mu, const unsigned int nvertices); + private: TH1* m_counters[N_COUNTERS]; - + TH2* m_ntracks_vs_mu; + TH2* m_ntracks_vs_nvertices; void initializePlots(); }; diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx index f64218a070dfff8a85f348da7970fe847f672614..16e22d4e2da9c0aeb7b91b3a14c2d025a2091601 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx @@ -285,7 +285,7 @@ InDetPhysValMonitoringTool::fillHistograms() { // std::vector<const xAOD::TrackParticle*> selectedTracks {}; selectedTracks.reserve(tracks->size()); - unsigned int nTrackBAT = 0, nTrackSTD = 0, nTrackANT = 0; + unsigned int nTrackBAT = 0, nTrackSTD = 0, nTrackANT = 0, nTrackTOT = 0; for (const auto& thisTrack: *tracks) { //FIXME: Why is this w.r.t the primary vertex? const asg::AcceptData& accept = m_trackSelectionTool->accept(*thisTrack, primaryvertex); @@ -303,7 +303,7 @@ InDetPhysValMonitoringTool::fillHistograms() { if(isBAT) nTrackBAT++; if(isSTD) nTrackSTD++; if(isANT) nTrackANT++; - + nTrackTOT++; m_monPlots->fill(*thisTrack); m_monPlots->fill(*thisTrack, puEvents, nVertices); //fill mu dependent plots const xAOD::TruthParticle* associatedTruth = getAsTruth.getTruth(thisTrack); @@ -335,6 +335,8 @@ InDetPhysValMonitoringTool::fillHistograms() { } m_monPlots->fill(nTrackANT, nTrackSTD, nTrackBAT, puEvents, nVertices); + m_monPlots->fill(nTrackTOT, puEvents, nVertices); + //FIXME: I don't get why... this is here if (m_truthSelectionTool.get()) { ATH_MSG_DEBUG( CutFlow(tmp_truth_cutflow).report(m_truthSelectionTool->names()) ); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx index cf279e1a3dc0255b3be28dff73f5c6f65f015d27..a8b5d688748980c22cc4f6b26b2589317b05bf15 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx @@ -187,6 +187,14 @@ InDetRttPlots::fill(const unsigned int nTrkANT, const unsigned int nTrkSTD, cons m_anTrackingPlots.fill(nTrkANT, nTrkSTD, nTrkBAT, mu, nVtx); +} + +void +InDetRttPlots::fill(const unsigned int ntracks, const unsigned int mu, const unsigned int nvertices) { + + m_nTracks.fill(ntracks, mu, nvertices); + + } // //Fill plots for selected truth particle diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.h index 5c10e024d408cd97101106ba783885805a8861af..c5383ace813dd1758757b334eaf5024ee59c8063 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.h @@ -54,7 +54,8 @@ public: ///fill for things needing track only void fill(const xAOD::TrackParticle& particle); void fill(const xAOD::TrackParticle& particle, const float mu, const unsigned int nVtx); //mu dependent plots - void fill(const unsigned int nTrkANT, const unsigned int nTrkSTD, const unsigned int nTrkBAT, const float mu, const unsigned int nVtx); + void fill(const unsigned int nTrkANT, const unsigned int nTrkSTD, const unsigned int nTrkBAT, const float mu, const unsigned int nVtx); + void fill(const unsigned int nTracks, const unsigned int mu, const unsigned nVtx); ///fill for things needing truth only void fill(const xAOD::TruthParticle& particle); ///Fill for efficiency plots diff --git a/LArCalorimeter/LArCellRec/src/LArCellRecalibration.cxx b/LArCalorimeter/LArCellRec/src/LArCellRecalibration.cxx deleted file mode 100644 index 7fbe71475778737f268019826463ccd61deae8e1..0000000000000000000000000000000000000000 --- a/LArCalorimeter/LArCellRec/src/LArCellRecalibration.cxx +++ /dev/null @@ -1,62 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "LArCellRecalibration.h" -#include "CaloEvent/CaloCell.h" -#include "CaloIdentifier/CaloGain.h" - - -LArCellRecalibration::LArCellRecalibration (const std::string& type, - const std::string& name, - const IInterface* parent) : - CaloCellCorrection(type, name, parent), - m_adc2mevTool("LArADC2MevToolDefault"), - m_adc2mevToolOnline("LArADC2MeVToolOnline"), - m_useInterceptOld(false), - m_useInterceptNew(true) -{ - declareInterface<CaloCellCorrection>(this); - declareProperty("adc2MeVTool",m_adc2mevTool); - declareProperty("adc2MeVToolOnline",m_adc2mevToolOnline); - declareProperty("useIntercept",m_useInterceptNew); - declareProperty("useInterceptOnline",m_useInterceptOld); -} - - -LArCellRecalibration::~LArCellRecalibration() {} - - -StatusCode LArCellRecalibration::initialize() { - ATH_MSG_INFO( " initialization " ); - ATH_CHECK( m_adc2mevTool.retrieve() ); - ATH_CHECK( m_adc2mevToolOnline.retrieve() ); - return StatusCode::SUCCESS; -} - - -void LArCellRecalibration::MakeCorrection (CaloCell* theCell, - const EventContext& /*ctx*/) const -{ - Identifier id = theCell->ID(); - CaloGain::CaloGain gain = theCell->gain(); - float newEnergy=theCell->energy(); - const std::vector<float>& adc2mev_new = m_adc2mevTool->ADC2MEV(id,gain); - const std::vector<float>& adc2mev_old = m_adc2mevToolOnline->ADC2MEV(id,gain); - - if (adc2mev_old[1]>0 && adc2mev_new[1]>0) { - float adc = newEnergy/adc2mev_old[1]; - if (m_useInterceptOld && gain != CaloGain::LARHIGHGAIN) adc = adc - adc2mev_old[0]; - - newEnergy = 0.; - float adcPower = adc; - for (unsigned int i=1;i<adc2mev_new.size();i++) { - newEnergy += adc2mev_new[i]*adcPower; - adcPower = adcPower*adc; - } - if (m_useInterceptNew && gain != CaloGain::LARHIGHGAIN) newEnergy = newEnergy + adc2mev_new[0]; - } - - theCell->setEnergy(newEnergy); - return; -} diff --git a/LArCalorimeter/LArCellRec/src/LArCellRecalibration.h b/LArCalorimeter/LArCellRec/src/LArCellRecalibration.h deleted file mode 100644 index 0f2d373bad5b063b3798a86eb23655e2571eed01..0000000000000000000000000000000000000000 --- a/LArCalorimeter/LArCellRec/src/LArCellRecalibration.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef LARCELLREC_LARCELLRECALIBRATION_H -#define LARCELLREC_LARCELLRECALIBRATION_H - - -#include "CaloUtils/CaloCellCorrection.h" -#include "GaudiKernel/ToolHandle.h" -#include "LArElecCalib/ILArADC2MeVTool.h" - -class CaloCell; - -/** @class LArCellRecalibration - @brief Tool to re-scale cell energies undoing online calibration and applying new MeV/ADC factors - -To invoke this tool: -CaloCellMaker.CaloCellMakerToolNames+=["CaloCellContainerCorrectorTool"] -ToolSvc.CaloCellContainerCorrectorTool.CellCorrectionToolNames+=["LArCellRecalibration"] - -*/ - -class LArCellRecalibration : public CaloCellCorrection { - -public: - - LArCellRecalibration (const std::string& type, const std::string& name, - const IInterface* parent); - - ~LArCellRecalibration(); - virtual StatusCode initialize() override; - - virtual void MakeCorrection (CaloCell* theCell, - const EventContext& ctx) const override; - - private: - - ToolHandle<ILArADC2MeVTool> m_adc2mevTool; - ToolHandle<ILArADC2MeVTool> m_adc2mevToolOnline; - - bool m_useInterceptOld; - bool m_useInterceptNew; - -}; - -#endif diff --git a/LArCalorimeter/LArCellRec/src/components/LArCellRec_entries.cxx b/LArCalorimeter/LArCellRec/src/components/LArCellRec_entries.cxx index f0799d28074dd0287b0467b69b75d09b52f1a27b..e137b7393a97e5bfa669e654278b639af713b533 100644 --- a/LArCalorimeter/LArCellRec/src/components/LArCellRec_entries.cxx +++ b/LArCalorimeter/LArCellRec/src/components/LArCellRec_entries.cxx @@ -4,7 +4,6 @@ #include "../LArCellRescaler.h" #include "../LArCellMaskingTool.h" #include "../LArCellHVCorr.h" -#include "../LArCellRecalibration.h" #include "../LArCellNoiseMaskingTool.h" #include "../LArBadFebMaskingTool.h" #include "../LArCellGainPathology.h" @@ -24,7 +23,6 @@ DECLARE_COMPONENT( LArCellEmMiscalib ) DECLARE_COMPONENT( LArCellRescaler ) DECLARE_COMPONENT( LArCellMaskingTool ) DECLARE_COMPONENT( LArCellHVCorr ) -DECLARE_COMPONENT( LArCellRecalibration ) DECLARE_COMPONENT( LArCellNoiseMaskingTool ) DECLARE_COMPONENT( LArBadFebMaskingTool ) DECLARE_COMPONENT( LArCellGainPathology ) diff --git a/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV5.h b/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV5.h index 78a8ae4c7d2804e17873016cfc6a005e5df24b17..7f2afc21098d516683125327fd5d4bd992ce50f2 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV5.h +++ b/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV5.h @@ -124,6 +124,7 @@ public: private: + inline void setE(unsigned index, double E); virtual void resetPointers(); virtual bool setPointers(); void setNextEnergy(const uint16_t energy,const int16_t time, const int16_t quality, const uint32_t gain); @@ -363,48 +364,36 @@ return ( (ch&0x7) << 4) | ( (ch&0x38) >>2 ) | ((ch&0x40)>>6); } -inline void LArRodBlockPhysicsV5::setEx(double Ex){ +inline void LArRodBlockPhysicsV5::setE(unsigned index, double E){ - int32_t copy=(int32_t)Ex; + union { + int32_t i; + uint16_t us[2]; + } conv; + conv.i = static_cast<int32_t>(E); // Write as multiplication, not as left shift, since left-shifting // a negative number is undefined in C++. // Compiles to the same code on x86_64. - copy *= (1<<9); - uint16_t* to_push = (uint16_t*)© + conv.i *= (1<<9); if ( m_TimeQualityBlock.size()>=6 ){ - m_TimeQualityBlock[0]=to_push[0]; - m_TimeQualityBlock[1]=to_push[1]; + m_TimeQualityBlock[index]=conv.us[0]; + m_TimeQualityBlock[index+1]=conv.us[1]; } } -inline void LArRodBlockPhysicsV5::setEy(double Ey){ +inline void LArRodBlockPhysicsV5::setEx(double Ex){ + setE (0, Ex); +} - int32_t copy=(int32_t)Ey; - // Write as multiplication, not as left shift, since left-shifting - // a negative number is undefined in C++. - // Compiles to the same code on x86_64. - copy *= (1<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=6 ){ - m_TimeQualityBlock[2]=to_push[0]; - m_TimeQualityBlock[3]=to_push[1]; - } + +inline void LArRodBlockPhysicsV5::setEy(double Ey){ + setE (2, Ey); } inline void LArRodBlockPhysicsV5::setEz(double Ez){ - - int32_t copy=(int32_t)Ez; - // Write as multiplication, not as left shift, since left-shifting - // a negative number is undefined in C++. - // Compiles to the same code on x86_64. - copy *= (1<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=6 ){ - m_TimeQualityBlock[4]=to_push[0]; - m_TimeQualityBlock[5]=to_push[1]; - } + setE (4, Ez); } diff --git a/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV6.h b/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV6.h index e3cfcbf7f7a41716d20b3b09a848f136ebf9aa93..a7b65303757388af9d4e73247853ccdf17ef1970 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV6.h +++ b/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV6.h @@ -127,6 +127,7 @@ public: private: + void setE(unsigned int index, double E); virtual void resetPointers(); virtual bool setPointers(); void setNextEnergy(const uint16_t energy,const int16_t time, const int16_t quality, const uint32_t gain); @@ -377,50 +378,40 @@ return ( (ch&0x7) << 4) | ( (ch&0x38) >>2 ) | ((ch&0x40)>>6); } -inline void LArRodBlockPhysicsV6::setEx(double Ex){ - - int32_t copy=(int32_t)Ex; - copy=(copy<<9); - uint16_t* to_push = (uint16_t*)© +inline void LArRodBlockPhysicsV6::setE(unsigned index, double E){ + + union { + int32_t i; + uint16_t us[2]; + } conv; + conv.i = static_cast<int32_t>(E); + // Write as multiplication, not as left shift, since left-shifting + // a negative number is undefined in C++. + // Compiles to the same code on x86_64. + conv.i *= (1<<9); if ( m_TimeQualityBlock.size()>=8 ){ - m_TimeQualityBlock[0]=to_push[0]; - m_TimeQualityBlock[1]=to_push[1]; + m_TimeQualityBlock[index]=conv.us[0]; + m_TimeQualityBlock[index+1]=conv.us[1]; } } -inline void LArRodBlockPhysicsV6::setEy(double Ey){ +inline void LArRodBlockPhysicsV6::setEx(double Ex){ + setE (0, Ex); +} - int32_t copy=(int32_t)Ey; - copy=(copy<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=8 ){ - m_TimeQualityBlock[2]=to_push[0]; - m_TimeQualityBlock[3]=to_push[1]; - } + +inline void LArRodBlockPhysicsV6::setEy(double Ey){ + setE (2, Ey); } inline void LArRodBlockPhysicsV6::setEz(double Ez){ - - int32_t copy=(int32_t)Ez; - copy=(copy<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=8 ){ - m_TimeQualityBlock[4]=to_push[0]; - m_TimeQualityBlock[5]=to_push[1]; - } + setE (4, Ez); } inline void LArRodBlockPhysicsV6::setSumE(double SumE){ - - int32_t copy=(int32_t)SumE; - copy=(copy<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=8 ){ - m_TimeQualityBlock[6]=to_push[0]; - m_TimeQualityBlock[7]=to_push[1]; - } + setE (6, SumE); } diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV0.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV0.cxx index 3fd4b9b91cab10217bae8ae16f447c8914a92157..ba89a05cad51c0c359c5a925961293b8f5ba4bdf 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV0.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV0.cxx @@ -343,9 +343,7 @@ void LArRodBlockPhysicsV0::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb /* @@ -363,13 +361,11 @@ void LArRodBlockPhysicsV0::concatinateFEBs() m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it - m_mFebBlocks.clear(); + m_mFebBlocks.clear(); return; } diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV1.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV1.cxx index 0b9af1965093ba0c0573917bc4ed73ad0c8f6ba4..54cc58ccd70dd7b7ce94178ce5cc17e3c50a98cb 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV1.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV1.cxx @@ -342,9 +342,7 @@ void LArRodBlockPhysicsV1::concatinateFEBs( ) FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb /* if (fullHeader) {//Add middle header @@ -361,10 +359,8 @@ void LArRodBlockPhysicsV1::concatinateFEBs( ) m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV2.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV2.cxx index 4148926d6ac3c1b337211d89a58414e9231692e5..f88440fd5ce31118d3233dd600488885d4aec325 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV2.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV2.cxx @@ -376,9 +376,7 @@ void LArRodBlockPhysicsV2::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb /* if (fullHeader) {//Add middle header @@ -395,10 +393,8 @@ void LArRodBlockPhysicsV2::concatinateFEBs() m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV3.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV3.cxx index fd663ffb786181082c11fc03746d95175fb7fbe3..c9b59409630718474765d945b46b110a86460ae2 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV3.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV3.cxx @@ -683,9 +683,7 @@ void LArRodBlockPhysicsV3::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb /* if (fullHeader) {//Add middle header @@ -702,10 +700,8 @@ void LArRodBlockPhysicsV3::concatinateFEBs() m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV5.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV5.cxx index 4d0471297a0b1e9b075f84f159667f4987d058bc..11353fa4666fd94be6162d156687778a59e90a79 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV5.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV5.cxx @@ -1006,18 +1006,13 @@ void LArRodBlockPhysicsV5::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - m_pRODblock->reserve(m_pRODblock->size()+feb_it->second.size()); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV6.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV6.cxx index 1b11e2db6b3eb5071a92a039637afdaaffd352b6..0494b23e9a0a3c3aaf4d49bf9a37cb63f8084c2a 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV6.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV6.cxx @@ -1018,18 +1018,13 @@ void LArRodBlockPhysicsV6::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - m_pRODblock->reserve(m_pRODblock->size()+feb_it->second.size()); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodEncoder.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodEncoder.cxx index 08c3ab0d1ed52fa048fd1271a98bd67ddb7ad252..20eeeea42a51c5afe7460826bc0d6938ec3ab23a 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodEncoder.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodEncoder.cxx @@ -135,7 +135,7 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C // The sort alorithm for the vectors inside the data object of the map fails // when I use const_iterator at this point. Don't ask me why //std::cout << "Have " << m_mFEB.size() << " FEBs in this ROD" << std::endl; - for(;it!=it_end;it++) { + for(;it!=it_end;++it) { //std::cout << "Setting values for feb # " << febcounter << " ID=" << it->first << std::endl; m_BlStruct->initializeFEB(it->first); // Set FEB id //std::cout << "Setting Energy" << std::endl; @@ -143,8 +143,6 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C if (m_BlStruct->canSetEnergy() && it->second.vLArRC.size()>0) { //int j=0; // m_BlStruct->sortDataVector(it->second.vLArRC); - std::vector<const LArRawChannel*>::const_iterator chit=it->second.vLArRC.begin(); - std::vector<const LArRawChannel*>::const_iterator chit_e=it->second.vLArRC.end(); // compute Ex, Ey for this FEB : initialisation phase { @@ -154,10 +152,9 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C double SumE=0; Identifier myofflineID; - for (;chit!=chit_e;chit++) { - if ( ((LArRawChannel*)(*chit))!=0 ){ - int cId = m_onlineHelper->channel((*chit)->hardwareID()); - const LArRawChannel *theChannel = *chit; + for (const LArRawChannel *theChannel : it->second.vLArRC) { + if ( theChannel != nullptr ){ + int cId = m_onlineHelper->channel(theChannel->hardwareID()); int e=theChannel->energy(); uint32_t quality = theChannel->quality(); @@ -191,15 +188,10 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C if (m_BlStruct->canIncludeRawData() && it->second.vLArDigit.size()>0) { // Order channels according to ROD numbering m_BlStruct->sortDataVector(it->second.vLArDigit); - std::vector<const LArDigit*>::const_iterator digit_it = it->second.vLArDigit.begin(); - std::vector<const LArDigit*>::const_iterator digit_it_end=it->second.vLArDigit.end(); - if(digit_it!=digit_it_end) { //Container not empty - //m_BlStruct->setNumberOfSamples((*digit_it)->samples().size()); - for (;digit_it!=digit_it_end;digit_it++) { - int cId = m_onlineHelper->channel((*digit_it)->hardwareID()); - m_BlStruct->setRawData(cId, (*digit_it)->samples(), (*digit_it)->gain()); - } // end of for digits - }// end container not empty + for (const LArDigit* digit : it->second.vLArDigit) { + int cId = m_onlineHelper->channel(digit->hardwareID()); + m_BlStruct->setRawData(cId, digit->samples(), digit->gain()); + } // end of for digits } // End of can Include Raw Data check //std::cout << "Setting Raw Data" << std::endl; // ************** Raw Data Block *********** @@ -210,7 +202,7 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C std::vector<const LArDigit*>::const_iterator digit_it_end=it->second.vLArDigit.end(); if(digit_it!=digit_it_end) { //Container not empty m_BlStruct->setNumberOfSamples((*digit_it)->samples().size()); - for (;digit_it!=digit_it_end;digit_it++) { + for (;digit_it!=digit_it_end;++digit_it) { int cId = m_onlineHelper->channel((*digit_it)->hardwareID()); //cId = m_BlStruct->FebToRodChannel(cId); m_BlStruct->setRawData(cId, (*digit_it)->samples(), (*digit_it)->gain()); @@ -228,7 +220,7 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C std::vector<const LArDigit*>::const_iterator digit_it_end=it->second.vLArDigitFixed[i].end(); if(digit_it!=digit_it_end) {//Container not empty m_BlStruct->setNumberOfSamples((*digit_it)->samples().size()); - for (;digit_it!=digit_it_end;digit_it++) { + for (;digit_it!=digit_it_end;++digit_it) { int cId = m_onlineHelper->channel((*digit_it)->hardwareID()); //cId = m_BlStruct->FebToRodChannel(cId); m_BlStruct->setRawDataFixed(cId, (*digit_it)->samples(), (*digit_it)->gain()); @@ -248,7 +240,7 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C m_BlStruct->setNumberOfSamples((*digit_it)->samples().size()); m_BlStruct->setDelay((*digit_it)->delay()); m_BlStruct->setDAC((*digit_it)->DAC()); - for (;digit_it!=digit_it_end;digit_it++) { + for (;digit_it!=digit_it_end;++digit_it) { int cId = m_onlineHelper->channel((*digit_it)->hardwareID()); //cId = m_BlStruct->FebToRodChannel(cId); m_BlStruct->setRawDataFixed(cId, (*digit_it)->samples(), (*digit_it)->gain()); diff --git a/LArCalorimeter/LArCondUtils/share/LArHV2Ntuple_jobOptions.py b/LArCalorimeter/LArCondUtils/share/LArHV2Ntuple_jobOptions.py index 5a4a42e8aa4350b03015f2a572d9191097ae99d3..685ca6d6df54442b06e427052a693e582c946a25 100644 --- a/LArCalorimeter/LArCondUtils/share/LArHV2Ntuple_jobOptions.py +++ b/LArCalorimeter/LArCondUtils/share/LArHV2Ntuple_jobOptions.py @@ -76,10 +76,7 @@ include("LArConditionsCommon/LArConditionsCommon_comm_jobOptions.py") #include( "LArCondAthenaPool/LArCondAthenaPool_joboptions.py" ) -from IOVDbSvc.CondDB import conddb -conddb.addFolder("LAR_OFL","/LAR/IdentifierOfl/HVLineToElectrodeMap"); -conddb.addFolder("DCS_OFL","/LAR/DCS/HV/BARREl/I16") -conddb.addFolder("DCS_OFL","/LAR/DCS/HV/BARREL/I8") +from LArConditionsCommon import LArHVDB from LArCondUtils.LArCondUtilsConf import LArHV2Ntuple theLArHV2Ntuple = LArHV2Ntuple("LArHV2Ntuple") diff --git a/LArCalorimeter/LArCondUtils/share/LArHVPathologyDbRead.py b/LArCalorimeter/LArCondUtils/share/LArHVPathologyDbRead.py index 386e7d26794b87a64a70ec3d73f6342c5a9ee2ca..8e8d0e9472f9f4547cd719009829e09db8a419b2 100755 --- a/LArCalorimeter/LArCondUtils/share/LArHVPathologyDbRead.py +++ b/LArCalorimeter/LArCondUtils/share/LArHVPathologyDbRead.py @@ -72,9 +72,7 @@ include( "LArDetDescr/LArDetDescr_joboptions.py" ) #include("LArConditionsCommon/LArConditionsCommon_comm_jobOptions.py") include( "LArConditionsCommon/LArIdMap_comm_jobOptions.py" ) -conddb.addFolder("LAR_OFL","/LAR/IdentifierOfl/HVLineToElectrodeMap") -conddb.addFolder("DCS_OFL","/LAR/DCS/HV/BARREl/I16") -conddb.addFolder("DCS_OFL","/LAR/DCS/HV/BARREL/I8") +from LArConditionsCommon import LArHVDB #-------------------------------------------------------------- # Access to IOVSvc, IOVDbSvc and CondDBMySQLCnvSvc #-------------------------------------------------------------- diff --git a/LArCalorimeter/LArCondUtils/share/LArHVPathologyDbWrite.py b/LArCalorimeter/LArCondUtils/share/LArHVPathologyDbWrite.py index 376c4f9b4889edf9c569549c106710193fa0aef0..2e6e09c61f0f9bd77c86ed7d4943ea82a6a405fc 100755 --- a/LArCalorimeter/LArCondUtils/share/LArHVPathologyDbWrite.py +++ b/LArCalorimeter/LArCondUtils/share/LArHVPathologyDbWrite.py @@ -75,12 +75,8 @@ include( "LArDetDescr/LArDetDescr_joboptions.py" ) #include("TileConditions/TileConditions_jobOptions.py" ) #include("LArConditionsCommon/LArConditionsCommon_comm_jobOptions.py") -#from LArConditionsCommon import LArHVDB +from LArConditionsCommon import LArHVDB -from IOVDbSvc.CondDB import conddb -conddb.addFolder("LAR_OFL","/LAR/IdentifierOfl/HVLineToElectrodeMap") -conddb.addFolder("DCS_OFL","/LAR/DCS/HV/BARREl/I16") -conddb.addFolder("DCS_OFL","/LAR/DCS/HV/BARREL/I8") #-------------------------------------------------------------- diff --git a/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.cxx b/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.cxx index d09418a3424e4a9c7ff52a1c54735cbf72421289..4cbcfa44341726b9c52c6df0d93ee18ed5ff8be5 100644 --- a/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.cxx +++ b/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArHV2Ntuple.h" @@ -26,6 +26,8 @@ #include "CaloDetDescr/CaloDetDescrManager.h" #include "CaloDetDescr/CaloDetectorElements.h" #include "CaloGeoHelpers/CaloPhiRange.h" +#include "AthenaPoolUtilities/CondAttrListCollection.h" +#include "GaudiKernel/ThreadLocalContext.h" //Constructor LArHV2Ntuple:: LArHV2Ntuple(const std::string& name, ISvcLocator* pSvcLocator): @@ -83,6 +85,8 @@ ATH_CHECK( detStore()->retrieve(m_calodetdescrmgr) ); } + ATH_CHECK( m_hvCablingKey.initialize() ); + ATH_CHECK( m_DCSFolderKeys.initialize() ); ATH_CHECK( m_thistSvc->regTree("/file1/hv/mytree",m_tree) ); return StatusCode::SUCCESS; @@ -91,37 +95,76 @@ //__________________________________________________________________________ StatusCode LArHV2Ntuple::execute() { + const EventContext& ctx = Gaudi::Hive::currentContext(); + //............................................. + + // FIXME: Use LArHVData instead? + SG::ReadCondHandle<LArHVIdMapping> hvCabling (m_hvCablingKey, ctx); + std::vector<const CondAttrListCollection*> attrLists; + for (const SG::ReadCondHandleKey<CondAttrListCollection>& k : m_DCSFolderKeys) + { + SG::ReadCondHandle<CondAttrListCollection> attrList (k, ctx); + attrLists.push_back (*attrList); + } - ATH_MSG_DEBUG ( "LArHV2Ntuple execute()" ); - if(m_hvonlId_map.size()==0) { - SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{m_cablingKey}; - const LArOnOffIdMapping* cabling{*cablingHdl}; - if(!cabling) { + const LArHVManager *manager = NULL; + ATH_CHECK( detStore()->retrieve(manager) ); + + const EMBHVManager& hvManager_EMB=manager->getEMBHVManager(); + const EMBHVManager::EMBHVData hvdata_EMB = hvManager_EMB.getData (**hvCabling, attrLists); + + const EMBPresamplerHVManager& hvManager_EMBPS=manager->getEMBPresamplerHVManager(); + const EMBPresamplerHVManager::EMBPresamplerHVData hvdata_EMBPS = hvManager_EMBPS.getData (**hvCabling, attrLists); + + const EMECPresamplerHVManager& hvManager_EMECPS=manager->getEMECPresamplerHVManager(); + const EMECPresamplerHVManager::EMECPresamplerHVData hvdata_EMECPS = hvManager_EMECPS.getData (**hvCabling, attrLists); + + const EMECHVManager& hvManager_EMEC_OUT=manager->getEMECHVManager(EMECHVModule::OUTER); + const EMECHVManager::EMECHVData hvdata_EMEC_OUT = hvManager_EMEC_OUT.getData (**hvCabling, attrLists); + + const EMECHVManager& hvManager_EMEC_IN=manager->getEMECHVManager(EMECHVModule::INNER); + const EMECHVManager::EMECHVData hvdata_EMEC_IN = hvManager_EMEC_IN.getData (**hvCabling, attrLists); + + const HECHVManager& hvManager_HEC=manager->getHECHVManager(); + const HECHVManager::HECHVData hvdata_HEC = hvManager_HEC.getData (**hvCabling, attrLists); + + const FCALHVManager& hvManager_FCAL=manager->getFCALHVManager(); + const FCALHVManager::FCALHVData hvdata_FCAL = hvManager_FCAL.getData (**hvCabling, attrLists); + + ATH_MSG_DEBUG ( "LArHV2Ntuple execute()" ); + if(m_hvonlId_map.size()==0) { + SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{m_cablingKey, ctx}; + const LArOnOffIdMapping* cabling{*cablingHdl}; + if(!cabling) { ATH_MSG_ERROR("Do not have mapping object " << m_cablingKey.key()); return StatusCode::FAILURE; - } - std::vector<Identifier>::const_iterator cell_b=m_caloId->cell_begin(); - std::vector<Identifier>::const_iterator cell_e=m_caloId->cell_end(); - for(;cell_b!=cell_e; ++cell_b) { - if(m_caloId->is_tile(*cell_b)) continue; - HWIdentifier onlid = cabling->createSignalChannelID(*cell_b); - std::vector<int> hvlines = GetHVLines(*cell_b); - for(unsigned i=0; i<hvlines.size(); ++i ) { - if(m_hvonlId_map.find(hvlines[i]) == m_hvonlId_map.end()) { // new key - std::vector<HWIdentifier> vec; - vec.push_back(onlid); - m_hvonlId_map[hvlines[i]] = vec; - } else { // existing key - m_hvonlId_map[hvlines[i]].push_back(onlid); - } - } - }// end map filling - } + } + std::vector<Identifier>::const_iterator cell_b=m_caloId->cell_begin(); + std::vector<Identifier>::const_iterator cell_e=m_caloId->cell_end(); + for(;cell_b!=cell_e; ++cell_b) { + if(m_caloId->is_tile(*cell_b)) continue; + HWIdentifier onlid = cabling->createSignalChannelID(*cell_b); + std::vector<int> hvlines = GetHVLines (hvdata_EMB, + hvdata_EMBPS, + hvdata_EMEC_OUT, + hvdata_EMEC_IN, + hvdata_EMECPS, + hvdata_HEC, + hvdata_FCAL, + *cell_b); + for(unsigned i=0; i<hvlines.size(); ++i ) { + if(m_hvonlId_map.find(hvlines[i]) == m_hvonlId_map.end()) { // new key + std::vector<HWIdentifier> vec; + vec.push_back(onlid); + m_hvonlId_map[hvlines[i]] = vec; + } else { // existing key + m_hvonlId_map[hvlines[i]].push_back(onlid); + } + } + }// end map filling + } - const LArHVManager *manager = NULL; - if (detStore()->retrieve(manager)==StatusCode::SUCCESS) { - const EMBHVManager& hvManager_EMB=manager->getEMBHVManager(); for (unsigned int iSide=hvManager_EMB.beginSideIndex();iSide<hvManager_EMB.endSideIndex();iSide++) { // loop over HV modules for (unsigned int iPhi=hvManager_EMB.beginPhiIndex();iPhi<hvManager_EMB.endPhiIndex();iPhi++) { for (unsigned int iSector=hvManager_EMB.beginSectorIndex();iSector<hvManager_EMB.endSectorIndex();iSector++) { @@ -131,8 +174,8 @@ for (unsigned int ielec=0;ielec<32;ielec++) { //use hvMod->getNumElectrodes when bug is corrected const EMBHVElectrode& electrode = hvMod.getElectrode(ielec); for (unsigned int iGap=0;iGap<2;iGap++) { // EMB : 2, TRY TO FIND AUTOMATICALLY NB OF GAPS - float hv=electrode.voltage(iGap); - float current = electrode.current(iGap); + float hv = hvdata_EMB.voltage (electrode, iGap); + float current = hvdata_EMB.current (electrode, iGap); float phi = electrode.getPhi(); m_bec=0; @@ -143,7 +186,7 @@ m_gap = iGap; m_hv = hv; m_current= current; - m_hvline = electrode.hvLineNo(iGap); + m_hvline = hvdata_EMB.hvLineNo (electrode, iGap); if(m_addcells) { for(unsigned i=0; i<m_hvonlId_map[m_hvline].size(); ++i) { @@ -163,14 +206,13 @@ } } //EMBHVManager - const EMBPresamplerHVManager& hvManager_EMBPS=manager->getEMBPresamplerHVManager(); for (unsigned int iSide=hvManager_EMBPS.beginSideIndex();iSide<hvManager_EMBPS.endSideIndex();iSide++) { // loop over HV modules for (unsigned int iPhi=hvManager_EMBPS.beginPhiIndex();iPhi<hvManager_EMBPS.endPhiIndex();iPhi++) { for (unsigned int iEta=hvManager_EMBPS.beginEtaIndex();iEta<hvManager_EMBPS.endEtaIndex();iEta++) { //0 to 7 const EMBPresamplerHVModule& hvMod = hvManager_EMBPS.getHVModule(iSide,iEta,iPhi); for (int iGap=0;iGap<2;iGap++) { - float hv = hvMod.voltage(iGap); - float current =hvMod.current(iGap); + float hv = hvdata_EMBPS.voltage (hvMod, iGap); + float current = hvdata_EMBPS.current (hvMod, iGap); float eta = 0.5*(hvMod.getEtaMin()+hvMod.getEtaMax()); float phi= 0.5*(hvMod.getPhiMin()+hvMod.getPhiMax()); @@ -182,7 +224,7 @@ m_gap = iGap; m_hv = hv; m_current= current; - m_hvline = hvMod.hvLineNo(iGap); + m_hvline = hvdata_EMBPS.hvLineNo (hvMod, iGap); if(m_addcells) { for(unsigned i=0; i<m_hvonlId_map[m_hvline].size(); ++i) { @@ -200,13 +242,12 @@ } } //EMBPresampler - const EMECPresamplerHVManager& hvManager_EMECPS=manager->getEMECPresamplerHVManager(); for (unsigned int iSide=hvManager_EMECPS.beginSideIndex();iSide<hvManager_EMECPS.endSideIndex();iSide++) { // loop over HV modules for (unsigned int iPhi=hvManager_EMECPS.beginPhiIndex();iPhi<hvManager_EMECPS.endPhiIndex();iPhi++) { const EMECPresamplerHVModule& hvMod = hvManager_EMECPS.getHVModule(iSide,iPhi); for (int iGap=0;iGap<2;iGap++) { - float hv = hvMod.voltage(iGap); - float current =hvMod.current(iGap); + float hv = hvdata_EMECPS.voltage (hvMod, iGap); + float current = hvdata_EMECPS.current (hvMod, iGap); float eta = 0.5*(hvMod.getEtaMin()+hvMod.getEtaMax()); float phi=0.5*(hvMod.getPhiMin()+hvMod.getPhiMax()); @@ -218,7 +259,7 @@ m_gap = iGap; m_hv = hv; m_current= current; - m_hvline = hvMod.hvLineNo(iGap); + m_hvline = hvdata_EMECPS.hvLineNo (hvMod, iGap); if(m_addcells) { for(unsigned i=0; i<m_hvonlId_map[m_hvline].size(); ++i) { @@ -237,7 +278,6 @@ - const EMECHVManager& hvManager_EMEC_OUT=manager->getEMECHVManager(EMECHVModule::OUTER); for (unsigned int iSide=hvManager_EMEC_OUT.beginSideIndex();iSide<hvManager_EMEC_OUT.endSideIndex();iSide++) { // loop over HV modules for (unsigned int iPhi=hvManager_EMEC_OUT.beginPhiIndex();iPhi<hvManager_EMEC_OUT.endPhiIndex();iPhi++) { for (unsigned int iSector=hvManager_EMEC_OUT.beginSectorIndex();iSector<hvManager_EMEC_OUT.endSectorIndex();iSector++) { @@ -247,8 +287,8 @@ for (unsigned int ielec=0;ielec<hvMod.getNumElectrodes();ielec++) { //use hvMod.getNumElectrodes when bug is corrected const EMECHVElectrode& electrode = hvMod.getElectrode(ielec); for (unsigned int iGap=0;iGap<2;iGap++) { //EMEC : 2 gaps, TRY TO FIND AUTOMATICALLY NB OF GAPS - float hv=electrode.voltage(iGap); - float current = electrode.current(iGap); + float hv = hvdata_EMEC_OUT.voltage (electrode, iGap); + float current = hvdata_EMEC_OUT.current (electrode, iGap); float phi = electrode.getPhi(); m_bec=1; @@ -259,7 +299,7 @@ m_gap = iGap; m_hv = hv; m_current= current; - m_hvline = electrode.hvLineNo(iGap); + m_hvline = hvdata_EMEC_OUT.hvLineNo (electrode, iGap); if(m_addcells) { for(unsigned i=0; i<m_hvonlId_map[m_hvline].size(); ++i) { @@ -279,7 +319,6 @@ } }//EMEC Outer - const EMECHVManager& hvManager_EMEC_IN=manager->getEMECHVManager(EMECHVModule::INNER); for (unsigned int iSide=hvManager_EMEC_IN.beginSideIndex();iSide<hvManager_EMEC_IN.endSideIndex();iSide++) { // loop over HV modules for (unsigned int iPhi=hvManager_EMEC_IN.beginPhiIndex();iPhi<hvManager_EMEC_IN.endPhiIndex();iPhi++) { for (unsigned int iSector=hvManager_EMEC_IN.beginSectorIndex();iSector<hvManager_EMEC_IN.endSectorIndex();iSector++) { @@ -289,8 +328,8 @@ for (unsigned int ielec=0;ielec<hvMod.getNumElectrodes();ielec++) { //use hvMod.getNumElectrodes when bug is corrected const EMECHVElectrode& electrode = hvMod.getElectrode(ielec); for (unsigned int iGap=0;iGap<2;iGap++) { //EMEC : 2 gaps, TRY TO FIND AUTOMATICALLY NB OF GAPS - float hv=electrode.voltage(iGap); - float current = electrode.current(iGap); + float hv = hvdata_EMEC_IN.voltage (electrode, iGap); + float current = hvdata_EMEC_IN.current (electrode, iGap); float phi = electrode.getPhi(); m_bec=2; @@ -301,7 +340,7 @@ m_gap = iGap; m_hv = hv; m_current= current; - m_hvline = electrode.hvLineNo(iGap); + m_hvline = hvdata_EMEC_IN.hvLineNo (electrode, iGap); if(m_addcells) { for(unsigned i=0; i<m_hvonlId_map[m_hvline].size(); ++i) { @@ -321,7 +360,6 @@ } }// EMEC Inner - const HECHVManager& hvManager_HEC=manager->getHECHVManager(); float etamax_layer[4]={3.3,3.1,3.1,3.3}; float etamin_layer[4]={1.5,1.5,1.6,1.7}; @@ -343,8 +381,8 @@ for (unsigned int iGap=0;iGap<hvMod.getNumSubgaps();iGap++) {//HEC : 4 gaps, TRY TO FIND AUTOMATICALLY NB OF GAPS const HECHVSubgap& subgap=hvMod.getSubgap(iGap); - float hv = subgap.voltage(); - float current = subgap.current(); + float hv = hvdata_HEC.voltage (subgap); + float current = hvdata_HEC.current (subgap); m_bec = 10+iSampling; m_isPresampler=0; m_eta=eta; @@ -353,7 +391,7 @@ m_gap = iGap; m_hv=hv; m_current=current; - m_hvline = subgap.hvLineNo(); + m_hvline = hvdata_HEC.hvLineNo (subgap); if(m_addcells) { for(unsigned i=0; i<m_hvonlId_map[m_hvline].size(); ++i) { m_barrelec=m_onlId->barrel_ec(m_hvonlId_map[m_hvline][i]); @@ -369,7 +407,6 @@ } }//HECHVManager - const FCALHVManager& hvManager_FCAL=manager->getFCALHVManager(); for (unsigned int iSide=hvManager_FCAL.beginSideIndex();iSide<hvManager_FCAL.endSideIndex();iSide++) { // loop over HV modules float eta_min=3.1,eta_max=4.9; if (iSide==0) { eta_min=-4.9; eta_max=-3.1; } @@ -379,8 +416,6 @@ for (unsigned int iSector=hvManager_FCAL.beginSectorIndex(iSampling);iSector<hvManager_FCAL.endSectorIndex(iSampling);iSector++) { const FCALHVModule& hvMod = hvManager_FCAL.getHVModule(iSide,iSector,iSampling); - //std::cout << " FCAL HVModule side,sampling,sector " << iSide << " " << iSampling << " " << iSector << std::endl; - //std::cout << " HV nominal " << HVnominal << std::endl; float dphi=CaloPhiRange::twopi()/16; if (iSampling==1) dphi=CaloPhiRange::twopi()/8.; @@ -392,8 +427,8 @@ for (unsigned int iLine=0;iLine<hvMod.getNumHVLines();iLine++) { const FCALHVLine& hvline = hvMod.getHVLine(iLine); - float hv = hvline.voltage(); - float current = hvline.current(); + float hv = hvdata_FCAL.voltage (hvline); + float current = hvdata_FCAL.current (hvline); m_bec = 14+iSampling; m_isPresampler=0; m_eta=eta; @@ -402,7 +437,7 @@ m_gap = iLine; m_hv=hv; m_current=current; - m_hvline = hvline.hvLineNo(); + m_hvline = hvdata_FCAL.hvLineNo (hvline); if(m_addcells) { for(unsigned i=0; i<m_hvonlId_map[m_hvline].size(); ++i) { m_barrelec=m_onlId->barrel_ec(m_hvonlId_map[m_hvline][i]); @@ -418,12 +453,17 @@ }//iSampling }//iSide - }//LArHVManager - return StatusCode::SUCCESS; } -std::vector<int> LArHV2Ntuple::GetHVLines(const Identifier& id) { +std::vector<int> LArHV2Ntuple::GetHVLines (const EMBHVManager::EMBHVData& hvdata_EMB, + const EMBPresamplerHVManager::EMBPresamplerHVData& hvdata_EMBPS, + const EMECHVManager::EMECHVData& hvdata_EMEC_OUT, + const EMECHVManager::EMECHVData& hvdata_EMEC_IN, + const EMECPresamplerHVManager::EMECPresamplerHVData& hvdata_EMECPS, + const HECHVManager::HECHVData& hvdata_HEC, + const FCALHVManager::FCALHVData& hvdata_FCAL, + const Identifier& id) { std::set<int> hv; @@ -436,7 +476,7 @@ std::vector<int> LArHV2Ntuple::GetHVLines(const Identifier& id) { unsigned int nelec = cell->getNumElectrodes(); for (unsigned int i=0;i<nelec;i++) { const EMBHVElectrode& electrode = cell->getElectrode(i); - for (unsigned int igap=0;igap<2;igap++) hv.insert(electrode.hvLineNo(igap)); + for (unsigned int igap=0;igap<2;igap++) hv.insert(hvdata_EMB.hvLineNo(electrode, igap)); } } else { // LAr EMEC const EMECDetectorElement* emecElement = dynamic_cast<const EMECDetectorElement*>(m_calodetdescrmgr->get_element(id)); @@ -445,7 +485,12 @@ std::vector<int> LArHV2Ntuple::GetHVLines(const Identifier& id) { unsigned int nelec = cell->getNumElectrodes(); for (unsigned int i=0;i<nelec;i++) { const EMECHVElectrode& electrode = cell->getElectrode(i); - for (unsigned int igap=0;igap<2;igap++) hv.insert(electrode.hvLineNo(igap)); + const EMECHVModule& module = electrode.getModule(); + const EMECHVManager::EMECHVData& hvdata = + module.getWheelIndex() == EMECHVModule::INNER ? + hvdata_EMEC_IN : + hvdata_EMEC_OUT; + for (unsigned int igap=0;igap<2;igap++) hv.insert(hvdata.hvLineNo (electrode, igap)); } } } else if (m_caloId->is_hec(id)) { // LAr HEC @@ -455,7 +500,7 @@ std::vector<int> LArHV2Ntuple::GetHVLines(const Identifier& id) { unsigned int nsubgaps = cell->getNumSubgaps(); for (unsigned int igap=0;igap<nsubgaps;igap++) { const HECHVSubgap& subgap = cell->getSubgap(igap); - hv.insert(subgap.hvLineNo()); + hv.insert(hvdata_HEC.hvLineNo (subgap)); } } else if (m_caloId->is_fcal(id)) { // LAr FCAL const FCALDetectorElement* fcalElement = dynamic_cast<const FCALDetectorElement*>(m_calodetdescrmgr->get_element(id)); @@ -464,7 +509,7 @@ std::vector<int> LArHV2Ntuple::GetHVLines(const Identifier& id) { unsigned int nlines = tile->getNumHVLines(); for (unsigned int i=0;i<nlines;i++) { const FCALHVLine* line = tile->getHVLine(i); - if (line) hv.insert(line->hvLineNo()); + if (line) hv.insert(hvdata_FCAL.hvLineNo (*line)); } } else if (m_caloId->is_em(id) && m_caloId->sampling(id)==0) { // Presamplers if (abs(m_caloId->em_idHelper()->barrel_ec(id))==1) { @@ -472,13 +517,13 @@ std::vector<int> LArHV2Ntuple::GetHVLines(const Identifier& id) { if (!embElement) std::abort(); const EMBCellConstLink cell = embElement->getEMBCell(); const EMBPresamplerHVModule& hvmodule = cell->getPresamplerHVModule(); - for (unsigned int igap=0;igap<2;igap++) hv.insert(hvmodule.hvLineNo(igap)); + for (unsigned int igap=0;igap<2;igap++) hv.insert(hvdata_EMBPS.hvLineNo (hvmodule, igap)); } else { const EMECDetectorElement* emecElement = dynamic_cast<const EMECDetectorElement*>(m_calodetdescrmgr->get_element(id)); if (!emecElement) std::abort(); const EMECCellConstLink cell = emecElement->getEMECCell(); const EMECPresamplerHVModule& hvmodule = cell->getPresamplerHVModule (); - for (unsigned int igap=0;igap<2;igap++) hv.insert(hvmodule.hvLineNo(igap)); + for (unsigned int igap=0;igap<2;igap++) hv.insert(hvdata_EMECPS.hvLineNo (hvmodule, igap)); } } diff --git a/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.h b/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.h index 0397f29f774a52f201ff43a7415caf962d413cbc..69a15118fda3fbaea1a5852d7f0b8b34464b568c 100644 --- a/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.h +++ b/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // TheLArHV2Ntuple.h @@ -16,7 +16,15 @@ #include "StoreGate/StoreGateSvc.h" #include "GaudiKernel/ITHistSvc.h" #include "StoreGate/ReadCondHandleKey.h" +#include "StoreGate/CondHandleKeyArray.h" #include "LArCabling/LArOnOffIdMapping.h" +#include "LArRecConditions/LArHVIdMapping.h" +#include "LArHV/EMBHVManager.h" +#include "LArHV/EMECHVManager.h" +#include "LArHV/EMBPresamplerHVManager.h" +#include "LArHV/EMECPresamplerHVManager.h" +#include "LArHV/HECHVManager.h" +#include "LArHV/FCALHVManager.h" #include "TTree.h" @@ -25,6 +33,7 @@ class LArOnlineID; class Identifier; class HWIdentifier; class CaloDetDescrManager; +class CondAttrListCollection; class LArHV2Ntuple : public AthAlgorithm { public: @@ -32,18 +41,21 @@ class LArHV2Ntuple : public AthAlgorithm { /** Standard Athena-Algorithm Constructor */ LArHV2Ntuple(const std::string& name, ISvcLocator* pSvcLocator); /** Default Destructor */ - ~LArHV2Ntuple(); + virtual ~LArHV2Ntuple(); /** standard Athena-Algorithm method */ - StatusCode initialize(); + virtual StatusCode initialize() override; /** standard Athena-Algorithm method */ - StatusCode execute(); - /** standard Athena-Algorithm method */ - StatusCode finalize(){return StatusCode::SUCCESS;} + virtual StatusCode execute() override; private: SG::ReadCondHandleKey<LArOnOffIdMapping> m_cablingKey{this, "OnOffMap", "LArOnOffIdMap", "SG key for mapping object"}; + SG::ReadCondHandleKey<LArHVIdMapping> m_hvCablingKey + {this, "LArHVIdMapping", "LArHVIdMap", "SG key for HV ID mapping"}; + SG::ReadCondHandleKeyArray<CondAttrListCollection> m_DCSFolderKeys + { this, "DCSFolderNames", {"/LAR/DCS/HV/BARREl/I16", "/LAR/DCS/HV/BARREL/I8"}, "DCS folders with HV values"}; + //--------------------------------------------------- // Member variables @@ -76,6 +88,13 @@ class LArHV2Ntuple : public AthAlgorithm { const DataHandle<CaloDetDescrManager> m_calodetdescrmgr; std::map<int, std::vector<HWIdentifier> >m_hvonlId_map; - std::vector<int> GetHVLines(const Identifier& id) ; + std::vector<int> GetHVLines (const EMBHVManager::EMBHVData& hvdata_EMB, + const EMBPresamplerHVManager::EMBPresamplerHVData& hvdata_EMBPS, + const EMECHVManager::EMECHVData& hvdata_EMEC_OUT, + const EMECHVManager::EMECHVData& hvdata_EMEC_IN, + const EMECPresamplerHVManager::EMECPresamplerHVData& hvdata_EMECPS, + const HECHVManager::HECHVData& hvdata_HEC, + const FCALHVManager::FCALHVData& hvdata_FCAL, + const Identifier& id) ; }; #endif diff --git a/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.cxx b/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.cxx index ececa8c4aaa241eac7d78dae43216f1340f41bc2..4c605b444f144499ad355938447b39e565f404af 100644 --- a/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.cxx +++ b/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArHVPathologyDbAlg.h" @@ -27,6 +27,7 @@ #include "LArHV/HECHVSubgap.h" #include "LArReadoutGeometry/FCALTile.h" #include "LArHV/FCALHVLine.h" +#include "GaudiKernel/ThreadLocalContext.h" #include <fstream> #include <cstdlib> @@ -117,6 +118,8 @@ StatusCode LArHVPathologyDbAlg::initialize() return StatusCode::FAILURE; } + ATH_CHECK( m_hvCablingKey.initialize() ); + return sc; } @@ -124,13 +127,15 @@ StatusCode LArHVPathologyDbAlg::execute() { msg(MSG::INFO) <<" in execute()" <<endmsg; - int nevt = getContext().eventID().event_number(); + const EventContext& ctx = Gaudi::Hive::currentContext(); + + int nevt = ctx.eventID().event_number(); if(m_writeCondObjs && nevt==1) { msg(MSG::INFO) << "Creating conditions objects" << endmsg; // Create cond objects - if(!createCondObjects().isSuccess()) { + if(!createCondObjects(ctx).isSuccess()) { msg(MSG::ERROR) << "Could not create cond objects " << endmsg; m_writeCondObjs = false; return StatusCode::FAILURE; @@ -138,7 +143,7 @@ StatusCode LArHVPathologyDbAlg::execute() } // Dump cond objects - StatusCode sc = printCondObjects(); + StatusCode sc = printCondObjects (ctx); if(!sc.isSuccess()) { msg(MSG::ERROR) << "Could not print out cond objects" << endmsg; return sc; @@ -166,7 +171,7 @@ StatusCode LArHVPathologyDbAlg::stop() return sc; } -StatusCode LArHVPathologyDbAlg::createCondObjects() +StatusCode LArHVPathologyDbAlg::createCondObjects (const EventContext & ctx) { msg(MSG::INFO) <<" in createCondObjects() " <<endmsg; @@ -174,6 +179,8 @@ StatusCode LArHVPathologyDbAlg::createCondObjects() msg(MSG::INFO) << "EMB Pathologies already in SG, skipping " <<endmsg; } else { + SG::ReadCondHandle<LArHVIdMapping> hvIdMapping (m_hvCablingKey, ctx); + // Read input file and construct LArHVPathologiesDb for given folder std::ifstream infile; infile.open(m_inpFile.value().c_str()); @@ -229,7 +236,7 @@ StatusCode LArHVPathologyDbAlg::createCondObjects() HWIdentifier hwid = m_laronline_id->channel_Id(bec,pos_neg,FT,slot,channel); Identifier id = m_cablingService->cnvToIdentifier( hwid); cellID = (unsigned int)(id.get_identifier32().get_compact()); - elecList=getElectInd(id,hvModule,hvLine); + elecList=getElectInd(**hvIdMapping, id,hvModule,hvLine); msg(MSG::INFO) << " cellId , elecList size " << cellID << " " << elecList.size() << endmsg; } for (unsigned int i=0;i<elecList.size();i++) { @@ -272,9 +279,12 @@ StatusCode LArHVPathologyDbAlg::createCondObjects() return StatusCode::SUCCESS; } -StatusCode LArHVPathologyDbAlg::printCondObjects() +StatusCode LArHVPathologyDbAlg::printCondObjects (const EventContext& ctx) { msg(MSG::INFO) <<" in printCondObjects() " <<endmsg; + + SG::ReadCondHandle<LArHVIdMapping> hvIdMapping (m_hvCablingKey, ctx); + std::ofstream *fout=0; const AthenaAttributeList* attrlist; StatusCode sc = detStore()->retrieve(attrlist,m_folder); @@ -302,7 +312,7 @@ StatusCode LArHVPathologyDbAlg::printCondObjects() } else { msg(MSG::INFO) << "Got pathology for cell ID: " << electPath.cellID << endmsg; HWIdentifier hwid = m_cablingService->createSignalChannelID(Identifier32(electPath.cellID)); - int HVLine=getHVline(Identifier(electPath.cellID),electPath.electInd); + int HVLine=getHVline(**hvIdMapping,Identifier(electPath.cellID),electPath.electInd); if(HVLine<0) { msg(MSG::ERROR) << "No HVline for cell "<<electPath.cellID<< endmsg; } else { @@ -340,7 +350,11 @@ StatusCode LArHVPathologyDbAlg::registerCondObjects() return sc; } -std::vector<unsigned int> LArHVPathologyDbAlg::getElectInd(const Identifier & id,unsigned int module, unsigned int line) +std::vector<unsigned int> +LArHVPathologyDbAlg::getElectInd(const LArHVIdMapping& hvIdMapping, + const Identifier & id, + unsigned int module, + unsigned int line) { std::vector<unsigned int> list; @@ -356,7 +370,7 @@ std::vector<unsigned int> LArHVPathologyDbAlg::getElectInd(const Identifier & id for (unsigned int i=0;i<nelec;i++) { const EMBHVElectrode& electrode = cell->getElectrode(i); for (unsigned int igap=0;igap<2;igap++) { - if (electrode.hvLineNo(igap)==HVline) { + if (electrode.hvLineNo(igap, &hvIdMapping)==HVline) { list.push_back(2*i+igap); } } @@ -371,7 +385,7 @@ std::vector<unsigned int> LArHVPathologyDbAlg::getElectInd(const Identifier & id for (unsigned int i=0;i<nelec;i++) { const EMECHVElectrode& electrode = cell->getElectrode(i); for (unsigned int igap=0;igap<2;igap++) { - if (electrode.hvLineNo(igap)==HVline) { + if (electrode.hvLineNo(igap, &hvIdMapping)==HVline) { list.push_back(2*i+igap); } } @@ -384,7 +398,7 @@ std::vector<unsigned int> LArHVPathologyDbAlg::getElectInd(const Identifier & id const EMBCellConstLink cell = embElement->getEMBCell(); const EMBPresamplerHVModule& hvmodule = cell->getPresamplerHVModule (); for (unsigned int igap=0;igap<2;igap++) { - if (hvmodule.hvLineNo(igap)==HVline) { + if (hvmodule.hvLineNo(igap, &hvIdMapping)==HVline) { list.push_back(igap); } } @@ -396,7 +410,7 @@ std::vector<unsigned int> LArHVPathologyDbAlg::getElectInd(const Identifier & id const EMECCellConstLink cell = emecElement->getEMECCell(); const EMECPresamplerHVModule& hvmodule = cell->getPresamplerHVModule (); for (unsigned int igap=0;igap<2;igap++) { - if (hvmodule.hvLineNo(igap)==HVline) { + if (hvmodule.hvLineNo(igap, &hvIdMapping)==HVline) { list.push_back(igap); } } @@ -410,7 +424,7 @@ std::vector<unsigned int> LArHVPathologyDbAlg::getElectInd(const Identifier & id unsigned int nsubgaps = cell->getNumSubgaps(); for (unsigned int i=0;i<nsubgaps;i++) { const HECHVSubgap& subgap = cell->getSubgap(i); - if (subgap.hvLineNo()==HVline) { + if (subgap.hvLineNo(&hvIdMapping)==HVline) { list.push_back(i); } } @@ -424,7 +438,7 @@ std::vector<unsigned int> LArHVPathologyDbAlg::getElectInd(const Identifier & id for (unsigned int i=0;i<nlines;i++) { const FCALHVLine* line2 = tile->getHVLine(i); if(line2) { - if (line2->hvLineNo()==HVline) { + if (line2->hvLineNo(&hvIdMapping)==HVline) { list.push_back(i); } } @@ -436,7 +450,9 @@ std::vector<unsigned int> LArHVPathologyDbAlg::getElectInd(const Identifier & id } -int LArHVPathologyDbAlg::getHVline(const Identifier & id, short unsigned int ElectInd) +int LArHVPathologyDbAlg::getHVline(const LArHVIdMapping& hvIdMapping, + const Identifier & id, + short unsigned int ElectInd) { unsigned int igap, ielec; @@ -453,7 +469,7 @@ int LArHVPathologyDbAlg::getHVline(const Identifier & id, short unsigned int Ele msg(MSG::ERROR) << "Wrong electrode number " << ielec << " for cell "<< id.get_identifier32().get_compact() <<endmsg; return -1; } else { - return cell->getElectrode(ielec).hvLineNo(igap); + return cell->getElectrode(ielec).hvLineNo(igap, &hvIdMapping); } } } @@ -468,7 +484,7 @@ int LArHVPathologyDbAlg::getHVline(const Identifier & id, short unsigned int Ele msg(MSG::ERROR) << "Wrong electrode number " << ielec << " for cell "<< id.get_identifier32().get_compact() <<endmsg; return -1; } else { - return cell->getElectrode(ielec).hvLineNo(igap); + return cell->getElectrode(ielec).hvLineNo(igap, &hvIdMapping); } } } @@ -481,7 +497,7 @@ int LArHVPathologyDbAlg::getHVline(const Identifier & id, short unsigned int Ele msg(MSG::ERROR) << "Wrong igap "<<ElectInd<<" for EMBPS cell "<<id.get_identifier32().get_compact() <<endmsg; return -1; } else { - return hvmodule.hvLineNo(ElectInd); + return hvmodule.hvLineNo(ElectInd, &hvIdMapping); } } } @@ -494,7 +510,7 @@ int LArHVPathologyDbAlg::getHVline(const Identifier & id, short unsigned int Ele msg(MSG::ERROR) << "Wrong igap "<<ElectInd<<" for EMECPS cell "<<id.get_identifier32().get_compact() <<endmsg; return -1; } else { - return hvmodule.hvLineNo(ElectInd); + return hvmodule.hvLineNo(ElectInd, &hvIdMapping); } } } @@ -508,7 +524,7 @@ int LArHVPathologyDbAlg::getHVline(const Identifier & id, short unsigned int Ele msg(MSG::ERROR) << "Wrong igap "<<ElectInd<<" for HEC cell "<<id.get_identifier32().get_compact() <<endmsg; return -1; } else { - return cell->getSubgap(ElectInd).hvLineNo(); + return cell->getSubgap(ElectInd).hvLineNo(&hvIdMapping); } } } @@ -523,7 +539,7 @@ int LArHVPathologyDbAlg::getHVline(const Identifier & id, short unsigned int Ele } else { const FCALHVLine* line2 = tile->getHVLine(ElectInd); if(line2) { - return line2->hvLineNo(); + return line2->hvLineNo(&hvIdMapping); } else { msg(MSG::ERROR) << "Do not have HVLine for "<<ElectInd<<" for FCAL cell "<<id.get_identifier32().get_compact() <<endmsg; return -1; diff --git a/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.h b/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.h index 043209796780498ba579176cc1a8e2d40327d39c..2446378512cf3d3dd34d108a3b5babe6c2f8267e 100644 --- a/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.h +++ b/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.h @@ -1,11 +1,13 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARCONDUTILS_LARHVPATHOLOGYDBALG_H #define LARCONDUTILS_LARHVPATHOLOGYDBALG_H #include "AthenaBaseComps/AthAlgorithm.h" +#include "LArRecConditions/LArHVIdMapping.h" +#include "StoreGate/ReadCondHandleKey.h" #include "GaudiKernel/ToolHandle.h" class IIOVRegistrationSvc; @@ -31,11 +33,13 @@ class LArHVPathologyDbAlg : public AthAlgorithm StatusCode stop(); private: - StatusCode createCondObjects(); - StatusCode printCondObjects(); + StatusCode createCondObjects (const EventContext& ctx); + StatusCode printCondObjects (const EventContext& ctx); StatusCode registerCondObjects(); - std::vector<unsigned int> getElectInd(const Identifier& id, unsigned int module, unsigned int line); - int getHVline(const Identifier& id, short unsigned int ElectInd); + std::vector<unsigned int> getElectInd(const LArHVIdMapping& hvIdMapping, + const Identifier& id, unsigned int module, unsigned int line); + int getHVline(const LArHVIdMapping& hvIdMapping, + const Identifier& id, short unsigned int ElectInd); BooleanProperty m_writeCondObjs; StringProperty m_inpFile; @@ -57,6 +61,8 @@ class LArHVPathologyDbAlg : public AthAlgorithm const LArFCAL_ID* m_larfcal_id; const LArOnlineID* m_laronline_id; + SG::ReadCondHandleKey<LArHVIdMapping> m_hvCablingKey + {this, "LArHVIdMapping", "LArHVIdMap", "SG key for HV ID mapping"}; }; #endif diff --git a/LArCalorimeter/LArDigitization/python/LArDigitizationConfigNew.py b/LArCalorimeter/LArDigitization/python/LArDigitizationConfigNew.py index 5ecee41f17d24b1aea95221ef2f88262cd254e19..fdb15f982ee169983f4d0ce3ddecad3bf73d0867 100644 --- a/LArCalorimeter/LArDigitization/python/LArDigitizationConfigNew.py +++ b/LArCalorimeter/LArDigitization/python/LArDigitizationConfigNew.py @@ -227,9 +227,7 @@ def LArTriggerDigitizationBasicCfg(flags, **kwargs): acc.merge(CaloTriggerTowerCfg(flags)) kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise) - if not flags.Digitization.DoXingByXingPileUp: - if flags.Digitization.Pileup: - kwargs.setdefault("PileUp", True) + kwargs.setdefault("PileUp", flags.Digitization.Pileup) if flags.Digitization.PileUpPremixing: kwargs.setdefault("EmTTL1ContainerName", flags.Overlay.BkgPrefix + "LArTTL1EM") kwargs.setdefault("HadTTL1ContainerName", flags.Overlay.BkgPrefix + "LArTTL1HAD") diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/AccMap.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/AccMap.cxx index 479ce1c36b02e631ce48851d4fa2c9c64bcd367c..1f4e0fdc8aa129a68feda511820f6a67926daaeb 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/AccMap.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/AccMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "AccMap.h" @@ -43,7 +43,6 @@ AccMap::AccMap() //fileLocation=larLocation+"/calo_data/"+filename; fileLocation=larLocation+"/"+filename; #endif - // std::cout << " try to open map " << fileLocation << std::endl; CurrMap* cm = new CurrMap(fileLocation,xnorm); int code=10*ifold+iregion; m_theMap[code]=cm; @@ -66,7 +65,6 @@ AccMap::AccMap() //fileLocation=larLocation+"/calo_data/"+filename; fileLocation=larLocation+"/"+filename; #endif - // std::cout << " try to open map " << fileLocation << std::endl; CurrMap* cm = new CurrMap(fileLocation,xnorm); int code=10*(20+istr)+iregion; m_theMap[code]=cm; @@ -98,7 +96,6 @@ CurrMap* AccMap::GetMap(int ifold, int region, int sampling, int eta) const CurrMap* AccMap::GetMap(int ifold, int ielecregion) const { const int code=10*ifold+ielecregion; - // std::cout << " code is " << code << std::endl; const auto mapIter = m_theMap.find(code); if (mapIter != m_theMap.end()) return mapIter->second; diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/CurrMap.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/CurrMap.cxx index 8279a740dc654e7f042d83b6a188c5c58f73d079..db032a17977447c1335876766fbdd998ff0c7665 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/CurrMap.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/CurrMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "CurrMap.h" @@ -39,8 +39,6 @@ CurrMap::CurrMap(std::string filename,double xnorm) if(m_nx>0 && m_ny>0 && m_nx<10000 && m_ny<10000) {//coverity issue. This is a tainted variable protection, 10000 can be changed if required. m_dx = (m_xmax-m_xmin)/((float) m_nx); m_dy = (m_ymax-m_ymin)/((float) m_ny); - //std::cout << " nx,xmin,xmax,ny,ymin,ymax " << m_nx << " " << m_xmin << " " << m_xmax << " " - // << m_ny << " " << m_ymin << " " << m_ymax << std::endl; m_gap = new float[m_nx*m_ny]; m_curr0 = new float[m_nx*m_ny]; @@ -66,7 +64,6 @@ CurrMap::CurrMap(std::string filename,double xnorm) m_curr0[iy*m_nx+ix]=cur1/m_norm; m_curr1[iy*m_nx+ix]=cur2/m_norm; m_curr2[iy*m_nx+ix]=cur3/m_norm; - // std::cout << "read " << ix << " " << iy << " " << m_curr0[iy*m_nx+ix] << std::endl; } } } diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/LArBarrelCalculator.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/LArBarrelCalculator.cxx index 9e763dc55bc15b45934a5368a3943c24c6c6c861..e693994b06ca3a40420c00f28ed50cda9b6fa8eb 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/LArBarrelCalculator.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/LArBarrelCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // The Cell Identifier for the EM Barrel readout cells @@ -468,16 +468,9 @@ G4bool LArBarrelCalculator::Process(const G4Step* step, std::vector<LArHitData>& // HV extrapolation double current; double hv=m_hv[ipm][ielec][ieta][iside]; - // std::cout << " etaBin,phiBin " << etaBin << " " << phiBin << std::endl; - // std::cout << " ipm,ielec,ieta,iside " << ipm << " " << ielec << " " << ieta - // << " " << iside << std::endl; - // std::cout << " hv " << hv << std::endl; - // std::cout << " current0,current1,current2 " << current0 << " " << current1 - // << " " << current2 << std::endl; if (hv>1995.) current=current0; else if (hv>5.) current=ScaleHV(hv,current0,current1,current2); else current=0.; - // std::cout << " current " << current << std::endl; // extrapolation for non nominal gap (allows to include sagging effect) // i ~ (gap/gap2)**1.3 @@ -699,6 +692,7 @@ void LArBarrelCalculator::InitHV() const LArHVManager *manager = nullptr; if (pDetStore->retrieve(manager)==StatusCode::SUCCESS) { const EMBHVManager& hvManager=manager->getEMBHVManager(); + const EMBHVManager::EMBHVData hvdata = hvManager.getData(); ATH_MSG_INFO(" got HV Manager "); // loop over HV modules for (unsigned int iSide=0;iSide<2;iSide++) { @@ -710,7 +704,7 @@ void LArBarrelCalculator::InitHV() const EMBHVElectrode& electrode = hvMod.getElectrode(ielec); unsigned jElec = ielec+32*iSector+64*iPhi; for (unsigned int iGap=0;iGap<2;iGap++) { - double hv = electrode.voltage(iGap); + double hv = hvdata.voltage (electrode, iGap); ATH_MSG_DEBUG(" iSide,jElec,iEta,iGap,hv " << iSide << " " << jElec << " " << iEta << " " << iGap << " " << hv); if (hv>-999.) m_hv[iSide][jElec][iEta][iGap] = hv; } diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/LArCoudeAbsorbers.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/LArCoudeAbsorbers.cxx index 214e155fe6151ca23da0e1f8e458f19f0b6a930d..03d0946776798c3745be91d676f96ab5de8d5b0b 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/LArCoudeAbsorbers.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/LArCoudeAbsorbers.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArCoudeAbsorbers.h" @@ -36,19 +36,11 @@ LArCoudeAbsorbers::LArCoudeAbsorbers(std::string strDetector) } m_filled=false; - // std::cout << " *** List of Fold Absorbers " << std::endl; for (int stackid=0; stackid<15; stackid++) { for (int cellid=0; cellid<1024; cellid++) { m_xcent[cellid][stackid] = XCentCoude(stackid,cellid); m_ycent[cellid][stackid] = YCentCoude(stackid,cellid); m_phirot[cellid][stackid] = PhiRot(stackid,cellid); - // std::cout << "cell,stack,x,y,phirot " - // << cellid << " " - // << stackid << " " - // << m_xcent[cellid][stackid] << " " - // << m_ycent[cellid][stackid] << " " - // << m_phirot[cellid][stackid] - // <<std::endl; } } m_filled=true; diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/LArCoudeElectrodes.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/LArCoudeElectrodes.cxx index 01b24c6833f8a736c986f668e663faeb5647f19d..7e25af5ef357f2ed154ce2f08edfd16a9d38c16a 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/LArCoudeElectrodes.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/LArCoudeElectrodes.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArCoudeElectrodes.h" @@ -35,19 +35,11 @@ LArCoudeElectrodes::LArCoudeElectrodes(std::string strDetector) } } m_filled=false; - // std::cout << " *** List of fold electrodes " << std::endl; for (int stackid=0; stackid<15; stackid++) { for (int cellid=0; cellid<1024; cellid++) { m_xcent[cellid][stackid] = XCentCoude(stackid,cellid); m_ycent[cellid][stackid] = YCentCoude(stackid,cellid); m_phirot[cellid][stackid] = PhiRot(stackid,cellid); - // std::cout << "cell,stack,x,y,phirot " - // << cellid << " " - // << stackid << " " - // << m_xcent[cellid][stackid] << " " - // << m_ycent[cellid][stackid] << " " - // << m_phirot[cellid][stackid] - // <<std::endl; } } diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/LArStraightAbsorbers.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/LArStraightAbsorbers.cxx index 56db63f5ab60383d0322dfdea69c24b8aa9bb6b3..484ddd7ac8d2c8fa611a74957b890636b7971912 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/LArStraightAbsorbers.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/LArStraightAbsorbers.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArStraightAbsorbers.h" @@ -36,7 +36,6 @@ LArStraightAbsorbers::LArStraightAbsorbers(std::string strDetector) strDetector+"::LAr::EMB::ThinAbs::Straight"); } m_filled=false; - // std::cout << " *** List of Straight absorbers " << std::endl; for (int stackid=0; stackid<14; stackid++) { for (int cellid=0; cellid<1024; cellid++) { m_xcent[cellid][stackid] = XCentAbs(stackid,cellid); @@ -45,15 +44,6 @@ LArStraightAbsorbers::LArStraightAbsorbers(std::string strDetector) m_cosu[cellid][stackid] = cos(slant); m_sinu[cellid][stackid] = sin(slant); m_halflength[cellid][stackid] = HalfLength(stackid,cellid); - // std::cout << "cell,stack,x,y,slant,HalfL " - // << cellid << " " - // << stackid << " " - // << m_xcent[cellid][stackid] << " " - // << m_ycent[cellid][stackid] << " " - // << slant << " " - // << m_halflength[cellid][stackid] - // <<std::endl; - } } m_filled=true; diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/LArStraightElectrodes.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/LArStraightElectrodes.cxx index b55255902d57e430fb30dc214e379016c743e210..a7f5285040985b5f67d8e281b83b7a07b49ccf04 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/LArStraightElectrodes.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/LArStraightElectrodes.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArStraightElectrodes.h" @@ -34,7 +34,6 @@ LArStraightElectrodes::LArStraightElectrodes(std::string strDetector) s_theElectrodes=new PhysicalVolumeAccessor(strDetector+"::LAr::EMB::STAC", strDetector+"::LAr::EMB::Electrode::Straight"); } - // std::cout << "*** List of StraightElectrodes " << s_theElectrodes << std::endl; m_filled=false; for (int stackid=0; stackid<14; stackid++) { for (int cellid=0; cellid<1024; cellid++) { @@ -44,14 +43,6 @@ LArStraightElectrodes::LArStraightElectrodes(std::string strDetector) m_cosu[cellid][stackid] = cos(slant); m_sinu[cellid][stackid] = sin(slant); m_halflength[cellid][stackid] = HalfLength(stackid,cellid); - // std::cout << "cell,stack,x,y,slant,HalfL " - // << cellid << " " - // << stackid << " " - // << m_xcent[cellid][stackid] << " " - // << m_ycent[cellid][stackid] << " " - // << slant << " " - // << m_halflength[cellid][stackid] - // <<std::endl; } } m_filled=true; diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/MapEta.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/MapEta.cxx index e66cb189387029fb06906ba14634760a9d78d71c..f62105b1cc6e075d1621ad8e0027e6f37371fbbb 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/MapEta.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/MapEta.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "MapEta.h" @@ -70,7 +70,6 @@ void MapEta::Initialize(int isampling) { in>>m_nx>>m_xmin>>m_xmax>>m_ny>>m_ymin>>m_ymax; if(m_nx>0 && m_ny>0 && m_nx<10000 && m_ny<10000){//coverity issue. This is a tainted variable protection, 10000 can be changed if required. - //std::cout<<"nx"<<";"<<"ny="<<m_nx<<";"<<m_ny<<std::endl; m_deltax=(m_xmax-m_xmin)/((float) m_nx); m_deltay=(m_ymax-m_ymin)/((float) m_ny); // what is written as xmax in the map is x of last point + delta x diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/PhysicalVolumeAccessor.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/PhysicalVolumeAccessor.cxx index 41a9f28d524433e890678d1090f16a047ed736f0..621e3c05a6cef5bf9bff63e779002c5d9d8342fd 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/PhysicalVolumeAccessor.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/PhysicalVolumeAccessor.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "PhysicalVolumeAccessor.h" @@ -16,8 +16,6 @@ G4LogicalVolume* PhysicalVolumeAccessor::GetLV(std::string name) if (name==lname) return (lvs->operator[](i)); } - // std::cout<<"PhysicalVolumeAccessor::GetLV Warning!!! Volume "<<name - // <<" not found!!! returning nullptr"<<std::endl; return nullptr; } @@ -48,8 +46,6 @@ const G4VPhysicalVolume* PhysicalVolumeAccessor::GetPhysicalVolume(int icopy) co return physVolIter->second; else { - // std::cout<<"Physical Volume copy "<<icopy<<" not found in" - // <<m_theLogicalVolume->GetName()<<"!!! return nullptr"<<std::endl; return nullptr; } } diff --git a/LArCalorimeter/LArG4/LArG4EC/src/EnergyCalculator.cc b/LArCalorimeter/LArG4/LArG4EC/src/EnergyCalculator.cc index 416f9b29703687eca07ef8e238af823149ba0940..591dd6675f1b3b7fbeb3622d0abd1ef79632bbe9 100644 --- a/LArCalorimeter/LArG4/LArG4EC/src/EnergyCalculator.cc +++ b/LArCalorimeter/LArG4/LArG4EC/src/EnergyCalculator.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // EnergyCalculator @@ -318,7 +318,6 @@ StatusCode EnergyCalculator::initialize() const std::string A0 = A0STR.str(); const std::string colName = "ZIW" + A0; ziw[i] = (*emecSamplingSep)[0]->getDouble(colName)*CLHEP::cm; - // cout<<"i,ziw= "<<i<<" "<<ziw[i]<<endl; } for(int i = 0; i < 44; i ++){ std::ostringstream A0STR; @@ -326,7 +325,6 @@ StatusCode EnergyCalculator::initialize() const std::string A0 = A0STR.str(); const std::string colName = "ZSEP12" + A0; zsep12[i] = (*emecSamplingSep)[0]->getDouble(colName)*CLHEP::cm; - // cout<<"i,zsep12= "<<i<<" "<<zsep12[i]<<endl; } for(int i = 0; i < 22; i ++){ std::ostringstream A0STR; @@ -334,7 +332,6 @@ StatusCode EnergyCalculator::initialize() const std::string A0 = A0STR.str(); const std::string colName = "ZSEP23" + A0; zsep23[i] = (*emecSamplingSep)[0]->getDouble(colName)*CLHEP::cm; - // cout<<"i,zsep23= "<<i<<" "<<zsep23[i]<<endl; } m_ElectrodeFanHalfThickness = LArWheelCalculator::GetFanHalfThickness(LArG4::InnerElectrodWheel); @@ -544,9 +541,6 @@ G4double EnergyCalculator::CalculateChargeCollection( G4double Barret_PhiStart) const // **************************************************************************** { - // std::cout<<"*** CalculateChargeCollection is called, a_energy="<<a_energy - // <<std::endl; - ATH_MSG_DEBUG("starting CalculateChargeCollection:" << "a_energy = " << a_energy << ", startPoint = " << MSG_VECTOR(a_startPoint) @@ -892,30 +886,22 @@ G4bool EnergyCalculator::FindIdentifier_Default( if(pinLocal.z() > lwc()->GetWheelThickness()-zEndofC9e19 && pinLocal.z() <= lwc()->GetWheelThickness()-zSepofC9e18 && pinLocal.perp() < r0aofC9e18 ) { - // G4cout<<" Skip of Hit in aC9e18"<<" r="<<pinLocal.perp()<< - // " zinWheel="<<pinLocal.z()<<G4endl; validhit=false; } if(pinLocal.z() > lwc()->GetWheelThickness()-zSepofC9e18 && pinLocal.perp() < r0cofC9e18+txofC9e18*(pinLocal.z()-(lwc()->GetWheelThickness()-zSepofC9e18))){ - // G4cout<<" Skip of Hit in cC9e18"<<" r="<<pinLocal.perp()<< - // " zinWheel="<<pinLocal.z()<<G4endl; validhit=false; } break; case 19: if(pinLocal.z() > lwc()->GetWheelThickness()-zEndofC9e19) { - // G4cout<<" Skip of Hit in z crack C9e19"<<" r="<<pinLocal.perp()<< - // " zinWheel="<<pinLocal.z()<<G4endl; validhit=false; } if(DistanceToEtaLine( pforcell, eta_mid) < DistMinatEdgeinCrack) { - // G4cout<<" Skip of Hit in eta crack of C9e19"<< - // " r="<<pinLocal.perp()<< " zinWheel="<<pinLocal.z()<<G4endl; validhit=false; } break; @@ -998,18 +984,11 @@ G4bool EnergyCalculator::FindIdentifier_Default( if(cnew >= 0 && cnew <= 10 ){ - /* G4cout<<" edep in HV bus: old:comp="<<c+1<<" sampl="<<sampling<< - " eta="<<etaBin<<" reg="<<region - <<G4endl;*/ - c=cnew; compartment = c + 1; sampling = s_geometry[c].sampling; region = s_geometry[c].region; etaBin = G4int(eta * s_geometry[c].etaScale - s_geometry[c].etaOffset); - /* G4cout<<" edep in HV bus: new:comp="<<c+1<<" sampl="<<sampling<< - " eta="<<etaBin<<" reg="<<region - <<G4endl;*/ } //=== end of edge and HV bus treatment================ diff --git a/LArCalorimeter/LArG4/LArG4EC/src/GetCurrent1.cc b/LArCalorimeter/LArG4/LArG4EC/src/GetCurrent1.cc index f668a8e15b57ed66523bb0a1f62ed31f36c40b43..dbef82c228787cc386f92af324d5bbb7391cd4f0 100644 --- a/LArCalorimeter/LArG4/LArG4EC/src/GetCurrent1.cc +++ b/LArCalorimeter/LArG4/LArG4EC/src/GetCurrent1.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include <cassert> @@ -37,7 +37,6 @@ G4int LArG4::EC::EnergyCalculator::_getIRlayerA(G4double fold_angle_deg) const { break; } } - //std::cout << "\tirlayer: " << irlayer << ", R " << R << std::endl; assert(irlayer >= 0 && irlayer < n_layers - 1); return irlayer; } @@ -69,7 +68,6 @@ G4double LArG4::EC::EnergyCalculator::_interpolateCurrentSubStep1(G4double rfor const G4double a_e = elc()->AmplitudeOfSurface(Pe, side_dte, Pe_fan); const G4double a_a = lwc()->AmplitudeOfSurface(Pa, side_dta, Pa_fan); - //std::cout << "\ta_e: " << a_e << ", a_a: " << a_a << std::endl; const G4double x_e = fabs(Pe.x() - a_e); const G4double x_a = fabs(Pa.x() - a_a); @@ -87,7 +85,6 @@ G4double LArG4::EC::EnergyCalculator::_interpolateCurrentSubStep1(G4double rfor // get relative y coordinate G4double yratio = ((side > 0)? x_e: x_a) / (x_e + x_a); - //std::cout << "\tyratio: " << yratio << std::endl; if(yratio <= 0.) yratio = 0.00001; // pull the point into the gap if it wouldn't be there; else if(yratio >= 1.) yratio = 0.99999; // this may happen bec.G4 does not grantee that the full @@ -100,11 +97,9 @@ G4double LArG4::EC::EnergyCalculator::_interpolateCurrentSubStep1(G4double rfor WheelGeometry wg; SetHalfWave(shift + vmap[2], wg); - //std::cout << "\tPointFoldMapArea: " << PointFoldMapArea << ", SetHalfWave(" << shift + vmap[2] << ")" << std::endl; G4double Ylimits[4]; SetYlimitsofPhigapinFieldMap(irlayer, wg, Ylimits); //on the lower layer - //std::cout << "\tFieldmap limits: " << Ylimits[0] << " " << Ylimits[1] << " " << Ylimits[2] << " " << Ylimits[3] << std::endl; G4double pos_low = 0.; if(side < 0) pos_low = Ylimits[0] * (1. - yratio) + Ylimits[1] * yratio; else if(side > 0) pos_low = Ylimits[2] * (1. - yratio) + Ylimits[3] * yratio; @@ -125,32 +120,6 @@ G4double LArG4::EC::EnergyCalculator::_interpolateCurrentSubStep1(G4double rfor G4double LArG4::EC::EnergyCalculator::GetCurrent1(const G4ThreeVector &P1, const G4ThreeVector &P2, G4double edep) const { - /* - FILE *F = fopen("test1.dat", "w"); - if(F == 0) abort(); - G4ThreeVector a(0., 1200., 0.); - for(double z = 0; z <= WheelThickness; z += 0.1){ - fprintf(F, "%f", z); - // for(double x = -20.; x <= 20.; x += 1.){ - // a[0] = x; - a[2] = z; - // std::cout << "(" << z << ", " << x << ") " << DistanceToTheNeutralFibre(a) << std::endl; - for(int s = -1; s <= 1; s ++){ - // std::cout << "\t" << s << " " << elc()->AmplitudeOfSurface(a, s) << std::endl; - fprintf(F, " %f", elc()->AmplitudeOfSurface(a, s)); - } - // } - fprintf(F, "\n"); - } - fclose(F); - - abort(); - */ - - //std::cout << "GetCurrent1 -------------------------------------------------------------------------" << std::endl; - //std::cout << "input: (" << P1.x() << ", " << P1.y() << ", " << P1.z() << "), (" - // << P2.x() << ", " << P2.y() << ", " << P2.z() << "), " << edep << std::endl; - G4int gaperr = 0; const std::pair<G4int, G4int> gap2 = lwc()->GetPhiGapAndSide(P2); @@ -177,19 +146,11 @@ G4double LArG4::EC::EnergyCalculator::GetCurrent1(const G4ThreeVector &P1, cons G4double current = 0.; //current to be returned const G4double step_current = edep / nofstep / s_AverageCurrent; // base current for each step - //std::cout << "gap1: " << gap1.first << ", " << gap1.second - // << "; gap2: " << gap2.first << ", " << gap2.second << std::endl; - //std::cout << "input: (" << P1.x() << ", " << P1.y() << ", " << P1.z() << "), (" - // << P2.x() << ", " << P2.y() << ", " << P2.z() << "), " << edep << std::endl; - - const G4double inv_nofstep = 1. / static_cast<double>(nofstep); for(G4int i = 0; i < nofstep; ++ i){ G4double ds = (i + 0.5) * inv_nofstep; G4ThreeVector Pe = P1 * (1. - ds) + P2 * ds; G4ThreeVector Pa = Pe; - //std::cout << "step " << i << std::endl; - //std::cout << "\tpoint (" << Pe.x() << ", " << Pe.y() << ", " << Pe.z() << ")" << std::endl; SetFoldArea(Pe.z(), fa); // set fold type SetHalfWave(Pe.z(), wg); // set halfwave parameters for substep @@ -206,16 +167,8 @@ G4double LArG4::EC::EnergyCalculator::GetCurrent1(const G4ThreeVector &P1, cons const G4double yshift_on_map = rforalpha*M_PI/lwc()->GetNumberOfFans()-(FanAbsThickness() + FanEleThickness() )/2.; const G4double yshift_on_wheel=sqrt(rvstep2)*M_PI/lwc()->GetNumberOfFans()-(FanAbsThickness() + FanEleThickness() )/2.; const G4double cylgapcorr=yshift_on_wheel/yshift_on_map; // scale difference between plane and cylindrical surface - /* - std::cout<< " GetCurrent1**Nabs="<<lwc()->GetNumberOfFans()<<" absthick="<<FanAbsThickness<<" elethick="<<FanEleThickness - <<" cylgapcorr-1="<<cylgapcorr-1 - <<" ZinHalfWave="<<ZinHalfWave<<" HalfWaveNumber="<<HalfWaveNumber - <<std::endl; - */ //<<<JT - //std::cout << "\tvmap: (" << vmap[0] << ", " << vmap[1] << ", " << vmap[2] << ")" << std::endl; - const G4double HV_value = m_HVHelper->GetVoltage(Pe, gap1); int Pe_fan = 0; @@ -223,13 +176,9 @@ G4double LArG4::EC::EnergyCalculator::GetCurrent1(const G4ThreeVector &P1, cons //G4int side = signof(dte); int Pa_fan = 0; const G4double dta = lwc()->DistanceToTheNearestFan(Pa, Pa_fan); - //std::cout << "\tdte: " << dte << ", dta: " << dta << std::endl; - //std::cout << "\tPe: (" << Pe.x() << ", " << Pe.y() << ", " << Pe.z() << ")" << std::endl; - //std::cout << "\tPa: (" << Pa.x() << ", " << Pa.y() << ", " << Pa.z() << ")" << std::endl; const G4double suppression_range = ElectrodeFanHalfThickness() + CHC_Esr(); if(fabs(dte) < suppression_range){ - // std::cout << " S"; continue; //skip point if too close to the electrode } @@ -237,7 +186,6 @@ G4double LArG4::EC::EnergyCalculator::GetCurrent1(const G4ThreeVector &P1, cons + fabs(dta) - lwc()->GetFanHalfThickness(); //correction to electrode suppression not to G4double suppression = agap / ( agap - CHC_Esr() ); // change av. signal in the gap if(suppression < 0.) suppression = 1.; - //std::cout << "\tagap: " << agap << ", suppression: " << suppression << std::endl; const G4double cur = _interpolateCurrentSubStep1( rforalpha, vmap, Pe, signof(dte), Pe_fan, Pa, signof(dta), Pa_fan, fa, gaperr ); //(25-05-2005) new current calculation: edep*1/U*IonReco*E*v_drift @@ -263,7 +211,6 @@ G4double LArG4::EC::EnergyCalculator::GetCurrent1(const G4ThreeVector &P1, cons current += substep_current; // } } // end of loop for substeps - //std::cout << std::endl; if(current < 0.){ gaperr -= 1000; current = 0.; @@ -282,7 +229,6 @@ G4double LArG4::EC::EnergyCalculator::GetCurrent1(const G4ThreeVector &P1, cons } #endif - //std::cout<<"GetCurrent1::edep="<<edep<<" current="<<current <<" gaperr="<<gaperr<<std::endl; return current; } diff --git a/LArCalorimeter/LArG4/LArG4EC/src/HVHelper.cc b/LArCalorimeter/LArG4/LArG4EC/src/HVHelper.cc index 9f7306435cfacfde3fa19d4ba282955f67a740cc..854fd9ff2bf1e0b1b84648256ef3782679f05093 100644 --- a/LArCalorimeter/LArG4/LArG4EC/src/HVHelper.cc +++ b/LArCalorimeter/LArG4/LArG4EC/src/HVHelper.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArHV/LArHVManager.h" @@ -211,6 +211,7 @@ void HVHelper::GetMapFromDB(void) const EMECHVManager& hvManager = manager->getEMECHVManager( isInner? EMECHVModule::INNER: EMECHVModule::OUTER ); + const EMECHVManager::EMECHVData hvdata = hvManager.getData(); ATH_MSG_INFO("got LAr HV Manager for " << (isInner? "inner": "outer") << " wheel"); const EMECHVDescriptor& dsc = hvManager.getDescriptor(); @@ -244,7 +245,7 @@ void HVHelper::GetMapFromDB(void) if(jElec >= nFans) jElec -= nFans; } for(unsigned int iGap = 0; iGap < 2; ++ iGap){ - double hv = electrode.voltage(iGap); + double hv = hvdata.voltage (electrode, iGap); ATH_MSG_DEBUG("Side, Eta, Elec, Gap, hv " << jSide << " " << jEta << " " << jElec << " " << iGap << " " diff --git a/LArCalorimeter/LArG4/LArG4EC/src/LArEMECChargeCollection.cc b/LArCalorimeter/LArG4/LArG4EC/src/LArEMECChargeCollection.cc index b327e8dcdd11dc8fc12ba80c344d5348cd276500..d2bfcbacb95d82183e775dab3c93b90a2b3a7945 100644 --- a/LArCalorimeter/LArG4/LArG4EC/src/LArEMECChargeCollection.cc +++ b/LArCalorimeter/LArG4/LArG4EC/src/LArEMECChargeCollection.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // LArEMECChargeCollection.cc @@ -98,9 +98,6 @@ void LArG4::EC::EnergyCalculator::CreateArrays(Wheel_Efield_Map &wheel, G4int n){ // *************************************************************************** - // std::cout<<"***CreateArrays wheeltype; n="<<n - // <<std::endl; - wheel.NumberOfRadialLayer = n; wheel.RadiusOfLayers =new G4double [n]; wheel.FoldinAngleOfLayers =new G4double [n]; @@ -526,11 +523,6 @@ void LArG4::EC::EnergyCalculator::LoadFieldMaps(const G4String fname){ ATH_MSG_ERROR("GetFieldMaps Error reading field map"); } - /* if(j<10) G4cout<<" z,y,weight=" - <<ChCollFoldType->FieldMap[Index(ChCollFoldType,i,0,j)]<<" " - <<ChCollFoldType->FieldMap[Index(ChCollFoldType,i,1,j)]<<" " - <<ChCollFoldType->FieldMap[Index(ChCollFoldType,i,2,j)] - <<G4endl; */ } // end of loop(j) on points } @@ -631,11 +623,6 @@ void LArG4::EC::EnergyCalculator::PrepareFieldMap(Wheel_Efield_Map* ChCollWheelT ChCollFoldType->FieldMap[Index(ChCollFoldType,i,0,ipnt)]=z; ChCollFoldType->FieldMap[Index(ChCollFoldType,i,1,ipnt)]=y; ChCollFoldType->FieldMap[Index(ChCollFoldType,i,2,ipnt)]=wx; - - /* if(ipnt<10) - G4cout<<" ilayer="<<i<<" ipnt="<<ipnt<<" weights=" - <<ChCollFoldType->FieldMap[Index(ChCollFoldType,i,2,ipnt)] - <<G4endl;*/ } } // end j loop for points @@ -962,7 +949,6 @@ G4double LArG4::EC::EnergyCalculator::GetCurrent( } } - //std::cout <<"GetCurrent0:: edep="<<edep<<" current="<<current<<" gaperr="<<gaperr<<std::endl; #endif return current; @@ -1142,8 +1128,6 @@ void LArG4::EC::EnergyCalculator::SetFoldArea(G4double zinwheel, FoldArea & fa) void LArG4::EC::EnergyCalculator::SetHalfWave(G4double zinwheel, WheelGeometry & wg) const { // *********************************************************** - // G4cout<<"***SetHalfWave zin="<<zinwheel<<G4endl; - const G4double z = zinwheel - lwc()->GetStraightStartSection(); wg.HalfWaveNumber = int((z+lwc()->GetQuarterWaveLength())/lwc()->GetHalfWaveLength()); wg.ZinHalfWave=z - wg.HalfWaveNumber*lwc()->GetHalfWaveLength(); @@ -1346,10 +1330,8 @@ G4double LArG4::EC::EnergyCalculator::YofSurface(G4double alpha,G4double rho,G4d return wg.SignofSlopeofHalfWave*wg.ZinHalfWave/t+th/s; } - // std::cout<<"*** ERROR1 in YofSURF!!!!"<<std::endl; return 0.; } - //std::cout<<"*** ERROR2 in YofSURF!!!!"<<std::endl; return 0.; } diff --git a/LArCalorimeter/LArG4/LArG4FCAL/CMakeLists.txt b/LArCalorimeter/LArG4/LArG4FCAL/CMakeLists.txt index 6c082c84e29614492a522380a59eb84d384275b3..0a12952cf7a9502139c7c79c9fb42ab86767a99c 100644 --- a/LArCalorimeter/LArG4/LArG4FCAL/CMakeLists.txt +++ b/LArCalorimeter/LArG4/LArG4FCAL/CMakeLists.txt @@ -18,8 +18,8 @@ atlas_add_component( LArG4FCAL src/components/*.cxx PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS} ${XERCESC_INCLUDE_DIRS} ${GEANT4_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES LArG4Code LArReadoutGeometry CaloG4SimLib StoreGateLib SGtests - PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${CORAL_LIBRARIES} ${XERCESC_LIBRARIES} ${GEANT4_LIBRARIES} ${CLHEP_LIBRARIES} GaudiKernel LArG4RunControl PathResolver GeoModelInterfaces RDBAccessSvcLib ) + LINK_LIBRARIES LArG4Code LArReadoutGeometry CaloG4SimLib StoreGateLib SGtests CxxUtils + PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${CORAL_LIBRARIES} ${XERCESC_LIBRARIES} ${GEANT4_LIBRARIES} ${CLHEP_LIBRARIES} GaudiKernel LArG4RunControl PathResolver GeoModelInterfaces RDBAccessSvcLib LArHV ) atlas_install_python_modules( python/*.py ) diff --git a/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalculatorBase.cc b/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalculatorBase.cc index d64d04a97876fc4401b58273e6456bb1fafe1868..7d250e4dad4e769982c540f5633026c2c7883b65 100644 --- a/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalculatorBase.cc +++ b/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalculatorBase.cc @@ -48,7 +48,8 @@ LArFCALCalculatorBase::LArFCALCalculatorBase(const std::string& name, ISvcLocato //m_FCalSampling.verifier().setUpper(3); //Would need to make m_FCalSampling an IntegerProperty for this to work. Overkill? } -StatusCode LArFCALCalculatorBase::initialize() +// Uses not-thread-safe FCALHVManager::getData() +StatusCode LArFCALCalculatorBase::initialize ATLAS_NOT_THREAD_SAFE () { ServiceHandle<StoreGateSvc> detStore ("DetectorStore" ,"LArFCALCalculatorBase"); ATH_CHECK(detStore->retrieve(m_ChannelMap)); @@ -67,6 +68,8 @@ StatusCode LArFCALCalculatorBase::initialize() const FCALDetectorManager* fcalManager=manager->getFcalManager(); m_posModule = fcalManager->getFCAL(FCALModule::Module(m_FCalSampling),FCALModule::POS); m_negModule = fcalManager->getFCAL(FCALModule::Module(m_FCalSampling),FCALModule::NEG); + + m_hvdata = fcalManager->getHVManager().getData(); } } return StatusCode::SUCCESS; @@ -136,9 +139,9 @@ G4bool LArFCALCalculatorBase::Process(const G4Step* a_step, std::vector<LArHitDa FCALTubeConstLink tube=tile->getTube(i); if (tube->getXLocal() == (*t).second.x() && tube->getYLocal()==(*t).second.y()) { const FCALHVLine& line =tube->getHVLine(); - double voltage = line.voltage(); + double voltage = m_hvdata.voltage (line); //double current = line->current(); - bool hvOn = line.hvOn(); + bool hvOn = m_hvdata.hvOn (line); if (!hvOn) hdata[0].energy=0.0; hdata[0].energy *= pow((voltage)/2000.0,0.6); tubeFound=true; diff --git a/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalculatorBase.h b/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalculatorBase.h index 659ea37100b86735e3f3ad5307d723a69cb72863..2a9a987fad0ba6fabbbdf18950258f40a775eb34 100644 --- a/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalculatorBase.h +++ b/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalculatorBase.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // LArFCALCalculator @@ -19,6 +19,8 @@ #include "LArG4Code/LArG4Identifier.h" #include "LArG4Code/LArCalculatorSvcImp.h" #include "LArReadoutGeometry/FCAL_ChannelMap.h" +#include "LArHV/FCALHVManager.h" +#include "CxxUtils/checker_macros.h" #include "globals.hh" #include <stdexcept> class LArG4BirksLaw; @@ -29,7 +31,7 @@ class LArFCALCalculatorBase : public LArCalculatorSvcImp public: // constructor LArFCALCalculatorBase(const std::string& name, ISvcLocator *pSvcLocator); - virtual StatusCode initialize() override; + virtual StatusCode initialize ATLAS_NOT_THREAD_SAFE () override; virtual StatusCode finalize() override; ///////////////////////////////////////////// @@ -58,6 +60,8 @@ class LArFCALCalculatorBase : public LArCalculatorSvcImp G4int m_FCalSampling; LArG4BirksLaw *m_birksLaw; + FCALHVManager::FCALHVData m_hvdata; + LArFCALCalculatorBase (const LArFCALCalculatorBase&); LArFCALCalculatorBase operator= (const LArFCALCalculatorBase&); }; diff --git a/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalibCalculatorBase.cc b/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalibCalculatorBase.cc index 228f307ee57c7e681cb454679447437196162312..bedd89822a825e433ca6cc216e362e71186cc568 100644 --- a/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalibCalculatorBase.cc +++ b/LArCalorimeter/LArG4/LArG4FCAL/src/LArFCALCalibCalculatorBase.cc @@ -193,24 +193,6 @@ namespace LArG4 { << etaIndex << phiIndex; - // std::cout << "LArG4FCAL/LArFCALCalibCalculatorBase: 4/3/" - // <<zSide<<"/" - // <<sampling<<"/" - // <<etaIndex<<"/" - // <<phiIndex<<": " - // << energies[0] << ", " - // << energies[1] << ", " - // << energies[2] << ", " - // << energies[3] - // << ", i=" << i - // << ", j=" << j - // << ", l.x=" << theLocalPoint.x() - // << ", l.y=" << theLocalPoint.y() - // << ", p.x=" << p.x() - // << ", p.y=" << p.y() - // << ", deltaX=" << m_deltaX - // << ", deltaY=" << m_deltaY - // << std::endl; } else { // S.M.: we have a hit which fails the electrode identifier @@ -270,25 +252,6 @@ namespace LArG4 { << etaIndex << phiIndex; - // std::cout << "LArG4FCAL/LArFCALCalibCalculatorBase: 10/4/" - // <<type<<"/" - // <<sampling<<"/" - // <<region<<"/" - // <<etaIndex<<"/" - // <<phiIndex<<": " - // << energies[0] << ", " - // << energies[1] << ", " - // << energies[2] << ", " - // << energies[3] - // << ", i=" << i - // << ", j=" << j - // << ", l.x=" << theLocalPoint.x() - // << ", l.y=" << theLocalPoint.y() - // << ", p.x=" << p.x() - // << ", p.y=" << p.y() - // << ", deltaX=" << m_deltaX - // << ", deltaY=" << m_deltaY - // << std::endl; } return true; diff --git a/LArCalorimeter/LArG4/LArG4HEC/src/LArHECLocalCalculator.cc b/LArCalorimeter/LArG4/LArG4HEC/src/LArHECLocalCalculator.cc index 4d29073571dcb22772c6d89c75916f852af98c0e..dc94a92918234b8fcc5e9df2c55860aead390c1d 100644 --- a/LArCalorimeter/LArG4/LArG4HEC/src/LArHECLocalCalculator.cc +++ b/LArCalorimeter/LArG4/LArG4HEC/src/LArHECLocalCalculator.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArHECLocalCalculator.h" @@ -89,6 +89,5 @@ G4bool LArHECLocalCalculator::Process(const G4Step* a_step, int depthadd, double // Calculate the identifier. hdata[0].id = m_Geometry->CalculateIdentifier( a_step, LArG4::HEC::kLocActive, depthadd, deadzone); -// std::cout<<"LArHECLocalCalculator::Process "<<depthadd<<std::endl; return true; } diff --git a/LArCalorimeter/LArG4/LArG4HEC/src/LArHECWheelCalculator.cc b/LArCalorimeter/LArG4/LArG4HEC/src/LArHECWheelCalculator.cc index e48969f419e07181d506d7b180b7d42c756909f2..ae4e849e4e67b23c3354e65375185963f7a60ef5 100644 --- a/LArCalorimeter/LArG4/LArG4HEC/src/LArHECWheelCalculator.cc +++ b/LArCalorimeter/LArG4/LArG4HEC/src/LArHECWheelCalculator.cc @@ -49,7 +49,8 @@ LArHECWheelCalculator::~LArHECWheelCalculator() if(m_birksLaw) delete m_birksLaw; } -StatusCode LArHECWheelCalculator::initialize() +// not thread safe due to HECHVManager::getData() +StatusCode LArHECWheelCalculator::initialize ATLAS_NOT_THREAD_SAFE () { ATH_MSG_DEBUG("Use the LArHECWheelCalculator for the HEC"); @@ -68,6 +69,7 @@ StatusCode LArHECWheelCalculator::initialize() ATH_CHECK(detStore.retrieve() ); ATH_CHECK(detStore->retrieve(manager)); m_DetectorManager=manager->getHecManager(); + m_hvdata = m_DetectorManager->getHVManager().getData(); } return StatusCode::SUCCESS; @@ -113,7 +115,7 @@ G4bool LArHECWheelCalculator::Process(const G4Step* a_step, std::vector<LArHitDa const HECDetectorRegion *hecRegion=m_DetectorManager->getDetectorRegion(zSide<0? 0: 1, sampling, region); HECCellConstLink cell=hecRegion->getHECCell(eta, phi); const HECHVSubgap& subgap = cell->getSubgap(subgapIndex); - hdata[0].energy *= (pow(subgap.voltage()/1800.0,0.6)); + hdata[0].energy *= (pow(m_hvdata.voltage(subgap)/1800.0,0.6)); } return true; diff --git a/LArCalorimeter/LArG4/LArG4HEC/src/LArHECWheelCalculator.h b/LArCalorimeter/LArG4/LArG4HEC/src/LArHECWheelCalculator.h index 9d017e3d9162aacc2ef8d1f0ef58204f3933bcc8..53956741609cb222169fdff88cdd2bcede7aab9d 100644 --- a/LArCalorimeter/LArG4/LArG4HEC/src/LArHECWheelCalculator.h +++ b/LArCalorimeter/LArG4/LArG4HEC/src/LArHECWheelCalculator.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // LArHECWheelCalculator.hh @@ -8,11 +8,13 @@ // Jan-2008: (M.Fincke) To be used for new Module-Geometry -#ifndef __LArG4HECWheelCalculator_H__ -#define __LArG4HECWheelCalculator_H__ +#ifndef LARG4HEC_LARHECWHEELCALCULATOR_H +#define LARG4HEC_LARHECWHEELCALCULATOR_H #include "LArG4Code/LArG4Identifier.h" #include "LArG4Code/LArCalculatorSvcImp.h" +#include "LArHV/HECHVManager.h" +#include "CxxUtils/checker_macros.h" #include <stdexcept> // Forward declarations. @@ -33,7 +35,7 @@ class LArHECWheelCalculator : virtual public LArCalculatorSvcImp { public: LArHECWheelCalculator(const std::string& name, ISvcLocator * pSvcLocator); - virtual StatusCode initialize() override final; + virtual StatusCode initialize ATLAS_NOT_THREAD_SAFE () override final; virtual StatusCode finalize() override final; ~LArHECWheelCalculator(); ///////////////////////////////////////////// @@ -57,6 +59,8 @@ private: LArG4BirksLaw *m_birksLaw; bool m_doHV; + HECHVManager::HECHVData m_hvdata; + LArHECWheelCalculator (const LArHECWheelCalculator&); LArHECWheelCalculator& operator= (const LArHECWheelCalculator&); }; diff --git a/LArCalorimeter/LArG4/LArG4HEC/src/LocalCalibrationCalculator.cc b/LArCalorimeter/LArG4/LArG4HEC/src/LocalCalibrationCalculator.cc index c50b71729dd8a3c1280ab88cafa3b127fddf65b4..24c73ebab4541f8a8fc114ec11dbb181c68c331b 100644 --- a/LArCalorimeter/LArG4/LArG4HEC/src/LocalCalibrationCalculator.cc +++ b/LArCalorimeter/LArG4/LArG4HEC/src/LocalCalibrationCalculator.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LocalCalibrationCalculator.h" @@ -23,9 +23,6 @@ namespace LArG4 { declareProperty("GeometryCalculator", m_geometryCalculator); declareProperty("GeometryType",m_strgeometryType="ACTIVE"); m_strgeometryType.declareUpdateHandler(&LocalCalibrationCalculator::GeometryTypeUpdateHandler, this); -#ifdef DEBUG_HITS - std::cout << "LArG4::HEC::LocalCalibrationCalculator constructed" << std::endl; -#endif } void LocalCalibrationCalculator::GeometryTypeUpdateHandler(Gaudi::Details::PropertyBase&) @@ -73,15 +70,9 @@ namespace LArG4 { const eCalculatorProcessing process) const { -#ifdef DEBUG_HITS - std::cout << "LArG4::HEC::LocalCalibrationCalculator::Process" << std::endl; -#endif energies.clear(); if ( process == kEnergyAndID || process == kOnlyEnergy ) { -#ifdef DEBUG_HITS - std::cout << " calling SimulationEnergies" << std::endl; -#endif m_energyCalculator.Energies( step, energies ); } else @@ -95,9 +86,6 @@ namespace LArG4 { const G4TouchableHistory* theTouchable = static_cast<const G4TouchableHistory*>(pre_step_point->GetTouchable()); // Volume name G4String hitVolume = theTouchable->GetVolume(0)->GetName(); -#ifdef DEBUG_HITS - std::cout<<"LArHECLocalCalibrationCalculator::Process Volume: "<<hitVolume<<std::endl; -#endif if(hitVolume.contains("::") ) { const int last = hitVolume.last(':'); hitVolume.remove(0,last+1); @@ -121,18 +109,6 @@ namespace LArG4 { } else identifier = LArG4Identifier(); } else identifier = m_geometryCalculator->CalculateIdentifier(step, m_geometryType, 0, 4.*CLHEP::mm); -#ifdef DEBUG_HITS - G4double energy = accumulate(energies.begin(),energies.end(),0.); - std::cout << "LArG4::HEC::LocalCalibrationCalculator::Process" - << " ID=" << std::string(identifier) - << " energy=" << energy - << " energies=(" << energies[0] - << "," << energies[1] - << "," << energies[2] - << "," << energies[3] << ")" - << std::endl; -#endif - // Check for bad result. if ( identifier == LArG4Identifier() ) return false; diff --git a/LArCalorimeter/LArG4/LArG4HEC/src/LocalGeometry.cc b/LArCalorimeter/LArG4/LArG4HEC/src/LocalGeometry.cc index b38d67781f67282e4f71de55e4d1015866fc6ce5..dca57ab71839672618071ec183069ead4c498115 100644 --- a/LArCalorimeter/LArG4/LArG4HEC/src/LocalGeometry.cc +++ b/LArCalorimeter/LArG4/LArG4HEC/src/LocalGeometry.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // LArG4::HEC::LocalGeometry @@ -48,21 +48,16 @@ namespace LArG4 { xh = 4; } - // std::cout<<"binSearch::ly "<<ly<<" depth: "<<depth<<" reg: "<<reg<<std::endl; - // if(ly < m_pads[depth][xl] || ly > m_pads[depth][xh] ) return -1; if(ly < m_pads[depth][xl]) return xl; if(ly > m_pads[depth][xh] ) return xh-1; while( xl < xh - 1 ) { const int ires(xl + (xh - xl)/2); - // G4cout<<"xl: "<<xl<<" xh: "<<xh<<" ires: "<<ires<<" m_pads[depth][ires]: "<< m_pads[depth][ires]<<endl; if (ly == m_pads[depth][ires]) return ires - 1; if (ly < m_pads[depth][ires]) xh = ires; else xl = ires; } - // std::cout<<xl<<std::endl; - return xl; } @@ -72,20 +67,16 @@ namespace LArG4 { int xh(14); // = NUM_ETABIN-1 int ires(0); - // std::cout<<"binSearchAll::ly "<<ly<<" depth: "<<depth<<" regular: "<<regular<<std::endl; - // if(ly < m_pads[depth][xl] || ly > m_pads[depth][xh] ) return -1; if(ly < m_pads[depth][xl]) return xl; if(ly > m_pads[depth][xh] ) return xh-1; while( xl < xh - 1 ) { ires = xl + (xh - xl)/2; - // G4cout<<"xl: "<<xl<<" xh: "<<xh<<" ires: "<<ires<<" m_pads[depth][ires]: "<< m_pads[depth][ires]<<endl; if (ly == m_pads[depth][ires]) return ires - 1; if (ly < m_pads[depth][ires]) xh = ires; else xl = ires; } - // std::cout<<xl<<" "<<m_pads[depth][xl]<<" "<<m_pads[depth][xl+1]<<std::endl; if(regular) { // we should recompute to 0.1 eta binning overall numbering if(xl < 4) { ires = xl; @@ -95,7 +86,6 @@ namespace LArG4 { xl += 4; } } - // std::cout<<"After recomput.: "<<xl<<std::endl; return xl; } @@ -209,9 +199,6 @@ namespace LArG4 { // if(g_type == kLocDead) { if(deadzone == 0.) { // The hitted volume's identier is possible to get by the name of his "mother" volume. - // G4cout <<" hitLogiVolume->GetNoDaughters= " <<hitLogiVolume->GetNoDaughters()<<G4endl; - // G4cout <<"+++++"<<hitLogiVolume->GetDaughter(1)->GetLogicalVolume()->GetMaterial()->GetName()<<G4endl; - // G4cout <<"+++++"<<hitLogiVolume->GetName()<<G4endl; G4String hitVolume=a_step->GetPreStepPoint()->GetPhysicalVolume()->GetName(); @@ -317,9 +304,6 @@ namespace LArG4 { // Check, if we are not in dead zone double distance = deadZone(fabs(locx),locy); if(depthadd < 0 || distance < deadzone) { // we return the dead identifier -#ifdef DEBUG_HEC - std::cout<<" In active copyModule = "<< copyModule<<std::endl; -#endif if(zSide * locx < 0) phiBin = copyModule; else { if(copyModule == 31) phiBin = 0; else phiBin=copyModule+1; @@ -332,10 +316,6 @@ namespace LArG4 { << region+2 << etaBin << phiBin; -#ifdef DEBUG_HEC - std::cout <<"HEC::LocalGeometry ++Dead in active zSide = "<<zSide<<" type = 2"<<" , sampling = "<<sampling - <<" , region="<<region+2 << " , phiBin="<<phiBin<< " , etaBin="<<etaBin <<std::endl; -#endif } else { // we return regular ID @@ -362,10 +342,6 @@ namespace LArG4 { << region << etaBin << phiBin; -#ifdef DEBUG_HEC - std::cout <<"HEC::LocalGeometry ++Active zSide = "<<zSide<<" , sampling = "<<sampling<<" , region="<<region << - " , phiBin="<<phiBin<< " , etaBin="<<etaBin <<std::endl; -#endif } return result; @@ -417,13 +393,7 @@ namespace LArG4 { if(zSide * pinLocal.x() > 0) ++phiBin; } */ -#ifdef DEBUG_HEC_OLD_DIAGNOSTIC - std::cout<<"HEC::LocalGeometry Module locy: "<<locy<<" locz: "<<locz<<std::endl; -#endif if(abslocz < m_firstAbsorber[0]) { // in front of HEC -#ifdef DEBUG_HEC_OLD_DIAGNOSTIC - std::cout<<"In front of HEC"<<std::endl; -#endif type = 1; sampling = 2; region = 3; @@ -431,9 +401,6 @@ namespace LArG4 { etaBin = 16 - binSearchAll(locy, 0, true); if( etaBin < 0 ) etaBin = 0; } else if(abslocz > m_depthSize[0] + m_depthSize[1] + m_depthSize[2] && abslocz < m_depthSize[0] + m_depthSize[1] + m_depthSize[2] + m_betweenWheel + m_firstAbsorber[3]) { // interwheel gap -#ifdef DEBUG_HEC_OLD_DIAGNOSTIC - std::cout<<"interwheel gap"<<std::endl; -#endif type = 1; sampling = 2; region = 4; @@ -443,9 +410,6 @@ namespace LArG4 { // sampling = localSampling(pinLocal.z()/Units::mm); double distance = deadZone(fabs(pinLocal.x()/Units::mm),locy); if(distance > deadzone) { // We should return the inactive Id !!!! -#ifdef DEBUG_HEC_OLD_DIAGNOSTIC - std::cout<<"inactive Id"<<std::endl; -#endif int depthNum; if(abslocz < m_depthSize[0]) { sampling = 0; depthNum=0; @@ -475,10 +439,6 @@ namespace LArG4 { etaBin = 13; } etaBin -= binSearch(locy, depthNum, region); -#ifdef DEBUG_HEC - std::cout <<"HEC::LocalGeometry zSide = "<<zSide<<" , sampling = "<<sampling<<" , region="<<region << - " , phiBin="<<phiBin<< " , etaBin="<<etaBin <<std::endl; -#endif if(region==1 && etaBin == 3 && (sampling == 1 || sampling == 2)) etaBin = 2; if(region==0 && etaBin == 0 && sampling == 2) etaBin = 1; if(region==0 && etaBin < 2 && sampling == 3) etaBin = 2; @@ -491,9 +451,6 @@ namespace LArG4 { << phiBin; return result; } // intermodule cracks otherwise -#ifdef DEBUG_HEC_OLD_DIAGNOSTIC - std::cout<<"intermodule crack"<<std::endl; -#endif if(zSide<0) { if(copyN-1<16) copyModule = abs(copyN - 1 - 15); else copyModule = 47 - (copyN - 1); } else { @@ -528,9 +485,6 @@ namespace LArG4 { region = 2; etaBin = 13; } -#ifdef DEBUG_HEC_OLD_DIAGNOSTIC - std::cout<<locy<<" "<<m_pads[depthNum][4]<<" "<<region<<std::endl; -#endif etaBin -= binSearch(locy, depthNum, region-2); } } else if (copyN==50 ) { // First Absorber - in front of HEC @@ -605,7 +559,6 @@ namespace LArG4 { } else { // intermodule cracks double distance = deadZone(fabs(locx),locy); if(distance > deadzone) { // We should return the inactive Id !!!! - // std::cout<<"Calling kLocInactive"<<std::endl; return CalculateIdentifier(a_step, kLocInactive, -1, deadzone); } copyModule = theTouchable->GetVolume(1)->GetCopyNo() - 1; @@ -635,10 +588,6 @@ namespace LArG4 { } } -#ifdef DEBUG_HEC - std::cout <<"HEC::LocalGeometry ++Dead zSide = "<<zSide<<" type = "<<type<<" , sampling = "<<sampling - <<" , region="<<region << " , phiBin="<<phiBin<< " , etaBin="<<etaBin <<std::endl; -#endif result << 10 // DeadM << 2*zSide // LAr diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/ATLAS_CHECK_THREAD_SAFETY b/LArCalorimeter/LArGeoModel/LArHV/LArHV/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..3398454a4ea0c5a19258a20e0c0fec3996412cd4 --- /dev/null +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +LArCalorimeter/LArGeoModel/LArHV diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrode.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrode.h index a19b2ad1dd07f62a1923d0bb87504ec695677849..5d12fb57eca9ef591cf7e82f8b2f5c9c25712c1e 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrode.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrode.h @@ -26,21 +26,10 @@ class EMBHVElectrode double getPhi() const; - // HV Status - bool hvOn(int iGap) const; - - double voltage(int iGap) const; - double current(int iGap) const; - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) - int hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping=nullptr) const; -#else - int hvLineNo(int iGap) const; + int hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping) const; #endif - // Voltage and current at the same tine.: - void voltage_current(int iGap, double& v, double& i) const; - private: EMBHVElectrode(const EMBHVElectrode& right); EMBHVElectrode& operator=(const EMBHVElectrode& right); diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVManager.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVManager.h index 7518b08f24ad167092ec25af494d8b413af49eee..29ae93eb57415c4dac9356eb3eb17bcb2559b419 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVManager.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVManager.h @@ -7,11 +7,16 @@ #include "LArHV/EMBHVModule.h" #include "LArHV/EMBHVDescriptor.h" +#include "Identifier/HWIdentifier.h" +#include "CxxUtils/checker_macros.h" +#include <memory> +#include <functional> #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) class LArHVIdMapping; #endif +class CondAttrListCollection; struct EMBHVPayload; /** @@ -31,6 +36,24 @@ struct EMBHVPayload; class EMBHVManager { public: + class EMBHVData + { + public: + static constexpr double INVALID = -99999; + class Payload; + EMBHVData(); + EMBHVData (std::unique_ptr<Payload> payload); + EMBHVData& operator= (EMBHVData&& other); + ~EMBHVData(); + bool hvOn (const EMBHVElectrode& electrode, const int& iGap) const; + double voltage (const EMBHVElectrode& electrode, const int& iGap) const; + double current (const EMBHVElectrode& electrode, const int& iGap) const; + int hvLineNo (const EMBHVElectrode& electrode, const int& iGap) const; + private: + int index (const EMBHVElectrode& electrode) const; + std::unique_ptr<Payload> m_payload; + }; + EMBHVManager(); ~EMBHVManager(); @@ -56,16 +79,12 @@ class EMBHVManager unsigned int beginSideIndex() const; unsigned int endSideIndex() const; - // Refresh from the database if needed - void update() const; - - // Make the data stale. Force update of data. - void reset() const; - // Get the database payload - EMBHVPayload *getPayload(const EMBHVElectrode &) const; + EMBHVData getData ATLAS_NOT_THREAD_SAFE () const; #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) + EMBHVData getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const; // Get hvLine for an electrode int hvLineNo(const EMBHVElectrode& electrode , int gap @@ -73,12 +92,16 @@ class EMBHVManager #endif private: - EMBHVManager(const EMBHVManager& right); - EMBHVManager& operator=(const EMBHVManager& right); + using idfunc_t = std::function<std::vector<HWIdentifier>(HWIdentifier)>; + EMBHVData getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const; + + EMBHVManager(const EMBHVManager& right) = delete; + EMBHVManager& operator=(const EMBHVManager& right) = delete; friend class ImaginaryFriend; class Clockwork; - Clockwork *m_c; + std::unique_ptr<const Clockwork> m_c; }; #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBPresamplerHVManager.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBPresamplerHVManager.h index bc8fbbd9443e5e6ed21f15e2b4d06a70d46af48c..607cd64aaffce7d8b4b646282c925edebbf85f3c 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBPresamplerHVManager.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBPresamplerHVManager.h @@ -6,12 +6,18 @@ #define LARHV_EMBPRESAMPLERHVMANAGER_H #include "LArHV/EMBPresamplerHVModule.h" +#include "Identifier/HWIdentifier.h" +#include "CxxUtils/checker_macros.h" +#include <memory> +#include <functional> #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) class LArHVIdMapping; #endif +class CondAttrListCollection; class EMBPresamplerHVDescriptor; +class EMBPresamplerHVModule; struct EMBPresamplerHVPayload; /** @@ -31,6 +37,24 @@ struct EMBPresamplerHVPayload; class EMBPresamplerHVManager { public: + class EMBPresamplerHVData + { + public: + static constexpr double INVALID = -99999; + class Payload; + EMBPresamplerHVData(); + EMBPresamplerHVData (std::unique_ptr<Payload> payload); + EMBPresamplerHVData& operator= (EMBPresamplerHVData&& other); + ~EMBPresamplerHVData(); + bool hvOn (const EMBPresamplerHVModule& module, const int& iGap) const; + double voltage (const EMBPresamplerHVModule& module, const int& iGap) const; + double current (const EMBPresamplerHVModule& module, const int& iGap) const; + int hvLineNo (const EMBPresamplerHVModule& module, const int& iGap) const; + private: + int index (const EMBPresamplerHVModule& module) const; + std::unique_ptr<Payload> m_payload; + }; + EMBPresamplerHVManager(); ~EMBPresamplerHVManager(); @@ -51,16 +75,12 @@ class EMBPresamplerHVManager unsigned int beginSideIndex() const; unsigned int endSideIndex() const; - // Refresh from the database if needed - void update() const; - - // Make the data stale. Force update of data. - void reset() const; - // Get the database payload - EMBPresamplerHVPayload *getPayload(const EMBPresamplerHVModule &) const; + EMBPresamplerHVData getData ATLAS_NOT_THREAD_SAFE () const; #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) + EMBPresamplerHVData getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const; // Get hvLine for a module int hvLineNo(const EMBPresamplerHVModule& module , int gap @@ -68,13 +88,17 @@ class EMBPresamplerHVManager #endif private: + using idfunc_t = std::function<std::vector<HWIdentifier>(HWIdentifier)>; + EMBPresamplerHVData getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const; + // Illegal operations - EMBPresamplerHVManager(const EMBPresamplerHVManager& right); - EMBPresamplerHVManager& operator=(const EMBPresamplerHVManager& right); + EMBPresamplerHVManager(const EMBPresamplerHVManager& right) = delete; + EMBPresamplerHVManager& operator=(const EMBPresamplerHVManager& right) = delete; friend class ImaginaryFriend; class Clockwork; - Clockwork *m_c; + std::unique_ptr<const Clockwork> m_c; }; #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBPresamplerHVModule.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBPresamplerHVModule.h index 56a8bf4fa37fa1ace335a0ee1e91b9cbd0b38242..00f8dd48ee674e8ac69cd844467897c3d0980b07 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBPresamplerHVModule.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBPresamplerHVModule.h @@ -38,19 +38,8 @@ class EMBPresamplerHVModule double getPhiMin() const; double getPhiMax() const; - // HV Status - bool hvOn(int iGap) const; - - double voltage(int iGap) const; - double current(int iGap) const; - - // Voltage and current at the same time... - void voltage_current(int iGap, double& v, double& i) const; - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) - int hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping=nullptr) const; -#else - int hvLineNo(int iGap) const; + int hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping) const; #endif const EMBPresamplerHVManager& getManager() const; diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECHVElectrode.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECHVElectrode.h index 2bb5a64b479397ff0b38ba6485f86a742909aa1a..87beae4bde87259e4d9b89c0a18744952a05f446 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECHVElectrode.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECHVElectrode.h @@ -25,23 +25,9 @@ class EMECHVElectrode double getPhi() const; - // HV Status - bool hvOn(int iGap) const; - - // Voltage - double voltage(int iGap) const; - - // Current - double current(int iGap) const; - - // Voltage and current at the same time - void voltage_current(int iGap, double& v, double& i) const; - // HVLine no #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) - int hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping=nullptr) const; -#else - int hvLineNo(int iGap) const; + int hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping) const; #endif private: diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECHVManager.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECHVManager.h index 5316fb7a540cb28969f97b983956e73e9ff6b3af..3162c653ab97883f660d3365990a96bb05e3dffe 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECHVManager.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECHVManager.h @@ -7,12 +7,17 @@ #include "LArHV/EMECHVModule.h" #include "LArHV/EMECHVDescriptor.h" +#include "Identifier/HWIdentifier.h" +#include "CxxUtils/checker_macros.h" +#include <memory> +#include <functional> #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) class LArHVIdMapping; #endif struct EMECHVPayload; +class CondAttrListCollection; /** * @class EMECHVManager @@ -33,6 +38,24 @@ class EMECHVManager public: typedef EMECHVModule::IOType IOType; + class EMECHVData + { + public: + static constexpr double INVALID = -99999; + class Payload; + EMECHVData(); + EMECHVData (std::unique_ptr<Payload> payload); + EMECHVData& operator= (EMECHVData&& other); + ~EMECHVData(); + bool hvOn (const EMECHVElectrode& electrode, const int& iGap) const; + double voltage (const EMECHVElectrode& electrode, const int& iGap) const; + double current (const EMECHVElectrode& electrode, const int& iGap) const; + int hvLineNo (const EMECHVElectrode& electrode, const int& iGap) const; + private: + int index (const EMECHVElectrode& electrode) const; + std::unique_ptr<Payload> m_payload; + }; + EMECHVManager(IOType wheel); ~EMECHVManager(); @@ -59,16 +82,12 @@ class EMECHVManager // Gets the Wheel, 0 for the Outer Wheel HV Manager and 1 for the inner Wheel HV Manager EMECHVManager::IOType getWheelIndex() const; - // Refresh from the database if needed - void update() const; - - // Make the data stale. Force update of data. - void reset() const; - // Get the database payload - EMECHVPayload *getPayload(const EMECHVElectrode &) const; + EMECHVData getData ATLAS_NOT_THREAD_SAFE () const; #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) + EMECHVData getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const; // Get hvLine for an electrode int hvLineNo(const EMECHVElectrode& electrode , int gap @@ -76,11 +95,15 @@ class EMECHVManager #endif private: - EMECHVManager& operator=(const EMECHVManager& right); - EMECHVManager(const EMECHVManager& right); + using idfunc_t = std::function<std::vector<HWIdentifier>(HWIdentifier)>; + EMECHVData getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const; + + EMECHVManager& operator=(const EMECHVManager& right) = delete; + EMECHVManager(const EMECHVManager& right) = delete; class Clockwork; - Clockwork *m_c; + std::unique_ptr<const Clockwork> m_c; }; #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECPresamplerHVManager.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECPresamplerHVManager.h index fa10b0b66398fdabcf1a5cb4d06d6d2f95a7a16d..51e6797f684b5dc6daebf7285fa944e62270b699 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECPresamplerHVManager.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECPresamplerHVManager.h @@ -6,11 +6,16 @@ #define LARHV_EMECPRESAMPLERHVMANAGER_H #include "LArHV/EMECPresamplerHVModule.h" +#include "Identifier/HWIdentifier.h" +#include "CxxUtils/checker_macros.h" +#include <memory> +#include <functional> #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) class LArHVIdMapping; #endif +class CondAttrListCollection; struct EMECPresamplerHVPayload; class CellBinning; @@ -31,6 +36,24 @@ class CellBinning; class EMECPresamplerHVManager { public: + class EMECPresamplerHVData + { + public: + static constexpr double INVALID = -99999; + class Payload; + EMECPresamplerHVData(); + EMECPresamplerHVData (std::unique_ptr<Payload> payload); + EMECPresamplerHVData& operator= (EMECPresamplerHVData&& other); + ~EMECPresamplerHVData(); + bool hvOn (const EMECPresamplerHVModule& module, const int& iGap) const; + double voltage (const EMECPresamplerHVModule& module, const int& iGap) const; + double current (const EMECPresamplerHVModule& module, const int& iGap) const; + int hvLineNo (const EMECPresamplerHVModule& module, const int& iGap) const; + private: + int index (const EMECPresamplerHVModule& module) const; + std::unique_ptr<Payload> m_payload; + }; + EMECPresamplerHVManager(); ~EMECPresamplerHVManager(); @@ -46,28 +69,28 @@ class EMECPresamplerHVManager // Get a link to the HV module: const EMECPresamplerHVModule& getHVModule(unsigned int iSide, unsigned int iPhi) const; - // Refresh from the database if needed - void update() const; - - // Make the data stale. Force update of data. - void reset() const; - // Get the database payload - EMECPresamplerHVPayload *getPayload(const EMECPresamplerHVModule &) const; + EMECPresamplerHVData getData ATLAS_NOT_THREAD_SAFE () const; #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) + EMECPresamplerHVData getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const; // Get hvLine for a module int hvLineNo(const EMECPresamplerHVModule& module , const LArHVIdMapping* hvIdMapping) const; #endif private: + using idfunc_t = std::function<std::vector<HWIdentifier>(HWIdentifier)>; + EMECPresamplerHVData getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const; + // Illegal operations - EMECPresamplerHVManager& operator=(const EMECPresamplerHVManager& right); - EMECPresamplerHVManager(const EMECPresamplerHVManager& right); + EMECPresamplerHVManager& operator=(const EMECPresamplerHVManager& right) = delete; + EMECPresamplerHVManager(const EMECPresamplerHVManager& right) = delete; class Clockwork; - Clockwork *m_c; + std::unique_ptr<const Clockwork> m_c; }; diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECPresamplerHVModule.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECPresamplerHVModule.h index 624a9a1d4fc639fabe0cdc730fc63848f753bfa8..f3e6b02ca818c54cf5199b3af5f70ef0998ed926 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECPresamplerHVModule.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMECPresamplerHVModule.h @@ -37,19 +37,8 @@ class EMECPresamplerHVModule // Side Index (0=Negative, 1=Positive) unsigned int getSideIndex() const; - // HV Status - bool hvOn(int iGap) const; - - double voltage(int iGap) const; - double current(int iGap) const; - - // Current and voltage at the same time: - void voltage_current(int iGap, double& v, double& i) const; - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) - int hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping=nullptr) const; -#else - int hvLineNo(int iGap) const; + int hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping) const; #endif const EMECPresamplerHVManager& getManager() const; diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/FCALHVLine.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/FCALHVLine.h index 711b93630575ef951c262875a4e0a09b61666572..498a7bed56cfa3bcff1ec707a763ba76c269e6cd 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/FCALHVLine.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/FCALHVLine.h @@ -22,17 +22,8 @@ class FCALHVLine unsigned int getLineIndex() const; - bool hvOn() const; - double voltage() const; - double current() const; - - // Voltage and current at the same time: - void voltage_current(double& v, double& i) const; - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) - int hvLineNo(const LArHVIdMapping* hvIdMapping=nullptr) const; -#else - int hvLineNo() const; + int hvLineNo(const LArHVIdMapping* hvIdMapping) const; #endif private: diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/FCALHVManager.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/FCALHVManager.h index 632472942233d76066410bc77a166e62dca28fb4..af8509e693c05094740bb62da850b879c2983c96 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/FCALHVManager.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/FCALHVManager.h @@ -6,11 +6,16 @@ #define LARHV_FCALHVMANAGER_H #include "LArHV/FCALHVModule.h" +#include "Identifier/HWIdentifier.h" +#include "CxxUtils/checker_macros.h" +#include <memory> +#include <functional> #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) class LArHVIdMapping; #endif +class CondAttrListCollection; struct FCALHVPayload; /** @@ -30,6 +35,24 @@ struct FCALHVPayload; class FCALHVManager { public: + class FCALHVData + { + public: + static constexpr double INVALID = -99999; + class Payload; + FCALHVData(); + FCALHVData (std::unique_ptr<Payload> payload); + FCALHVData& operator= (FCALHVData&& other); + ~FCALHVData(); + bool hvOn (const FCALHVLine& line) const; + double voltage (const FCALHVLine& line) const; + double current (const FCALHVLine& line) const; + int hvLineNo (const FCALHVLine& line) const; + private: + int index (const FCALHVLine& line) const; + std::unique_ptr<Payload> m_payload; + }; + FCALHVManager(); ~FCALHVManager(); @@ -47,27 +70,27 @@ class FCALHVManager , unsigned int iSector , unsigned int iSampling) const; - // Refresh from the database if needed - void update() const; - - // Make the data stale. Force update of data. - void reset() const; - // Get the database payload - FCALHVPayload *getPayload(const FCALHVLine &) const; + FCALHVData getData ATLAS_NOT_THREAD_SAFE () const; #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) - // Get hvLine for a subgap + FCALHVData getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const; + // Get hvLine for an electrode int hvLineNo(const FCALHVLine& line , const LArHVIdMapping* hvIdMapping) const; #endif private: - FCALHVManager(const FCALHVManager& right); - FCALHVManager& operator=(const FCALHVManager& right); + using idfunc_t = std::function<std::vector<HWIdentifier>(HWIdentifier)>; + FCALHVData getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const; + + FCALHVManager(const FCALHVManager& right) = delete; + FCALHVManager& operator=(const FCALHVManager& right) = delete; class Clockwork; - Clockwork *m_c; + std::unique_ptr<const Clockwork> m_c; }; #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/HECHVManager.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/HECHVManager.h index a91a94a1016befeee217b137c17390d91a7732dd..4640810f2b68c9d235d262b73c13b673509a482b 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/HECHVManager.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/HECHVManager.h @@ -7,11 +7,16 @@ #include "LArHV/HECHVDescriptor.h" #include "LArHV/HECHVModule.h" +#include "Identifier/HWIdentifier.h" +#include "CxxUtils/checker_macros.h" +#include <memory> +#include <functional> #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) class LArHVIdMapping; #endif +class CondAttrListCollection; struct HECHVPayload; /** @@ -31,6 +36,24 @@ struct HECHVPayload; class HECHVManager { public: + class HECHVData + { + public: + static constexpr double INVALID = -99999; + class Payload; + HECHVData(); + HECHVData (std::unique_ptr<Payload> payload); + HECHVData& operator= (HECHVData&& other); + ~HECHVData(); + bool hvOn (const HECHVSubgap& subgap) const; + double voltage (const HECHVSubgap& subgap) const; + double current (const HECHVSubgap& subgap) const; + int hvLineNo (const HECHVSubgap& subgap) const; + private: + int index (const HECHVSubgap& subgap) const; + std::unique_ptr<Payload> m_payload; + }; + HECHVManager(); ~HECHVManager(); @@ -50,27 +73,27 @@ class HECHVManager , unsigned int iPhi , unsigned int iSampling) const; - // Refresh from the database if needed - void update() const; - - // Make the data stale. Force update of data. - void reset() const; - // Get the database payload - HECHVPayload *getPayload(const HECHVSubgap &) const; + HECHVData getData ATLAS_NOT_THREAD_SAFE () const; #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) + HECHVData getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const; // Get hvLine for a subgap int hvLineNo(const HECHVSubgap& subgap , const LArHVIdMapping* hvIdMapping) const; #endif private: - HECHVManager(const HECHVManager& right); - HECHVManager& operator=(const HECHVManager& right); + using idfunc_t = std::function<std::vector<HWIdentifier>(HWIdentifier)>; + HECHVData getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const; + + HECHVManager(const HECHVManager& right) = delete; + HECHVManager& operator=(const HECHVManager& right) = delete; class Clockwork; - Clockwork *m_c; + std::unique_ptr<const Clockwork> m_c; }; #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/HECHVSubgap.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/HECHVSubgap.h index 20385fae6354c025a7875921b4a1351951f915f7..19ccaef7e76438ef844a54292635fcf36b37d994 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/HECHVSubgap.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/HECHVSubgap.h @@ -23,19 +23,10 @@ class HECHVSubgap // Returns the index of this electrode. unsigned int getSubgapIndex() const; - bool hvOn() const; - double voltage() const; - double current() const; - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) - int hvLineNo(const LArHVIdMapping* hvIdMapping=nullptr) const; -#else - int hvLineNo() const; + int hvLineNo(const LArHVIdMapping* hvIdMapping) const; #endif - // Voltage and current at the same time: - void voltage_current(double& v, double& i) const; - private: HECHVSubgap(const HECHVSubgap& right); HECHVSubgap& operator=(const HECHVSubgap& right); diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/LArHVManager.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/LArHVManager.h index 4ea6a3c16b33aa151190bdfafe7e94201c0e2ddf..f79f2af9ab49a7f9c8f87939f53938c467317b66 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/LArHVManager.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/LArHVManager.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARHV_LARHVMANAGER_H @@ -47,7 +47,6 @@ class LArHVManager // Returns the FCALHVManager const FCALHVManager& getFCALHVManager() const; - void reset() const; protected: diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVElectrode.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVElectrode.cxx index 5c641572cfee8873fe8f06872e30383c10a5973a..339b36da7a7fd0b8ab0ff507a834a2ae5acc1e3a 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVElectrode.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVElectrode.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArHV/EMBHVElectrode.h" @@ -39,40 +39,12 @@ double EMBHVElectrode::getPhi() const return m_c->module->getPhiMin()+m_c->iElectrode*2.0*M_PI/1024.0; } -bool EMBHVElectrode::hvOn(int iGap) const -{ - EMBHVPayload *payload = m_c->module->getManager().getPayload(*this); - return (payload->voltage[iGap]>=-9999); -} - -double EMBHVElectrode::voltage(int iGap) const { - EMBHVPayload *payload = m_c->module->getManager().getPayload(*this); - return payload->voltage[iGap]; -} - -double EMBHVElectrode::current(int iGap) const { - EMBHVPayload *payload = m_c->module->getManager().getPayload(*this); - return payload->current[iGap]; -} - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) int EMBHVElectrode::hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping) const { - return hvIdMapping - ? m_c->module->getManager().hvLineNo(*this, iGap, hvIdMapping) - : m_c->module->getManager().getPayload(*this)->hvLineNo[iGap]; -} -#else -int EMBHVElectrode::hvLineNo(int iGap) const { - return m_c->module->getManager().getPayload(*this)->hvLineNo[iGap]; + return m_c->module->getManager().hvLineNo(*this, iGap, hvIdMapping); } #endif -void EMBHVElectrode::voltage_current(int iGap,double& voltage, double¤t) const { - EMBHVPayload *payload = m_c->module->getManager().getPayload(*this); - voltage = payload->voltage[iGap]; - current = payload->current[iGap]; -} - unsigned int EMBHVElectrode::getElectrodeIndex() const{ return m_c->iElectrode; } diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVManager.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVManager.cxx index d92032af94022997a9b55c995fda86f83420aebb..2d72e88ad2bf8135a89bba83136b346d6ca2c529 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVManager.cxx @@ -33,6 +33,34 @@ #include <mutex> #include <atomic> + +namespace { + + +struct ATLAS_NOT_THREAD_SAFE LegacyIdFunc +{ + LegacyIdFunc(); + std::vector<HWIdentifier> operator()(HWIdentifier id) + { + return m_cablingTool->getLArElectrodeIDvec (id); + } + LArHVCablingTool* m_cablingTool; +}; + + +LegacyIdFunc::LegacyIdFunc() +{ + ToolHandle<LArHVCablingTool> tool ("LArHVCablingTool"); + if (!tool.retrieve().isSuccess()) { + std::abort(); + } + m_cablingTool = tool.get(); +} + + +} // Anonymous namespace + + class EMBHVManager::Clockwork { public: Clockwork(const EMBHVManager* manager) { @@ -40,7 +68,7 @@ public: for(int iEta=0; iEta<8; ++iEta) { for(int iPhi=0; iPhi<16; ++iPhi) { for(int iSector=0; iSector<2; ++iSector) { - moduleArray[iSide][iEta][iPhi][iSector] = new EMBHVModule(manager,iSide,iEta,iPhi,iSector); + moduleArray[iSide][iEta][iPhi][iSector] = std::make_unique<EMBHVModule>(manager,iSide,iEta,iPhi,iSector); } } } @@ -57,33 +85,91 @@ public: } Clockwork(const Clockwork&) = delete; ~Clockwork() { - for(int iSide=0; iSide<2; ++iSide) { - for(int iEta=0; iEta<8; ++iEta) { - for(int iPhi=0; iPhi<16; ++iPhi) { - for(int iSector=0; iSector<2; ++iSector) { - delete moduleArray[iSide][iEta][iPhi][iSector]; - } - } - } - } } EMBHVDescriptor descriptor{CellBinning(0.0, 1.4, 7, 1),CellBinning(0.0, 2*M_PI, 16)}; - const EMBHVModule* moduleArray[2][8][16][2]; - std::atomic<bool> init{false}; - std::mutex mtx; - std::vector<EMBHVPayload> payloadArray; + std::unique_ptr<const EMBHVModule> moduleArray[2][8][16][2]; const LArElectrodeID* elecId; const LArHVLineID* hvId; }; + +class EMBHVManager::EMBHVData::Payload +{ +public: + std::vector<EMBHVPayload> m_payloadArray; +}; + + +EMBHVManager::EMBHVData::EMBHVData() +{ +} + + +EMBHVManager::EMBHVData::EMBHVData (std::unique_ptr<Payload> payload) + : m_payload (std::move (payload)) +{ +} + + +EMBHVManager::EMBHVData& +EMBHVManager::EMBHVData::operator= (EMBHVData&& other) +{ + if (this != &other) { + m_payload = std::move (other.m_payload); + } + return *this; +} + + +EMBHVManager::EMBHVData::~EMBHVData() +{ +} + + +bool EMBHVManager::EMBHVData::hvOn (const EMBHVElectrode& electrode, const int& iGap) const +{ + return voltage (electrode, iGap) > INVALID; +} + + +double EMBHVManager::EMBHVData::voltage (const EMBHVElectrode& electrode, const int& iGap) const +{ + return m_payload->m_payloadArray[index(electrode)].voltage[iGap]; +} + + +double EMBHVManager::EMBHVData::current (const EMBHVElectrode& electrode, const int& iGap) const +{ + return m_payload->m_payloadArray[index(electrode)].current[iGap]; +} + + +int EMBHVManager::EMBHVData::hvLineNo (const EMBHVElectrode& electrode, const int& iGap) const +{ + return m_payload->m_payloadArray[index(electrode)].hvLineNo[iGap]; +} + + +int EMBHVManager::EMBHVData::index (const EMBHVElectrode& electrode) const +{ + unsigned int electrodeIndex = electrode.getElectrodeIndex(); + const EMBHVModule& module = electrode.getModule(); + unsigned int etaIndex = module.getEtaIndex(); + unsigned int phiIndex = module.getPhiIndex(); + unsigned int sectorIndex = module.getSectorIndex(); + unsigned int sideIndex = module.getSideIndex(); + unsigned int index = 8192*sideIndex+1024*etaIndex+64*phiIndex+32*sectorIndex+electrodeIndex; + return index; +} + + EMBHVManager::EMBHVManager() - : m_c(new Clockwork(this)) + : m_c (std::make_unique<Clockwork> (this)) { } EMBHVManager::~EMBHVManager() { - delete m_c; } const EMBHVDescriptor& EMBHVManager::getDescriptor() const @@ -136,70 +222,44 @@ unsigned int EMBHVManager::endSideIndex() const return 2; } -void EMBHVManager::update() const { - std::lock_guard<std::mutex> lock(m_c->mtx); - if (!(m_c->init)) { - m_c->init=true; - m_c->payloadArray.reserve(2*8*16*2*32); +EMBHVManager::EMBHVData +EMBHVManager::getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto payload = std::make_unique<EMBHVData::Payload>(); + payload->m_payloadArray.reserve(2*8*16*2*32); - for (int i=0;i<16384;i++) { - m_c->payloadArray[i].voltage[0]=-99999.; - m_c->payloadArray[i].voltage[1]=-99999.; - } + for (int i=0;i<16384;i++) { + payload->m_payloadArray[i].voltage[0] = EMBHVData::INVALID; + payload->m_payloadArray[i].voltage[1] = EMBHVData::INVALID; + } - ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "HECHVManager"); - - ISvcLocator* svcLocator = Gaudi::svcLocator(); - IToolSvc* toolSvc; - LArHVCablingTool* hvcablingTool; - - if(StatusCode::SUCCESS!=svcLocator->service("ToolSvc",toolSvc)) - return; - - if(StatusCode::SUCCESS!=toolSvc->retrieveTool("LArHVCablingTool",hvcablingTool)) - return; + for (const CondAttrListCollection* atrlistcol : attrLists) { - std::vector<std::string> colnames; - colnames.push_back("/LAR/DCS/HV/BARREl/I16"); - colnames.push_back("/LAR/DCS/HV/BARREL/I8"); - - std::vector<std::string>::const_iterator it = colnames.begin(); - std::vector<std::string>::const_iterator ie = colnames.end(); - - for (;it!=ie;it++) { - - //std::cout << " --- Start reading folder " << (*it) << std::endl; - const CondAttrListCollection* atrlistcol; - if (StatusCode::SUCCESS!=detStore->retrieve(atrlistcol,*it)) - return; - - for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { + for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { - // Construct HWIdentifier - // 1. decode COOL Channel ID - unsigned int chanID = (*citr).first; - int cannode = chanID/1000; - int line = chanID%1000; - //std::cout << " ++ found data for cannode, line " << cannode << " " << line << std::endl; + // Construct HWIdentifier + // 1. decode COOL Channel ID + unsigned int chanID = (*citr).first; + int cannode = chanID/1000; + int line = chanID%1000; - // 2. Construct the identifier - HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); + // 2. Construct the identifier + HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); - std::vector<HWIdentifier> electrodeIdVec = hvcablingTool->getLArElectrodeIDvec(id); + std::vector<HWIdentifier> electrodeIdVec = idfunc(id); - for(size_t i=0;i<electrodeIdVec.size();i++) - { - HWIdentifier& elecHWID = electrodeIdVec[i]; - int detector = m_c->elecId->detector(elecHWID); - if (detector==0) { - - //std::cout << " in Barrel " << std::endl; + for(size_t i=0;i<electrodeIdVec.size();i++) + { + HWIdentifier& elecHWID = electrodeIdVec[i]; + int detector = m_c->elecId->detector(elecHWID); + if (detector==0) { // side in standard offline 0 for z<0 (C) 1 for z>0 (A) // in electrode numbering, this is the opposite (0 for A and 1 for C) - unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); + unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); // eta index, no trouble - unsigned int etaIndex=m_c->elecId->hv_eta(elecHWID); + unsigned int etaIndex=m_c->elecId->hv_eta(elecHWID); // phi index // offline 0 to 2pi in 2pi/16 bins // this is module in the electrode numbering: on the A side 0 to 15, 0 is halfway around phi=0 (FT-1 (hv_phi=1 is a lower phi) @@ -209,12 +269,12 @@ void EMBHVManager::update() const { // hv_phi 0 1 0 0 1 // phiIndex 0 0 1 15 15 // sector Index 0 1 0 0 1 - unsigned int phiIndex; - unsigned int sectorIndex; - if (sideIndex==1) { - phiIndex=m_c->elecId->module(elecHWID); - sectorIndex=m_c->elecId->hv_phi(elecHWID); - } + unsigned int phiIndex; + unsigned int sectorIndex; + if (sideIndex==1) { + phiIndex=m_c->elecId->module(elecHWID); + sectorIndex=m_c->elecId->hv_phi(elecHWID); + } // module numbering on the C side 0 around phi=pi, running backwards // offline phi 0 pi 2pi // Module P8 P7 P7 P0 P0 P9 P8 @@ -222,74 +282,77 @@ void EMBHVManager::update() const { // hv_phi 1 0 1 0 1 1 0 // phiIndex 0 0 1 7 8 15 15 // sectorIndex 0 1 0 1 0 0 1 - else { - int imodule=m_c->elecId->module(elecHWID); - if (imodule<9) phiIndex = 8 - imodule; - else phiIndex = 24 - imodule; - sectorIndex = 1-m_c->elecId->hv_phi(elecHWID); - } - - if (sectorIndex==1) { - if (phiIndex>0) phiIndex = phiIndex - 1; - else phiIndex=15; - } - - unsigned int electrodeIndex=m_c->elecId->electrode(elecHWID); - if (sideIndex==0) { - if (m_c->elecId->hv_phi(elecHWID)==1) electrodeIndex=31-electrodeIndex; // FT-1 change 0->31 to 31->0 - else electrodeIndex=63-electrodeIndex; // FT 0 change 32->63 to 31-0 - } - else { - if (m_c->elecId->hv_phi(elecHWID)==0) electrodeIndex=electrodeIndex-32; // FT 0 change 31-63 to 0-31 - } + else { + int imodule=m_c->elecId->module(elecHWID); + if (imodule<9) phiIndex = 8 - imodule; + else phiIndex = 24 - imodule; + sectorIndex = 1-m_c->elecId->hv_phi(elecHWID); + } + + if (sectorIndex==1) { + if (phiIndex>0) phiIndex = phiIndex - 1; + else phiIndex=15; + } + + unsigned int electrodeIndex=m_c->elecId->electrode(elecHWID); + if (sideIndex==0) { + if (m_c->elecId->hv_phi(elecHWID)==1) electrodeIndex=31-electrodeIndex; // FT-1 change 0->31 to 31->0 + else electrodeIndex=63-electrodeIndex; // FT 0 change 32->63 to 31-0 + } + else { + if (m_c->elecId->hv_phi(elecHWID)==0) electrodeIndex=electrodeIndex-32; // FT 0 change 31-63 to 0-31 + } - unsigned int index = 8192*sideIndex+1024*etaIndex+64*phiIndex+32*sectorIndex+electrodeIndex; + unsigned int index = 8192*sideIndex+1024*etaIndex+64*phiIndex+32*sectorIndex+electrodeIndex; - unsigned int gapIndex=m_c->elecId->gap(elecHWID); - if (sideIndex==0) gapIndex=1-gapIndex; - - float voltage = -99999.; - if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); - float current = 0.; - if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - unsigned int status = 0; - if (!((*citr).second)["R_STAT"].isNull()) status = ((*citr).second)["R_STAT"].data<unsigned int>(); + unsigned int gapIndex=m_c->elecId->gap(elecHWID); + if (sideIndex==0) gapIndex=1-gapIndex; - // std::cout << " hvlineId,elecHWID,cannode,line, side,phi module, sector,eta,electrode,gap,index " << std::hex << id << " " << elecHWID << std::dec << " " << cannode << " " << line << " " << m_c->elecId->zside(elecHWID) << " " << m_c->elecId->module(elecHWID) << " " << m_c->elecId->hv_phi(elecHWID) << " " << m_c->elecId->hv_eta(elecHWID) << " " << m_c->elecId->electrode(elecHWID) - // << " " << gapIndex << " " << index << " " << voltage << std::endl; + float voltage = EMBHVData::INVALID; + if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); + float current = 0.; + if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - m_c->payloadArray[index].voltage[gapIndex]=voltage; - m_c->payloadArray[index].current[gapIndex]=current; - m_c->payloadArray[index].status[gapIndex]=status; - m_c->payloadArray[index].hvLineNo[gapIndex]=chanID; - } -// std::cerr << "\n"; + payload->m_payloadArray[index].voltage[gapIndex]=voltage; + payload->m_payloadArray[index].current[gapIndex]=current; + payload->m_payloadArray[index].hvLineNo[gapIndex]=chanID; } } } - } -} -void EMBHVManager::reset() const { - m_c->init=false; + return EMBHVManager::EMBHVData (std::move (payload)); } -EMBHVPayload* EMBHVManager::getPayload(const EMBHVElectrode &electrode) const { - update(); - unsigned int electrodeIndex = electrode.getElectrodeIndex(); - const EMBHVModule& module = electrode.getModule(); - unsigned int etaIndex = module.getEtaIndex(); - unsigned int phiIndex = module.getPhiIndex(); - unsigned int sectorIndex = module.getSectorIndex(); - unsigned int sideIndex = module.getSideIndex(); - unsigned int index = 8192*sideIndex+1024*etaIndex+64*phiIndex+32*sectorIndex+electrodeIndex; - return &m_c->payloadArray[index]; + +EMBHVManager::EMBHVData +EMBHVManager::getData ATLAS_NOT_THREAD_SAFE () const +{ + std::vector<const CondAttrListCollection*> attrLists; + ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "EMBHVManager"); + const CondAttrListCollection* atrlistcol = nullptr; + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I16").isSuccess()) { + attrLists.push_back (atrlistcol); + } + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I8").isSuccess()) { + attrLists.push_back (atrlistcol); + } + return getData (LegacyIdFunc(), attrLists); } + #ifndef SIMULATIONBASE #ifndef GENERATIONBASE +EMBHVManager::EMBHVData +EMBHVManager::getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto idfunc = [&] (HWIdentifier id) { return hvIdMapping.getLArElectrodeIDvec(id); }; + return getData (idfunc, attrLists); +} + + int EMBHVManager::hvLineNo(const EMBHVElectrode& electrode , int gap , const LArHVIdMapping* hvIdMapping) const diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVPayload.h b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVPayload.h index cc04799758c940585427fa36049f782e09ca7acc..bb4dad93373ca9aa133a4765ac42138ad2d0ead2 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVPayload.h +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVPayload.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARHV_EMBHVPAYLOAD_H @@ -8,13 +8,12 @@ struct EMBHVPayload { double voltage[2]; double current[2]; - unsigned int status[2]; int hvLineNo[2]; }; inline std::ostream & operator << (std::ostream & o, const EMBHVPayload & payload) { - o << "Half Gap #0: HV Line No " << payload.hvLineNo[0] << ' ' << payload.voltage[0] << " volts; " << payload.current[0] << " amps; status = " << payload.status[0] << std::endl; - o << "Half Gap #1: HV Line No " << payload.hvLineNo[1] << ' ' << payload.voltage[1] << " volts; " << payload.current[1] << " amps; status = " << payload.status[1] << std::endl; + o << "Half Gap #0: HV Line No " << payload.hvLineNo[0] << ' ' << payload.voltage[0] << " volts; " << payload.current[0] << " amps" << std::endl; + o << "Half Gap #1: HV Line No " << payload.hvLineNo[1] << ' ' << payload.voltage[1] << " volts; " << payload.current[1] << " amps" << std::endl; return o; } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVManager.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVManager.cxx index dd040ea2802d4efc67c1bc58c1c600fbc0f04f02..5b91cc46220a447ee0d414269c1717b58fc177b4 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVManager.cxx @@ -34,18 +34,46 @@ #include <atomic> + +namespace { + + +struct ATLAS_NOT_THREAD_SAFE LegacyIdFunc +{ + LegacyIdFunc(); + std::vector<HWIdentifier> operator()(HWIdentifier id) + { + return m_cablingTool->getLArElectrodeIDvec (id); + } + LArHVCablingTool* m_cablingTool; +}; + + +LegacyIdFunc::LegacyIdFunc() +{ + ToolHandle<LArHVCablingTool> tool ("LArHVCablingTool"); + if (!tool.retrieve().isSuccess()) { + std::abort(); + } + m_cablingTool = tool.get(); +} + + +} // Anonymous namespace + + class EMBPresamplerHVManager::Clockwork { public: Clockwork(const EMBPresamplerHVManager* manager) { CellPartitioning etaPartitioning; for (unsigned int i= 0; i<4; i++) etaPartitioning.addValue(i*0.4); etaPartitioning.addValue(1.525); - descriptor = new EMBPresamplerHVDescriptor(etaPartitioning,CellBinning(0.0, 2*M_PI, 32)); + descriptor = std::make_unique<EMBPresamplerHVDescriptor>(etaPartitioning,CellBinning(0.0, 2*M_PI, 32)); for(int iSide=0; iSide<2; ++iSide) { for(int iEta=0; iEta<4; ++iEta) { for(int iPhi=0; iPhi<32; ++iPhi) { - moduleArray[iSide][iEta][iPhi] = new EMBPresamplerHVModule(manager, iSide, iEta,iPhi); + moduleArray[iSide][iEta][iPhi] = std::make_unique<EMBPresamplerHVModule>(manager, iSide, iEta,iPhi); } } } @@ -60,37 +88,99 @@ public: } } ~Clockwork() { - delete descriptor; - for(int iSide=0; iSide<2; ++iSide) { - for(int iEta=0; iEta<4; ++iEta) { - for(int iPhi=0; iPhi<32; ++iPhi) { - delete moduleArray[iSide][iEta][iPhi]; - } - } - } } - EMBPresamplerHVDescriptor* descriptor; - const EMBPresamplerHVModule* moduleArray[2][4][32]; - std::atomic<bool> init{false}; - std::mutex mtx; - std::vector<EMBPresamplerHVPayload> payloadArray; + std::unique_ptr<EMBPresamplerHVDescriptor> descriptor; + std::unique_ptr<const EMBPresamplerHVModule> moduleArray[2][4][32]; const LArElectrodeID* elecId; const LArHVLineID* hvId; }; + +class EMBPresamplerHVManager::EMBPresamplerHVData::Payload +{ +public: + std::vector<EMBPresamplerHVPayload> m_payloadArray; +}; + + +EMBPresamplerHVManager::EMBPresamplerHVData::EMBPresamplerHVData() +{ +} + + +EMBPresamplerHVManager::EMBPresamplerHVData::EMBPresamplerHVData + (std::unique_ptr<Payload> payload) + : m_payload (std::move (payload)) +{ +} + + +EMBPresamplerHVManager::EMBPresamplerHVData& +EMBPresamplerHVManager::EMBPresamplerHVData::operator= (EMBPresamplerHVData&& other) +{ + if (this != &other) { + m_payload = std::move (other.m_payload); + } + return *this; +} + + +EMBPresamplerHVManager::EMBPresamplerHVData::~EMBPresamplerHVData() +{ +} + + +bool EMBPresamplerHVManager::EMBPresamplerHVData::hvOn + (const EMBPresamplerHVModule& module, const int& iGap) const +{ + return voltage (module, iGap) > INVALID; +} + + +double EMBPresamplerHVManager::EMBPresamplerHVData::voltage + (const EMBPresamplerHVModule& module, const int& iGap) const +{ + return m_payload->m_payloadArray[index(module)].voltage[iGap]; +} + + +double EMBPresamplerHVManager::EMBPresamplerHVData::current + (const EMBPresamplerHVModule& module, const int& iGap) const +{ + return m_payload->m_payloadArray[index(module)].current[iGap]; +} + + +int EMBPresamplerHVManager::EMBPresamplerHVData::hvLineNo + (const EMBPresamplerHVModule& module, const int& iGap) const +{ + return m_payload->m_payloadArray[index(module)].hvLineNo[iGap]; +} + + +int EMBPresamplerHVManager::EMBPresamplerHVData::index + (const EMBPresamplerHVModule& module) const +{ + unsigned int sideIndex = module.getSideIndex(); + unsigned int phiIndex = module.getPhiIndex(); + unsigned int etaIndex = module.getEtaIndex(); + unsigned int index = 128*sideIndex+32*etaIndex+phiIndex; + return index; +} + + EMBPresamplerHVManager::EMBPresamplerHVManager() - : m_c(new Clockwork(this)) + : m_c (std::make_unique<Clockwork> (this)) { } EMBPresamplerHVManager::~EMBPresamplerHVManager() { - delete m_c; } const EMBPresamplerHVDescriptor* EMBPresamplerHVManager::getDescriptor() const { - return m_c->descriptor; + return m_c->descriptor.get(); } unsigned int EMBPresamplerHVManager::beginPhiIndex() const @@ -128,72 +218,46 @@ unsigned int EMBPresamplerHVManager::endSideIndex() const return 2; } -void EMBPresamplerHVManager::update() const { - std::lock_guard<std::mutex> lock(m_c->mtx); - if (!(m_c->init)) { - m_c->init=true; - m_c->payloadArray.reserve(2*4*32); +EMBPresamplerHVManager::EMBPresamplerHVData +EMBPresamplerHVManager::getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto payload = std::make_unique<EMBPresamplerHVData::Payload>(); + payload->m_payloadArray.reserve(2*4*32); - for (int i=0;i<256;i++) { - m_c->payloadArray[i].voltage[0]=-99999.; - m_c->payloadArray[i].voltage[1]=-99999.; - } + for (int i=0;i<256;i++) { + payload->m_payloadArray[i].voltage[0] = EMBPresamplerHVData::INVALID; + payload->m_payloadArray[i].voltage[1] = EMBPresamplerHVData::INVALID; + } - ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "HECHVManager"); - - ISvcLocator* svcLocator = Gaudi::svcLocator(); - IToolSvc* toolSvc; - LArHVCablingTool* hvcablingTool; + for (const CondAttrListCollection* atrlistcol : attrLists) { - if(StatusCode::SUCCESS!=svcLocator->service("ToolSvc",toolSvc)) - return; - - if(StatusCode::SUCCESS!=toolSvc->retrieveTool("LArHVCablingTool",hvcablingTool)) - return; - - std::vector<std::string> colnames; - colnames.push_back("/LAR/DCS/HV/BARREl/I16"); - colnames.push_back("/LAR/DCS/HV/BARREL/I8"); - - std::vector<std::string>::const_iterator it = colnames.begin(); - std::vector<std::string>::const_iterator ie = colnames.end(); - - for (;it!=ie;it++) { - - //std::cout << " --- Start reading folder " << (*it) << std::endl; - const CondAttrListCollection* atrlistcol; - if (StatusCode::SUCCESS!=detStore->retrieve(atrlistcol,*it)) - return; - - for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { + for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { - // Construct HWIdentifier - // 1. decode COOL Channel ID - unsigned int chanID = (*citr).first; - int cannode = chanID/1000; - int line = chanID%1000; - //std::cout << " ++ found data for cannode, line " << cannode << " " << line << std::endl; + // Construct HWIdentifier + // 1. decode COOL Channel ID + unsigned int chanID = (*citr).first; + int cannode = chanID/1000; + int line = chanID%1000; - // 2. Construct the identifier - HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); + // 2. Construct the identifier + HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); - std::vector<HWIdentifier> electrodeIdVec = hvcablingTool->getLArElectrodeIDvec(id); + std::vector<HWIdentifier> electrodeIdVec = idfunc(id); - for(size_t i=0;i<electrodeIdVec.size();i++) - { - HWIdentifier& elecHWID = electrodeIdVec[i]; - int detector = m_c->elecId->detector(elecHWID); - if (detector==1) { - - //std::cout << " in Barrel " << std::endl; + for(size_t i=0;i<electrodeIdVec.size();i++) + { + HWIdentifier& elecHWID = electrodeIdVec[i]; + int detector = m_c->elecId->detector(elecHWID); + if (detector==1) { // side in standard offline 0 for z<0 (C) 1 for z>0 (A) // in electrode numbering, this is the opposite (0 for A and 1 for C) - unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); + unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); // eta index, no trouble - unsigned int etaIndex=m_c->elecId->hv_eta(elecHWID)-1; + unsigned int etaIndex=m_c->elecId->hv_eta(elecHWID)-1; // phi index // offline 0 to 2pi in 2pi/32 bins (2 presampler cells per phi_HV) // module from elecID : 0 to 31 @@ -202,68 +266,71 @@ void EMBPresamplerHVManager::update() const { // FT 0 -1 0 -1 0 -1 // Module 0 1 2 3 4 5 6 7 9 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 39 30 31 // offline phi 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - unsigned int phiIndex; - if (sideIndex==1) { - phiIndex=m_c->elecId->module(elecHWID); - } + unsigned int phiIndex; + if (sideIndex==1) { + phiIndex=m_c->elecId->module(elecHWID); + } // module numbering on the C side 0 around phi=pi, running backwards // phi 0 pi 2pi // P8 P7 P6 P5 P4 P3 P2 P1 P0 P15 P14 P13 P12 P11 P10 P9 P8 // FT -1 0 0 -1 0 -1 0 // Module 15 14 9 8 7 6 5 4 3 2 1 0 31 30 29 38 27 26 25 24 23 22 21 20 19 18 17 16 // offline phi 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - else { - int imodule=m_c->elecId->module(elecHWID); - if (imodule<16) phiIndex = 15 - imodule; - else phiIndex = 47 - imodule; - } + else { + int imodule=m_c->elecId->module(elecHWID); + if (imodule<16) phiIndex = 15 - imodule; + else phiIndex = 47 - imodule; + } - unsigned int index = 128*sideIndex+32*etaIndex+phiIndex; + unsigned int index = 128*sideIndex+32*etaIndex+phiIndex; - unsigned int gapIndex=m_c->elecId->gap(elecHWID); - if (sideIndex==0) gapIndex=1-gapIndex; - - - float voltage = -99999.; - if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); - float current = 0.; - if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - unsigned int status = 0; - if (!((*citr).second)["R_STAT"].isNull()) status = ((*citr).second)["R_STAT"].data<unsigned int>(); + unsigned int gapIndex=m_c->elecId->gap(elecHWID); + if (sideIndex==0) gapIndex=1-gapIndex; - // std::cout << " hvlineId,elecHWID,cannode,line, side,phi module, sector,eta,electrode,gap,index " << std::hex << id << " " << elecHWID << std::dec << " " << cannode << " " << line << " " << m_c->elecId->zside(elecHWID) << " " << m_c->elecId->module(elecHWID) << " " << m_c->elecId->hv_phi(elecHWID) << " " << m_c->elecId->hv_eta(elecHWID) << " " << m_c->elecId->electrode(elecHWID) - // << " " << gapIndex << " " << index << " " << voltage << std::endl; + float voltage = EMBPresamplerHVData::INVALID; + if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); + float current = 0.; + if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - - m_c->payloadArray[index].voltage[gapIndex]=voltage; - m_c->payloadArray[index].current[gapIndex]=current; - m_c->payloadArray[index].status[gapIndex]=status; - m_c->payloadArray[index].hvLineNo[gapIndex]=chanID; - } -// std::cerr << "\n"; + payload->m_payloadArray[index].voltage[gapIndex]=voltage; + payload->m_payloadArray[index].current[gapIndex]=current; + payload->m_payloadArray[index].hvLineNo[gapIndex]=chanID; } } } - } -} -void EMBPresamplerHVManager::reset() const { - m_c->init=false; + return EMBPresamplerHVManager::EMBPresamplerHVData (std::move (payload)); } -EMBPresamplerHVPayload *EMBPresamplerHVManager::getPayload(const EMBPresamplerHVModule &module) const { - update(); - unsigned int sideIndex = module.getSideIndex(); - unsigned int phiIndex = module.getPhiIndex(); - unsigned int etaIndex = module.getEtaIndex(); - unsigned int index = 128*sideIndex+32*etaIndex+phiIndex; - return &m_c->payloadArray[index]; +EMBPresamplerHVManager::EMBPresamplerHVData +EMBPresamplerHVManager::getData ATLAS_NOT_THREAD_SAFE () const +{ + std::vector<const CondAttrListCollection*> attrLists; + ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "EMBHVManager"); + const CondAttrListCollection* atrlistcol = nullptr; + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I16").isSuccess()) { + attrLists.push_back (atrlistcol); + } + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I8").isSuccess()) { + attrLists.push_back (atrlistcol); + } + return getData (LegacyIdFunc(), attrLists); } + #ifndef SIMULATIONBASE #ifndef GENERATIONBASE +EMBPresamplerHVManager::EMBPresamplerHVData +EMBPresamplerHVManager::getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto idfunc = [&] (HWIdentifier id) { return hvIdMapping.getLArElectrodeIDvec(id); }; + return getData (idfunc, attrLists); +} + + int EMBPresamplerHVManager::hvLineNo(const EMBPresamplerHVModule& module , int gap , const LArHVIdMapping* hvIdMapping) const { diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVModule.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVModule.cxx index 13ff4ad396b6889c9a22f5f5e091ee5e428932e0..fae04e731ab45e56185fd92dc973e400f63de1ef 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVModule.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVModule.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArHV/EMBPresamplerHVModule.h" @@ -87,36 +87,8 @@ const EMBPresamplerHVManager& EMBPresamplerHVModule::getManager() const return *(m_c->manager); } -bool EMBPresamplerHVModule::hvOn(int iGap) const -{ - EMBPresamplerHVPayload *payload = m_c->manager->getPayload(*this); - return (payload->voltage[iGap]>=-9999); -} - -double EMBPresamplerHVModule::voltage(int iGap) const { - EMBPresamplerHVPayload *payload = m_c->manager->getPayload(*this); - return payload->voltage[iGap]; -} - -double EMBPresamplerHVModule::current(int iGap) const { - EMBPresamplerHVPayload *payload = m_c->manager->getPayload(*this); - return payload->current[iGap]; -} - -void EMBPresamplerHVModule::voltage_current(int iGap,double& voltage, double¤t) const { - EMBPresamplerHVPayload *payload = m_c->manager->getPayload(*this); - voltage = payload->voltage[iGap]; - current = payload->current[iGap]; -} - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) int EMBPresamplerHVModule::hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping) const { - return hvIdMapping - ? m_c->manager->hvLineNo(*this,iGap,hvIdMapping) - : m_c->manager->getPayload(*this)->hvLineNo[iGap]; -} -#else -int EMBPresamplerHVModule::hvLineNo(int iGap) const { - return m_c->manager->getPayload(*this)->hvLineNo[iGap]; + return m_c->manager->hvLineNo(*this,iGap,hvIdMapping); } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVPayload.h b/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVPayload.h index 2f97804b80ab7b61f9dcb9e85d8e1b767e15e947..6510ec53bcf54ab5a4ca4a940651e3143f247b74 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVPayload.h +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMBPresamplerHVPayload.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARHV_EMBPRESAMPLERHVPAYLOAD_H @@ -8,13 +8,12 @@ struct EMBPresamplerHVPayload { double voltage[2]; double current[2]; - unsigned int status[2]; int hvLineNo[2]; }; inline std::ostream & operator << (std::ostream & o, const EMBPresamplerHVPayload & payload) { - o << "Half Gap #0: HV Line No " << payload.hvLineNo[0] << ' ' << payload.voltage[0] << " volts; " << payload.current[0] << " amps; status = " << payload.status[0] << std::endl; - o << "Half Gap #1: HV Line No " << payload.hvLineNo[1] << ' ' << payload.voltage[1] << " volts; " << payload.current[1] << " amps; status = " << payload.status[1] << std::endl; + o << "Half Gap #0: HV Line No " << payload.hvLineNo[0] << ' ' << payload.voltage[0] << " volts; " << payload.current[0] << " amps" << std::endl; + o << "Half Gap #1: HV Line No " << payload.hvLineNo[1] << ' ' << payload.voltage[1] << " volts; " << payload.current[1] << " amps" << std::endl; return o; } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVElectrode.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVElectrode.cxx index ae9a06dfbfce0cc5bfcb73a11fa6afed537c61e4..582d82b0b9716eaafd8be40d854c5a23757abb00 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVElectrode.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVElectrode.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArHV/EMECHVElectrode.h" @@ -45,36 +45,8 @@ double EMECHVElectrode::getPhi() const return m_c->module->getPhiMin()+m_c->iElectrode*2.0*M_PI/N; } -bool EMECHVElectrode::hvOn(int iGap ) const -{ - EMECHVPayload *payload = m_c->module->getManager().getPayload(*this); - return payload->voltage[iGap]>=-9999; -} - -double EMECHVElectrode::voltage(int iGap) const { - EMECHVPayload *payload = m_c->module->getManager().getPayload(*this); - return payload->voltage[iGap]; -} - -double EMECHVElectrode::current(int iGap) const { - EMECHVPayload *payload = m_c->module->getManager().getPayload(*this); - return payload->current[iGap]; -} - -void EMECHVElectrode::voltage_current(int iGap,double& voltage, double¤t) const { - EMECHVPayload *payload = m_c->module->getManager().getPayload(*this); - voltage = payload->voltage[iGap]; - current = payload->current[iGap]; -} - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) int EMECHVElectrode::hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping) const { - return hvIdMapping - ? m_c->module->getManager().hvLineNo(*this, iGap, hvIdMapping) - : m_c->module->getManager().getPayload(*this)->hvLineNo[iGap]; -} -#else -int EMECHVElectrode::hvLineNo(int iGap) const { - return m_c->module->getManager().getPayload(*this)->hvLineNo[iGap]; + return m_c->module->getManager().hvLineNo(*this, iGap, hvIdMapping); } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVManager.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVManager.cxx index c059da3103e8f647473e4d3c2f909073071fee00..cedcf32b49ebdf76d30535b3635b24dd14c9c0ff 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVManager.cxx @@ -11,6 +11,7 @@ #include "EMECHVPayload.h" #include "StoreGate/StoreGateSvc.h" +#include "AthenaKernel/getMessageSvc.h" #include "GaudiKernel/ISvcLocator.h" #include "GaudiKernel/IToolSvc.h" #include "GaudiKernel/Bootstrap.h" @@ -33,16 +34,46 @@ #include <atomic> + +namespace { + + +struct ATLAS_NOT_THREAD_SAFE LegacyIdFunc +{ + LegacyIdFunc(); + std::vector<HWIdentifier> operator()(HWIdentifier id) + { + return m_cablingTool->getLArElectrodeIDvec (id); + } + LArHVCablingTool* m_cablingTool; +}; + + +LegacyIdFunc::LegacyIdFunc() +{ + ToolHandle<LArHVCablingTool> tool ("LArHVCablingTool"); + if (!tool.retrieve().isSuccess()) { + std::abort(); + } + m_cablingTool = tool.get(); +} + + +} // Anonymous namespace + + class EMECHVManager::Clockwork { public: - Clockwork(const EMECHVManager* manager, IOType wheel) - : iWheel(wheel) + Clockwork(const EMECHVManager* manager, IOType wheel, + std::unique_ptr<EMECHVDescriptor> the_descriptor) + : descriptor(std::move(the_descriptor)), + iWheel(wheel) { for(int iSide=0; iSide<2; ++iSide) { for(int iEta=0; iEta<8; ++iEta) { for(int iPhi=0; iPhi<8; ++iPhi) { for(int iSector=0; iSector<8; ++iSector) { - moduleArray[iSide][iEta][iPhi][iSector] = new EMECHVModule(manager,wheel,iSide,iEta,iPhi,iSector); + moduleArray[iSide][iEta][iPhi][iSector] = std::make_unique<EMECHVModule>(manager,wheel,iSide,iEta,iPhi,iSector); } } } @@ -58,31 +89,92 @@ public: } } ~Clockwork() { - for(int iSide=0; iSide<2; ++iSide) { - for(int iEta=0; iEta<8; ++iEta) { - for(int iPhi=0; iPhi<8; ++iPhi) { - for(int iSector=0; iSector<8; ++iSector) { - delete moduleArray[iSide][iEta][iPhi][iSector]; - } - } - } - } - delete descriptor; } - EMECHVDescriptor* descriptor{nullptr}; + std::unique_ptr<EMECHVDescriptor> descriptor; IOType iWheel; - const EMECHVModule* moduleArray[2][8][8][8]; // not dense - std::atomic<bool> init{false}; - std::mutex mtx; - std::vector<EMECHVPayload> payloadArray; + std::unique_ptr<const EMECHVModule> moduleArray[2][8][8][8]; // not dense const LArElectrodeID* elecId; const LArHVLineID* hvId; }; +class EMECHVManager::EMECHVData::Payload +{ +public: + std::vector<EMECHVPayload> m_payloadArray; +}; + + +EMECHVManager::EMECHVData::EMECHVData() +{ +} + + +EMECHVManager::EMECHVData::EMECHVData (std::unique_ptr<Payload> payload) + : m_payload (std::move (payload)) +{ +} + + +EMECHVManager::EMECHVData& +EMECHVManager::EMECHVData::operator= (EMECHVData&& other) +{ + if (this != &other) { + m_payload = std::move (other.m_payload); + } + return *this; +} + + +EMECHVManager::EMECHVData::~EMECHVData() +{ +} + + +bool EMECHVManager::EMECHVData::hvOn (const EMECHVElectrode& electrode, const int& iGap) const +{ + return voltage (electrode, iGap) > INVALID; +} + + +double EMECHVManager::EMECHVData::voltage (const EMECHVElectrode& electrode, const int& iGap) const +{ + return m_payload->m_payloadArray[index(electrode)].voltage[iGap]; +} + + +double EMECHVManager::EMECHVData::current (const EMECHVElectrode& electrode, const int& iGap) const +{ + return m_payload->m_payloadArray[index(electrode)].current[iGap]; +} + + +int EMECHVManager::EMECHVData::hvLineNo (const EMECHVElectrode& electrode, const int& iGap) const +{ + return m_payload->m_payloadArray[index(electrode)].hvLineNo[iGap]; +} + + +int EMECHVManager::EMECHVData::index (const EMECHVElectrode& electrode) const +{ + unsigned int electrodeIndex = electrode.getElectrodeIndex(); + const EMECHVModule& module = electrode.getModule(); + unsigned int etaIndex = module.getEtaIndex(); + unsigned int phiIndex = module.getPhiIndex(); + unsigned int sectorIndex = module.getSectorIndex(); + unsigned int sideIndex = module.getSideIndex(); + + unsigned int index=0; + if (module.getWheelIndex()==EMECHVModule::OUTER) index= 5376*sideIndex+768*etaIndex+96*phiIndex+24*sectorIndex+electrodeIndex; + else if (module.getWheelIndex()==EMECHVModule::INNER) index= 512*sideIndex+256*etaIndex+32*phiIndex+4*sectorIndex+electrodeIndex; + + return index; +} + + EMECHVManager::EMECHVManager(IOType wheel) - : m_c(new Clockwork(this,wheel)) { + std::unique_ptr<EMECHVDescriptor> descriptor; if (wheel==EMECHVModule::OUTER) { CellPartitioning etaBinning; etaBinning.addValue(1.375); @@ -93,15 +185,16 @@ EMECHVManager::EMECHVManager(IOType wheel) etaBinning.addValue(2.1); etaBinning.addValue(2.3); etaBinning.addValue(2.5); - m_c->descriptor = new EMECHVDescriptor(etaBinning,CellBinning(0.0, 2*M_PI, 8),CellBinning(0,M_PI/4.0,4)); + descriptor = std::make_unique<EMECHVDescriptor>(etaBinning,CellBinning(0.0, 2*M_PI, 8),CellBinning(0,M_PI/4.0,4)); } else { CellPartitioning etaBinning; etaBinning.addValue(2.5); etaBinning.addValue(2.8); etaBinning.addValue(3.2); - m_c->descriptor=new EMECHVDescriptor(etaBinning,CellBinning(0.0, 2*M_PI, 8),CellBinning(0,M_PI/4.0,8)); + descriptor = std::make_unique<EMECHVDescriptor>(etaBinning,CellBinning(0.0, 2*M_PI, 8),CellBinning(0,M_PI/4.0,8)); } + m_c = std::make_unique<Clockwork> (this, wheel, std::move(descriptor)); } const EMECHVDescriptor& EMECHVManager::getDescriptor() const @@ -136,7 +229,6 @@ const EMECHVModule& EMECHVManager::getHVModule(unsigned int iSide, unsigned int EMECHVManager::~EMECHVManager() { - delete m_c; } unsigned int EMECHVManager::beginSideIndex() const @@ -164,163 +256,146 @@ EMECHVManager::IOType EMECHVManager::getWheelIndex() const return m_c->iWheel; } -void EMECHVManager::update() const { - std::lock_guard<std::mutex> lock(m_c->mtx); - if (!(m_c->init)) { - m_c->init=true; - if (m_c->iWheel==EMECHVModule::OUTER) { - m_c->payloadArray.reserve(2*7*8*4*24); - for (unsigned int i=0;i<10752;i++) { - m_c->payloadArray[i].voltage[0]=-99999; - m_c->payloadArray[i].voltage[1]=-99999; - } +EMECHVManager::EMECHVData +EMECHVManager::getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto payload = std::make_unique<EMECHVData::Payload>(); + + if (m_c->iWheel==EMECHVModule::OUTER) { + payload->m_payloadArray.reserve(2*7*8*4*24); + for (unsigned int i=0;i<10752;i++) { + payload->m_payloadArray[i].voltage[0] = EMECHVData::INVALID; + payload->m_payloadArray[i].voltage[1] = EMECHVData::INVALID; } - else if (m_c->iWheel==EMECHVModule::INNER) { - m_c->payloadArray.reserve(2*2*8*8*4); - for (unsigned int i=0;i<1024;i++) { - m_c->payloadArray[i].voltage[0]=-99999; - m_c->payloadArray[i].voltage[1]=-99999; - } + } + else if (m_c->iWheel==EMECHVModule::INNER) { + payload->m_payloadArray.reserve(2*2*8*8*4); + for (unsigned int i=0;i<1024;i++) { + payload->m_payloadArray[i].voltage[0] = EMECHVData::INVALID; + payload->m_payloadArray[i].voltage[1] = EMECHVData::INVALID; } + } - ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "HECHVManager"); - - ISvcLocator* svcLocator = Gaudi::svcLocator(); - IToolSvc* toolSvc; - LArHVCablingTool* hvcablingTool; - - if(StatusCode::SUCCESS!=svcLocator->service("ToolSvc",toolSvc)) - return; - - if(StatusCode::SUCCESS!=toolSvc->retrieveTool("LArHVCablingTool",hvcablingTool)) - return; - - std::vector<std::string> colnames; - colnames.push_back("/LAR/DCS/HV/BARREl/I16"); - colnames.push_back("/LAR/DCS/HV/BARREL/I8"); - - std::vector<std::string>::const_iterator it = colnames.begin(); - std::vector<std::string>::const_iterator ie = colnames.end(); - - for (;it!=ie;it++) { - //std::cout << " --- Start reading folder " << (*it) << std::endl; - const CondAttrListCollection* atrlistcol; - if (StatusCode::SUCCESS!=detStore->retrieve(atrlistcol,*it)) - return; + for (const CondAttrListCollection* atrlistcol : attrLists) { - for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { - // Construct HWIdentifier - // 1. decode COOL Channel ID - unsigned int chanID = (*citr).first; - int cannode = chanID/1000; - int line = chanID%1000; - //std::cout << " ++ found data for cannode, line " << cannode << " " << line << std::endl; + for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { + // Construct HWIdentifier + // 1. decode COOL Channel ID + unsigned int chanID = (*citr).first; + int cannode = chanID/1000; + int line = chanID%1000; - // 2. Construct the identifier - HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); + // 2. Construct the identifier + HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); - std::vector<HWIdentifier> electrodeIdVec = hvcablingTool->getLArElectrodeIDvec(id); + std::vector<HWIdentifier> electrodeIdVec = idfunc(id); - for(size_t i=0;i<electrodeIdVec.size();i++) { - HWIdentifier& elecHWID = electrodeIdVec[i]; + for(size_t i=0;i<electrodeIdVec.size();i++) { + HWIdentifier& elecHWID = electrodeIdVec[i]; - int detector = m_c->elecId->detector(elecHWID); - // check we are in EMEC - if (detector==2) { + int detector = m_c->elecId->detector(elecHWID); + // check we are in EMEC + if (detector==2) { - unsigned int etaIndex=m_c->elecId->hv_eta(elecHWID); + unsigned int etaIndex=m_c->elecId->hv_eta(elecHWID); - if ( (etaIndex>6 && m_c->iWheel==EMECHVModule::INNER) || (etaIndex<7 && m_c->iWheel==EMECHVModule::OUTER) ) { + if ( (etaIndex>6 && m_c->iWheel==EMECHVModule::INNER) || (etaIndex<7 && m_c->iWheel==EMECHVModule::OUTER) ) { - unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); - unsigned int phiIndex=m_c->elecId->module(elecHWID); // 0 to 7 + unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); + unsigned int phiIndex=m_c->elecId->module(elecHWID); // 0 to 7 // rotation for C side - if (sideIndex==0) { - if (phiIndex<4) phiIndex=3-phiIndex; - else phiIndex=11-phiIndex; - } - unsigned int sectorIndex=m_c->elecId->hv_phi(elecHWID)-1; // 0 to 3 in Outer, 0 to 7 in Inner + if (sideIndex==0) { + if (phiIndex<4) phiIndex=3-phiIndex; + else phiIndex=11-phiIndex; + } + unsigned int sectorIndex=m_c->elecId->hv_phi(elecHWID)-1; // 0 to 3 in Outer, 0 to 7 in Inner // rotation for C side - if (sideIndex==0) { - if (m_c->iWheel==EMECHVModule::OUTER) sectorIndex=3-sectorIndex; - else sectorIndex=7-sectorIndex; - } - unsigned int electrodeIndex = m_c->iWheel==EMECHVModule::OUTER ? - m_c->elecId->electrode(elecHWID)%24: - m_c->elecId->electrode(elecHWID)%4; + if (sideIndex==0) { + if (m_c->iWheel==EMECHVModule::OUTER) sectorIndex=3-sectorIndex; + else sectorIndex=7-sectorIndex; + } + unsigned int electrodeIndex = m_c->iWheel==EMECHVModule::OUTER ? + m_c->elecId->electrode(elecHWID)%24: + m_c->elecId->electrode(elecHWID)%4; // rotation for C side - if (sideIndex==0) { - if (m_c->iWheel==EMECHVModule::OUTER) electrodeIndex=23-electrodeIndex; - else electrodeIndex=3-electrodeIndex; - } + if (sideIndex==0) { + if (m_c->iWheel==EMECHVModule::OUTER) electrodeIndex=23-electrodeIndex; + else electrodeIndex=3-electrodeIndex; + } - unsigned int index = m_c->iWheel==EMECHVModule::OUTER ? - 5376*sideIndex+768*etaIndex+96*phiIndex+24*sectorIndex+electrodeIndex: - 512*sideIndex+256*(etaIndex-7)+32*phiIndex+4*sectorIndex+electrodeIndex; - - if (m_c->iWheel==EMECHVModule::OUTER && index>10752) { - std::cout << "invalid index outer " << index << " side,eta,phi,sector,electrode " << sideIndex << " " << etaIndex << " " << phiIndex << - " " << sectorIndex << " " << electrodeIndex << std::endl; - continue; - } - if (m_c->iWheel==EMECHVModule::INNER && index>1024) { - std::cout << "invalid index inner " << index << " side,eta,phi,sector,electrode " << sideIndex << " " << etaIndex << " " << phiIndex << - " " << sectorIndex << " " << electrodeIndex << std::endl; - continue; - } + unsigned int index = m_c->iWheel==EMECHVModule::OUTER ? + 5376*sideIndex+768*etaIndex+96*phiIndex+24*sectorIndex+electrodeIndex: + 512*sideIndex+256*(etaIndex-7)+32*phiIndex+4*sectorIndex+electrodeIndex; + + if (m_c->iWheel==EMECHVModule::OUTER && index>10752) { + MsgStream msg (Athena::getMessageSvc(), "EMECHVManager"); + msg << MSG::ERROR << "invalid index outer " << index << " side,eta,phi,sector,electrode " << sideIndex << " " << etaIndex << " " << phiIndex << + " " << sectorIndex << " " << electrodeIndex << endmsg; + continue; + } + if (m_c->iWheel==EMECHVModule::INNER && index>1024) { + MsgStream msg (Athena::getMessageSvc(), "EMECHVManager"); + msg << MSG::ERROR << "invalid index inner " << index << " side,eta,phi,sector,electrode " << sideIndex << " " << etaIndex << " " << phiIndex << + " " << sectorIndex << " " << electrodeIndex << endmsg; + continue; + } - unsigned int gapIndex=m_c->elecId->gap(elecHWID); - if (gapIndex>1) { - std::cout << "invalid gapIndex " << gapIndex << std::endl; - continue; - } - if (sideIndex==0) gapIndex=1-gapIndex; + unsigned int gapIndex=m_c->elecId->gap(elecHWID); + if (gapIndex>1) { + MsgStream msg (Athena::getMessageSvc(), "EMECHVManager"); + msg << MSG::ERROR << "invalid gapIndex " << gapIndex << endmsg; + continue; + } + if (sideIndex==0) gapIndex=1-gapIndex; - float voltage = -99999.; - if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); - float current = 0.; - if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - unsigned int status = 0; - if (!((*citr).second)["R_STAT"].isNull()) status = ((*citr).second)["R_STAT"].data<unsigned int>(); - - //std::cout << " hvlineId,elecHWID,cannode,line, side,phi module, sector,eta,electrode,gap,index " << std::hex << id << " " << elecHWID << std::dec << " " << cannode << " " << line << " " << m_c->elecId->zside(elecHWID) << " " << m_c->elecId->module(elecHWID) << " " << m_c->elecId->hv_phi(elecHWID) << " " << m_c->elecId->hv_eta(elecHWID) << " " << m_c->elecId->electrode(elecHWID) - // << " " << gapIndex << " " << index << " " << voltage << std::endl; + float voltage = EMECHVData::INVALID;; + if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); + float current = 0.; + if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - m_c->payloadArray[index].voltage[gapIndex]=voltage; - m_c->payloadArray[index].current[gapIndex]=current; - m_c->payloadArray[index].status[gapIndex]=status; - m_c->payloadArray[index].hvLineNo[gapIndex]=chanID; - } // if etaIndex... - } // for (electrodeIdVec) - } // is EMEC - } // for (atrlistcol) - } - } // if(!m_c->init) -} + payload->m_payloadArray[index].voltage[gapIndex]=voltage; + payload->m_payloadArray[index].current[gapIndex]=current; + payload->m_payloadArray[index].hvLineNo[gapIndex]=chanID; + } // if etaIndex... + } // for (electrodeIdVec) + } // is EMEC + } // for (atrlistcol) + } -void EMECHVManager::reset() const { - m_c->init=false; + return EMECHVManager::EMECHVData (std::move (payload)); } -EMECHVPayload *EMECHVManager::getPayload(const EMECHVElectrode &electrode) const { - update(); - unsigned int electrodeIndex = electrode.getElectrodeIndex(); - const EMECHVModule& module = electrode.getModule(); - unsigned int etaIndex = module.getEtaIndex(); - unsigned int phiIndex = module.getPhiIndex(); - unsigned int sectorIndex = module.getSectorIndex(); - unsigned int sideIndex = module.getSideIndex(); - unsigned int index=0; - if (m_c->iWheel==EMECHVModule::OUTER) index= 5376*sideIndex+768*etaIndex+96*phiIndex+24*sectorIndex+electrodeIndex; - else if (m_c->iWheel==EMECHVModule::INNER) index= 512*sideIndex+256*etaIndex+32*phiIndex+4*sectorIndex+electrodeIndex; - return &m_c->payloadArray[index]; +EMECHVManager::EMECHVData +EMECHVManager::getData ATLAS_NOT_THREAD_SAFE () const +{ + std::vector<const CondAttrListCollection*> attrLists; + ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "EMBHVManager"); + const CondAttrListCollection* atrlistcol = nullptr; + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I16").isSuccess()) { + attrLists.push_back (atrlistcol); + } + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I8").isSuccess()) { + attrLists.push_back (atrlistcol); + } + return getData (LegacyIdFunc(), attrLists); } + #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) +EMECHVManager::EMECHVData +EMECHVManager::getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto idfunc = [&] (HWIdentifier id) { return hvIdMapping.getLArElectrodeIDvec(id); }; + return getData (idfunc, attrLists); +} + + int EMECHVManager::hvLineNo(const EMECHVElectrode& electrode , int gap , const LArHVIdMapping* hvIdMapping) const diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVPayload.h b/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVPayload.h index d61e6fc3157006af7b2a3e7d4b267a2b4156db21..22f174b7731efaac084ece1a7cf4e2be68be785e 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVPayload.h +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMECHVPayload.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARHV_EMECHVPAYLOAD_H @@ -8,14 +8,13 @@ struct EMECHVPayload { double voltage[2]; double current[2]; - unsigned int status[2]; int hvLineNo[2]; }; inline std::ostream & operator << (std::ostream & o, const EMECHVPayload & payload) { - o << "Half Gap #0: HV Line No " << payload.hvLineNo[0] << ' ' << payload.voltage[0] << " volts; " << payload.current[0] << " amps; status = " << payload.status[0] << std::endl; - o << "Half Gap #1: HV Line No " << payload.hvLineNo[1] << ' ' << payload.voltage[1] << " volts; " << payload.current[1] << " amps; status = " << payload.status[1] << std::endl; + o << "Half Gap #0: HV Line No " << payload.hvLineNo[0] << ' ' << payload.voltage[0] << " volts; " << payload.current[0] << " amps" << std::endl; + o << "Half Gap #1: HV Line No " << payload.hvLineNo[1] << ' ' << payload.voltage[1] << " volts; " << payload.current[1] << " amps" << std::endl; return o; } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVManager.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVManager.cxx index 655edf3f95ad6f003d1446d93e100fbaf01ac31f..a3e84b41fee453d0e4c3563a313341e1e29845c1 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVManager.cxx @@ -32,12 +32,40 @@ #include <atomic> + +namespace { + + +struct ATLAS_NOT_THREAD_SAFE LegacyIdFunc +{ + LegacyIdFunc(); + std::vector<HWIdentifier> operator()(HWIdentifier id) + { + return m_cablingTool->getLArElectrodeIDvec (id); + } + LArHVCablingTool* m_cablingTool; +}; + + +LegacyIdFunc::LegacyIdFunc() +{ + ToolHandle<LArHVCablingTool> tool ("LArHVCablingTool"); + if (!tool.retrieve().isSuccess()) { + std::abort(); + } + m_cablingTool = tool.get(); +} + + +} // Anonymous namespace + + class EMECPresamplerHVManager::Clockwork { public: Clockwork(const EMECPresamplerHVManager* manager) { for(int iSide=0; iSide<2; ++iSide) { for(int iPhi=0; iPhi<64; ++iPhi) { - moduleArray[iSide][iPhi] = new EMECPresamplerHVModule(manager, iSide, iPhi); + moduleArray[iSide][iPhi] = std::make_unique<EMECPresamplerHVModule>(manager, iSide, iPhi); } } ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "HECHVManager"); @@ -50,29 +78,93 @@ public: } } ~Clockwork() { - for(int iSide=0; iSide<2; ++iSide) { - for(int iPhi=0; iPhi<64; ++iPhi) { - delete moduleArray[iSide][iPhi]; - } - } } CellBinning phiBinning{0.0, 2*M_PI, 64}; - const EMECPresamplerHVModule* moduleArray[2][64]; // not dense - std::atomic<bool> init{false}; - std::mutex mtx; - std::vector<EMECPresamplerHVPayload> payloadArray; + std::unique_ptr<const EMECPresamplerHVModule> moduleArray[2][64]; // not dense const LArElectrodeID* elecId; const LArHVLineID* hvId; }; + +class EMECPresamplerHVManager::EMECPresamplerHVData::Payload +{ +public: + std::vector<EMECPresamplerHVPayload> m_payloadArray; +}; + + +EMECPresamplerHVManager::EMECPresamplerHVData::EMECPresamplerHVData() +{ +} + + +EMECPresamplerHVManager::EMECPresamplerHVData::EMECPresamplerHVData + (std::unique_ptr<Payload> payload) + : m_payload (std::move (payload)) +{ +} + + +EMECPresamplerHVManager::EMECPresamplerHVData& +EMECPresamplerHVManager::EMECPresamplerHVData::operator= (EMECPresamplerHVData&& other) +{ + if (this != &other) { + m_payload = std::move (other.m_payload); + } + return *this; +} + + +EMECPresamplerHVManager::EMECPresamplerHVData::~EMECPresamplerHVData() +{ +} + + +bool EMECPresamplerHVManager::EMECPresamplerHVData::hvOn + (const EMECPresamplerHVModule& module, const int& iGap) const +{ + return voltage (module, iGap) > INVALID; +} + + +double EMECPresamplerHVManager::EMECPresamplerHVData::voltage + (const EMECPresamplerHVModule& module, const int& /*iGap*/) const +{ + return m_payload->m_payloadArray[index(module)].voltage; +} + + +double EMECPresamplerHVManager::EMECPresamplerHVData::current + (const EMECPresamplerHVModule& module, const int& /*iGap*/) const +{ + return m_payload->m_payloadArray[index(module)].current; +} + + +int EMECPresamplerHVManager::EMECPresamplerHVData::hvLineNo + (const EMECPresamplerHVModule& module, const int& /*iGap*/) const +{ + return m_payload->m_payloadArray[index(module)].hvLineNo; +} + + +int EMECPresamplerHVManager::EMECPresamplerHVData::index + (const EMECPresamplerHVModule& module) const +{ + unsigned int phiIndex = module.getPhiIndex(); + unsigned int sideIndex = module.getSideIndex(); + unsigned int index = 64*sideIndex+phiIndex; + return index; +} + + EMECPresamplerHVManager::EMECPresamplerHVManager() - : m_c(new Clockwork(this)) + : m_c (std::make_unique<Clockwork> (this)) { } EMECPresamplerHVManager::~EMECPresamplerHVManager() { - delete m_c; } const CellBinning *EMECPresamplerHVManager::getPhiBinning() const @@ -105,73 +197,46 @@ unsigned int EMECPresamplerHVManager::endSideIndex() const return 2; } -void EMECPresamplerHVManager::update() const { - std::lock_guard<std::mutex> lock(m_c->mtx); - if (!(m_c->init)) { - m_c->init=true; - { - m_c->payloadArray.reserve(2*64); - for (unsigned int i=0;i<64;i++) { - m_c->payloadArray[i].voltage[0]=-99999; - m_c->payloadArray[i].voltage[1]=-99999; - } - } +EMECPresamplerHVManager::EMECPresamplerHVData +EMECPresamplerHVManager::getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto payload = std::make_unique<EMECPresamplerHVData::Payload>(); + payload->m_payloadArray.reserve(2*64); + for (unsigned int i=0;i<64;i++) { + payload->m_payloadArray[i].voltage = EMECPresamplerHVData::INVALID; + } - ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "HECHVManager"); + for (const CondAttrListCollection* atrlistcol : attrLists) { - ISvcLocator* svcLocator = Gaudi::svcLocator(); - IToolSvc* toolSvc; - LArHVCablingTool* hvcablingTool; - - if(StatusCode::SUCCESS!=svcLocator->service("ToolSvc",toolSvc)) - return; - - if(StatusCode::SUCCESS!=toolSvc->retrieveTool("LArHVCablingTool",hvcablingTool)) - return; - - std::vector<std::string> colnames; - colnames.push_back("/LAR/DCS/HV/BARREl/I16"); - colnames.push_back("/LAR/DCS/HV/BARREL/I8"); - - std::vector<std::string>::const_iterator it = colnames.begin(); - std::vector<std::string>::const_iterator ie = colnames.end(); - - for (;it!=ie;it++) { - - //std::cout << " --- Start reading folder " << (*it) << std::endl; - const CondAttrListCollection* atrlistcol; - if (StatusCode::SUCCESS!=detStore->retrieve(atrlistcol,*it)) - return; - - for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { + for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { - // Construct HWIdentifier - // 1. decode COOL Channel ID - unsigned int chanID = (*citr).first; - int cannode = chanID/1000; - int line = chanID%1000; - //std::cout << " ++ found data for cannode, line " << cannode << " " << line << std::endl; + // Construct HWIdentifier + // 1. decode COOL Channel ID + unsigned int chanID = (*citr).first; + int cannode = chanID/1000; + int line = chanID%1000; - // 2. Construct the identifier - HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); + // 2. Construct the identifier + HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); - std::vector<HWIdentifier> electrodeIdVec = hvcablingTool->getLArElectrodeIDvec(id); + std::vector<HWIdentifier> electrodeIdVec = idfunc(id); - for(size_t i=0;i<electrodeIdVec.size();i++) { - HWIdentifier& elecHWID = electrodeIdVec[i]; - int detector = m_c->elecId->detector(elecHWID); - // check we are in EMECPresampler - if (detector==3) { + for(size_t i=0;i<electrodeIdVec.size();i++) { + HWIdentifier& elecHWID = electrodeIdVec[i]; + int detector = m_c->elecId->detector(elecHWID); + // check we are in EMECPresampler + if (detector==3) { - unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); - unsigned int phiIndex=m_c->elecId->module(elecHWID); // from 0 to 31 + unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); + unsigned int phiIndex=m_c->elecId->module(elecHWID); // from 0 to 31 // rotation for C side - if (sideIndex==0) { - if (phiIndex<16) phiIndex=15-phiIndex; - else phiIndex=47-phiIndex; - } + if (sideIndex==0) { + if (phiIndex<16) phiIndex=15-phiIndex; + else phiIndex=47-phiIndex; + } // GU January 2017 - fix for HV EMEC PS distribution // 0-31 in phi module @@ -181,48 +246,55 @@ void EMECPresamplerHVManager::update() const { // so in total 64 sectors in phi given by 2*phiIndex+gapIndex // the two gap of these sectors are powered by the same line and have the same HV - unsigned int gapIndex=m_c->elecId->gap(elecHWID); + unsigned int gapIndex=m_c->elecId->gap(elecHWID); - unsigned int index = 64*sideIndex+2*phiIndex+gapIndex; + unsigned int index = 64*sideIndex+2*phiIndex+gapIndex; - float voltage = -99999.; - if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); - float current = 0.; - if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - unsigned int status = 0; - if (!((*citr).second)["R_STAT"].isNull()) status = ((*citr).second)["R_STAT"].data<unsigned int>(); - - - for (unsigned int gap=0;gap<2;gap++) { - m_c->payloadArray[index].voltage[gap]=voltage; - m_c->payloadArray[index].current[gap]=current; - m_c->payloadArray[index].status[gap]=status; - m_c->payloadArray[index].hvLineNo[gap]=chanID; - } - } // for (electrodeIdVec) - } // is EMECPresampler - } // for (atrlistcol) - } - } // if(!m_c->init) + float voltage = EMECPresamplerHVData::INVALID; + if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); + float current = 0.; + if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); + + + payload->m_payloadArray[index].voltage=voltage; + payload->m_payloadArray[index].current=current; + payload->m_payloadArray[index].hvLineNo=chanID; + } // for (electrodeIdVec) + } // is EMECPresampler + } // for (atrlistcol) + } + + return EMECPresamplerHVManager::EMECPresamplerHVData (std::move (payload)); } -void EMECPresamplerHVManager::reset() const { - m_c->init=false; +EMECPresamplerHVManager::EMECPresamplerHVData +EMECPresamplerHVManager::getData ATLAS_NOT_THREAD_SAFE () const +{ + std::vector<const CondAttrListCollection*> attrLists; + ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "EMBHVManager"); + const CondAttrListCollection* atrlistcol = nullptr; + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I16").isSuccess()) { + attrLists.push_back (atrlistcol); + } + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I8").isSuccess()) { + attrLists.push_back (atrlistcol); + } + return getData (LegacyIdFunc(), attrLists); } -EMECPresamplerHVPayload *EMECPresamplerHVManager::getPayload(const EMECPresamplerHVModule & module) const { - update(); - unsigned int phiIndex = module.getPhiIndex(); - unsigned int sideIndex = module.getSideIndex(); - - unsigned int index = 64*sideIndex+phiIndex; - return &m_c->payloadArray[index]; +#if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) +EMECPresamplerHVManager::EMECPresamplerHVData +EMECPresamplerHVManager::getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto idfunc = [&] (HWIdentifier id) { return hvIdMapping.getLArElectrodeIDvec(id); }; + return getData (idfunc, attrLists); } -#if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) + int EMECPresamplerHVManager::hvLineNo(const EMECPresamplerHVModule& module , const LArHVIdMapping* hvIdMapping) const { int sideIndex = module.getSideIndex(); diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVModule.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVModule.cxx index 077dee06afa7290ebfc5b044ef65c41e1362e542..7ab3bbe7c825f007e82b3c5636fa6855941c9690 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVModule.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVModule.cxx @@ -70,39 +70,9 @@ const EMECPresamplerHVManager& EMECPresamplerHVModule::getManager() const return *(m_c->manager); } -bool EMECPresamplerHVModule::hvOn(int iGap ) const -{ - EMECPresamplerHVPayload *payload = getManager().getPayload(*this); - return (payload->voltage[iGap]>=-9999); -} - -double EMECPresamplerHVModule::voltage(int iGap) const { - EMECPresamplerHVPayload *payload = getManager().getPayload(*this); - return payload->voltage[iGap]; -} - -double EMECPresamplerHVModule::current(int iGap) const { - EMECPresamplerHVPayload *payload = getManager().getPayload(*this); - return payload->current[iGap]; -} - -void EMECPresamplerHVModule::voltage_current(int iGap,double& voltage, double¤t) const -{ - EMECPresamplerHVPayload *payload = getManager().getPayload(*this); - voltage = payload->voltage[iGap]; - current = payload->current[iGap]; -} - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) -int EMECPresamplerHVModule::hvLineNo(int iGap, const LArHVIdMapping* hvIdMapping) const -{ - return hvIdMapping - ? getManager().hvLineNo(*this,hvIdMapping) - : getManager().getPayload(*this)->hvLineNo[iGap]; -} -#else -int EMECPresamplerHVModule::hvLineNo(int iGap) const +int EMECPresamplerHVModule::hvLineNo(int /*iGap*/, const LArHVIdMapping* hvIdMapping) const { - return getManager().getPayload(*this)->hvLineNo[iGap]; + return getManager().hvLineNo(*this,hvIdMapping); } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVPayload.h b/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVPayload.h index a4796090e4e3ccbe5a2ce559b8c286aa3da9b469..a6544ebcb90154d73bd96942f9fee7778aee718d 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVPayload.h +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMECPresamplerHVPayload.h @@ -1,20 +1,18 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARHV_EMECPRESAMPLERHVPAYLOAD_H #define LARHV_EMECPRESAMPLERHVPAYLOAD_H #include <iostream> struct EMECPresamplerHVPayload { - double voltage[2]; - double current[2]; - unsigned int status[2]; - int hvLineNo[2]; + double voltage; + double current; + int hvLineNo; }; inline std::ostream & operator << (std::ostream & o, const EMECPresamplerHVPayload & payload) { - o << "Half Gap #0: HV Line No " << payload.hvLineNo[0] << ' ' << payload.voltage[0] << " volts; " << payload.current[0] << " amps; status = " << payload.status[0] << std::endl; - o << "Half Gap #1: HV Line No " << payload.hvLineNo[1] << ' ' << payload.voltage[1] << " volts; " << payload.current[1] << " amps; status = " << payload.status[1] << std::endl; + o << "HV Line No " << payload.hvLineNo << ' ' << payload.voltage << " volts; " << payload.current << " amps" << std::endl; return o; } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVLine.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVLine.cxx index 16c671eb3f14550a48226b61e0451f568e61de62..f2681297e593d5668559ce4002b0cab7f5f41639 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVLine.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVLine.cxx @@ -40,36 +40,8 @@ unsigned int FCALHVLine::getLineIndex() const return m_c->iLine; } -bool FCALHVLine::hvOn() const -{ - FCALHVPayload *payload = m_c->module->getManager().getPayload(*this); - return (payload->voltage>=-9999); -} - -double FCALHVLine::voltage() const { - FCALHVPayload *payload = m_c->module->getManager().getPayload(*this); - return payload->voltage; -} - -double FCALHVLine::current() const { - FCALHVPayload *payload = m_c->module->getManager().getPayload(*this); - return payload->current; -} - -void FCALHVLine::voltage_current(double& voltage, double¤t) const { - FCALHVPayload *payload = m_c->module->getManager().getPayload(*this); - voltage = payload->voltage; - current = payload->current; -} - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) int FCALHVLine::hvLineNo(const LArHVIdMapping* hvIdMapping) const { - return hvIdMapping - ? m_c->module->getManager().hvLineNo(*this,hvIdMapping) - : m_c->module->getManager().getPayload(*this)->hvLineNo; -} -#else -int FCALHVLine::hvLineNo() const { - return m_c->module->getManager().getPayload(*this)->hvLineNo; + return m_c->module->getManager().hvLineNo(*this,hvIdMapping); } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVManager.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVManager.cxx index 632e1295db295f9b02a333f402235ab9bf85f5f5..d380deb649338fbb7f575e3a533f17798e1cdbc1 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVManager.cxx @@ -7,6 +7,7 @@ #include "FCALHVPayload.h" +#include "AthenaKernel/getMessageSvc.h" #include "GaudiKernel/ISvcLocator.h" #include "GaudiKernel/IToolSvc.h" #include "GaudiKernel/Bootstrap.h" @@ -25,6 +26,34 @@ #include <atomic> + +namespace { + + +struct ATLAS_NOT_THREAD_SAFE LegacyIdFunc +{ + LegacyIdFunc(); + std::vector<HWIdentifier> operator()(HWIdentifier id) + { + return m_cablingTool->getLArElectrodeIDvec (id); + } + LArHVCablingTool* m_cablingTool; +}; + + +LegacyIdFunc::LegacyIdFunc() +{ + ToolHandle<LArHVCablingTool> tool ("LArHVCablingTool"); + if (!tool.retrieve().isSuccess()) { + std::abort(); + } + m_cablingTool = tool.get(); +} + + +} // Anonymous namespace + + class FCALHVManager::Clockwork { public: Clockwork(const FCALHVManager* manager) @@ -32,7 +61,7 @@ public: for(int iSide=0; iSide<2; ++iSide) { for(int iSector=0; iSector<16; ++iSector) { for(int iSampling=0; iSampling<3; ++iSampling) { - moduleArray[iSide][iSector][iSampling] = new FCALHVModule(manager,iSide,iSector,iSampling); + moduleArray[iSide][iSector][iSampling] = std::make_unique<FCALHVModule>(manager,iSide,iSector,iSampling); } } } @@ -48,30 +77,89 @@ public: } ~Clockwork() { - for(int iSide=0; iSide<2; ++iSide) { - for(int iSector=0; iSector<16; ++iSector) { - for(int iSampling=0; iSampling<3; ++iSampling) { - delete moduleArray[iSide][iSector][iSampling]; - } - } - } } - const FCALHVModule* moduleArray[2][16][3]; - std::atomic<bool> init{false}; - std::mutex mtx; - std::vector<FCALHVPayload> payloadArray; + std::unique_ptr<const FCALHVModule> moduleArray[2][16][3]; const LArElectrodeID* elecId; const LArHVLineID* hvId; }; + +class FCALHVManager::FCALHVData::Payload +{ +public: + std::vector<FCALHVPayload> m_payloadArray; +}; + + +FCALHVManager::FCALHVData::FCALHVData() +{ +} + + +FCALHVManager::FCALHVData::FCALHVData (std::unique_ptr<Payload> payload) + : m_payload (std::move (payload)) +{ +} + + +FCALHVManager::FCALHVData& +FCALHVManager::FCALHVData::operator= (FCALHVData&& other) +{ + if (this != &other) { + m_payload = std::move (other.m_payload); + } + return *this; +} + + +FCALHVManager::FCALHVData::~FCALHVData() +{ +} + + +bool FCALHVManager::FCALHVData::hvOn (const FCALHVLine& line) const +{ + return voltage (line) > INVALID; +} + + +double FCALHVManager::FCALHVData::voltage (const FCALHVLine& line) const +{ + return m_payload->m_payloadArray[index(line)].voltage; +} + + +double FCALHVManager::FCALHVData::current (const FCALHVLine& line) const +{ + return m_payload->m_payloadArray[index(line)].current; +} + + +int FCALHVManager::FCALHVData::hvLineNo (const FCALHVLine& line) const +{ + return m_payload->m_payloadArray[index(line)].hvLineNo; +} + + +int FCALHVManager::FCALHVData::index (const FCALHVLine& line) const +{ + unsigned int lineIndex = line.getLineIndex(); + const FCALHVModule& module = line.getModule(); + unsigned int sectorIndex = module.getSectorIndex(); + unsigned int sideIndex = module.getSideIndex(); + unsigned int samplingIndex = module.getSamplingIndex(); + unsigned int index = 192*sideIndex+12*sectorIndex+4*samplingIndex+lineIndex; + return index; +} + + FCALHVManager::FCALHVManager() - : m_c(new Clockwork(this)) + : m_c (std::make_unique<Clockwork> (this)) { } FCALHVManager::~FCALHVManager() { - delete m_c; } unsigned int FCALHVManager::beginSideIndex() const @@ -112,115 +200,94 @@ const FCALHVModule& FCALHVManager::getHVModule(unsigned int iSide, unsigned int return *(m_c->moduleArray[iSide][iSector][iSampling]); } -void FCALHVManager::update() const { - std::lock_guard<std::mutex> lock(m_c->mtx); - if (!(m_c->init)) { - m_c->init=true; - m_c->payloadArray.reserve(2*16*3*4); - for (unsigned int i=0;i<384;i++) { - m_c->payloadArray[i].voltage = -99999; - } - - ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "HECHVManager"); - - ISvcLocator* svcLocator = Gaudi::svcLocator(); - IToolSvc* toolSvc; - LArHVCablingTool* hvcablingTool; - - if(StatusCode::SUCCESS!=svcLocator->service("ToolSvc",toolSvc)) - return; - - if(StatusCode::SUCCESS!=toolSvc->retrieveTool("LArHVCablingTool",hvcablingTool)) - return; - - std::vector<std::string> colnames; - colnames.push_back("/LAR/DCS/HV/BARREl/I16"); - colnames.push_back("/LAR/DCS/HV/BARREL/I8"); - - std::vector<std::string>::const_iterator it = colnames.begin(); - std::vector<std::string>::const_iterator ie = colnames.end(); - - for (;it!=ie;it++) { - - //std::cout << " --- Start reading folder " << (*it) << std::endl; - const CondAttrListCollection* atrlistcol; - if (StatusCode::SUCCESS!=detStore->retrieve(atrlistcol,*it)) - return; +FCALHVManager::FCALHVData +FCALHVManager::getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto payload = std::make_unique<FCALHVData::Payload>(); + payload->m_payloadArray.reserve(2*16*3*4); + for (unsigned int i=0;i<384;i++) { + payload->m_payloadArray[i].voltage = FCALHVData::INVALID; + } - for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { + for (const CondAttrListCollection* atrlistcol : attrLists) { - // 1. decode COOL Channel ID - unsigned int chanID = (*citr).first; - int cannode = chanID/1000; - int line = chanID%1000; - //std::cout << " cannode,line " << cannode << " " << line << std::endl; + for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { - // 2. Construct the identifier - HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); + // 1. decode COOL Channel ID + unsigned int chanID = (*citr).first; + int cannode = chanID/1000; + int line = chanID%1000; - std::vector<HWIdentifier> electrodeIdVec = hvcablingTool->getLArElectrodeIDvec(id); + // 2. Construct the identifier + HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); - for(size_t i=0;i<electrodeIdVec.size();i++) { + std::vector<HWIdentifier> electrodeIdVec = idfunc(id); - HWIdentifier& elecHWID = electrodeIdVec[i]; - int detector = m_c->elecId->detector(elecHWID); - if (detector==5) { + for(size_t i=0;i<electrodeIdVec.size();i++) { - //std::cout << " FCAl channel found " << (*citr).first << std::endl; + HWIdentifier& elecHWID = electrodeIdVec[i]; + int detector = m_c->elecId->detector(elecHWID); + if (detector==5) { - float voltage = -99999.; - if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); - float current = 0.; - if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - unsigned int status = 0; - if (!((*citr).second)["R_STAT"].isNull()) status = ((*citr).second)["R_STAT"].data<unsigned int>(); + float voltage = FCALHVData::INVALID;; + if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); + float current = 0.; + if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); // 0 C side, 1 A side (unline HV numbering) - unsigned int samplingIndex=m_c->elecId->hv_eta(elecHWID)-1; // 0 to 2 for the FCAL modules 1-2-3 - unsigned int sectorIndex=m_c->elecId->module(elecHWID); // 0-15 FCAL1, 0-7 FCAl2, 0-3 FCAL3 - unsigned int lineIndex=m_c->elecId->gap(elecHWID); // 0-3 + unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); // 0 C side, 1 A side (unline HV numbering) + unsigned int samplingIndex=m_c->elecId->hv_eta(elecHWID)-1; // 0 to 2 for the FCAL modules 1-2-3 + unsigned int sectorIndex=m_c->elecId->module(elecHWID); // 0-15 FCAL1, 0-7 FCAl2, 0-3 FCAL3 + unsigned int lineIndex=m_c->elecId->gap(elecHWID); // 0-3 - //std::cout << " channel found " << sideIndex << " " << samplingIndex << " " << sectorIndex << " " << lineIndex << " "<< voltage << std::endl; + // do we have to worry about phi sector numbering running backwards in phi for z<0 like in EM/HEC ???? - // do we have to worry about phi sector numbering running backwards in phi for z<0 like in EM/HEC ???? + unsigned int index = 192*sideIndex+12*sectorIndex+4*samplingIndex+lineIndex; - unsigned int index = 192*sideIndex+12*sectorIndex+4*samplingIndex+lineIndex; - - if (index>384) { - std::cout << " invalid index for FCAL " << sideIndex << " " << samplingIndex << " " << sectorIndex << " " << lineIndex << std::endl; - continue; - } + if (index>384) { + MsgStream msg (Athena::getMessageSvc(), "EMECHVManager"); + msg << MSG::ERROR << " invalid index for FCAL " << sideIndex << " " << samplingIndex << " " << sectorIndex << " " << lineIndex << endmsg; + continue; + } - m_c->payloadArray[index].voltage=voltage; - m_c->payloadArray[index].current=current; - m_c->payloadArray[index].status=status; - m_c->payloadArray[index].hvLineNo=chanID; - } // if FCAL - } // loop over electrodes - } // loop over collection - } // loop over folders - } // m_c->init + payload->m_payloadArray[index].voltage=voltage; + payload->m_payloadArray[index].current=current; + payload->m_payloadArray[index].hvLineNo=chanID; + } // if FCAL + } // loop over electrodes + } // loop over collection + } // loop over folders + + return FCALHVManager::FCALHVData (std::move (payload)); } -void FCALHVManager::reset() const { - m_c->init=false; +FCALHVManager::FCALHVData +FCALHVManager::getData ATLAS_NOT_THREAD_SAFE () const +{ + std::vector<const CondAttrListCollection*> attrLists; + ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "EMBHVManager"); + const CondAttrListCollection* atrlistcol = nullptr; + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I16").isSuccess()) { + attrLists.push_back (atrlistcol); + } + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I8").isSuccess()) { + attrLists.push_back (atrlistcol); + } + return getData (LegacyIdFunc(), attrLists); } -FCALHVPayload *FCALHVManager::getPayload(const FCALHVLine &line) const { - update(); - unsigned int lineIndex = line.getLineIndex(); - const FCALHVModule& module = line.getModule(); - unsigned int sectorIndex = module.getSectorIndex(); - unsigned int sideIndex = module.getSideIndex(); - unsigned int samplingIndex = module.getSamplingIndex(); - unsigned int index = 192*sideIndex+12*sectorIndex+4*samplingIndex+lineIndex; - //std::cout << "in Fcal getPayload: " << this << ' ' << index << ' ' << sideIndex << ' ' << sectorIndex << ' ' << samplingIndex << ' ' << lineIndex << std::endl; - return &m_c->payloadArray[index]; + +#if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) +FCALHVManager::FCALHVData +FCALHVManager::getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto idfunc = [&] (HWIdentifier id) { return hvIdMapping.getLArElectrodeIDvec(id); }; + return getData (idfunc, attrLists); } -#if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) int FCALHVManager::hvLineNo(const FCALHVLine& line , const LArHVIdMapping* hvIdMapping) const { diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVPayload.h b/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVPayload.h index cfff045575b8043399dc0f226e91a921c452add5..96dacaaafef109f69021eab3ad0d34b6e83bc2a1 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVPayload.h +++ b/LArCalorimeter/LArGeoModel/LArHV/src/FCALHVPayload.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARHV_FCALHVPAYLOAD_H @@ -8,12 +8,11 @@ struct FCALHVPayload { double voltage; double current; - unsigned int status; int hvLineNo; }; inline std::ostream & operator << (std::ostream & o, const FCALHVPayload & payload) { - o << "FCAL Line: HV Line No " << payload.hvLineNo << ' ' << payload.voltage << " volts; " << payload.current << " amps; status = " << payload.status << std::endl; + o << "FCAL Line: HV Line No " << payload.hvLineNo << ' ' << payload.voltage << " volts; " << payload.current << " amps" << std::endl; return o; } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/HECHVManager.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/HECHVManager.cxx index 0849948926979b383b112ea58a1e66603419c62f..aba9ba52aadf0f72fa40ed5d299e4274d4eaf798 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/HECHVManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/HECHVManager.cxx @@ -10,6 +10,7 @@ #include "HECHVPayload.h" #include "StoreGate/StoreGateSvc.h" +#include "AthenaKernel/getMessageSvc.h" #include "GaudiKernel/ISvcLocator.h" #include "GaudiKernel/IToolSvc.h" #include "GaudiKernel/Bootstrap.h" @@ -28,6 +29,34 @@ #include "Identifier/HWIdentifier.h" + +namespace { + + +struct ATLAS_NOT_THREAD_SAFE LegacyIdFunc +{ + LegacyIdFunc(); + std::vector<HWIdentifier> operator()(HWIdentifier id) + { + return m_cablingTool->getLArElectrodeIDvec (id); + } + LArHVCablingTool* m_cablingTool; +}; + + +LegacyIdFunc::LegacyIdFunc() +{ + ToolHandle<LArHVCablingTool> tool ("LArHVCablingTool"); + if (!tool.retrieve().isSuccess()) { + std::abort(); + } + m_cablingTool = tool.get(); +} + + +} // Anonymous namespace + + class HECHVManager::Clockwork { public: Clockwork(const HECHVManager* manager) @@ -35,7 +64,7 @@ public: for(int iSide=0; iSide<2; ++iSide) { for(int iPhi=0; iPhi<32; ++iPhi) { for(int iSampling=0; iSampling<4; ++iSampling) { - moduleArray[iSide][iPhi][iSampling] = new HECHVModule(manager,iSide,iPhi,iSampling); + moduleArray[iSide][iPhi][iSampling] = std::make_unique<HECHVModule>(manager,iSide,iPhi,iSampling); } } } @@ -51,25 +80,85 @@ public: } ~Clockwork() { - for(int iSide=0; iSide<2; ++iSide) { - for(int iPhi=0; iPhi<32; ++iPhi) { - for(int iSampling=0; iSampling<4; ++iSampling) { - delete moduleArray[iSide][iPhi][iSampling]; - } - } - } } HECHVDescriptor descriptor{CellBinning(0,2*M_PI,32)}; - const HECHVModule* moduleArray[2][32][4]; - std::atomic<bool> init{false}; - std::mutex mtx; - std::vector<HECHVPayload> payloadArray; + std::unique_ptr<const HECHVModule> moduleArray[2][32][4]; const LArElectrodeID* elecId; const LArHVLineID* hvId; }; + +class HECHVManager::HECHVData::Payload +{ +public: + std::vector<HECHVPayload> m_payloadArray; +}; + + +HECHVManager::HECHVData::HECHVData() +{ +} + + +HECHVManager::HECHVData::HECHVData (std::unique_ptr<Payload> payload) + : m_payload (std::move (payload)) +{ +} + + +HECHVManager::HECHVData& +HECHVManager::HECHVData::operator= (HECHVData&& other) +{ + if (this != &other) { + m_payload = std::move (other.m_payload); + } + return *this; +} + + +HECHVManager::HECHVData::~HECHVData() +{ +} + + +bool HECHVManager::HECHVData::hvOn (const HECHVSubgap& subgap) const +{ + return voltage (subgap) > INVALID; +} + + +double HECHVManager::HECHVData::voltage (const HECHVSubgap& subgap) const +{ + return m_payload->m_payloadArray[index(subgap)].voltage; +} + + +double HECHVManager::HECHVData::current (const HECHVSubgap& subgap) const +{ + return m_payload->m_payloadArray[index(subgap)].current; +} + + +int HECHVManager::HECHVData::hvLineNo (const HECHVSubgap& subgap) const +{ + return m_payload->m_payloadArray[index(subgap)].hvLineNo; +} + + +int HECHVManager::HECHVData::index (const HECHVSubgap& subgap) const +{ + unsigned int subgapIndex = subgap.getSubgapIndex(); + const HECHVModule& module = subgap.getModule(); + unsigned int phiIndex = module.getPhiIndex(); + unsigned int samplingIndex = module.getSamplingIndex(); + unsigned int sideIndex = module.getSideIndex(); + unsigned int index = 512*sideIndex+16*phiIndex+4*samplingIndex+subgapIndex; + return index; +} + + HECHVManager::HECHVManager() - : m_c(new Clockwork(this)) + : m_c (std::make_unique<Clockwork> (this)) { } @@ -117,116 +206,101 @@ const HECHVModule& HECHVManager::getHVModule(unsigned int iSide HECHVManager::~HECHVManager() { - delete m_c; } -void HECHVManager::update() const { - std::lock_guard<std::mutex> lock(m_c->mtx); - if (!(m_c->init)) { - m_c->init=true; - m_c->payloadArray.reserve(2*32*4*4); - for (unsigned int i=0;i<1024;i++) { - m_c->payloadArray[i].voltage = -99999; - } - - ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "HECHVManager"); - - ISvcLocator* svcLocator = Gaudi::svcLocator(); - IToolSvc* toolSvc; - LArHVCablingTool* hvcablingTool; - - if(StatusCode::SUCCESS!=svcLocator->service("ToolSvc",toolSvc)) - return; - - if(StatusCode::SUCCESS!=toolSvc->retrieveTool("LArHVCablingTool",hvcablingTool)) - return; +HECHVManager::HECHVData +HECHVManager::getData (idfunc_t idfunc, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto payload = std::make_unique<HECHVData::Payload>(); + payload->m_payloadArray.reserve(2*32*4*4); + for (unsigned int i=0;i<1024;i++) { + payload->m_payloadArray[i].voltage = HECHVData::INVALID; + } - std::vector<std::string> colnames; - colnames.push_back("/LAR/DCS/HV/BARREl/I16"); - colnames.push_back("/LAR/DCS/HV/BARREL/I8"); + for (const CondAttrListCollection* atrlistcol : attrLists) { - std::vector<std::string>::const_iterator it = colnames.begin(); - std::vector<std::string>::const_iterator ie = colnames.end(); + for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { - for (;it!=ie;it++) { + // Construct HWIdentifier + // 1. decode COOL Channel ID + unsigned int chanID = (*citr).first; + int cannode = chanID/1000; + int line = chanID%1000; - //std::cout << " --- Start reading folder " << (*it) << std::endl; - const CondAttrListCollection* atrlistcol; - if (StatusCode::SUCCESS!=detStore->retrieve(atrlistcol,*it)) - return; + // 2. Construct the identifier + HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); - for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) { + std::vector<HWIdentifier> electrodeIdVec = idfunc(id); - // Construct HWIdentifier - // 1. decode COOL Channel ID - unsigned int chanID = (*citr).first; - int cannode = chanID/1000; - int line = chanID%1000; + for(size_t i=0;i<electrodeIdVec.size();i++) { + HWIdentifier& elecHWID = electrodeIdVec[i]; - // 2. Construct the identifier - HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line); + int detector = m_c->elecId->detector(elecHWID); - std::vector<HWIdentifier> electrodeIdVec = hvcablingTool->getLArElectrodeIDvec(id); + // check we are in HEC + if (detector != 4) { + continue; + } - for(size_t i=0;i<electrodeIdVec.size();i++) { - HWIdentifier& elecHWID = electrodeIdVec[i]; + float voltage = HECHVData::INVALID; + if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); + float current = 0.; + if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - int detector = m_c->elecId->detector(elecHWID); + + unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); // 0 for C side, 1 for A side, opposite to HV numbering + unsigned int phiIndex=m_c->elecId->module(elecHWID); // 0 to 31 + unsigned int samplingIndex=m_c->elecId->hv_eta(elecHWID)-1; // 0 to 3 + unsigned int subgapIndex=m_c->elecId->gap(elecHWID); // 0 to 3 - // check we are in HEC - if (detector != 4) { - //std::cout << " Not HEC ??? " << std::endl; - continue; - } + unsigned int index = 512*sideIndex+16*phiIndex+4*samplingIndex+subgapIndex; - float voltage = -99999.; - if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>(); - float current = 0.; - if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>(); - unsigned int status = 0; - if (!((*citr).second)["R_STAT"].isNull()) status = ((*citr).second)["R_STAT"].data<unsigned int>(); + if (index>1023) { + MsgStream msg (Athena::getMessageSvc(), "EMECHVManager"); + msg << MSG::ERROR << "invalid index " << index << " side,phi,sampling,gap " << sideIndex << " " << phiIndex << " " << samplingIndex + << " " << subgapIndex << endmsg; + continue; + } - unsigned int sideIndex=1-m_c->elecId->zside(elecHWID); // 0 for C side, 1 for A side, opposite to HV numbering - unsigned int phiIndex=m_c->elecId->module(elecHWID); // 0 to 31 - unsigned int samplingIndex=m_c->elecId->hv_eta(elecHWID)-1; // 0 to 3 - unsigned int subgapIndex=m_c->elecId->gap(elecHWID); // 0 to 3 + payload->m_payloadArray[index].voltage=voltage; + payload->m_payloadArray[index].current=current; + payload->m_payloadArray[index].hvLineNo=chanID; + } // For (electrodeIdVec) + } // for (atrlistcol) + } - unsigned int index = 512*sideIndex+16*phiIndex+4*samplingIndex+subgapIndex; + return HECHVManager::HECHVData (std::move (payload)); +} - if (index>1023) { - std::cout << "invalid index " << index << " side,phi,sampling,gap " << sideIndex << " " << phiIndex << " " << samplingIndex - << " " << subgapIndex << std::endl; - continue; - } - - m_c->payloadArray[index].voltage=voltage; - m_c->payloadArray[index].current=current; - m_c->payloadArray[index].status=status; - m_c->payloadArray[index].hvLineNo=chanID; - } // For (electrodeIdVec) - } // for (atrlistcol) - } - } // if(!m_c->init) +HECHVManager::HECHVData +HECHVManager::getData ATLAS_NOT_THREAD_SAFE () const +{ + std::vector<const CondAttrListCollection*> attrLists; + ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "EMBHVManager"); + const CondAttrListCollection* atrlistcol = nullptr; + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I16").isSuccess()) { + attrLists.push_back (atrlistcol); + } + if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I8").isSuccess()) { + attrLists.push_back (atrlistcol); + } + return getData (LegacyIdFunc(), attrLists); } -void HECHVManager::reset() const { - m_c->init=false; -} -HECHVPayload *HECHVManager::getPayload(const HECHVSubgap &subgap) const { - update(); - unsigned int subgapIndex = subgap.getSubgapIndex(); - const HECHVModule& module = subgap.getModule(); - unsigned int phiIndex = module.getPhiIndex(); - unsigned int samplingIndex = module.getSamplingIndex(); - unsigned int sideIndex = module.getSideIndex(); - unsigned int index = 512*sideIndex+16*phiIndex+4*samplingIndex+subgapIndex; - return &m_c->payloadArray[index]; +#if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) +HECHVManager::HECHVData +HECHVManager::getData (const LArHVIdMapping& hvIdMapping, + const std::vector<const CondAttrListCollection*>& attrLists) const +{ + auto idfunc = [&] (HWIdentifier id) { return hvIdMapping.getLArElectrodeIDvec(id); }; + return getData (idfunc, attrLists); } -#if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) + int HECHVManager::hvLineNo(const HECHVSubgap& subgap , const LArHVIdMapping* hvIdMapping) const { const HECHVModule& module = subgap.getModule(); diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/HECHVPayload.h b/LArCalorimeter/LArGeoModel/LArHV/src/HECHVPayload.h index 977dff9d7984b159ceafa46d2837091c8bb3ea02..bbaa5d2b26d57643c86785b2e3f655589d2b3bc8 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/HECHVPayload.h +++ b/LArCalorimeter/LArGeoModel/LArHV/src/HECHVPayload.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARHV_HECHVPAYLOAD_H @@ -8,12 +8,11 @@ struct HECHVPayload { double voltage; double current; - unsigned int status; int hvLineNo; }; inline std::ostream & operator << (std::ostream & o, const HECHVPayload & payload) { - o << "HEC Subgap: HV Line No " << payload.hvLineNo << ' ' << payload.voltage << " volts; " << payload.current << " amps; status = " << payload.status << std::endl; + o << "HEC Subgap: HV Line No " << payload.hvLineNo << ' ' << payload.voltage << " volts; " << payload.current << " amps" << std::endl; return o; } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/HECHVSubgap.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/HECHVSubgap.cxx index 8a0297cefdd4f0730bb4d0e738460699954cbee7..e2c94187b5f21e63499f81353026635137283a3d 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/HECHVSubgap.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/HECHVSubgap.cxx @@ -41,37 +41,8 @@ unsigned int HECHVSubgap::getSubgapIndex() const return m_c->iSubgap; } -bool HECHVSubgap::hvOn() const -{ - HECHVPayload *payload = m_c->module->getManager().getPayload(*this); - return (payload->voltage>=-9999); -} - -double HECHVSubgap::voltage() const { - HECHVPayload *payload = m_c->module->getManager().getPayload(*this); - return payload->voltage; -} - - -double HECHVSubgap::current() const { - HECHVPayload *payload = m_c->module->getManager().getPayload(*this); - return payload->current; -} - -void HECHVSubgap::voltage_current(double& voltage, double¤t) const { - HECHVPayload *payload = m_c->module->getManager().getPayload(*this); - voltage = payload->voltage; - current = payload->current; -} - #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE)) int HECHVSubgap::hvLineNo(const LArHVIdMapping* hvIdMapping) const { - return hvIdMapping - ? m_c->module->getManager().hvLineNo(*this,hvIdMapping) - : m_c->module->getManager().getPayload(*this)->hvLineNo; -} -#else -int HECHVSubgap::hvLineNo() const { - return m_c->module->getManager().getPayload(*this)->hvLineNo; + return m_c->module->getManager().hvLineNo(*this,hvIdMapping); } #endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/LArHVManager.cxx b/LArCalorimeter/LArGeoModel/LArHV/src/LArHVManager.cxx index 1bcef1d250729d8e3c43a22017a9538118d038d2..94e3a9afec476074de7a3acf3d9d75c752940972 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/LArHVManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArHV/src/LArHVManager.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArHV/LArHVManager.h" @@ -21,18 +21,6 @@ LArHVManager::LArHVManager() { } -void LArHVManager::reset() const -{ - m_embHV.reset(); - m_emecHVInner.reset(); - m_emecHVOuter.reset(); - m_hecHV.reset(); - m_fcalHV.reset(); - m_embPreHV.reset(); - m_emecPreHV.reset(); -} - - LArHVManager::~LArHVManager() { } diff --git a/LArCalorimeter/LArRawUtils/CMakeLists.txt b/LArCalorimeter/LArRawUtils/CMakeLists.txt index 1eacf72f7c56f243264910aa1a45585581ef59c8..7bcf7e2e66b255dd1657992a31416beb61961248 100644 --- a/LArCalorimeter/LArRawUtils/CMakeLists.txt +++ b/LArCalorimeter/LArRawUtils/CMakeLists.txt @@ -7,7 +7,7 @@ atlas_subdir( LArRawUtils ) atlas_add_library( LArRawUtilsLib src/*.cxx PUBLIC_HEADERS LArRawUtils - LINK_LIBRARIES CaloIdentifier CaloTTDetDescr AthenaBaseComps AthenaKernel Identifier GaudiKernel LArCablingLib LArIdentifier LArRawEvent StoreGateLib CaloTriggerToolLib + LINK_LIBRARIES CaloIdentifier CaloTTDetDescr AthenaBaseComps AthenaKernel Identifier GaudiKernel LArCablingLib LArIdentifier LArRawEvent StoreGateLib CaloTriggerToolLib CxxUtils PRIVATE_LINK_LIBRARIES AtlasDetDescr ) atlas_add_component( LArRawUtils diff --git a/LArCalorimeter/LArRawUtils/LArRawUtils/ATLAS_CHECK_THREAD_SAFETY b/LArCalorimeter/LArRawUtils/LArRawUtils/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..b64f7f52b5127e2eaa002647ff004325133c9b08 --- /dev/null +++ b/LArCalorimeter/LArRawUtils/LArRawUtils/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +LArCalorimeter/LArRawUtils diff --git a/LArCalorimeter/LArRawUtils/LArRawUtils/LArRawOrdering.h b/LArCalorimeter/LArRawUtils/LArRawUtils/LArRawOrdering.h index 68ce79f0b7ab6910688140d49e1861df583d4b4e..6f6f5e62394e43559031cb66226058be4aa98527 100755 --- a/LArCalorimeter/LArRawUtils/LArRawUtils/LArRawOrdering.h +++ b/LArCalorimeter/LArRawUtils/LArRawUtils/LArRawOrdering.h @@ -1,17 +1,18 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARRAWUTILS_LARRAWORDERING_H #define LARRAWUTILS_LARRAWORDERING_H -#include "LArRawEvent/LArRawChannel.h" +#include "LArRawEvent/LArRawChannel.h" +#include "CxxUtils/checker_macros.h" class LArRoI_Map; -class LArRawOrdering +class ATLAS_NOT_THREAD_SAFE LArRawOrdering { public: diff --git a/LArCalorimeter/LArRawUtils/LArRawUtils/LArRoI_Map.h b/LArCalorimeter/LArRawUtils/LArRawUtils/LArRoI_Map.h index 4d1c4aff52990d63047b8a5889b317f44b77919b..4e5b383741dd5e964b494a695b412f3fb56f2696 100644 --- a/LArCalorimeter/LArRawUtils/LArRawUtils/LArRoI_Map.h +++ b/LArCalorimeter/LArRawUtils/LArRawUtils/LArRoI_Map.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARRAWEVENT_LARROI_MAP_H @@ -16,6 +16,7 @@ #include "StoreGate/DataHandle.h" #include "GaudiKernel/IIncidentListener.h" #include "AthenaKernel/IOVSvcDefs.h" +#include "CxxUtils/checker_macros.h" #include "AthenaBaseComps/AthAlgTool.h" #include <map> @@ -36,8 +37,10 @@ class LArFCAL_ID ; */ -class LArRoI_Map : public AthAlgTool, - public IIncidentListener +// Not thread-safe due to the use of old cabling tools + callbacks +class ATLAS_NOT_THREAD_SAFE + LArRoI_Map : public AthAlgTool, + public IIncidentListener { public: diff --git a/LArCalorimeter/LArRawUtils/LArRawUtils/LArTT_Selector.h b/LArCalorimeter/LArRawUtils/LArRawUtils/LArTT_Selector.h index 05701fea0b063eee6b0d8bb42d9fb72a5aea6c7d..4f82517311334524d0e89fcc1a6c6f3508bd1d71 100755 --- a/LArCalorimeter/LArRawUtils/LArRawUtils/LArTT_Selector.h +++ b/LArCalorimeter/LArRawUtils/LArRawUtils/LArTT_Selector.h @@ -1,15 +1,17 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef LARRAWUTILS_LARTT_SELECTOR_H #define LARRAWUTILS_LARTT_SELECTOR_H #include "Identifier/Identifier.h" -#include "Identifier/IdentifierHash.h" +#include "Identifier/IdentifierHash.h" +#include "CxxUtils/checker_macros.h" class LArRoI_Map; +// Not thread-safe due to the use of LArRoI_Map. template <class CONTAINER > class LArTT_Selector { @@ -95,7 +97,8 @@ class LArTT_Selector // set RoI according TT, + a sam number. // void setRoIs( const VEC_TT_ID& ids, int sam ) ; - void setRoIs( const VEC_TT_ID& ids ) ; + // Not thread-safe due to the use of LArRoI_Map. + void setRoIs ATLAS_NOT_THREAD_SAFE ( const VEC_TT_ID& ids ) ; // set RoI according to combined TT_Sampling ID (unsigned int). // void setRoIs( const VEC_TT_SAM_ID& ids ) ; diff --git a/LArCalorimeter/LArRawUtils/LArRawUtils/LArTT_Selector.icc b/LArCalorimeter/LArRawUtils/LArRawUtils/LArTT_Selector.icc index 88e6da0f02905d64e5c137a723403c72fd20cf34..d4bf18ecd92bf754d2911dbf81b3aec0f25bbd1b 100755 --- a/LArCalorimeter/LArRawUtils/LArRawUtils/LArTT_Selector.icc +++ b/LArCalorimeter/LArRawUtils/LArRawUtils/LArTT_Selector.icc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArRawUtils/LArRoI_Map.h" @@ -150,7 +150,7 @@ void LArTT_Selector<CONTAINER>::setContainer(const CONTAINER* c) { template <class CONTAINER > //void LArTT_Selector<CONTAINER> :: setRoIs( const VEC_TT_ID& ids, // int sam) -void LArTT_Selector<CONTAINER> :: setRoIs( const VEC_TT_ID& ids) +void LArTT_Selector<CONTAINER> :: setRoIs ATLAS_NOT_THREAD_SAFE ( const VEC_TT_ID& ids) { // clean it up. diff --git a/LArCalorimeter/LArRecUtils/src/LArADC2MeVTool.cxx b/LArCalorimeter/LArRecUtils/src/LArADC2MeVTool.cxx index d0cb9f9ed5f23f73f5b64b5a4a1c4fc1058dc210..9bebaac9a3b32803e59efbf7763b176219cb83b1 100644 --- a/LArCalorimeter/LArRecUtils/src/LArADC2MeVTool.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArADC2MeVTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArADC2MeVTool.h" @@ -396,13 +396,6 @@ StatusCode LArADC2MeVTool::getADC2MeV() const { for(unsigned int igain=0;igain<ngains;igain++) if ( m_isSC ) m_ADC2MeV_vec[idhash] = std::vector<float>(0); else m_ADC2MeV->setPdata(id,std::vector<float>(0),igain); - // -// std::vector<float> vADC2MeV; -// vADC2MeV.push_back(0); -// //std::cout << "setting disconnected Feb id "<< feb.get_compact() <<" channel " << chan << std::endl; -// m_ADC2MeV->setPdata(id,vADC2MeV,igain); -// } - }//End loop over channels ATH_MSG_INFO("Ntotal = " << count); diff --git a/LArCalorimeter/LArRecUtils/src/LArFCalTowerStore.cxx b/LArCalorimeter/LArRecUtils/src/LArFCalTowerStore.cxx index 1b849095818946d7dd157f30b9a8740ed96315e0..4932ba90feb8acbe8e8639b83f6124bc2112e510 100644 --- a/LArCalorimeter/LArRecUtils/src/LArFCalTowerStore.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArFCalTowerStore.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /******************************************************************** @@ -126,11 +126,8 @@ bool LArFCalTowerStore::buildLookUp(const CaloCell_ID& cellIdHelper, for( size_t cellIndex = m_indxOffset; cellIndex <= m_indxBound; cellIndex++){ - //size_t anIndex = this->getLookupIndex(cellIndex); - - //std::cout<<"cell:"<<anIndex<<std::endl; - // get cell geometry + // get cell geometry const CaloDetDescrElement* theElement = theManager.get_element(cellIndex); if (!theElement) { msg << MSG::ERROR<< "Can't find element for index " << cellIndex diff --git a/LArCalorimeter/LArRecUtils/src/LArHVCondAlg.cxx b/LArCalorimeter/LArRecUtils/src/LArHVCondAlg.cxx index 13d246781def7bcb89f3aa92eb45550beba5b17a..aeef11103c4704f825188ed321347b30d29155d6 100755 --- a/LArCalorimeter/LArRecUtils/src/LArHVCondAlg.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArHVCondAlg.cxx @@ -197,10 +197,6 @@ StatusCode LArHVCondAlg::execute(const EventContext& ctx) const { } } - const LArHVManager *manager = NULL; - if (detStore()->retrieve(manager)==StatusCode::SUCCESS) { - manager->reset(); - } std::vector<float> voltage; std::vector<float> current; std::vector<unsigned int> hvlineidx; @@ -382,7 +378,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata v.clear(); ihv.clear(); if (abs(m_larem_id->barrel_ec(id))==1 && m_larem_id->sampling(id) > 0) { // LAr EMB - //std::cout << " in barrel " << m_larem_id->show_to_string(id) << std::endl; unsigned int index = (unsigned int)(m_larem_id->channel_hash(id)); bool hasPathology=false; if (index<hasPathologyEM.size()) { @@ -395,13 +390,11 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata if (!embElement) std::abort(); const EMBCellConstLink cell = embElement->getEMBCell(); unsigned int nelec = cell->getNumElectrodes(); - //std::cout << " nelec: " << nelec << std::endl; unsigned int ngap = 2*nelec; double wt = 1./ngap; v.clear(); ihv.clear(); for (unsigned int i=0;i<nelec;i++) { const EMBHVElectrode& electrode = cell->getElectrode(i); - //std::cout << "electrode: endcap index, eta index , phi index, sector index , electrode index " << electrode->getModule()->getSideIndex() << // " " << electrode->getModule()->getEtaIndex() << " " << electrode->getModule()->getPhiIndex() << // " " << electrode->getModule()->getSectorIndex() << " " << electrode->getElectrodeIndex() << std::endl; for (unsigned int igap=0;igap<2;igap++) { @@ -441,8 +434,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata } msg(MSG::VERBOSE) << "set hv: "<<hv<<endmsg; } - //std::cout << " hv value " << hv << std::endl; - //if (igap==1 && hv>1.) std::cout << " --- non zero value found for gap1 in barrel " << std::endl; addHV(v,hv,wt); addCurr(ihv,curr,wt); } @@ -490,7 +481,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata } } else if (abs(m_larem_id->barrel_ec(id))>1 && m_larem_id->sampling(id) > 0){ // LAr EMEC - //std::cout << " in EMEC " << m_larem_id->show_to_string(id) << std::endl; unsigned int index = (unsigned int)(m_larem_id->channel_hash(id)); bool hasPathology=false; if (index<hasPathologyEM.size()) { @@ -504,14 +494,10 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata if (!emecElement) std::abort(); const EMECCellConstLink cell = emecElement->getEMECCell(); unsigned int nelec = cell->getNumElectrodes(); - //std::cout << " nelec " << nelec << std::endl; unsigned int ngap = 2*nelec; double wt = 1./ngap; for (unsigned int i=0;i<nelec;i++) { const EMECHVElectrode& electrode = cell->getElectrode(i); - // std::cout << "electrode: endcap index, eta index , phi index, sector index , electrode index " << electrode->getModule()->getSideIndex() << - // " " << electrode->getModule()->getEtaIndex() << " " << electrode->getModule()->getPhiIndex() << - // " " << electrode->getModule()->getSectorIndex() << " " << electrode->getElectrodeIndex() << std::endl; for (unsigned int igap=0;igap<2;igap++) { unsigned int hvline = electrode.hvLineNo(igap,hvCabling); const std::vector<unsigned int>::const_iterator itrLine=std::lower_bound(hvlineidx.begin(), hvlineidx.end(), hvline); @@ -546,8 +532,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata } } } - //std::cout << " hv value " << hv << std::endl; - //if (igap==1 && hv>1.) std::cout << " --- non zero value found for gap1 in endcap " << std::endl; addHV(v,hv,wt); addCurr(ihv,curr,wt); } @@ -626,7 +610,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata for( auto id: m_larhec_id->channel_ids()) { v.clear(); ihv.clear(); - //std::cout << " in HEC " << std::endl; unsigned int index = (unsigned int)(m_larhec_id->channel_hash(id)); bool hasPathology=false; if (index<hasPathologyHEC.size()) { @@ -640,7 +623,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata const HECCellConstLink cell = hecElement->getHECCell(); unsigned int nsubgaps = cell->getNumSubgaps(); double wt = 1./nsubgaps; - //std::cout << " nsubgaps " << nsubgaps << std::endl; for (unsigned int i=0;i<nsubgaps;i++) { const HECHVSubgap& subgap = cell->getSubgap(i); unsigned int hvline = subgap.hvLineNo(hvCabling); @@ -668,7 +650,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata )); curr *= uAkOhm * rValues[ridx]; } - //std::cout << " hv value " << hv << std::endl; if (hasPathology) { msg(MSG::VERBOSE) << "Has pathology for id: "<< m_larhec_id->print_to_string(id)<<" "<<hasPathologyHEC[index]<<endmsg; for (unsigned int ii=0;ii<listElec.size();ii++) { @@ -710,7 +691,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata for(auto id: m_larfcal_id->channel_ids()) { // LAr FCAL v.clear(); ihv.clear(); - //std::cout << " in FCAL " << std::endl; unsigned int index = (unsigned int)(m_larfcal_id->channel_hash(id)); bool hasPathology=false; if (index<hasPathologyFCAL.size()) { @@ -722,16 +702,12 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata const FCALDetectorElement* fcalElement = dynamic_cast<const FCALDetectorElement*>(calodetdescrmgr->get_element(id)); if (!fcalElement) std::abort(); const FCALTile* tile = fcalElement->getFCALTile(); - //std::cout << " --- in FCAL cell id " << m_larfcal_id->show_to_string(id) << std::endl; - //std::cout << " Side, Module, I,J index " << tile->getModule()->getEndcapIndex() << " " << tile->getModule()->getModuleIndex() - // << " " << tile->getIndexI() << " " << tile->getIndexJ() << std::endl; unsigned int nlines = tile->getNumHVLines(); unsigned int nlines_found=0; for (unsigned int i=0;i<nlines;i++) { const FCALHVLine* line = tile->getHVLine(i); if (line) nlines_found++; } - //std::cout << " nlines " << nlines << " " << nlines_found << std::endl; if (nlines_found>0) { double wt = 1./nlines_found; for (unsigned int i=0;i<nlines;i++) { @@ -762,7 +738,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata )); curr *= uAkOhm * rValues[ridx]; } - //std::cout << " line " << line; if (hasPathology) { msg(MSG::VERBOSE) << "Has pathology for id: "<< m_larfcal_id->print_to_string(id)<<" "<<hasPathologyFCAL[index]<<endmsg; for (unsigned int ii=0;ii<listElec.size();ii++) { @@ -772,7 +747,6 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata } } } - //std::cout << " hv value " << hv << std::endl; addHV(v,hv,wt); addCurr(ihv,curr,wt); } @@ -1565,7 +1539,6 @@ StatusCode LArHVCondAlg::updateMethod(CaloAffectedRegionInfoVec *vAffected, cons extendPhiRegion(current_phi_low,phi_min_additive1,phi_max_additive1); extendPhiRegion(current_phi_high,phi_min_additive1,phi_max_additive1); - // std::cout << "found the special case, icha=" << icha << ", etamin=" << eta_min_additive1 << ", current layer=" << current_layer << ", current eta=" << current_eta << std::endl; } else { //normal case is_normal=1; // normal case diff --git a/LArCalorimeter/LArRecUtils/src/LArHVIdMappingAlg.cxx b/LArCalorimeter/LArRecUtils/src/LArHVIdMappingAlg.cxx index 19ec59b8cdc4a6ca1070dc1ecb00108376776ddd..ada5c82c2d292de50af5bcb8be4f4ef63dc66f2a 100644 --- a/LArCalorimeter/LArRecUtils/src/LArHVIdMappingAlg.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArHVIdMappingAlg.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArHVIdMappingAlg.h" @@ -200,8 +200,6 @@ void LArHVIdMappingAlg::fillHVMap(std::map<HWIdentifier,HWIdentifier> & elmap, s electrodeIdvec.clear(); HWIdentifier hvlineId = hvlineHelper->HVLineId(hvpartition,hvcanline,hvcannode,hvline); - //std::cout << " module, line " << hvcannode << " " << hvline << " ---- > hvLineId " << hvlineId << std::endl; - if( max > min ){ if (min < 0) min = 0; if (max < 0) max = 0; @@ -222,12 +220,6 @@ void LArHVIdMappingAlg::fillHVMap(std::map<HWIdentifier,HWIdentifier> & elmap, s //ATH_MSG_DEBUG("[fillHVMap] push_back in electrodeId vector..." ); // Check if electrode is already in map ? - // std::map<HWIdentifier,HWIdentifier>::iterator testIt = elmap.find(electrodeId); - // if (testIt != elmap.end()) { - // std::cout << " ----- Electrode Id " << side << " " << mod << " " << hvphi << " " << hveta << " " << hvgap << " " << ielec << - // " read for HvLine " << hvcannode << " " << hvline << " " << hvlineId << " already exist for " << (testIt)->second << std::endl; - // } - elmap.insert(std::pair<HWIdentifier,HWIdentifier>(electrodeId,hvlineId)); } } @@ -237,12 +229,6 @@ void LArHVIdMappingAlg::fillHVMap(std::map<HWIdentifier,HWIdentifier> & elmap, s electrodeIdvec.push_back(electrodeId); // Check if electrode is already in map ? - // std::map<HWIdentifier,HWIdentifier>::iterator testIt = elmap.find(electrodeId); - // if (testIt != elmap.end()) { - // std::cout << " ----- Electrode Id " << side << " " << mod << " " << hvphi << " " << hveta << " " << hvgap << " " << min << - // " read for HvLine " << hvcannode << " " << hvline << " " << hvlineId << " already exist for " << (testIt)->second << std::endl; - // } - elmap.insert(std::pair<HWIdentifier,HWIdentifier>(electrodeId,hvlineId)); } diff --git a/LArCalorimeter/LArRecUtils/src/LArHVScaleCorrCondAlg.cxx b/LArCalorimeter/LArRecUtils/src/LArHVScaleCorrCondAlg.cxx index 96361de3c3c5de40899fa485a2fcb4a128b158bb..d3971fe10491b7289855ee405dda86727d739023 100644 --- a/LArCalorimeter/LArRecUtils/src/LArHVScaleCorrCondAlg.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArHVScaleCorrCondAlg.cxx @@ -532,7 +532,6 @@ float LArHVScaleCorrCondAlg::Scale_barrel(const float hv) const else { resp=facteur[0]*(hv/hvref[0]); } - //std::cout << " hv,i1,i2,resp " << hv << " " << i1 << " " << i2 << " " << resp << std::endl; return resp; } diff --git a/LArCalorimeter/LArRecUtils/src/LArOFPeakRecoTool.cxx b/LArCalorimeter/LArRecUtils/src/LArOFPeakRecoTool.cxx index e03488903ac58dd4736b4714467575821eb2067f..fa475919b67f5ee2023b76b33773593b5be45454 100644 --- a/LArCalorimeter/LArRecUtils/src/LArOFPeakRecoTool.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArOFPeakRecoTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArRecUtils/LArOFPeakRecoTool.h" @@ -121,7 +121,6 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r //Computation is done as double double At=0; double A=0; - //std::cout << "***** ChannelID=" << (int)chID << " ; Gain=" << (int)gain << " ; Delay=" << delay << " nIter=" << nIter << std::endl ; //Tying to avoid doing all checks for every event/channel/iteation step by assuming that //the number of OFC samples is the same for all delays of a certain cell/gain. @@ -175,13 +174,10 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r delayIdx=(unsigned)floor(0.5+delay/timeBinWidth); } - //std::cout << "Timebinwidth=" << timeBinWidth << " nOFCPhase=" << nOFCPhase << std::endl; - //std::cout << "Delay= " << delay << " Index=" << delayIdx << std::endl; //Get first set of OFC's ILArOFC::OFCRef_t this_OFC_a = dd_ofc->OFC_a(chID,(int)usedGain,delayIdx); ILArOFC::OFCRef_t this_OFC_b = dd_ofc->OFC_b(chID,(int)usedGain,delayIdx); const unsigned ofcSize=this_OFC_a.size(); //Assumed to be the same of all delay-indices - //std::cout << " got OFC " << this_OFC_a.size() << " " << this_OFC_b.size() << std::endl; //some sanity check on the OFCs if ( ofcSize == 0 || this_OFC_b.size() == 0 ) { @@ -207,17 +203,6 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r if(kMax<peak_low) kMax=peak_low; if(kMax>peak_high) kMax=peak_high; - /* - std::cout << "Samples: "; - for ( unsigned k=0;k<samples.size();k++) - std::cout << " " << samples[k]; - std::cout << std::endl; - std::cout << "OFC_a: "; - for ( unsigned k=0;k<this_OFC_a.size();k++) - std::cout << " " << this_OFC_a.at(k); - std::cout << std::endl; - */ - float amplitude_save=0.; float tau_save= 99999.; unsigned int kMax_save=0; @@ -227,7 +212,6 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r unsigned int mynIter = nIter; do { - //std::cout << "*** Start iteration step: "<< kIter << " kmax=" <<kMax << " delay=" << delay << std::endl; // Uncomment the following if you suspect that the ofc are corrupt for some phases: /* @@ -264,7 +248,6 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r } result.m_amplitude=A; result.m_tau = At / A ; - //std::cout << "Iteration step: " << kIter << " Delay=" << delay << " A = " << A << " tau=" << result.m_tau << std::endl; //First iteration done, break loop if possible.... if (mynIter<=1) { @@ -281,13 +264,11 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r // if we are within +-0.5*Dt of time bin, we have converged for sure if (fabs(result.m_tau) <= (0.5*timeBinWidth)) { result.m_converged=true; - // std::cout << "Converged." << std::endl; delay = delayIdx*timeBinWidth; break; } if (kIter>=mynIter) { //Max. number of iterations reached - //std::cout << "Did not converge after " << nIter << " iterations." << std::endl; delay = delayIdx*timeBinWidth; if (result.m_converged) { if (fabs(tau_save) < fabs(result.m_tau)) { @@ -314,7 +295,6 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r delayIdx_save = delayIdx; } - //std::cout << "not yet converged" << std::endl ; delay = delay - result.m_tau; // moved this line up so first iteration delay results treated like subsequent if(delay<(-0.5*timeBinWidth)) { @@ -323,9 +303,7 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r delay=delay+m_samplingPeriod; if( delay < 0 ) delay = 0; if (delay > timeMax ) delay = timeMax-epsilon; - //std::cout << " delay too small, shift sample, set delay to " << delay << std::endl ; } else { // don't shift sample - //std::cout << " delay too small, set delay to 0 "<< std::endl ; delay = 0 ; } }//else if delay<0 @@ -336,10 +314,8 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r delay=delay-m_samplingPeriod; if (delay < 0 ) delay=0.; if( delay > timeMax ) delay = timeMax-epsilon; - //std::cout << " delay too large , shift sample "<< std::endl ; } else { // don't shift sample - //std::cout << " delay too large set delay to max "<< std::endl ; delay = timeMax-epsilon; } }//end if delay>nOFCPhase @@ -347,7 +323,6 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r kIter++; delayIdx=(unsigned)floor(0.5+delay/timeBinWidth); if (delayIdx>=nOFCPhase) delayIdx = nOFCPhase-1; - //std::cout << " new kMax, delay,delayIdx " << kMax << " " << delay << " " << delayIdx << std::endl; //Get next set of OFC's this_OFC_a = dd_ofc->OFC_a(chID,(int)usedGain,delayIdx); this_OFC_b = dd_ofc->OFC_b(chID,(int)usedGain,delayIdx); @@ -357,7 +332,6 @@ LArOFIterResults LArOFPeakRecoTool::peak(const std::vector<float>& samples, // r // go back to overal time delay = delay + timeOffset; // sign to check - //std::cout << "Done! A= " << result.m_amplitude << " ; tau= " << result.m_tau << " kIter=" << kIter << " nIter=" << nIter << std::endl; // get shape if (m_useShape){ const ILArShape* dd_shape=nullptr; diff --git a/LArCalorimeter/LArRecUtils/src/LArOnOffMappingAlg.cxx b/LArCalorimeter/LArRecUtils/src/LArOnOffMappingAlg.cxx index 1eb01fc333509b0bf1de08e2492650d5601ed1fd..cc55fd2f5c69b0254658327ceb702a7e984016db 100644 --- a/LArCalorimeter/LArRecUtils/src/LArOnOffMappingAlg.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArOnOffMappingAlg.cxx @@ -1,7 +1,7 @@ //dear emacs, this is -*-c++-*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArOnOffMappingAlg.h" @@ -111,7 +111,6 @@ StatusCode LArOnOffMappingAlg::execute() { for (unsigned i=0;i<nChan;++i) { const Identifier id=Identifier(Identifier32(pBlobOnOff[i])); - //std::cout << "id[" << i <<"] " << std::hex << id.get_compact() << std::dec << std::endl; if (id.is_valid()) { const IdentifierHash oflHash=calocellID->calo_cell_hash(id); const HWIdentifier hwid=larOnlineID->channel_Id(IdentifierHash(i)); diff --git a/LArCalorimeter/LArRecUtils/src/LArParabolaPeakRecoTool.cxx b/LArCalorimeter/LArRecUtils/src/LArParabolaPeakRecoTool.cxx index 84a58b36be417aa62742b7b2804018133728df4b..faf83eb1046b12eae023e09223202a5395ed476d 100644 --- a/LArCalorimeter/LArRecUtils/src/LArParabolaPeakRecoTool.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArParabolaPeakRecoTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArRecUtils/LArParabolaPeakRecoTool.h" @@ -125,7 +125,6 @@ std::vector<float> LArParabolaPeakRecoTool::peak (const std::vector<float>& samp HepVector beta(3); for (int i=0;i<3;i++) {beta[i]=*(it_max-1+i); - //std::cout << " " << beta[i]; for (int j=0;j<3;j++) alpha[i][j]=pow(-1+i,j); } @@ -159,8 +158,6 @@ std::vector<float> LArParabolaPeakRecoTool::peak (const std::vector<float>& samp } } - //std::cout << "Parabola: Time=" << tmax << " adcmax=" << maxadc << " retval= " << retval << std::endl; - solution.push_back(retval); if(!m_correctBias){ solution.push_back(tmax); diff --git a/LArCalorimeter/LArRecUtils/src/LArShapePeakRecoTool.cxx b/LArCalorimeter/LArRecUtils/src/LArShapePeakRecoTool.cxx index 28b8e31e06938653f550b81a726997a99b599099..dc59a42d831b99f54d9989ffda006e0ecfdc317f 100644 --- a/LArCalorimeter/LArRecUtils/src/LArShapePeakRecoTool.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArShapePeakRecoTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "LArRecUtils/LArShapePeakRecoTool.h" @@ -52,8 +52,6 @@ std::vector<float> LArShapePeakRecoTool::peak (const std::vector<float>& samples delay_max = distance(wave.begin(),wave_max); - // std::cout << "wave[0] = " << wave[0] << std::endl; - // parabola approximation of shape maximum d = (int) delay_max; GetShapeParMax(delay_max,shape_max,delay_max-1,wave[d-1], @@ -96,15 +94,10 @@ std::vector<float> LArShapePeakRecoTool::peak (const std::vector<float>& samples s2 = sample_2ndmax + 1; } - // std::cout << "sample_max = " << sample_max << ", sample_2ndmax = " << sample_2ndmax << ", s1 = " << s1 << ", s2 = " << s2 << std::endl; - // Get delay Limits d1 = 0; d2 = nbin-1-(s2-s1)*24; - // std::cout << "d2 = " << d2 << ", s1 = " << s1 << ", s2 = " << s2 << std::endl; - // std::cout << "sample max = " << sample_max << std::endl; - // Loop on all delays to find the best chi2 // i.e. minimise // chi2 = yi2-yigi*lambda = yi2-yigi*yigi/gi2 @@ -142,9 +135,6 @@ std::vector<float> LArShapePeakRecoTool::peak (const std::vector<float>& samples float adc_reco = lambda*shape_max; - // std::cout << "shape max = " << shape_max << ", adc max = " << adc_max << ", lambda = " << lambda << std::endl; - // std::cout << "delay best = " << delay_best << std::endl; - float time_reco = delay_best; if(delay_best<adc_max) time_reco = delay_best; diff --git a/LArCalorimeter/LArRecUtils/src/MakeLArCellFromRaw.cxx b/LArCalorimeter/LArRecUtils/src/MakeLArCellFromRaw.cxx index c20397cb439e890b3a1bd1461188f69379e2ac54..451f897387605c116f3549c07db165d73c757b86 100644 --- a/LArCalorimeter/LArRecUtils/src/MakeLArCellFromRaw.cxx +++ b/LArCalorimeter/LArRecUtils/src/MakeLArCellFromRaw.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // implementation of MakeLArCellFromRaw @@ -378,7 +378,6 @@ MakeLArCellFromRaw::getCorrection(LArCell* cell, } double c= cell->energy()/en; -// std::cout<<" Correction init = "<<c<<std::endl; return c; } diff --git a/MuonSpectrometer/MuonConfig/python/MuonRecToolsConfig.py b/MuonSpectrometer/MuonConfig/python/MuonRecToolsConfig.py index 85f2eab75c34b304496d698e3a5eaa96ca15a4f3..3a10fa615b0aa0b7249a180ca18173ad42a38045 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonRecToolsConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonRecToolsConfig.py @@ -153,7 +153,7 @@ def MuonAmbiProcessorCfg(flags, name="MuonAmbiProcessor", **kwargs): acc.addPublicTool(scoring_tool) result.merge(acc) kwargs.setdefault('ScoringTool', scoring_tool ) - muon_ami_selection_tool = Muon__MuonAmbiTrackSelectionTool() + muon_ami_selection_tool = Muon__MuonAmbiTrackSelectionTool(name="MuonAmbiSelectionTool") result.addPublicTool(muon_ami_selection_tool) kwargs.setdefault('SelectionTool', muon_ami_selection_tool) result.setPrivateTools(Trk__TrackSelectionProcessorTool(name=name,**kwargs)) @@ -190,7 +190,7 @@ def MuonTrackCleanerCfg(flags, name="MuonTrackCleaner", **kwargs): result.merge( extrapolator_CA ) kwargs.setdefault("Extrapolator", extrapolator) - acc = MCTBFitterCfg(flags, name = "MCTBSLFitterMaterialFromTrack", StraightLine=True, GetMaterialFromTrack=True) + acc = MCTBSLFitterMaterialFromTrackCfg(flags) slfitter = acc.getPrimary() result.merge(acc) kwargs.setdefault("SLFitter", slfitter) @@ -232,17 +232,27 @@ def MuonNavigatorCfg(flags, name="MuonNavigator", **kwargs): result.setPrivateTools(navigator) return result +def MuonStraightLineExtrapolatorCfg(flags, name="MuonStraightLineExtrapolator",**kwargs): + # This is a bit odd , but this is exactly what was in the old configuration + acc = MuonSTEP_PropagatorCfg(flags, name = "MuonStraightLinePropagator") + muon_prop = acc.getPrimary() + kwargs.setdefault("Propagators",[ muon_prop]) + kwargs.setdefault("STEP_Propagator",muon_prop) + result = MuonExtrapolatorCfg(flags, name ,**kwargs) + result.merge (acc) + return result + def MuonExtrapolatorCfg(flags,name = "MuonExtrapolator", **kwargs): Trk__MaterialEffectsUpdator, Trk__EnergyLossUpdator, Trk__MultipleScatteringUpdator=CompFactory.getComps("Trk::MaterialEffectsUpdator","Trk::EnergyLossUpdator","Trk::MultipleScatteringUpdator",) Trk__Extrapolator=CompFactory.Trk.Extrapolator result = ComponentAccumulator() - energy_loss_updator = Trk__EnergyLossUpdator() # Not really sure these should be tools... + energy_loss_updator = Trk__EnergyLossUpdator(name="AtlasEnergyLossUpdator") # Not really sure these should be tools... result.addPublicTool(energy_loss_updator) # TODO remove # This one has a dependency on RndNumberService - mult_scat_updator = Trk__MultipleScatteringUpdator() + mult_scat_updator = Trk__MultipleScatteringUpdator(name="AtlasMultipleScatteringUpdator") result.addPublicTool(mult_scat_updator) # TODO remove material_effects_updator = Trk__MaterialEffectsUpdator( EnergyLossUpdator=energy_loss_updator, MultipleScatteringUpdator=mult_scat_updator) @@ -260,8 +270,8 @@ def MuonExtrapolatorCfg(flags,name = "MuonExtrapolator", **kwargs): muon_prop = acc.getPrimary() result.merge(acc) result.addPublicTool(muon_prop) + kwargs.setdefault("Propagators", [muon_prop]) - kwargs.setdefault("Propagators", [muon_prop]) kwargs.setdefault("ResolveMuonStation", True) kwargs.setdefault("Tolerance", 0.0011) # must be > 1um to avoid missing MTG intersections extrap = Trk__Extrapolator(name=name, **kwargs) @@ -325,7 +335,7 @@ def MuonSTEP_PropagatorCfg(flags, name='MuonSTEP_Propagator', **kwargs): def MCTBExtrapolatorCfg(flags, name='MCTBExtrapolator',**kwargs): result = ComponentAccumulator() - acc = MuonSTEP_PropagatorCfg(flags) + acc = MuonSTEP_PropagatorCfg(flags, name = "MCTBPropagator") prop = acc.getPrimary() result.addPublicTool(prop) result.merge(acc) @@ -337,28 +347,36 @@ def MCTBExtrapolatorCfg(flags, name='MCTBExtrapolator',**kwargs): return result +def MCTBSLFitterMaterialFromTrackCfg(flags, name='MCTBSLFitterMaterialFromTrack', **kwargs): + kwargs["StraightLine"] = True # always set + kwargs["GetMaterialFromTrack"]=True # always set + acc = MuonStraightLineExtrapolatorCfg(flags) + kwargs.setdefault("ExtrapolationTool", acc.getPrimary()) + + propagator = CompFactory.Trk.RungeKuttaPropagator(name="MuonRK_Propagator",AccuracyParameter=0.0002) + kwargs["PropagatorTool"]=propagator + + result = MCTBFitterCfg(flags, name, **kwargs) + result.merge(acc) + return result + def MCTBFitterCfg(flags, name='MCTBFitter', **kwargs): # didn't bother with MCTBSLFitter, since this seems redundant. Just set "StraightLine" = True since the kwargs are passed on to MuonChi2TrackFitterCfg + # Ditto with MCTBFitterMaterialFromTrack. Just set "GetMaterialFromTrack" = True result = ComponentAccumulator() acc = MCTBExtrapolatorCfg(flags) mctbExtrapolator = acc.getPrimary() - result.addPublicTool(mctbExtrapolator) result.merge(acc) kwargs.setdefault("ExtrapolationTool", mctbExtrapolator) kwargs.setdefault("GetMaterialFromTrack", True) kwargs.setdefault("Momentum", flags.Muon.straightLineFitMomentum) - # extra_kwargs = {} - # if 'StraightLine' in kwargs: - # # Pass this on! Can't safely just pass on kwargs, because MuonChi2TrackFitterCfg also has a property ExtrapolationTool - # extra_kwargs.setdefault('StraightLine', kwargs['StraightLine']) - # extra_kwargs.setdefault('GetMaterialFromTrack', kwargs['GetMaterialFromTrack']) acc = MuonChi2TrackFitterCfg(flags, name=name, **kwargs) mctbfitter = acc.getPrimary() result.merge(acc) - # print mctbfitter + result.setPrivateTools(mctbfitter) return result diff --git a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py index f2f2c4ba924e41bd86c300bcbbdf1bbe4fcc0a0d..ec455944705b5b92cac3f57571036f795402b326 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py @@ -24,7 +24,7 @@ Muon__MuonClusterSegmentFinder=CompFactory.getComp("Muon::MuonClusterSegmentFind #Local from MuonConfig.MuonCalibrationConfig import MdtCalibrationDbToolCfg -from MuonConfig.MuonRecToolsConfig import MCTBFitterCfg, MuonAmbiProcessorCfg, MuonStationIntersectSvcCfg, MuonTrackCleanerCfg, MuonTrackSummaryToolCfg, MuonEDMPrinterTool +from MuonConfig.MuonRecToolsConfig import MCTBFitterCfg, MCTBSLFitterMaterialFromTrackCfg, MuonAmbiProcessorCfg, MuonStationIntersectSvcCfg, MuonTrackCleanerCfg, MuonTrackSummaryToolCfg, MuonEDMPrinterTool from MuonConfig.MuonRIO_OnTrackCreatorConfig import MdtCalibWindowNumber def MuonHoughPatternFinderTool(flags, **kwargs): @@ -529,7 +529,7 @@ def MuonClusterSegmentFinderToolCfg(flags, **kwargs): # Won't explicitly configure MuonIdHelperSvc # Won't explicitly configure MuonEDMHelperSvc kwargs.setdefault('SegmentAmbiguityTool', result.popToolsAndMerge( MuonAmbiProcessorCfg(flags) ) ) - kwargs.setdefault('SLFitter', result.popToolsAndMerge( MCTBFitterCfg(flags, name = "SLFitter", StraightLine=True) ) ) + kwargs.setdefault('SLFitter', result.popToolsAndMerge( MCTBSLFitterMaterialFromTrackCfg(flags) ) ) kwargs.setdefault("TrackToSegmentTool", result.popToolsAndMerge( MuonTrackToSegmentToolCfg(flags) ) ) kwargs.setdefault("Printer", MuonEDMPrinterTool(flags) ) kwargs.setdefault('TrackCleaner', result.popToolsAndMerge( MuonTrackCleanerCfg(flags) ) ) diff --git a/MuonSpectrometer/MuonDetDescr/MuonAGDD/CMakeLists.txt b/MuonSpectrometer/MuonDetDescr/MuonAGDD/CMakeLists.txt index 4aaaaeb7f92252dbdf0e381bdf1b1b3e04c6c4bb..79b430db66244a362654838dfef4a334d44d3b5f 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonAGDD/CMakeLists.txt +++ b/MuonSpectrometer/MuonDetDescr/MuonAGDD/CMakeLists.txt @@ -6,14 +6,12 @@ atlas_subdir( MuonAGDD ) # Possible extra dependencies: -set( extra_dep ) set( extra_lib ) if( NOT SIMULATIONBASE ) - # the dependency on AmdcAth is only for dumping the XML! - # in principle AGDD is independent from AMDB and all - # information could be accessed via AGDD itself, however, - # this complicates the job configuration for the moment - set( extra_dep MuonSpectrometer/Amdcsimrec/AmdcAth ) + # the dependency on AmdcAth is only for dumping the passive material XML + # located inside old AMDB files (using AmdcsimrecAthenaSvc in the MuonAGDDTool) + # in principle, AGDD is independent from AMDB and all information can be accessed + # via AGDD itself (as it is done in recent muon layouts) set( extra_lib AmdcAthLib ) endif() diff --git a/MuonSpectrometer/MuonDetDescr/MuonAGDD/src/MuonAGDDTool.cxx b/MuonSpectrometer/MuonDetDescr/MuonAGDD/src/MuonAGDDTool.cxx index f44885e25eb7b1c2ee87168d6cb85c04bdfee468..d71e85429dfa8a5feff64502f70b4ed0f79932e3 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonAGDD/src/MuonAGDDTool.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonAGDD/src/MuonAGDDTool.cxx @@ -62,8 +62,9 @@ StatusCode MuonAGDDTool::construct() { ATH_MSG_INFO(" Reading AGDD2GeoSwitches flags "); m_structuresFromFlags=theHelper.ReadAGDDFlags(); - for (unsigned int i=0;i<m_structuresFromFlags.size();i++) - ATH_MSG_INFO(" ----> "<<m_structuresFromFlags[i]); + for (const auto &structure: m_structuresFromFlags) { + ATH_MSG_INFO(" ----> "<<structure); + } } // reading from a local AGDD xml file @@ -98,9 +99,9 @@ StatusCode MuonAGDDTool::construct() } } else { // when reading the AGDD xml blob, only build the volumes specified via the AGDD2GeoSwitches - for (unsigned int i =0;i<m_structuresFromFlags.size();i++) { - if (!m_buildNSW && m_structuresFromFlags[i]=="NewSmallWheel") continue; - m_controller->GetBuilder()->BuildFromVolume(m_structuresFromFlags[i]); + for (const auto &structure: m_structuresFromFlags) { + if (!m_buildNSW && structure=="NewSmallWheel") continue; + m_controller->GetBuilder()->BuildFromVolume(structure); } } diff --git a/MuonSpectrometer/MuonDigitization/MM_Digitization/python/MM_DigitizationConfig.py b/MuonSpectrometer/MuonDigitization/MM_Digitization/python/MM_DigitizationConfig.py index 3b1148273295f941dc18558544792f267da9178c..eda1b277e670ed322f28214b02b91b1cc2be3377 100644 --- a/MuonSpectrometer/MuonDigitization/MM_Digitization/python/MM_DigitizationConfig.py +++ b/MuonSpectrometer/MuonDigitization/MM_Digitization/python/MM_DigitizationConfig.py @@ -7,12 +7,14 @@ from Digitization.DigitizationFlags import jobproperties from AthenaCommon import CfgMgr # The earliest bunch crossing time for which interactions will be sent -# to the MdtDigitizationTool. +# to the MMDigitizationTool. +# MM readout window is 8BC. To be safe, do [-7,7] def MM_FirstXing(): - return -250 + return -200 # The latest bunch crossing time for which interactions will be sent -# to the MdtDigitizationTool. +# to the MMDigitizationTool. +# MM readout window is 8BC. To be safe, do [-7,7] def MM_LastXing(): return 200 diff --git a/MuonSpectrometer/MuonDigitization/MM_Digitization/src/VMM_Shaper.cxx b/MuonSpectrometer/MuonDigitization/MM_Digitization/src/VMM_Shaper.cxx index 788f87ecec6b6e75b8c89ea2cac3c4f98dcf37a4..58cb87bf11831c9b73febeb6d1a643191a320ec6 100644 --- a/MuonSpectrometer/MuonDigitization/MM_Digitization/src/VMM_Shaper.cxx +++ b/MuonSpectrometer/MuonDigitization/MM_Digitization/src/VMM_Shaper.cxx @@ -28,7 +28,7 @@ m_timeStep(0.1) void VMM_Shaper::initialize() { // hardcoded vmm shaper values are provided by G. Iakovidis - m_a = (m_peakTime*(10^-9))/1.5; + m_a = (m_peakTime*(1e-9))/1.5; m_pole0 = 1.263/m_a; m_re_pole1 = 1.149/m_a; m_im_pole1 = -0.786/m_a; @@ -43,9 +43,9 @@ void VMM_Shaper::initialize() { // preCalculate factor to avoid recalculating for each electron m_preCalculationVMMShaper = chargeScaleFactor*m_peakTimeChargeScaling*std::pow(m_a, 3)*m_pole0*m_pole1_square; - m_pole0_ns = m_pole0*(10^-9); - m_re_pole1_ns = m_re_pole1*(10^-9); - m_im_pole1_ns = m_im_pole1*(10^-9); + m_pole0_ns = m_pole0*(1e-9); + m_re_pole1_ns = m_re_pole1*(1e-9); + m_im_pole1_ns = m_im_pole1*(1e-9); } double VMM_Shaper::vmmResponse(const std::vector<float> &effectiveCharge, const std::vector<float> &electronsTime, double time) const{ diff --git a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/python/sTGC_DigitizationConfig.py b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/python/sTGC_DigitizationConfig.py index 1306e4060facbd2207df25e4a25433117ac037c5..a4d397afc97202ca62edad164bcb670cac987594 100644 --- a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/python/sTGC_DigitizationConfig.py +++ b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/python/sTGC_DigitizationConfig.py @@ -7,14 +7,14 @@ from Digitization.DigitizationFlags import jobproperties from AthenaCommon import CfgMgr # The earliest bunch crossing time for which interactions will be sent -# to the sTGCDigitizationTool. +# to the sTGCDigitizationTool. BCID = -4 def sTGC_FirstXing(): - return -375 + return -100 # The latest bunch crossing time for which interactions will be sent -# to the sTGCDigitizationTool. +# to the sTGCDigitizationTool. BCID = 3 def sTGC_LastXing(): - return 175 + return 100 def sTgcDigitizationTool(name="sTgcDigitizationTool",**kwargs): if jobproperties.Digitization.doXingByXingPileUp(): diff --git a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/share/sTGC_Digitization_VMM.config b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/share/sTGC_Digitization_VMM.config index f74723dcaa1dc16db822d0ec6bb9b76bbaafd8ad..efbeb4abd0ac364cbe962f50651458e6efbebec0 100644 --- a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/share/sTGC_Digitization_VMM.config +++ b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/share/sTGC_Digitization_VMM.config @@ -1,4 +1,4 @@ neighborON 1 -mainThreshold 0.02 +mainThreshold 0.001 neighborThreshold 0.0 readoutTick 1 diff --git a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx index 596d29c1d5d597d4a2c118a06b000f6c788078d7..6d656adfddf80364d6421c18f14da6b473277140 100644 --- a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx +++ b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx @@ -52,7 +52,7 @@ sTgcDigitMaker::sTgcDigitMaker(sTgcHitIdHelper* hitIdHelper, const MuonGM::MuonD m_GausMean = 2.27; //mm; VMM response from Oct/Nov 2013 test beam m_GausSigma = 0.1885;//mm; VMM response from Oct/Nov 2013 test beam m_IntegralTimeOfElectr = 20.00; // ns - m_CrossTalk = 0.03; + m_CrossTalk = 0.00; // Turn off cross-talk. Old guesstimate was 0.03: Alexandre Laurier 2020-10-11 m_StripResolution = 0.07; // Angular strip resolution parameter m_ChargeSpreadFactor = 0.; m_channelTypes = 3; // 1 -> strips, 2 -> strips+pad, 3 -> strips/wires/pads diff --git a/MuonSpectrometer/MuonOverlay/MM_Overlay/src/MM_Overlay.cxx b/MuonSpectrometer/MuonOverlay/MM_Overlay/src/MM_Overlay.cxx index 3fe5727010f47550bf2dd02fae5dda531eb4b955..a8b239f698fa38f170d0a2faa034bc4dcd6e5319 100644 --- a/MuonSpectrometer/MuonOverlay/MM_Overlay/src/MM_Overlay.cxx +++ b/MuonSpectrometer/MuonOverlay/MM_Overlay/src/MM_Overlay.cxx @@ -34,13 +34,31 @@ namespace Overlay throw std::runtime_error("mergeChannelData<MmDigit>() called by a wrong parent algorithm? Must be MM_Overlay."); } + // This is a needed temporary hack for which I dont fully understand the source. Alexandre Laurier 2020-10-06 + // For some reason, sometimes the "main digit"'s size is empty. + // In these cases, dataContainer is larger than mcContainer which goes against the basic overlay assumption + // These happen in cases where we create very busy signal events. + // A MicroMega digit is a vector of strips, so an empty digit makes no sense. + bool skipOverlay = false; + if (signalDigit.stripResponseTime().size() == 0) { + signalDigit = bkgDigit; + skipOverlay = true; + } + float sig_time = signalDigit.stripResponseTime()[0]; float bkg_time = bkgDigit.stripResponseTime()[0]; + + if (skipOverlay) { // do nothing since 1 digit was empty. Keep the original + algorithm->msg(MSG::WARNING) + << "Skipping overlay of empty MM digit!" + << endmsg; + } + // As of now, we need to decide how to overlay MM digits // NEEDS TO BE ADDRESSED // For this preliminary version of July 2019, use only the data from the 1st digit in vector. /** signal masks the background */ - if ( abs(sig_time - bkg_time) > parent->timeIntegrationWindow() && sig_time < bkg_time ) { + else if ( abs(sig_time - bkg_time) > parent->timeIntegrationWindow() && sig_time < bkg_time ) { // do nothing - keep baseDigit. } /** Background hit masks the signal hit */ diff --git a/PhysicsAnalysis/AnalysisCommon/AODSelect/share/AODSelect_setupOptions.py b/PhysicsAnalysis/AnalysisCommon/AODSelect/share/AODSelect_setupOptions.py index 00553ea99b508f99bd3da07ec3022b1007cba284..8b0062584990b4f70ca4c51de8e99d17b08c7a2f 100644 --- a/PhysicsAnalysis/AnalysisCommon/AODSelect/share/AODSelect_setupOptions.py +++ b/PhysicsAnalysis/AnalysisCommon/AODSelect/share/AODSelect_setupOptions.py @@ -59,7 +59,7 @@ if AODSelectFlags.isSim(): # Print a message what MCEventCollection is found if AODSelectFlags.mcEventCollection() == "" : - logAODSelect_setupOptions.warning( "No MCEventCollection found even though the input file is simulation!" ) + logAODSelect_setupOptions.info( "No MCEventCollection found even though the input file is simulation!" ) pass else: logAODSelect_setupOptions.debug( "Found the McEventCollection with name: %s" \ @@ -67,7 +67,7 @@ if AODSelectFlags.isSim(): pass # Print a message what TruthParticleContainer is found if AODSelectFlags.truthParticleContainer() == "" : - logAODSelect_setupOptions.warning( "No TruthParticleContainer found even though the input file is simulation!" ) + logAODSelect_setupOptions.info( "No TruthParticleContainer found even though the input file is simulation!" ) pass else: logAODSelect_setupOptions.debug( "Found the TruthParticleContainer with name: %s" \ diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/NavTest.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/NavTest.h deleted file mode 100644 index 9b70c40f073b900419c804a3752bb44252c3c81e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/NavTest.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_NAVTEST_H -#define ANALYSISTEST_NAVTEST_H - -/* - test for navigation - - @author Tadashi Maeno -*/ - -#include "AthenaBaseComps/AthAlgorithm.h" -#include "GaudiKernel/NTuple.h" - -///////////////////////////////////////////////////////////////////////////// - -class NavTest : public AthAlgorithm -{ -public: - NavTest (const std::string& name, ISvcLocator* pSvcLocator); - ~NavTest () {} - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadConstituent.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadConstituent.h deleted file mode 100644 index 189b337fd0fbdbdfecee3c6f8193364db111d924..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadConstituent.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READCONSTITUENT_H -#define ANALYSISTEST_READCONSTITUENT_H - -/* - templated Read constituent - - @author Tadashi Maeno -*/ - -#include "AthenaBaseComps/AthAlgorithm.h" -#include "GaudiKernel/NTuple.h" - -///////////////////////////////////////////////////////////////////////////// - -template <class CONT> -class ReadConstituent : public AthAlgorithm -{ -public: - ReadConstituent (const std::string& name, ISvcLocator* pSvcLocator); - virtual ~ReadConstituent () {} - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); - -protected: - - StatusCode accessNtuple(); - - NTuple::Tuple* m_ntuplePtr; - - // Container key - std::string m_ContainerName; - - // prefix for Ntuple - std::string m_prefix; - - // Ntuple ID - std::string m_NtupleLocID; - - // Define variables in the Ntuple: - - NTuple::Item<long> m_nCon; - - // user defined action - virtual StatusCode userInit() { return StatusCode::SUCCESS; } - virtual StatusCode userExec(const typename CONT::base_value_type *) { return StatusCode::SUCCESS; } -}; - -#include "AnalysisTest/ReadConstituent.icc" - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadConstituent.icc b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadConstituent.icc deleted file mode 100644 index 2858398f07ce244b27492ec9c4877a06fa0ffcc0..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadConstituent.icc +++ /dev/null @@ -1,124 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - - -static const int MAX_nCon = 128; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class CONT> inline -ReadConstituent<CONT>::ReadConstituent(const std::string& name, ISvcLocator* pSvcLocator) - : AthAlgorithm(name, pSvcLocator), - m_ntuplePtr(nullptr), - m_ContainerName("") -{ - // Declare the properties - declareProperty("NtupleLocID", m_NtupleLocID); - declareProperty("ContainerName",m_ContainerName); - declareProperty("NtuplePrefix", m_prefix); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class CONT> inline -StatusCode ReadConstituent<CONT>::initialize() -{ - ATH_MSG_DEBUG ("in initialize()"); - - StatusCode sc; - - // access Ntuple - sc = accessNtuple(); - if (sc.isFailure()) - { - ATH_MSG_ERROR ("accessNtuple has failed !"); - return StatusCode::FAILURE; - } - - // add items - sc = m_ntuplePtr -> addItem (m_prefix+"/nCon", m_nCon, 0, MAX_nCon); - - if (sc.isFailure()) - { - ATH_MSG_ERROR ("Could not add items to column wise ntuple"); - return StatusCode::FAILURE; - } - - sc = userInit(); - return sc; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class CONT> inline -StatusCode ReadConstituent<CONT>::execute() -{ - ATH_MSG_DEBUG ("in execute()"); - - StatusCode sc; - - // Retrieve presistified container - CONT * pCont; - sc =evtStore()->retrieve(pCont,m_ContainerName); - if (sc.isFailure()) - { - ATH_MSG_FATAL ("Container \""+m_ContainerName+"\" could not be retrieved from StoreGate !"); - return StatusCode::FAILURE; - } - - - ATH_MSG_DEBUG ("Container->size() : " << pCont->size()); - - m_nCon = 0; - - // loop over constituents - typename CONT::const_iterator itP = pCont->begin(); - typename CONT::const_iterator itPe = pCont->end(); - for (; itP != itPe; ++itP) - { - if (m_nCon >= MAX_nCon) break; - - ATH_CHECK(userExec(*itP)); - - ++m_nCon; - } - - ATH_MSG_DEBUG ("execute() completed"); - - return StatusCode::SUCCESS; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class CONT> inline -StatusCode ReadConstituent<CONT>::finalize() -{ - return StatusCode::SUCCESS; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class CONT> inline -StatusCode ReadConstituent<CONT>::accessNtuple() -{ - m_NtupleLocID = "/NTUPLES" + m_NtupleLocID ; - - //try to access it - NTuplePtr nt(ntupleSvc(), m_NtupleLocID ); - - if (static_cast<int>(nt)) - { - m_ntuplePtr=nt; - ATH_MSG_INFO ("Ntuple " << m_NtupleLocID << " reaccessed! "); - } - else - { - ATH_MSG_FATAL ("Cannot reaccess " << m_NtupleLocID); - return StatusCode::FAILURE; - } - - return StatusCode::SUCCESS; -} - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadElectron.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadElectron.h deleted file mode 100644 index ed8430c5f50012400da763e2954ac8170da12dc2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadElectron.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READELECTRON_H -#define ANALYSISTEST_READELECTRON_H - -/* - Read Electron - - @author Tadashi Maeno -*/ - -#include "AnalysisTest/ReadParticle.h" -#include "egammaEvent/ElectronContainer.h" - -class ReadElectron : public ReadParticle<ElectronContainer> -{ -public: - ReadElectron (const std::string& name, ISvcLocator* pSvcLocator) - : ReadParticle<ElectronContainer> (name, pSvcLocator) {} -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadINav4MomAssocs.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadINav4MomAssocs.h deleted file mode 100644 index e04cb8af9afc80b4564cb48aab29fdf6082619de..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadINav4MomAssocs.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -/////////////////////////////////////////////////////////////////// -// ReadINav4MomAssocs.h -// Header file for class ReadINav4MomAssocs -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef ANALYSISTEST_READINAV4MOMASSOCS_H -#define ANALYSISTEST_READINAV4MOMASSOCS_H - -/** Algorithm to test persistency of INav4MomAssocs class - */ - -// STL includes - -// FrameWork includes -#include "AthenaBaseComps/AthAlgorithm.h" - -#include "AthenaKernel/ClassName.h" - -class ReadINav4MomAssocs : public AthAlgorithm -{ - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - - // Copy constructor: - - /// Constructor with parameters: - ReadINav4MomAssocs( const std::string& name, ISvcLocator* pSvcLocator ); - - /// Destructor: - virtual ~ReadINav4MomAssocs(); - - // Assignment operator: - //ReadINav4MomAssocs &operator=(const ReadINav4MomAssocs &alg); - - // Athena algorithm's Hooks - virtual StatusCode initialize(); - virtual StatusCode execute(); - virtual StatusCode finalize(); - - /////////////////////////////////////////////////////////////////// - // Const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Non-const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Protected method: - /////////////////////////////////////////////////////////////////// - protected: - - template <typename ASSOCS> - StatusCode readAssocs( const std::string assocsName ) const; - - /////////////////////////////////////////////////////////////////// - // Protected data: - /////////////////////////////////////////////////////////////////// - protected: - - /// Default constructor: - ReadINav4MomAssocs(); - - // Containers - - /** Input location of INav4MomAssocs container - */ - StringProperty m_inavAssocsName; - -}; - -/// I/O operators -////////////////////// - -/////////////////////////////////////////////////////////////////// -/// Inline methods: -/////////////////////////////////////////////////////////////////// -template <typename ASSOCS> -StatusCode ReadINav4MomAssocs::readAssocs( const std::string assocsName ) const -{ - const ASSOCS * assocs = 0; - ATH_CHECK( evtStore()->retrieve( assocs, assocsName ) ); - - typename ASSOCS::object_iterator objEnd = assocs->endObject(); - for ( typename ASSOCS::object_iterator objItr = assocs->beginObject(); - objItr != objEnd; - ++objItr ) { - ATH_MSG_INFO - ( "--> e= " << (*objItr)->e() - << "\tnAssocs= " << assocs->getNumberOfAssociations(objItr) ) ; - } - - return StatusCode::SUCCESS; -} - -#endif //> ANALYSISTEST_READINAV4MOMASSOCS_H diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadMuon.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadMuon.h deleted file mode 100644 index c4da3f6e5120c8b38011e18af643b2e28ccf7339..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadMuon.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READMUON_H -#define ANALYSISTEST_READMUON_H - -/* - Read Muons - - @author Tadashi Maeno -*/ - -#include "AnalysisTest/ReadParticle.h" -#include "muonEvent/MuonContainer.h" - -class ReadMuon : public ReadParticle<Analysis::MuonContainer> -{ -public: - ReadMuon (const std::string& name, ISvcLocator* pSvcLocator) - : ReadParticle<Analysis::MuonContainer> (name, pSvcLocator) {} -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadParticle.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadParticle.h deleted file mode 100644 index bf8398871651641ce85ee8bc25149d6f3b806643..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadParticle.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READPARTICLE_H -#define ANALYSISTEST_READPARTICLE_H - -/* - templated Read Particle - - @author Tadashi Maeno -*/ - -#include "AthenaBaseComps/AthAlgorithm.h" -#include "GaudiKernel/NTuple.h" - -///////////////////////////////////////////////////////////////////////////// - -template <class PARTICLE> -class ReadParticle : public AthAlgorithm -{ -public: - ReadParticle (const std::string& name, ISvcLocator* pSvcLocator); - virtual ~ReadParticle () {} - virtual StatusCode initialize(); - virtual StatusCode execute(); - virtual StatusCode finalize(); - -protected: - - StatusCode accessNtuple(); - - NTuple::Tuple* m_ntuplePtr; - - // Container key - std::string m_ContainerName; - - // prefix for Ntuple - std::string m_prefix; - - // Ntuple ID - std::string m_NtupleLocID; - - // Define variables in the Ntuple: - - NTuple::Item<long> m_nParticle; - NTuple::Array<double> m_pt; -}; - -#include "AnalysisTest/ReadParticle.icc" - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadParticle.icc b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadParticle.icc deleted file mode 100644 index 49f943353a9d8d8a9cd61269917d741fdb17c7a5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadParticle.icc +++ /dev/null @@ -1,107 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -static const int MAX_nParticle = 128; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class PARTICLE> inline -ReadParticle<PARTICLE>::ReadParticle(const std::string& name, ISvcLocator* pSvcLocator) - : AthAlgorithm(name, pSvcLocator), - m_ntuplePtr(nullptr), - m_ContainerName("") -{ - // Declare the properties - declareProperty("NtupleLocID", m_NtupleLocID); - declareProperty("ContainerName",m_ContainerName); - declareProperty("NtuplePrefix", m_prefix); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class PARTICLE> inline -StatusCode ReadParticle<PARTICLE>::initialize() -{ - ATH_MSG_DEBUG ( "in initialize()" ) ; - - ATH_CHECK( accessNtuple() ); - - // add items - ATH_CHECK( m_ntuplePtr -> addItem (m_prefix+"/nParticle", m_nParticle, 0, MAX_nParticle) ); - ATH_CHECK( m_ntuplePtr -> addItem (m_prefix+"/pt", m_nParticle, m_pt) ); - - return StatusCode::SUCCESS; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class PARTICLE> inline -StatusCode ReadParticle<PARTICLE>::execute() -{ - ATH_MSG_DEBUG ( "in execute()" ) ; - - // Retrieve presistified container - const PARTICLE * pCont = nullptr; - ATH_CHECK( evtStore()->retrieve(pCont,m_ContainerName) ); - - ATH_MSG_DEBUG ( "Container->size() : " << pCont->size() ) ; - - m_nParticle = 0; - - // loop over Particles - typename PARTICLE::const_iterator itP = pCont->begin(); - typename PARTICLE::const_iterator itPe = pCont->end(); - for (; itP != itPe; ++itP) - { - if (m_nParticle >= MAX_nParticle) break; - - // fill IParticle attributes - m_pt [m_nParticle] = (*itP)->pt(); - - ATH_MSG_DEBUG ( MSG::dec - << "#" << m_nParticle - << " pt:" << m_pt[m_nParticle] ) ; - - ++m_nParticle; - } - - ATH_MSG_DEBUG ( "execute() completed" ) ; - - return StatusCode::SUCCESS; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class PARTICLE> inline -StatusCode ReadParticle<PARTICLE>::finalize() -{ - return StatusCode::SUCCESS; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -template <class PARTICLE> inline -StatusCode ReadParticle<PARTICLE>::accessNtuple() -{ - m_NtupleLocID = "/NTUPLES" + m_NtupleLocID ; - - //try to access it - NTuplePtr nt(ntupleSvc(), m_NtupleLocID ); - - if (static_cast<int>(nt)) - { - m_ntuplePtr=nt; - ATH_MSG_INFO ( "Ntuple " << m_NtupleLocID - << " reaccessed! " ) ; - } - else - { - ATH_MSG_FATAL ( "Cannot reaccess " << m_NtupleLocID ) ; - return StatusCode::FAILURE; - } - - return StatusCode::SUCCESS; -} - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadPhoton.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadPhoton.h deleted file mode 100644 index 791a7b0f44de4ea9ccd87c4335e705e52ad602e9..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadPhoton.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READPHOTON_H -#define ANALYSISTEST_READPHOTON_H - -/* - Read Photon - - @author Tadashi Maeno -*/ - -#include "AnalysisTest/ReadParticle.h" -#include "egammaEvent/PhotonContainer.h" - -class ReadPhoton : public ReadParticle<PhotonContainer> -{ -public: - ReadPhoton (const std::string& name, ISvcLocator* pSvcLocator) - : ReadParticle<PhotonContainer> (name, pSvcLocator) {} -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTauJet.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTauJet.h deleted file mode 100644 index da83cb56671a17da93d1c0c6e9a122d3014b79fd..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTauJet.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READTAUJET_H -#define ANALYSISTEST_READTAUJET_H - -/* - Read TauJets - - @author Tadashi Maeno -*/ - -#include "AnalysisTest/ReadParticle.h" -#include "tauEvent/TauJetContainer.h" - -class ReadTauJet : public ReadParticle<Analysis::TauJetContainer> -{ -public: - ReadTauJet (const std::string& name, ISvcLocator* pSvcLocator) - : ReadParticle<Analysis::TauJetContainer> (name, pSvcLocator) {} -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTrackParticle.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTrackParticle.h deleted file mode 100644 index 70198295c20e81190263ac92dd3dcdee63c573d8..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTrackParticle.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READTRACKPARTICLE_H -#define ANALYSISTEST_READTRACKPARTICLE_H - -/* - Read TrackParticle - - @author Tadashi Maeno -*/ - -#include "GaudiKernel/NTuple.h" - -#include "AnalysisTest/ReadConstituent.h" -#include "Particle/TrackParticleContainer.h" - -class ReadTrackParticle : public ReadConstituent<Rec::TrackParticleContainer> -{ -public: - ReadTrackParticle (const std::string& name, ISvcLocator* pSvcLocator) - : ReadConstituent<Rec::TrackParticleContainer> (name, pSvcLocator) {} - ~ReadTrackParticle () {} - -private: - StatusCode userInit(); - StatusCode userExec(const Rec::TrackParticle *val); - - NTuple::Array<double> m_charge; -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTrigger.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTrigger.h deleted file mode 100644 index e425019ecb0beec81352c0bb40c50549937f8fe8..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTrigger.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READTRIGGER_H -#define ANALYSISTEST_READTRIGGER_H - -/* - Read Trigger - - @author Tadashi Maeno -*/ - -#include "AthenaBaseComps/AthAlgorithm.h" -#include "GaudiKernel/NTuple.h" - -///////////////////////////////////////////////////////////////////////////// - -class ReadTrigger : public AthAlgorithm -{ -public: - ReadTrigger (const std::string& name, ISvcLocator* pSvcLocator); - ~ReadTrigger () {} - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTruthParticle.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTruthParticle.h deleted file mode 100644 index 0d59f462fbdbe2ff1c1626133f5d56b33f96dd8f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadTruthParticle.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READTRUTHPARTICLE_H -#define ANALYSISTEST_READTRUTHPARTICLE_H - -/* - Read TruthParticles - - @author Tadashi Maeno -*/ - -#include "AnalysisTest/ReadParticle.h" -#include "McParticleEvent/TruthParticleContainer.h" - -class ReadTruthParticle : public ReadParticle<TruthParticleContainer> -{ -public: - ReadTruthParticle (const std::string& name, ISvcLocator* pSvcLocator) - : ReadParticle<TruthParticleContainer> (name, pSvcLocator) {} -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadVxContainer.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadVxContainer.h deleted file mode 100644 index e6bd3f30f2f1bf91a09bc6020217ea5597eb9241..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/ReadVxContainer.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READVXCONTAINER_H -#define ANALYSISTEST_READVXCONTAINER_H - -/* - Read VxContainer - - @author Tadashi Maeno -*/ - -#include "GaudiKernel/NTuple.h" - -#include "AnalysisTest/ReadConstituent.h" -#include "VxVertex/VxContainer.h" - -class ReadVxContainer : public ReadConstituent<VxContainer> -{ -public: - ReadVxContainer (const std::string& name, ISvcLocator* pSvcLocator) - : ReadConstituent<VxContainer> (name, pSvcLocator) {} - ~ReadVxContainer () {} - -private: - StatusCode userInit(); - StatusCode userExec(const Trk::VxCandidate *val); - - NTuple::Array<double> m_chi2; -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/Readegamma.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/Readegamma.h deleted file mode 100644 index 44b734cd491ece8f598d6881be66258bf5c45785..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/Readegamma.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ANALYSISTEST_READEGAMMA_H -#define ANALYSISTEST_READEGAMMA_H - -/* - Read egamma - - @author Tadashi Maeno -*/ - -#include "GaudiKernel/NTuple.h" - -#include "AnalysisTest/ReadConstituent.h" -#include "egammaEvent/egammaContainer.h" - -class Readegamma : public ReadConstituent<egammaContainer> -{ -public: - Readegamma (const std::string& name, ISvcLocator* pSvcLocator) - : ReadConstituent<egammaContainer> (name, pSvcLocator) {} - ~Readegamma () {} - -private: - StatusCode userInit(); - StatusCode userExec(const egamma *val); - - NTuple::Array<double> m_e; -}; - -#endif - - - - - - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/WriteINav4MomAssocs.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/WriteINav4MomAssocs.h deleted file mode 100644 index 7f5f1cc4b9703cc6c80e824ad9d0b5086716b382..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/AnalysisTest/WriteINav4MomAssocs.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -/////////////////////////////////////////////////////////////////// -// WriteINav4MomAssocs.h -// Header file for class WriteINav4MomAssocs -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef ANALYSISTEST_WRITEINAV4MOMASSOCS_H -#define ANALYSISTEST_WRITEINAV4MOMASSOCS_H - -/** Algorithm to test persistency of INav4MomAssocs class - */ - -// STL includes -#include <string> - - -// FrameWork includes -#include "AthenaBaseComps/AthAlgorithm.h" - -#include "AthenaKernel/ClassName.h" - -// NqvFourMom includes -#include "NavFourMom/INavigable4MomentumCollection.h" - -class WriteINav4MomAssocs : public AthAlgorithm -{ - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - - // Copy constructor: - - /// Constructor with parameters: - WriteINav4MomAssocs( const std::string& name, ISvcLocator* pSvcLocator ); - - /// Destructor: - virtual ~WriteINav4MomAssocs(); - - // Assignment operator: - //WriteINav4MomAssocs &operator=(const WriteINav4MomAssocs &alg); - - // Athena algorithm's Hooks - virtual StatusCode initialize(); - virtual StatusCode execute(); - virtual StatusCode finalize(); - - /////////////////////////////////////////////////////////////////// - // Const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Non-const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Protected methods: - /////////////////////////////////////////////////////////////////// - protected: - - template < typename INCOLL, typename OUTCOLL > - StatusCode symLink( const std::string& collName ) const; - - StatusCode buildAssocs( const INavigable4MomentumCollection * coll1, - const INavigable4MomentumCollection * coll2 ) const; - - /////////////////////////////////////////////////////////////////// - // Protected data: - /////////////////////////////////////////////////////////////////// - protected: - - /// Default constructor: - WriteINav4MomAssocs(); - - // Containers - - /** Input location for ParticleJet container - */ - std::string m_jetsName; - - /** Input location for Electron container - */ - std::string m_electronsName; - - /** Output location for INav4MomAssocs container - */ - std::string m_inavAssocsOutputName; - -}; - -/// I/O operators -////////////////////// - -/////////////////////////////////////////////////////////////////// -/// Inline methods: -/////////////////////////////////////////////////////////////////// - -template < typename INCOLL, typename OUTCOLL > -StatusCode WriteINav4MomAssocs::symLink( const std::string& collName ) const -{ - const INCOLL * inColl = 0; - ATH_CHECK ( evtStore()->retrieve( inColl, collName ) ); - - const OUTCOLL * outColl = 0; - ATH_CHECK ( evtStore()->symLink( inColl, outColl ) ); - - return StatusCode::SUCCESS; -} - -#endif //> ANALYSISTEST_WRITEINAV4MOMASSOCS_H diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/CMakeLists.txt b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/CMakeLists.txt deleted file mode 100644 index 5e99eea7a1fef73f767e2e44b1b68c330fd081c4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/CMakeLists.txt +++ /dev/null @@ -1,48 +0,0 @@ -################################################################################ -# Package: AnalysisTest -################################################################################ - -# Declare the package name: -atlas_subdir( AnalysisTest ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthContainers - Control/StoreGate - Event/NavFourMom - GaudiKernel - PhysicsAnalysis/TruthParticleID/McParticleEvent - Reconstruction/MuonIdentification/muonEvent - Reconstruction/Particle - Reconstruction/egamma/egammaEvent - Reconstruction/tauEvent - Tracking/TrkEvent/VxVertex - PRIVATE - AtlasTest/TestTools - Control/AthenaBaseComps - Control/AthenaKernel - Event/EventKernel - Event/FourMom - Generators/GeneratorObjects - PhysicsAnalysis/AnalysisCommon/AnalysisAssociation - PhysicsAnalysis/AnalysisCommon/AnalysisUtils - PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent - PhysicsAnalysis/TruthParticleID/McParticleUtils - Reconstruction/Jet/JetEvent - Generators/AtlasHepMC ) - -# External dependencies: -find_package( CLHEP ) -find_package( CppUnit ) - -# Component(s) in the package: -atlas_add_component( AnalysisTest - src/*.cxx - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${CPPUNIT_INCLUDE_DIRS} - LINK_LIBRARIES AtlasHepMCLib ${CLHEP_LIBRARIES} ${CPPUNIT_LIBRARIES} AthContainers StoreGateLib SGtests NavFourMom GaudiKernel McParticleEvent muonEvent Particle egammaEvent tauEvent VxVertex TestTools AthenaBaseComps AthenaKernel EventKernel FourMom GeneratorObjects AnalysisAssociation AnalysisUtilsLib AnalysisTriggerEvent McParticleUtils JetEvent ) - -# Install files from the package: -atlas_install_headers( AnalysisTest ) -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/doc/packagedoc.h b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/doc/packagedoc.h deleted file mode 100644 index 0980d50ba994b963cf77481c5137431fc4a61a68..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/doc/packagedoc.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page AnalysisTest_page AnalysisTest - -@section AnalysisTest_introductionAnalysisTest Introduction -This package contains test algs for AODs - -@section AnalysisTest_packagecontentAnalysisTest Package Contents -AnalysisTest contains the following algs/files: - -- ReadXYZ : a simple alg to retrieve XYZ-object from TDS -- NavTest : test the back-navigation -- CBNT_BJetGeneral -- CBNT_BJetLifetimeTag -- CBNT_BJetSecVtxTag - -- AODTest_topOptions.py : read-test for AOD -- AODTriggerRead_topOptions.py : read-test for Trigger AOD -- AODTriggerWrite_topOptions.py : write-test for Trigger AOD -- EventTagTest_topOptions.py : test for TAG collection -- NavTest_topOptions.py : test for the back-navigation - - - -*/ diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/AODTest_topOptions.py b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/AODTest_topOptions.py deleted file mode 100644 index 9d2972ce2e4b4792b4382fd3f3332ed35eb9029e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/AODTest_topOptions.py +++ /dev/null @@ -1,116 +0,0 @@ -# read AOD -include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" ) -EventSelector = Service( "EventSelector" ) - -# The AOD input file -EventSelector.InputCollections = [ "AOD.pool.root" ] -#EventSelector.InputCollections = [ "reconstruction.root" ] - -# POOL converters -include( "LArAthenaPool/LArAthenaPool_joboptions.py" ) -include( "TrkEventAthenaPool/TrkEventAthenaPool_joboptions.py" ) -include( "RecAthenaPool/RecAthenaPool_joboptions.py" ) -include( "ParticleEventAthenaPool/ParticleEventAthenaPool_joboptions.py" ) - -# DLLs -theApp.Dlls += [ "CBNT_Athena", "CBNT_Utils" ] -theApp.Dlls += [ "AnalysisTest" ] - -# Algs -theApp.TopAlg += [ "CBNT_Athena/CBNT_AOD" ] -CBNT_AOD = Algorithm( "CBNT_AOD" ) -CBNT_AOD.members = [ - "ReadMuon", - "ReadElectron", - "ReadPhoton", - "ReadBJet", - "ReadParticleJet", - "ReadTauJet", - "ReadTruthParticle", - "ReadTruthParticleJet" -# "ReadTrackParticle" -# "ReadVxContainer" -# "Readegamma" -# "ReadTau" - ] - -# options for Algs -ReadMuon = Algorithm( "ReadMuon" ) -ReadMuon.NtupleLocID = "/FILE1/Muon/100" -ReadMuon.NtuplePrefix = "Muon" -ReadMuon.ContainerName = "MuonCollection" - -ReadElectron = Algorithm( "ReadElectron" ) -ReadElectron.NtupleLocID = "/FILE1/Electron/101" -ReadElectron.NtuplePrefix = "Electron" -ReadElectron.ContainerName = "ElectronCollection" - -ReadPhoton = Algorithm( "ReadPhoton" ) -ReadPhoton.NtupleLocID = "/FILE1/Photon/102" -ReadPhoton.NtuplePrefix = "Photon" -ReadPhoton.ContainerName = "PhotonCollection" - -ReadBJet = Algorithm( "ReadBJet" ) -ReadBJet.NtupleLocID = "/FILE1/BJet/103" -ReadBJet.NtuplePrefix = "BJet" -ReadBJet.ContainerName = "BCandidates" - -ReadParticleJet = Algorithm( "ReadParticleJet" ) -ReadParticleJet.NtupleLocID = "/FILE1/ParticleJet/104" -ReadParticleJet.NtuplePrefix = "ParticleJet" -ReadParticleJet.ContainerName = "ParticleJetContainer" - -ReadTauJet = Algorithm( "ReadTauJet" ) -ReadTauJet.NtupleLocID = "/FILE1/TauJet/105" -ReadTauJet.NtuplePrefix = "TauJet" -ReadTauJet.ContainerName = "TauJetCollection" - -ReadTruthParticle = Algorithm( "ReadTruthParticle" ) -ReadTruthParticle.NtupleLocID = "/FILE1/TruthParticle/106" -ReadTruthParticle.NtuplePrefix = "TruthParticle" -ReadTruthParticle.ContainerName = "SpclMC" - -ReadTruthParticleJet = Algorithm( "ReadTruthParticleJet" ) -ReadTruthParticleJet.NtupleLocID = "/FILE1/TruthParticleJet/107" -ReadTruthParticleJet.NtuplePrefix = "TruthParticleJet" -ReadTruthParticleJet.ContainerName = "TruthParticleJetContainer" - -ReadTrackParticle = Algorithm( "ReadTrackParticle" ) -ReadTrackParticle.NtupleLocID = "/FILE1/TrackParticle/108" -ReadTrackParticle.NtuplePrefix = "TrackParticle" -ReadTrackParticle.ContainerName = "TrackParticleCandidate" #"MooreTrackParticles" - -ReadTau = Algorithm( "ReadTau" ) -ReadTau.NtupleLocID = "/FILE1/tauContainer/109" -ReadTau.NtuplePrefix = "tauContainer" -ReadTau.ContainerName = "MYtauContainer" - -ReadVxContainer = Algorithm( "ReadVxContainer" ) -ReadVxContainer.NtupleLocID = "/FILE1/Vx/110" -ReadVxContainer.NtuplePrefix = "Vx" -ReadVxContainer.ContainerName = "VxPrimaryCandidate" - -Readegamma = Algorithm( "Readegamma" ) -Readegamma.NtupleLocID = "/FILE1/egamma/111" -Readegamma.NtuplePrefix = "egamma" -Readegamma.ContainerName = "egammaCollection" - -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc = Service( "MessageSvc" ) -MessageSvc.OutputLevel = INFO - -# message level for ReadXYZ -#ReadMuon.OutputLevel = DEBUG -#ReadElectron.OutputLevel = DEBUG - -# Number of Events to process -theApp.EvtMax = 1000000 - -# Root Ntuple output -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" -NTupleSvc = Service( "NTupleSvc" ) -NTupleSvc.Output = [ "FILE1 DATAFILE='AODTest.root' OPT='NEW'" ] -HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -HistogramPersistencySvc.OutputFile = "hist.root"; - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/AODTriggerRead_topOptions.py b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/AODTriggerRead_topOptions.py deleted file mode 100644 index eb8f7435aa2585f29f6b9010f0a3385101e72c4e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/AODTriggerRead_topOptions.py +++ /dev/null @@ -1,35 +0,0 @@ -# read AOD -include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" ) -EventSelector = Service( "EventSelector" ) - -# The AOD input file -EventSelector.InputCollections = [ "AOD_Trigger.root" ] - -# POOL converters -include( "AnalysisTriggerEventAthenaPool/AnalysisTriggerEventAthenaPool_joboptions.py" ) - -# DLLs -theApp.Dlls += [ "AnalysisTest" ] - -# Algs -theApp.TopAlg += [ "ReadTrigger" ] - -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc = Service( "MessageSvc" ) -MessageSvc.OutputLevel = INFO - -# message level for ReadXYZ -ReadTrigger = Algorithm( "ReadTrigger" ) -ReadTrigger.OutputLevel = DEBUG - -# Number of Events to process -theApp.EvtMax = 1000000 - -# Root Ntuple output -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" -NTupleSvc = Service( "NTupleSvc" ) -NTupleSvc.Output = [ "FILE1 DATAFILE='AODTest.root' OPT='NEW'" ] -HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -HistogramPersistencySvc.OutputFile = "hist.root"; - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/AODTriggerWrite_topOptions.py b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/AODTriggerWrite_topOptions.py deleted file mode 100644 index 0ccd06b6861567df4ce978033522b27f7e2d19d2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/AODTriggerWrite_topOptions.py +++ /dev/null @@ -1,58 +0,0 @@ -# read Pool -include("AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py") - -# Pool Converters -include("EventAthenaPool/EventAthenaPool_joboptions.py") -include("TrigT1EventAthenaPool/TrigT1EventAthenaPool_joboptions.py") -include("AnalysisTriggerEventAthenaPool/AnalysisTriggerEventAthenaPool_joboptions.py") - -# input -EventSelector = Service( "EventSelector" ) -#EventSelector.InputCollections = [ "/afs/cern.ch/atlas/offline/data/testfile/dc2.002867.pyt_z_ee.g4dig802._0001.pool.root" ] -EventSelector.InputCollections = [ "rfio:/castor/cern.ch/atlas/project/dc2/preprod/g4dig805/dc2.002883.pyt_z_mumu.g4dig805/data/dc2.002883.pyt_z_mumu.g4dig805._0001.pool.root" ] - -# LVL1 config -include("TrigT1Config/TrigT1ConfigJobOptions.py") -L1Config = Service( "L1Config" ) -L1Config.triggerMenuFileLocation = "LVL1triggermenuDC2.xml" -L1Config.thresholdListFileLocation = "LVL1triggerthresholdsDC2.xml" - -# for RecMuonRoI svc -DetDescrCnvSvc = Service( "DetDescrCnvSvc" ) -DetDescrCnvSvc.DecodeIdDict = TRUE -DetDescrCnvSvc.ReadFromNova = TRUE -include ( "AtlasGeoModel/GeoModelCommon.py" ) -include ( "AmdcAth/AmdcAth_jobOptions.py" ) -include ( "AtlasGeoModel/MuonGeoModel.py" ) -include ( "MuonByteStreamCnvTest/MuonRdoDigit_jobOptions.py" ) -include ( "TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvcJobOptions.py" ) -theApp.Dlls += ["TrigT1RPCRecRoiSvc"] -theApp.ExtSvc += ["LVL1RPC::RPCRecRoiSvc"] - -# RoIB result to AOD conversion -include("AnalysisTriggerAlgs/AnalysisTrigger_jobOptions.py") - -# write to Pool -theApp.OutStream += [ "Stream1" ] -theApp.OutStreamType = "AthenaOutputStream" -Stream1 = Algorithm( "Stream1" ) -Stream1.EvtConversionSvc = "AthenaPoolCnvSvc" - -# Output file name -Stream1.OutputFile = "AOD_Trigger.root" - -# Item list -Stream1.ItemList+=["EventInfo#*"] -Stream1.ItemList+=["CTP_Decision#*"] -Stream1.ItemList+=["LVL1_ROI#*"] - -# Message level -MessageSvc = Service( "MessageSvc" ) -MessageSvc.OutputLevel = INFO - -RoIBResultToAOD = Algorithm( "RoIBResultToAOD" ) -RoIBResultToAOD.OutputLevel = DEBUG - -# Number of events to be processed -theApp.EvtMax = 10 - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/BJetCBNT_jobOptions.py b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/BJetCBNT_jobOptions.py deleted file mode 100644 index d6f9ebd3e1a416009e9ab7b6fe0701ecd87a4c91..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/BJetCBNT_jobOptions.py +++ /dev/null @@ -1,49 +0,0 @@ -#-------------------------------------------------- -# CBNT_BJet -#------------------------------------------------- -theApp.Dlls += [ "AnalysisTest" ] -CBNT_Athena = Algorithm( "CBNT_Athena" ) - -OutputLevel = 3 - -# general BTag CBNT variables -CBNT_Athena.Members += [ "CBNT_BJetGeneral/CBNT_BJetGeneral" ] -CBNT_BJetGeneral = Algorithm( "CBNT_BJetGeneral" ) -CBNT_BJetGeneral.BCandidatesName = "BCandidates" -CBNT_BJetGeneral.OutputLevel = OutputLevel - -# lifetime BTag CBNT variables -if BTaggingAlgsFlags.lifetime1D: - CBNT_Athena.Members += [ "CBNT_BJetLifetimeTag/CBNT_BJetLifetimeTag1D" ] - CBNT_BJetLifetimeTag1D = Algorithm( "CBNT_BJetLifetimeTag1D" ) - CBNT_BJetLifetimeTag1D.BCandidatesName = "BCandidates" - CBNT_BJetLifetimeTag1D.tagMode = "1D" - CBNT_BJetLifetimeTag1D.OutputLevel = OutputLevel -if BTaggingAlgsFlags.lifetime2D: - CBNT_Athena.Members += [ "CBNT_BJetLifetimeTag/CBNT_BJetLifetimeTag2D" ] - CBNT_BJetLifetimeTag2D = Algorithm( "CBNT_BJetLifetimeTag2D" ) - CBNT_BJetLifetimeTag2D.BCandidatesName = "BCandidates" - CBNT_BJetLifetimeTag2D.tagMode = "2D" - CBNT_BJetLifetimeTag2D.OutputLevel = OutputLevel -if BTaggingAlgsFlags.lifetime3D: - CBNT_Athena.Members += [ "CBNT_BJetLifetimeTag/CBNT_BJetLifetimeTag3D" ] - CBNT_BJetLifetimeTag3D = Algorithm( "CBNT_BJetLifetimeTag3D" ) - CBNT_BJetLifetimeTag3D.BCandidatesName = "BCandidates" - CBNT_BJetLifetimeTag3D.tagMode = "3D" - CBNT_BJetLifetimeTag3D.OutputLevel = OutputLevel - -# sec vtx BTag variables -if BTaggingAlgsFlags.secVtxFitBU: - CBNT_Athena.Members += [ "CBNT_BJetSecVtxTag/CBNT_BJetSecVtxTagBU" ] - CBNT_BJetSecVtxTagBU = Algorithm( "CBNT_BJetSecVtxTagBU" ) - CBNT_BJetSecVtxTagBU.BCandidatesName = "BCandidates" - CBNT_BJetSecVtxTagBU.tagMode = "BU" - CBNT_BJetSecVtxTagBU.OutputLevel = OutputLevel -if BTaggingAlgsFlags.secVtxFitTD: - CBNT_Athena.Members += [ "CBNT_BJetSecVtxTag/CBNT_BJetSecVtxTagTD" ] - CBNT_BJetSecVtxTagTD = Algorithm( "CBNT_BJetSecVtxTagTD" ) - CBNT_BJetSecVtxTagTD.BCandidatesName = "BCandidates" - CBNT_BJetSecVtxTagTD.tagMode = "TD" - CBNT_BJetSecVtxTagTD.OutputLevel = OutputLevel - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/EventTagTest_topOptions.py b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/EventTagTest_topOptions.py deleted file mode 100644 index 8c1b61f2842e4c1a227b81b0a1a3bc47366c9fa3..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/EventTagTest_topOptions.py +++ /dev/null @@ -1,79 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== - -#-------------------------------------------------------------- -# POOL related services. -#-------------------------------------------------------------- -include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" ) - -PoolSvc = Service( "PoolSvc" ) -PoolSvc.WriteCatalog = "xmlcatalog_file:PoolFileCatalog.xml" - -#-------------------------------------------------------------- -# Event selector. -#-------------------------------------------------------------- -EventSelector = Service( "EventSelector" ) -EventSelector.InputCollections = [ - "AOD.pool.root" - ] - -EventSelector.Query = "n_electron > 2 && e_electron_1 > 20000 && e_electron_2 > 18000" - -#-------------------------------------------------------------- -# POOLconverters -#-------------------------------------------------------------- -include( "EventAthenaPool/EventAthenaPool_joboptions.py" ) -include( "LArAthenaPool/LArAthenaPool_joboptions.py" ) -include( "TileEventAthenaPool/TileEventAthenaPool_joboptions.py" ) -include( "TrkEventAthenaPool/TrkEventAthenaPool_joboptions.py" ) -include( "InDetEventAthenaPool/InDetEventAthenaPool_joboptions.py" ) -include( "RecAthenaPool/RecAthenaPool_joboptions.py" ) -include( "ParticleEventAthenaPool/ParticleEventAthenaPool_joboptions.py" ) -include( "AnalysisTriggerEventAthenaPool/AnalysisTriggerEventAthenaPool_joboptions.py" ) - -#-------------------------------------------------------------- -# Load libraries and declare top algorithms. -#-------------------------------------------------------------- -from EventTagAlgs.EventTagGlobal import EventTagGlobal -EventTagGlobal.AttributeList = "SimpleTag" - -include( "EventTagAlgs/EventTag_jobOptions.py" ) - -#-------------------------------------------------------------- -# Event collection registration. -#-------------------------------------------------------------- -# Run OutputStream as an algorithm -theApp.TopAlg += [ "RegistrationStream/RegStream1" ] -RegStream1 = Algorithm( "RegStream1" ) -RegStream1.OutputCollection = "EventTagCollection" -RegStream1.Connection = "" -#RegStream1.Connection = "mysql://CollTester:CtAl_204@atlasdbdev.cern.ch/CollectionTest" -#RegStream1.Connection = "mysql://athena:insider@db1.usatlas.bnl.gov/pool_collection" -# List of DO's to register -RegStream1.ItemList += [ "DataHeader#*" ] -# Key name of AthenaAttributeList used for the tag: -RegStream1.ItemList += [ "AthenaAttributeList#SimpleTag" ] - -#------------------------------------------------------------- -# Event related parameters. -#------------------------------------------------------------- -theApp.EvtMax = 20 - -#-------------------------------------------------------------- -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -#-------------------------------------------------------------- -MessageSvc = Service( "MessageSvc" ) -MessageSvc.OutputLevel = 1 -ClassIDSvc = Service( "ClassIDSvc" ) -ClassIDSvc.OutputLevel = 3 -StoreGateSvc = Service( "StoreGateSvc" ) -StoreGateSvc.Dump = TRUE - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/NavTest_topOptions.py b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/NavTest_topOptions.py deleted file mode 100644 index 3a71e992e3d011beb119f55d6111f90dd7162b61..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/NavTest_topOptions.py +++ /dev/null @@ -1,23 +0,0 @@ -# read AOD -include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" ) - -EventSelector = Service( "EventSelector" ) - -# The AOD input file -EventSelector.InputCollections = [ "AOD.pool.root" ] - -# POOL converters -include( "LArAthenaPool/LArAthenaPool_joboptions.py" ) -include( "TrkEventAthenaPool/TrkEventAthenaPool_joboptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py") -include( "RecAthenaPool/RecAthenaPool_joboptions.py" ) -include( "ParticleEventAthenaPool/ParticleEventAthenaPool_joboptions.py" ) - -# DLLs -theApp.Dlls += [ "AnalysisTest" ] - -# Algs -theApp.TopAlg += [ "NavTest" ] - -# number of events to be processed -theApp.EvtMax = 1000000 diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/ReadINav4MomAssocs_jobOptions.py b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/ReadINav4MomAssocs_jobOptions.py deleted file mode 100644 index 196f8c47d9b076f1fa55dc5176c94c0705655e21..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/ReadINav4MomAssocs_jobOptions.py +++ /dev/null @@ -1,122 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -# -AthenaEventLoopMgr = Service( "AthenaEventLoopMgr" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#* load relevant libraries -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "GaudiAud" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -theAuditorSvc.Auditors += [ "MemStatAuditor" ] -MemStatAuditor = theAuditorSvc.auditor( "MemStatAuditor" ) -ChronoAuditor = theAuditorSvc.auditor( "ChronoAuditor" ) - -# import the data types -import EventKernel.ParticleDataType - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed -if not 'EVTMAX' in dir() : - EVTMAX = -1 - pass -theApp.EvtMax = EVTMAX - -#-------------------------------------------------------------- -# Load POOL support -#-------------------------------------------------------------- -include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" ) -PoolSvc = Service( "PoolSvc" ) - -#-------------------------------------------------------------- -# Define the InputCollections -# There are three types: -# ImplicitROOT (default) - just file with event objects -# ExplicitROOT - ROOT-based collections -# ExplicitMySQL - MySQL-based collections -# E.g. one needs for explicit collection: -# EventSelector.CollectionType = "ExplicitROOT" -# This example uses ImplicitROOT -#-------------------------------------------------------------- -EventSelector = Service( "EventSelector" ) - -EventSelector.InputCollections = [ "assocs.pool.root" ] - -#PoolSvc.ReadCatalog = [ 'xmlcatalog_file:TestCatalog.xml' ] -#PoolSvc.WriteCatalog = 'xmlcatalog_file:TestCatalog.xml' - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.ExtSvc += ["AtRndmGenSvc"] - -##################################################### -# ReadINav4MomAssocs -# --> Load and read the INav4MomAssocs content -##################################################### -theApp.Dlls += ["AnalysisTest" ] -theApp.TopAlg += [ "ReadINav4MomAssocs/ReadINav4MomAssocs" ] -ReadINav4MomAssocs = Algorithm( "ReadINav4MomAssocs" ) - -ReadINav4MomAssocs.Assocs = "INav4MomAssocs" -ReadINav4MomAssocs.OutputLevel = VERBOSE - -#-------------------------------------------------------------- -# POOL Persistency -#-------------------------------------------------------------- -# POOL converters -include( "AtlfastAthenaPool/AtlfastAthenaPool_joboptions.py" ) -include( "ParticleBuilderOptions/AOD_PoolCnv_jobOptions.py" ) - -PoolSvc = Service( "PoolSvc" ) - -# Run OutputStream as an algorithm -theApp.TopAlg += [ "AthenaOutputStream/Stream1" ] -# Must make sure that no OutStream's have been declared -theApp.OutStream = []; -# Stream's output file -Stream1 = Algorithm( "Stream1" ) -Stream1.EvtConversionSvc = "AthenaPoolCnvSvc"; -Stream1.OutputFile = "assocs.readback.pool.root" - -# Event Info -Stream1.ItemList += [ "EventInfo#*" ] - -PoolSvc.OutputLevel = WARNING - -############################################################## -# -# Customise OutputLevel -# -############################################################## - -# OUTPUT PRINTOUT LEVEL -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc = Service( "MessageSvc" ) -MessageSvc.useColors = False -MessageSvc.OutputLevel = 3 -MessageSvc.defaultLimit = 4000000 -AthenaEventLoopMgr.OutputLevel = 4 - -MemStatAuditor.OutputLevel = 4 -ChronoAuditor.OutputLevel = 4 - -StoreGateSvc = Service( "StoreGateSvc" ) -#StoreGateSvc.Dump = True; -StoreGateSvc.OutputLevel=3 -#============================================================== -# -# End of job options file -# -############################################################### - - - -# athena AnalysisExamples/produceGenEvents_jobOptions.py && athena -c 'INPUT=["McEvent.root"]; OUTPUT="AOD.pool.root"; EVTMAX=10; ' AssocsRTT/FastSimToAOD_topOptions.py && athena -c 'EVTMAX=10' AnalysisTest/WriteAodAssocs_jobOptions.py && athena AnalysisTest/ReadAodAssocs_jobOptions.py diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/WriteINav4MomAssocs_jobOptions.py b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/WriteINav4MomAssocs_jobOptions.py deleted file mode 100644 index ca85fcf6d6321cd9601742304055bc925cf56768..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/share/WriteINav4MomAssocs_jobOptions.py +++ /dev/null @@ -1,131 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -# -AthenaEventLoopMgr = Service( "AthenaEventLoopMgr" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#* load relevant libraries -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "GaudiAud" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -theAuditorSvc.Auditors += [ "MemStatAuditor" ] -MemStatAuditor = theAuditorSvc.auditor( "MemStatAuditor" ) -ChronoAuditor = theAuditorSvc.auditor( "ChronoAuditor" ) - -# import the data types -import EventKernel.ParticleDataType - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed -if not 'EVTMAX' in dir() : - EVTMAX = -1 - pass -theApp.EvtMax = EVTMAX - -#-------------------------------------------------------------- -# Load POOL support -#-------------------------------------------------------------- -include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" ) -PoolSvc = Service( "PoolSvc" ) - -#-------------------------------------------------------------- -# Define the InputCollections -# There are three types: -# ImplicitROOT (default) - just file with event objects -# ExplicitROOT - ROOT-based collections -# ExplicitMySQL - MySQL-based collections -# E.g. one needs for explicit collection: -# EventSelector.CollectionType = "ExplicitROOT" -# This example uses ImplicitROOT -#-------------------------------------------------------------- -EventSelector = Service( "EventSelector" ) - -EventSelector.InputCollections = [ "AOD.pool.root" ] - -PoolSvc.ReadCatalog = [ 'xmlcatalog_file:PoolFileCatalog.xml' ] - -PoolSvc.WriteCatalog = 'xmlcatalog_file:PoolFileCatalog.xml' - -print "\n" -print ">>> Input catalog :",PoolSvc.ReadCatalog -print ">>> Output catalog :",PoolSvc.WriteCatalog -print ">>> Input POOL files :",EventSelector.InputCollections -print ">>> EvtMax :",theApp.EvtMax - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.ExtSvc += ["AtRndmGenSvc"] - -##################################################### -# WriteINav4MomAssocs -# --> Load and read the INav4MomAssocs content -##################################################### -theApp.Dlls += ["AnalysisTest" ] -theApp.TopAlg += [ "WriteINav4MomAssocs/WriteINav4MomAssocs" ] -WriteINav4MomAssocs = Algorithm( "WriteINav4MomAssocs" ) - -WriteINav4MomAssocs.Electrons = "AtlfastElectronCollection" -WriteINav4MomAssocs.Jets = "AtlfastParticleJetContainer" -WriteINav4MomAssocs.AssocsOutput = "INav4MomAssocs" -WriteINav4MomAssocs.OutputLevel = VERBOSE - -#-------------------------------------------------------------- -# POOL Persistency -#-------------------------------------------------------------- - -include( "AtlfastAthenaPool/AtlfastAthenaPool_joboptions.py" ) -include( "ParticleBuilderOptions/AOD_PoolCnv_jobOptions.py" ) - -PoolSvc = Service( "PoolSvc" ) - -# Run OutputStream as an algorithm -theApp.TopAlg += [ "AthenaOutputStream/Stream1" ] -# Must make sure that no OutStream's have been declared -theApp.OutStream = []; -# Stream's output file -Stream1 = Algorithm( "Stream1" ) -Stream1.EvtConversionSvc = "AthenaPoolCnvSvc"; -Stream1.OutputFile = "assocs.pool.root" - -# Event Info -Stream1.ItemList += [ "EventInfo#*" ] -Stream1.ItemList += [ "INavigable4MomentumCollection#*" ] -Stream1.ItemList += [ "ElectronContainer#*" ] -Stream1.ItemList += [ "ParticleJetContainer#*" ] -Stream1.ItemList += [ "INav4MomAssocs#*" ] - -############################################################## -# -# Customise OutputLevel -# -############################################################## - -# OUTPUT PRINTOUT LEVEL -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc = Service( "MessageSvc" ) -MessageSvc.useColors = False -MessageSvc.OutputLevel = 3 -MessageSvc.defaultLimit = 4000000 -AthenaEventLoopMgr.OutputLevel = 4 - -MemStatAuditor.OutputLevel = 4 -ChronoAuditor.OutputLevel = 4 - -StoreGateSvc = Service( "StoreGateSvc" ) -#StoreGateSvc.Dump = True; -StoreGateSvc.OutputLevel=3 - -#============================================================== -# -# End of job options file -# -############################################################### - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/NavTest.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/NavTest.cxx deleted file mode 100644 index fcac5bc5f8b5c4a6a789188cee8e0eabd3483d23..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/NavTest.cxx +++ /dev/null @@ -1,79 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/NavTest.h" - -#include "egammaEvent/ElectronContainer.h" -#include "GeneratorObjects/McEventCollection.h" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -NavTest::NavTest(const std::string& name, ISvcLocator* pSvcLocator) - : AthAlgorithm(name, pSvcLocator) -{} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -StatusCode NavTest::initialize() -{ - ATH_MSG_INFO ( "in initialize()" ) ; - return StatusCode::SUCCESS; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -StatusCode NavTest::execute() -{ - ATH_MSG_INFO ( "in execute()" ) ; - - // Retrieve Electron from AOD - const ElectronContainer * eCont = nullptr; - ATH_CHECK( evtStore()->retrieve(eCont, "ElectronCollection") ); - - ATH_MSG_INFO ( " --- " ) ; - ATH_MSG_INFO ( "Electron Size : " << eCont->size() ) ; - - // loop over all Electron - for (const Analysis::Electron* ele : *eCont) - { - ATH_MSG_INFO ( "Electron pT : " << ele->pt() ) ; - - // get TrackParticle via ElementLink - const Rec::TrackParticle *track = ele->trackParticle(); - if (track == 0) - ATH_MSG_INFO ( "No Track" ) ; - else - ATH_MSG_INFO ( "Track charge : " << track->charge() ) ; - - // get LAr cluster from ESD via ElementLink of egamma - const CaloCluster *cls = ele->cluster(); - if (cls == 0) - { - ATH_MSG_INFO ( "Null LArCluster" ) ; - continue; - } - ATH_MSG_INFO ( "LArCluster eta0 : " << cls->eta0() ) ; - } - - // Retrieve G4Truth directly from ESD - const McEventCollection * g4Cont = nullptr; - ATH_CHECK( evtStore()->retrieve(g4Cont, "G4Truth") ); - - ATH_MSG_INFO ( " --- " ) ; - ATH_MSG_INFO ( "G4Truth Size : " << g4Cont->size() ) ; - - // loop over all McEvent - for (const HepMC::GenEvent* ev : *g4Cont) { - ATH_MSG_INFO ( "Size of particles : " << ev->particles_size() ) ; - } - - return StatusCode::SUCCESS; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -StatusCode NavTest::finalize() -{ - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadElectron.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadElectron.cxx deleted file mode 100644 index d385aa095312b521fa68e115bda98ad6fe0435f5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadElectron.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/ReadElectron.h" - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadINav4MomAssocs.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadINav4MomAssocs.cxx deleted file mode 100644 index e6bf57d320365211ac1dc45b0c57c7227858c808..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadINav4MomAssocs.cxx +++ /dev/null @@ -1,87 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/////////////////////////////////////////////////////////////////// -// ReadINav4MomAssocs.cxx -// Implementation file for class ReadINav4MomAssocs -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// - - -// STL includes - -// FrameWork includes -#include "Gaudi/Property.h" - -// NavFourMom includes -#include "NavFourMom/INav4MomAssocs.h" - -// AnalysisTest includes -#include "AnalysisTest/ReadINav4MomAssocs.h" - -/////////////////////////////////////////////////////////////////// -/// Public methods: -/////////////////////////////////////////////////////////////////// - -/// Constructors -//////////////// -ReadINav4MomAssocs::ReadINav4MomAssocs( const std::string& name, - ISvcLocator* pSvcLocator ) : - AthAlgorithm( name, pSvcLocator ) -{ - // - // Property declaration - // - declareProperty( "Assocs", m_inavAssocsName = "INav4MomAssocs" ); - -} - -/// Destructor -/////////////// -ReadINav4MomAssocs::~ReadINav4MomAssocs() -{ - ATH_MSG_DEBUG ( "Calling destructor" ) ; -} - -/// Athena Algorithm's Hooks -//////////////////////////// -StatusCode ReadINav4MomAssocs::initialize() -{ - ATH_MSG_INFO ( "Initializing " << name() << "..." ) ; - return StatusCode::SUCCESS; -} - -StatusCode ReadINav4MomAssocs::finalize() -{ - ATH_MSG_INFO ( "Finalizing " << name() << "..." ) ; - return StatusCode::SUCCESS; -} - -StatusCode ReadINav4MomAssocs::execute() -{ - ATH_MSG_DEBUG ( "Executing " << name() << "..." ) ; - ATH_CHECK( readAssocs<INav4MomAssocs>( m_inavAssocsName ) ); - return StatusCode::SUCCESS; -} - -/////////////////////////////////////////////////////////////////// -// Const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Non-const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Protected methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Non-const methods: -/////////////////////////////////////////////////////////////////// - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadMuon.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadMuon.cxx deleted file mode 100644 index 87f133db461ff4e7f11dd748ffedbbc6a9ca36f5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadMuon.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/ReadMuon.h" - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadPhoton.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadPhoton.cxx deleted file mode 100644 index 4ff304fb905e15b2db30a8d9ec3c7e62aa5be75f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadPhoton.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/ReadPhoton.h" - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTauJet.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTauJet.cxx deleted file mode 100644 index d0e835661f211ccb04fc2f8ef1077fd06fc2f717..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTauJet.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/ReadTauJet.h" - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTrackParticle.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTrackParticle.cxx deleted file mode 100644 index e1eded97cbfc20e68c98f0b05ac8caa5e5087f13..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTrackParticle.cxx +++ /dev/null @@ -1,17 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/ReadTrackParticle.h" - -StatusCode ReadTrackParticle::userInit() -{ - return m_ntuplePtr -> addItem (m_prefix+"/charge", m_nCon, m_charge); -} - -StatusCode ReadTrackParticle::userExec(const Rec::TrackParticle *val) -{ - m_charge [m_nCon] = val->charge(); - - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTrigger.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTrigger.cxx deleted file mode 100644 index 78e1e6a3f2e41eb3490fa7a1cc43c9e7e93374a7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTrigger.cxx +++ /dev/null @@ -1,85 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/ReadTrigger.h" - -#include "AnalysisTriggerEvent/CTP_Decision.h" -#include "AnalysisTriggerEvent/LVL1_ROI.h" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -ReadTrigger::ReadTrigger(const std::string& name, ISvcLocator* pSvcLocator) - : AthAlgorithm(name, pSvcLocator) -{} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -StatusCode ReadTrigger::initialize() -{ - return StatusCode::SUCCESS; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -StatusCode ReadTrigger::execute() -{ - ATH_MSG_DEBUG ("in execute()"); - - // Retrieve CTP - const CTP_Decision * ctpDecision = 0; - ATH_CHECK( evtStore()->retrieve(ctpDecision) ); - - ATH_MSG_DEBUG ("word0 : " << MSG::hex << ctpDecision->getWord0()); - ATH_MSG_DEBUG ("word1 : " << MSG::hex << ctpDecision->getWord1()); - ATH_MSG_DEBUG ("word2 : " << MSG::hex << ctpDecision->getWord2()); - ATH_MSG_DEBUG ("word3 : " << MSG::hex << ctpDecision->getWord3()); - ATH_MSG_DEBUG ("word4 : " << MSG::hex << ctpDecision->getWord4()); - ATH_MSG_DEBUG ("word5 : " << MSG::hex << ctpDecision->getWord5()); - ATH_MSG_DEBUG ("word6 : " << MSG::hex << ctpDecision->getWord6()); - ATH_MSG_DEBUG ("word7 : " << MSG::hex << ctpDecision->getWord7()); - - for (const auto& item : ctpDecision->getItems()) - { - ATH_MSG_DEBUG ("item : " << item); - } - - // Retrieve LVL1 ROI - const LVL1_ROI* roi = 0; - ATH_CHECK( evtStore()->retrieve(roi) ); - - for (const auto& item : roi->getMuonROIs()) - { - ATH_MSG_DEBUG ("Mu : " << item.getEta() << " " << item.getPhi()); - } - - for (const auto& item : roi->getEmTauROIs()) - { - ATH_MSG_DEBUG ("EmTau : " << item.getEta() << " " << item.getPhi()); - } - - for (const auto& item : roi->getJetROIs()) - { - ATH_MSG_DEBUG ("Jet : " << item.getEta() << " " << item.getPhi()); - } - - for (const auto& item : roi->getJetEtROIs()) - { - ATH_MSG_DEBUG ("JetET : " << MSG::hex << item.getROIWord() << MSG::dec); - } - - for (const auto& item : roi->getEnergySumROIs()) - { - ATH_MSG_DEBUG ("EnergySum : " << item.getEnergyX() << " " - << item.getEnergyY() << " " << item.getEnergyT()); - } - - return StatusCode::SUCCESS; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -StatusCode ReadTrigger::finalize() -{ - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTruthParticle.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTruthParticle.cxx deleted file mode 100644 index 8e285de0d11d4f893c14dfb9b3247025abccb212..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadTruthParticle.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/ReadTruthParticle.h" - - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadVxContainer.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadVxContainer.cxx deleted file mode 100644 index eca6948dff8c46f02f17acb42575dd2f41020907..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/ReadVxContainer.cxx +++ /dev/null @@ -1,17 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/ReadVxContainer.h" - -StatusCode ReadVxContainer::userInit() -{ - return m_ntuplePtr -> addItem (m_prefix+"/chi2", m_nCon, m_chi2); -} - -StatusCode ReadVxContainer::userExec(const Trk::VxCandidate *val) -{ - m_chi2 [m_nCon] = (val->recVertex()).fitQuality().chiSquared(); - - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/Readegamma.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/Readegamma.cxx deleted file mode 100644 index d00d020bae33df541843635ca5b491ed7b605eaa..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/Readegamma.cxx +++ /dev/null @@ -1,41 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AnalysisTest/Readegamma.h" -#include "Particle/TrackParticle.h" - -StatusCode Readegamma::userInit() -{ - return m_ntuplePtr -> addItem (m_prefix+"/e", m_nCon, m_e); -} - -StatusCode Readegamma::userExec(const egamma *val) -{ - m_e [m_nCon] = val->e(); - - // get LAr cluster - const CaloCluster *cls = val->cluster(); - if (cls == 0) - { - ATH_MSG_INFO ( "Null LArCluster" ) ; - } - else - { - ATH_MSG_INFO ( "LArCluster eta0: " << cls->eta0() ) ; - } - - // get TrackParticle - const Rec::TrackParticle *tp; - tp = val->trackParticle(); - if (tp == 0) - { - ATH_MSG_INFO ( "Null TrackParticle" ) ; - } - else - { - ATH_MSG_INFO ( "TrackParticle charge: " << tp->charge() ) ; - } - - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/WriteINav4MomAssocs.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/WriteINav4MomAssocs.cxx deleted file mode 100644 index 93542497f11a139a31c01204016a570bbfc507f6..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/WriteINav4MomAssocs.cxx +++ /dev/null @@ -1,136 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -/////////////////////////////////////////////////////////////////// -// WriteINav4MomAssocs.cxx -// Implementation file for class WriteINav4MomAssocs -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// - - -// STL includes - -// FrameWork includes -#include "Gaudi/Property.h" - -// NavFourMom includes -#include "NavFourMom/INav4MomAssocs.h" - -// ElectronPhotonIDEvent includes -#include "egammaEvent/ElectronContainer.h" - -// JetEvent includes -#include "JetEvent/JetCollection.h" - -// AnalysisTest includes -#include "AnalysisTest/WriteINav4MomAssocs.h" -#include "AthenaKernel/Units.h" - -/////////////////////////////////////////////////////////////////// -/// Public methods: -/////////////////////////////////////////////////////////////////// - -/// Constructors -//////////////// -WriteINav4MomAssocs::WriteINav4MomAssocs( const std::string& name, - ISvcLocator* pSvcLocator ) : - AthAlgorithm( name, pSvcLocator ) -{ - // - // Property declaration - // - declareProperty( "Jets", m_jetsName = "AtlfastJetContainer" ); - declareProperty( "Electrons", m_electronsName = "AtlfastElectronCollection" ); - declareProperty( "AssocsOutput", m_inavAssocsOutputName = "INav4MomAssocs" ); - -} - -/// Destructor -/////////////// -WriteINav4MomAssocs::~WriteINav4MomAssocs() -{ - ATH_MSG_DEBUG ( "Calling destructor" ) ; -} - -/// Athena Algorithm's Hooks -//////////////////////////// -StatusCode WriteINav4MomAssocs::initialize() -{ - ATH_MSG_INFO ( "Initializing " << name() << "..." ) ; - return StatusCode::SUCCESS; -} - -StatusCode WriteINav4MomAssocs::finalize() -{ - ATH_MSG_INFO ( "Finalizing " << name() << "..." ) ; - return StatusCode::SUCCESS; -} - -StatusCode WriteINav4MomAssocs::execute() -{ - ATH_MSG_DEBUG ( "Executing " << name() << "..." ) ; - - ATH_CHECK( (this->symLink<ElectronContainer,INavigable4MomentumCollection>(m_electronsName)) ); - - ATH_CHECK( (this->symLink<JetCollection,INavigable4MomentumCollection>(m_jetsName)) ); - - const INavigable4MomentumCollection * jets = 0; - ATH_CHECK( evtStore()->retrieve( jets, m_jetsName ) ); - - const INavigable4MomentumCollection * electrons = 0; - ATH_CHECK( evtStore()->retrieve( electrons, m_electronsName ) ); - - return buildAssocs( jets, electrons ); -} -/////////////////////////////////////////////////////////////////// -/// Const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -/// Non-const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -/// Protected methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -/// Const methods: -/////////////////////////////////////////////////////////////////// - -StatusCode -WriteINav4MomAssocs::buildAssocs( const INavigable4MomentumCollection * coll1, - const INavigable4MomentumCollection * coll2 ) const -{ - ATH_MSG_DEBUG ( "in buildINav4MomAssocs..." ) ; - - INav4MomAssocs * assocs = new INav4MomAssocs; - ATH_CHECK( evtStore()->record( assocs, m_inavAssocsOutputName ) ); - ATH_CHECK( evtStore()->setConst( assocs ) ); - - for (const INavigable4Momentum* m1 : *coll1) { - for (const INavigable4Momentum* m2 : *coll2) { - assocs->addAssociation( coll1, m1, coll2, m2 ); - ATH_MSG_DEBUG ( "Assoc: [jet-ele] ene= " - << m1->e() / Athena::Units::GeV - << "\t" - << m2->e() / Athena::Units::GeV ) ; - }//> end loop over electrons - }//> end loop over jets - - INav4MomAssocs::object_iterator objEnd = assocs->endObject(); - for ( INav4MomAssocs::object_iterator objItr = assocs->beginObject(); - objItr != objEnd; - ++objItr ) { - ATH_MSG_INFO ( "--> e= " << (*objItr)->e() / Athena::Units::GeV - << "\tnAssocs= " << assocs->getNumberOfAssociations(objItr) ) ; - } - - return StatusCode::SUCCESS; -} - -/////////////////////////////////////////////////////////////////// -/// Non-const methods: -/////////////////////////////////////////////////////////////////// - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/components/AnalysisTest_entries.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/components/AnalysisTest_entries.cxx deleted file mode 100644 index 09822a9addba3bffdfa69e892ad9a0a754acfcf1..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/src/components/AnalysisTest_entries.cxx +++ /dev/null @@ -1,29 +0,0 @@ -#include "AnalysisTest/ReadMuon.h" -#include "AnalysisTest/ReadElectron.h" -#include "AnalysisTest/ReadPhoton.h" -#include "AnalysisTest/ReadTauJet.h" -#include "AnalysisTest/ReadTruthParticle.h" -#include "AnalysisTest/ReadTrigger.h" -#include "AnalysisTest/Readegamma.h" -#include "AnalysisTest/ReadVxContainer.h" -#include "AnalysisTest/ReadTrackParticle.h" -#include "AnalysisTest/NavTest.h" - -#include "AnalysisTest/WriteINav4MomAssocs.h" -#include "AnalysisTest/ReadINav4MomAssocs.h" - - -DECLARE_COMPONENT( ReadMuon ) -DECLARE_COMPONENT( ReadElectron ) -DECLARE_COMPONENT( ReadPhoton ) -DECLARE_COMPONENT( ReadTauJet ) -DECLARE_COMPONENT( ReadTruthParticle ) -DECLARE_COMPONENT( ReadTrigger ) -DECLARE_COMPONENT( Readegamma ) -DECLARE_COMPONENT( ReadVxContainer ) -DECLARE_COMPONENT( ReadTrackParticle ) -DECLARE_COMPONENT( NavTest ) - -DECLARE_COMPONENT( WriteINav4MomAssocs ) -DECLARE_COMPONENT( ReadINav4MomAssocs ) - diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/AnalysisTest.sh b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/AnalysisTest.sh deleted file mode 100644 index 6bc85dd6c392d3e426f6e35501170bb7fb13b0ce..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/AnalysisTest.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# This just selects the directory to run cmt commands -# But with project builds and as this package (AnalysisTest) can be moved -# from some project to another, we wildcard the AtlasXyzRelease directory -cd ${NIGHTLYAREA}/Atlas*Release/cmt -# -cmt broadcast -select=AnalysisTest make CppUnit -stat=$? -if [ "$stat" != "0" ]; then - echo " -------------------------------- " - echo " FAILURE : test AnalysisTest " - echo " -------------------------------- " -fi diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/AssocFilterTest_CppUnit.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/AssocFilterTest_CppUnit.cxx deleted file mode 100644 index 9e6e9347f817772581d1e13f4f91420b097c4a6f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/AssocFilterTest_CppUnit.cxx +++ /dev/null @@ -1,462 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the AssocFilter class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <iostream> - -// CLHEP includes -#include "CLHEP/Units/SystemOfUnits.h" - -#include "AthContainers/DataVector.h" - -// EventKernel includes -#include "EventKernel/I4Momentum.h" - -// FourMom includes -#include "FourMom/P4PxPyPzE.h" -#include "FourMom/P4EEtaPhiM.h" - -// AnalysisAssociation includes -#include "AnalysisAssociation/AssocFilter.h" - -class AssocFilterTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite "FilterTest" - CPPUNIT_TEST_SUITE( AssocFilterTest ); - - CPPUNIT_TEST( testConstructor ); - CPPUNIT_TEST( testCopyAssocFilter ); - CPPUNIT_TEST( testSettersAndGetters ); - - CPPUNIT_TEST( testDeltaPxAssoc ); - CPPUNIT_TEST( testDeltaPyAssoc ); - CPPUNIT_TEST( testDeltaPzAssoc ); - CPPUNIT_TEST( testDeltaEneAssoc ); - - CPPUNIT_TEST( testDeltaEtaAssoc ); - CPPUNIT_TEST( testDeltaPhiAssoc ); - CPPUNIT_TEST( testDeltaMassAssoc ); - CPPUNIT_TEST( testDeltaPtAssoc ); - - //CPPUNIT_TEST( testDeltaRAssoc ); - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - -public: - - /// Set up the data members - void setUp() - { - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - } - - /// Test constructor - void testConstructor() - { - AssocFilter<I4Momentum, I4Momentum> filter; - CPPUNIT_ASSERT( filter.deltaPxMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPxMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPyMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPyMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPzMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPzMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaEneMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaEneMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaEtaMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaEtaMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPhiMin() == -M_PI ); - CPPUNIT_ASSERT( filter.deltaPhiMax() == M_PI ); - CPPUNIT_ASSERT( filter.deltaMassMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaMassMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPtMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPtMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaRMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaRMax() == FLT_MAX ); - } - - /// Test that asociation filter cuts are well copied - void testCopyAssocFilter() - { - AssocFilter<I4Momentum, I4Momentum> orig; - orig.setDeltaPx ( 10.*GeV, 20.*GeV ); - orig.setDeltaPy ( 10.*GeV, 20.*GeV ); - orig.setDeltaPz ( 10.*GeV, 20.*GeV ); - orig.setDeltaEne( 10.*GeV, 20.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100*GeV, 100*GeV, 200*GeV ); - P4PxPyPzE p2( 110.*GeV, 110*GeV, 110*GeV, 210*GeV ); - - CPPUNIT_ASSERT( orig.isAccepted( &p1, &p2 ) ); - - AssocFilter<I4Momentum, I4Momentum> assoc; - assoc.setDeltaPxMin( 100.*GeV ); - CPPUNIT_ASSERT( !assoc.isAccepted( &p1, &p2 ) ); - - assoc.setFilter( &orig ); - CPPUNIT_ASSERT( assoc.isAccepted( &p1, &p2 ) ); - } - - /// Test the setters and getters of the AssocFilter class - void testSettersAndGetters() - { - AssocFilter<I4Momentum, I4Momentum> assocFilter; - const double min = M_PI/2.; - const double max = M_PI; - - CPPUNIT_ASSERT( min < max ); - - assocFilter.setDeltaPx( min, max ); - assocFilter.setDeltaPy( min, max ); - assocFilter.setDeltaPz( min, max ); - assocFilter.setDeltaEne( min, max ); - - assocFilter.setDeltaEta( min, max ); - assocFilter.setDeltaPhi( min, max ); - assocFilter.setDeltaMass( min, max ); - assocFilter.setDeltaPt( min, max ); - - assocFilter.setDeltaR( min, max ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPxMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPxMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPyMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPyMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPzMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPzMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaEneMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaEneMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaEtaMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaEtaMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPhiMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPhiMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaMassMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaMassMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPtMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPtMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaRMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaRMax() ); - - /// Explore other interface - AssocFilter<I4Momentum, I4Momentum> assocFilter2; - - // Max - assocFilter2.setDeltaPxMax( max ); - assocFilter2.setDeltaPyMax( max ); - assocFilter2.setDeltaPzMax( max ); - assocFilter2.setDeltaEneMax( max ); - - assocFilter2.setDeltaEtaMax( max ); - assocFilter2.setDeltaPhiMax( max ); - assocFilter2.setDeltaMassMax( max ); - assocFilter2.setDeltaPtMax( max ); - - assocFilter2.setDeltaRMax( max ); - - // Min - assocFilter2.setDeltaPxMin( min ); - assocFilter2.setDeltaPyMin( min ); - assocFilter2.setDeltaPzMin( min ); - assocFilter2.setDeltaEneMin( min ); - - assocFilter2.setDeltaEtaMin( min ); - assocFilter2.setDeltaPhiMin( min ); - assocFilter2.setDeltaMassMin( min ); - assocFilter2.setDeltaPtMin( min ); - - assocFilter2.setDeltaRMin( min ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPxMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPxMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPyMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPyMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPzMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPzMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaEneMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaEneMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaEtaMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaEtaMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPhiMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPhiMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaMassMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaMassMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPtMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPtMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaRMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaRMax() ); - - } - - /// Test the association between objects based on their Px - void testDeltaPxAssoc() - { - AssocFilter<I4Momentum, I4Momentum> assocFilter; - assocFilter.setDeltaPxMin( 0.*GeV ); - assocFilter.setDeltaPxMax( 10.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - P4PxPyPzE p2( 110.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPxMax( 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their Py - void testDeltaPyAssoc() - { - AssocFilter<I4Momentum, I4Momentum> assocFilter; - assocFilter.setDeltaPyMin( 0.*GeV ); - assocFilter.setDeltaPyMax( 10.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - P4PxPyPzE p2( 100.*GeV, 110.*GeV, 100.*GeV, 200.*GeV ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPyMax( 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their Pz - void testDeltaPzAssoc() - { - AssocFilter<I4Momentum, I4Momentum> assocFilter; - assocFilter.setDeltaPzMin( 0.*GeV ); - assocFilter.setDeltaPzMax( 10.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - P4PxPyPzE p2( 100.*GeV, 100.*GeV, 110.*GeV, 200.*GeV ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPzMax( 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their energy - void testDeltaEneAssoc() - { - AssocFilter<I4Momentum, I4Momentum> assocFilter; - assocFilter.setDeltaEneMin( 0.*GeV ); - assocFilter.setDeltaEneMax( 10.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - P4PxPyPzE p2( 100.*GeV, 100.*GeV, 100.*GeV, 210.*GeV ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaEneMax( 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their eta - void testDeltaEtaAssoc() - { - AssocFilter<I4Momentum, I4Momentum> assocFilter; - assocFilter.setDeltaEtaMin( 0.0 ); - assocFilter.setDeltaEtaMax( 2.5 ); - - P4EEtaPhiM p1; - P4EEtaPhiM p2; - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 90.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaEtaMax( 2. ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, -1.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, -2.5, M_PI/2., 90.*GeV ) ); - - /// Test negative eta - assocFilter.setDeltaEtaMax( 1.5 ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaEta( 2., 3. ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - } - - /// Test the association between objects based on their phi - void testDeltaPhiAssoc() - { - AssocFilter<I4Momentum, I4Momentum> assocFilter; - assocFilter.setDeltaPhiMin( 0.0 ); - assocFilter.setDeltaPhiMax( M_PI/2. ); - - P4EEtaPhiM p1; - P4EEtaPhiM p2; - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 90.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPhi( 0., M_PI/4. ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - /// Test negative phi - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, -M_PI/2., 90.*GeV ) ); - - assocFilter.setDeltaPhi( 0., M_PI/2. ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPhi( 0., M_PI/4. ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - /// Test Modulo - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, 2*M_PI, 90.*GeV ) ); - - assocFilter.setDeltaPhi( 0., 0. ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their mass - void testDeltaMassAssoc() - { - AssocFilter<I4Momentum, I4Momentum> assocFilter; - assocFilter.setDeltaMassMin( 0.*GeV ); - assocFilter.setDeltaMassMax( 11.*GeV ); - - P4EEtaPhiM p1; - P4EEtaPhiM p2; - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 110.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 120.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaMass( 0.*GeV, 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaMass( 0.*GeV, 10.*GeV ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - /// Test the accuracy of P4EEtaPhiM - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 10.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 20.*GeV ) ); - - assocFilter.setDeltaMass( 0.*GeV, 10.*GeV ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - /// Test the accuracy of P4EEtaPhiM - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 90.*GeV ) ); - - assocFilter.setDeltaMass( 0.*GeV, 10.*GeV ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their Pt - void testDeltaPtAssoc() - { - AssocFilter<I4Momentum, I4Momentum> assocFilter; - assocFilter.setDeltaPtMin( 0.*GeV ); - assocFilter.setDeltaPtMax( 20.*GeV ); - - P4EEtaPhiM p1( 200.*GeV, 3.0, M_PI, 90.*GeV ); //> Pt ~= 18 GeV; - P4EEtaPhiM p2( 200.*GeV, 2.3, M_PI, 90.*GeV ); //> Pt ~= 36 GeV; - - //p1.set4Mom(P4EEtaPhiM( 200.*GeV, 3., M_PI, 90.*GeV )); //> Pt ~= 18 GeV - //p1.set4Mom(P4EEtaPhiM( 200.*GeV, 1., 0., 80.*GeV )); //> Pt ~= 119 GeV - - //std::cout << "Pt1= " << p1.pt() << std::endl; - //std::cout << "Pt2= " << p2.pt() << std::endl; - CPPUNIT_ASSERT( 17.74*GeV <= p1.pt() && p1.pt() <= 17.75*GeV ); - CPPUNIT_ASSERT( 35.45*GeV <= p2.pt() && p2.pt() <= 35.46*GeV ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPtMax( 15.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPt( 15.*GeV, 20.*GeV ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - } - -}; - -/// Registration of the test suite "AssocFilterTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( AssocFilterTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -#include "TestTools/CppUnit_testdriver.cxx" diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/CategoryIdFilterTest_CppUnit.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/CategoryIdFilterTest_CppUnit.cxx deleted file mode 100644 index 0965fda8de7eb7d93915df66575ffb8ee8fbe302..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/CategoryIdFilterTest_CppUnit.cxx +++ /dev/null @@ -1,765 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the PdgIdFilter class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <iostream> -#include <stdexcept> -#include <cmath> - -// CLHEP includes -#include "CLHEP/Units/SystemOfUnits.h" - -#include "AthContainers/DataVector.h" - -// EventKernel includes -#include "EventKernel/IParticle.h" - -// FourMom includes -#include "FourMom/P4PxPyPzE.h" -#include "FourMom/P4EEtaPhiM.h" - -// JetEvent -#include "JetEvent/Jet.h" -#include "JetEvent/JetCollection.h" - -// McParticleEvent -#include "McParticleEvent/TruthParticle.h" - -// AnalysisUtils includes -#include "AnalysisUtils/AnalysisSelection.h" -#include "AnalysisUtils/AnalysisCombination.h" -#include "AnalysisUtils/CategoryIdFilter.h" - -class CategoryIdFilterTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite " CategoryIdFilterTest" - CPPUNIT_TEST_SUITE( CategoryIdFilterTest ); - - CPPUNIT_TEST( testCopyCategoryIdFilter ); - CPPUNIT_TEST( testSettersAndGetters ); - - CPPUNIT_TEST( testQuarkFilter ); - - CPPUNIT_TEST( testLightFlavourFilter ); - CPPUNIT_TEST( testHeavyFlavourFilter ); - - CPPUNIT_TEST( testLeptonFilter ); - - CPPUNIT_TEST( testBaryonFilter ); - CPPUNIT_TEST( testMesonFilter ); - - CPPUNIT_TEST( testDiQuarkFilter ); - CPPUNIT_TEST( testBosonFilter ); - - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - unsigned int m_nJets; - unsigned int m_nLightJets; - unsigned int m_nBJets; - JetCollection * m_jets; - -public: - - /// Set up the data members - void setUp() - { - m_nJets = 10; - m_nLightJets = 8; - m_nBJets = 2; - m_jets = new JetCollection; - - const double px = 100.*GeV; - const double py = 100.*GeV; - const double pz = 100.*GeV; - const double E = 200.*GeV; - - std::vector<PDG::pidType> pdgs; - pdgs.push_back( PDG::null ); - pdgs.push_back( PDG::d ); - pdgs.push_back( PDG::s ); - pdgs.push_back( PDG::b ); - - for ( unsigned int i = 0; i < m_nJets; ++i ) { - Jet * jet = 0; - jet = new Jet(); - - jet->set4Mom( P4PxPyPzE( ((i%4)+1)*px, ((i%4)+1)*py, - ((i%4)+1)*pz, ((i%4)+1)*E ) ); - jet->set_pdgId( pdgs[i%4] ); - m_jets->push_back(jet); - /* - std::cout << "\tjet " << i - << "pdgId= " << jet->pdgId() - << std::endl; - */ - } - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - if ( m_jets ) { - delete m_jets; - m_jets = 0; - } - } - - /// Test that CategoryIdFilter cuts are well copied - void testCopyCategoryIdFilter() - { - CategoryIdFilter<IParticle> orig; - - Jet bbar; - bbar.set_pdgId( PDG::b ); - CPPUNIT_ASSERT( orig.isAccepted( &bbar ) ); - - bbar.set_pdgId( PDG::anti_b ); - CPPUNIT_ASSERT( orig.isAccepted( &bbar ) ); - - CategoryIdFilter<IParticle> filter; - filter.setCategory( PDGCat::CFlavour ); - CPPUNIT_ASSERT( !filter.isAccepted( &bbar ) ); - - filter.setCategory( PDGCat::BFlavour ); - CPPUNIT_ASSERT( filter.isAccepted( &bbar ) ); - - filter.setFilter( &orig ); - CPPUNIT_ASSERT( filter.isAccepted( &bbar ) ); - - orig.setCategory( PDGCat::CFlavour ); - CPPUNIT_ASSERT( !orig.isAccepted( &bbar ) ); - - filter.setFilter( &orig ); - CPPUNIT_ASSERT( !filter.isAccepted( &bbar ) ); - - { - CategoryIdFilter<IParticle> copy; - CPPUNIT_ASSERT( copy.isAccepted( &bbar ) ); - copy = filter; - CPPUNIT_ASSERT( !copy.isAccepted( &bbar ) ); - } - { - CategoryIdFilter<IParticle> copy = filter; - CPPUNIT_ASSERT( !copy.isAccepted( &bbar ) ); - } - { - CategoryIdFilter<IParticle> copy(filter); - CPPUNIT_ASSERT( !copy.isAccepted( &bbar ) ); - } - } - - /// Test setters and getters - void testSettersAndGetters() - { - CategoryIdFilter<IParticle> filter; - CPPUNIT_ASSERT( filter.getCategories().empty() ); - - filter.setCategory( PDGCat::BFlavour ); - CPPUNIT_ASSERT( !filter.getCategories().empty() ); - CPPUNIT_ASSERT( PDGCat::BFlavour == filter.getCategories()[0] ); - - filter.addCategory( PDGCat::TFlavour ); - CPPUNIT_ASSERT( 2 == filter.getCategories().size() ); - CPPUNIT_ASSERT( PDGCat::TFlavour == filter.getCategories()[1] ); - - } - - /// Test that CategoryIdFilter selects b-quarks - void testQuarkFilter() - { - CategoryIdFilter<IParticle> mesonFilter; - mesonFilter.setCategory( PDGCat::Meson ); - - CategoryIdFilter<IParticle> filter; - Jet j; - - // u - filter.setCategory( PDGCat::UFlavour ); - - j.set_pdgId( PDG::u ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - j.set_pdgId( PDG::anti_u ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - - // d - filter.setCategory( PDGCat::DFlavour ); - - j.set_pdgId( PDG::d ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - j.set_pdgId( PDG::anti_d ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - - // c - filter.setCategory( PDGCat::CFlavour ); - - j.set_pdgId( PDG::c ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - j.set_pdgId( PDG::anti_c ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - - // s - filter.setCategory( PDGCat::SFlavour ); - - j.set_pdgId( PDG::s ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - j.set_pdgId( PDG::anti_s ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - - // t - filter.setCategory( PDGCat::TFlavour ); - - j.set_pdgId( PDG::t ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - j.set_pdgId( PDG::anti_t ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - - // b - filter.setCategory( PDGCat::BFlavour ); - - j.set_pdgId( PDG::b ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - j.set_pdgId( PDG::anti_b ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !mesonFilter.isAccepted( &j ) ); - - } - - /// Test the filtering on light flavour - void testLightFlavourFilter() - { - //> Create a light jet filter - CategoryIdFilter<IParticle> ljetFilter; - ljetFilter.setCategory( PDGCat::LightFlavour ); - - // Test with a std::vector - std::vector<Jet*> lightJets; - CPPUNIT_ASSERT( lightJets.size() == static_cast<unsigned int>(0) ); - AnalysisUtils::copy_if( m_jets->begin(), - m_jets->end(), - std::back_inserter(lightJets), - ljetFilter ); - CPPUNIT_ASSERT( lightJets.size() != m_nLightJets ); - - // Now add the category for "untagged jets" - ljetFilter.addCategory( PDGCat::Untagged ); - lightJets.clear(); - AnalysisUtils::copy_if( m_jets->begin(), - m_jets->end(), - std::back_inserter(lightJets), - ljetFilter ); - CPPUNIT_ASSERT( lightJets.size() == m_nLightJets ); - - // Test with a Selection - AnalysisUtils::Selection<CategoryIdFilter<IParticle> > ljetFilterSel; - ljetFilterSel.setCategory( PDGCat::LightFlavour ); - ljetFilterSel.addCategory( PDGCat::Untagged ); - - lightJets.clear(); - CPPUNIT_ASSERT( lightJets.size() == static_cast<unsigned int>(0) ); - ljetFilterSel.getObjects( m_jets, lightJets); - - CPPUNIT_ASSERT( (lightJets.size() == m_nLightJets) ); - - // Test with a JetCollection - JetCollection lJets(SG::VIEW_ELEMENTS); - CPPUNIT_ASSERT( lJets.size() == static_cast<unsigned int>(0) ); - AnalysisUtils::copy_if( m_jets->begin(), - m_jets->end(), - std::back_inserter(lJets), - ljetFilter ); - CPPUNIT_ASSERT( lJets.size() == m_nLightJets ); - } - - /// Test the filtering on heavy flavour - void testHeavyFlavourFilter() - { - //> Create a b-jet filter - CategoryIdFilter<IParticle> bjetFilter; - bjetFilter.setCategory( PDGCat::BFlavour ); - - std::vector<Jet*> bJets; - bJets.reserve (m_nBJets); - AnalysisUtils::copy_if( m_jets->begin(), - m_jets->end(), - std::back_inserter(bJets), - bjetFilter ); - - CPPUNIT_ASSERT( bJets.size() == m_nBJets ); - - return; - } - - void testLeptonFilter() - { - Jet ele; - - CategoryIdFilter<IParticle> filter; - filter.setCategory( PDGCat::Lepton ); - - ele.set_pdgId( PDG::e_minus ); - CPPUNIT_ASSERT( filter.isAccepted( &ele ) ); - ele.set_pdgId( PDG::e_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &ele ) ); - - for ( JetCollection::const_iterator jet = m_jets->begin(); - jet != m_jets->end(); - ++jet ) { - CPPUNIT_ASSERT( !filter.isAccepted( *jet ) ); - } - - } - - void testBaryonFilter() - { - Jet j; - - CategoryIdFilter<IParticle> hadron; - hadron.setCategory( PDGCat::Hadron ); - - CategoryIdFilter<IParticle> filter; - filter.setCategory( PDGCat::Baryon ); - - j.set_pdgId( PDG::Delta_minus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::p_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Sigma_minus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Lambda0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Xi_minus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Xi0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Omega_minus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Sigma_c0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Lambda_c_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Xi_c0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Sigma_c_plus_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Xi_c_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Xi_prime_c0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Omega_c0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Sigma_b_minus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Lambda_b0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Xi_b_minus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Sigma_b0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Sigma_b_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Xi_b0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Xi_prime_b_minus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Xi_prime_b0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Omega_b_minus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - for ( JetCollection::const_iterator jet = m_jets->begin(); - jet != m_jets->end(); - ++jet ) { - CPPUNIT_ASSERT( !filter.isAccepted( *jet ) ); - CPPUNIT_ASSERT( !hadron.isAccepted( *jet ) ); - } - - } - - void testMesonFilter() - { - Jet j; - - CategoryIdFilter<IParticle> hadron; - hadron.setCategory( PDGCat::Hadron ); - - CategoryIdFilter<IParticle> filter; - filter.setCategory( PDGCat::Meson ); - - j.set_pdgId( PDG::pi0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::pi_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::eta ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::rho_2S0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::phi ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::f_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::K0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::K_0_star0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::D_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::D0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::D_0_star_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::D_prime_1_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::D_s_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::D_s1_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::B0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::B_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::B_0_star0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::B_10 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::B_s0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::B_s0_star0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::B_c_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::B_c0_star_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::eta_c ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::J_psi ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - j.set_pdgId( PDG::Upsilon ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( hadron.isAccepted( &j ) ); - - for ( JetCollection::const_iterator jet = m_jets->begin(); - jet != m_jets->end(); - ++jet ) { - CPPUNIT_ASSERT( !filter.isAccepted( *jet ) ); - CPPUNIT_ASSERT( !hadron.isAccepted( *jet ) ); - } - - } - - /// Test DiQuark filter - void testDiQuarkFilter() - { - Jet j; - - CategoryIdFilter<IParticle> filter; - filter.setCategory( PDGCat::DiQuark ); - - CategoryIdFilter<IParticle> meson; - meson.setCategory( PDGCat::Meson ); - - CategoryIdFilter<IParticle> baryon; - baryon.setCategory( PDGCat::Baryon ); - - // stricto sensu this particle is not a diquark (not color neutral) - // so it is NOT accepted by the filter. - // Is it really worrying ? - j.set_pdgId( PDG::dd_0 ); - CPPUNIT_ASSERT( !filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::ud_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - // stricto sensu this particle is not a diquark (not color neutral) - // so it is NOT accepted by the filter. - // Is it really worrying ? - j.set_pdgId( PDG::uu_0 ); - CPPUNIT_ASSERT( !filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::sd_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::su_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - // stricto sensu this particle is not a diquark (not color neutral) - // so it is NOT accepted by the filter. - // Is it really worrying ? - j.set_pdgId( PDG::ss_0 ); - CPPUNIT_ASSERT( !filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::cd_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::cu_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::cs_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - // stricto sensu this particle is not a diquark (not color neutral) - // so it is NOT accepted by the filter. - // Is it really worrying ? - j.set_pdgId( PDG::cc_0 ); - CPPUNIT_ASSERT( !filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::bd_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::bu_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::bs_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::bc_0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - // stricto sensu this particle is not a diquark (not color neutral) - // so it is NOT accepted by the filter. - // Is it really worrying ? - j.set_pdgId( PDG::bb_0 ); - CPPUNIT_ASSERT( !filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::dd_1 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::ud_1 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::uu_1 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::ss_1 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::cc_1 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - j.set_pdgId( PDG::bb_1 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - CPPUNIT_ASSERT( !meson.isAccepted( &j ) ); - CPPUNIT_ASSERT( !baryon.isAccepted( &j ) ); - - for ( JetCollection::const_iterator jet = m_jets->begin(); - jet != m_jets->end(); - ++jet ) { - CPPUNIT_ASSERT( !filter.isAccepted( *jet ) ); - } - } - - /// Test Boson filter - void testBosonFilter() - { - Jet j; - - CategoryIdFilter<IParticle> filter; - filter.setCategory( PDGCat::Boson ); - - j.set_pdgId( static_cast<PDG::pidType>(21) ); //> gluon - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::gamma ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::Z0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::W_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::Higgs0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::reggeon ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::pomeron ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::Z_prime0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::Z_prime_prime0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::W_prime_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::Higgs_prime0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::A0 ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - j.set_pdgId( PDG::Higgs_plus ); - CPPUNIT_ASSERT( filter.isAccepted( &j ) ); - - for ( JetCollection::const_iterator jet = m_jets->begin(); - jet != m_jets->end(); - ++jet ) { - CPPUNIT_ASSERT( !filter.isAccepted( *jet ) ); - } - } -}; - -/// Registration of the test suite "CategoryIdFilterTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( CategoryIdFilterTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -#include <TestTools/CppUnit_SGtestdriver.cxx> diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/ChargeFilterTest_CppUnit.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/ChargeFilterTest_CppUnit.cxx deleted file mode 100644 index ebadeaac902dafc70b4121d304f532068e75b590..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/ChargeFilterTest_CppUnit.cxx +++ /dev/null @@ -1,163 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the ChargeFilter class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <iostream> -#include <stdexcept> -#include <cmath> - -// CLHEP includes -#include "CLHEP/Vector/LorentzVector.h" -#include "CLHEP/Units/SystemOfUnits.h" - -// ElectronPhotonIDEvent includes -#include "egammaEvent/Electron.h" - -// JetEvent includes -#include "JetEvent/Jet.h" - -// AnalysisUtils includes -#include "AnalysisUtils/ChargeFilter.h" - -class ChargeFilterTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite "ChargeFilterTest" - CPPUNIT_TEST_SUITE( ChargeFilterTest ); - - CPPUNIT_TEST( testConstructor ); - CPPUNIT_TEST( testCopyChargeFilter ); - CPPUNIT_TEST( testSettersAndGetters ); - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - Jet m_b; - Jet m_bbar; - Analysis::Electron m_ele; - -public: - - /// Set up the data members - void setUp() - { - m_b.set4Mom( P4PxPyPzE( 100*GeV, 100*GeV, 100*GeV, 200*GeV ) ); - m_b.set_pdgId( PDG::b ); - m_b.set_charge( -1./3. ); - - m_bbar.set4Mom( P4PxPyPzE( 100*GeV, 100*GeV, 100*GeV, 200*GeV ) ); - m_bbar.set_pdgId( PDG::anti_b ); - m_bbar.set_charge( 1./3. ); - - m_ele.set4Mom( P4PxPyPzE( 100*GeV, 100*GeV, 100*GeV, 200*GeV ) ); - m_ele.set_pdgId( PDG::e_minus ); - m_ele.set_charge( -1. ); - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - } - - /// Test the ChargeFilter constructors - void testConstructor() - { - ChargeFilter<IParticle> filter; - CPPUNIT_ASSERT( filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( filter.isAccepted(&m_bbar) ); - CPPUNIT_ASSERT( filter.isAccepted(&m_ele) ); - - try { - CPPUNIT_ASSERT( filter.charge() ); - CPPUNIT_ASSERT( false ); - } catch( std::exception& e ) { - const std::string error = "No charge selection defined"; - CPPUNIT_ASSERT( error == e.what() ); - } - } - - /// Test that ChargeFilter cuts are well copied - void testCopyChargeFilter() - { - ChargeFilter<IParticle> orig; - orig.setCharge( -1./3. ); - CPPUNIT_ASSERT( orig.isAccepted(&m_b) ); - CPPUNIT_ASSERT( !orig.isAccepted(&m_bbar) ); - - { - ChargeFilter<IParticle> filter(orig); - CPPUNIT_ASSERT( filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_bbar) ); - } - { - ChargeFilter<IParticle> filter = orig; - CPPUNIT_ASSERT( filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_bbar) ); - } - { - ChargeFilter<IParticle> filter; - CPPUNIT_ASSERT( filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( filter.isAccepted(&m_bbar) ); - CPPUNIT_ASSERT( filter.isAccepted(&m_ele) ); - - filter.setFilter( &orig ); - CPPUNIT_ASSERT( filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_bbar) ); - } - } - - /// Test setters and getters - void testSettersAndGetters() - { - ChargeFilter<IParticle> filter; - CPPUNIT_ASSERT( filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( filter.isAccepted(&m_bbar) ); - CPPUNIT_ASSERT( filter.isAccepted(&m_ele) ); - - try { - CPPUNIT_ASSERT( filter.charge() ); - CPPUNIT_ASSERT( false ); - } catch( std::exception& e ) { - const std::string error = "No charge selection defined"; - CPPUNIT_ASSERT( error == e.what() ); - } - - filter.setCharge( -1./3. ); - CPPUNIT_ASSERT( -1./3. == filter.charge() ); - CPPUNIT_ASSERT( filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_bbar) ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_ele) ); - - filter.setCharge( 1./3. ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( filter.isAccepted(&m_bbar) ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_ele) ); - - filter.setCharge( -1. ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_bbar) ); - CPPUNIT_ASSERT( filter.isAccepted(&m_ele) ); - - filter.setCharge( 0. ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_b) ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_bbar) ); - CPPUNIT_ASSERT( !filter.isAccepted(&m_ele) ); - - } - -}; - -/// Registration of the test suite "ChargeFilterTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( ChargeFilterTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -#include <TestTools/CppUnit_SGtestdriver.cxx> diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/DecayParserTest_CppUnit.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/DecayParserTest_CppUnit.cxx deleted file mode 100644 index 8deed222a0ee014a5347208770a5778b072a7087..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/DecayParserTest_CppUnit.cxx +++ /dev/null @@ -1,122 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the DecayParser class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <iostream> -#include <stdexcept> -#include <cmath> - -// McParticleUtils includes -#include "McParticleUtils/DecayParser.h" - -class DecayParserTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite "DecayParserTest" - CPPUNIT_TEST_SUITE( DecayParserTest ); - - CPPUNIT_TEST( testConstructor ); - CPPUNIT_TEST( testSettersAndGetters ); - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - -public: - - /// Set up the data members - void setUp() - { - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - } - - /// Test that momentum filter cuts are well copied - void testConstructor() - { - { - DecayParser parser( "23 -> -11 + 11" ); - CPPUNIT_ASSERT( parser.getParents().size() == 1 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 2 ); - } - - { - DecayParser parser( "->" ); - CPPUNIT_ASSERT( parser.getParents().size() == 0 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 0 ); - } - { - try { - DecayParser parser( " " ); - // should not be there because DecayParser should throw an exception - CPPUNIT_ASSERT(false); - } catch (std::invalid_argument& e) { - std::string error = "problem while parsing command [ ]"; - CPPUNIT_ASSERT( error == e.what() ); - } catch (std::exception& e) { - std::string error = "problem while parsing command [ ]"; - CPPUNIT_ASSERT( error == e.what() ); - } - } - } - - /// Test the setters and getters - void testSettersAndGetters() - { - DecayParser parser( "->" ); - CPPUNIT_ASSERT( parser.getParents().size() == 0 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 0 ); - - parser.parse( "23 -> -11 + 11" ); - CPPUNIT_ASSERT( parser.getParents().size() == 1 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 2 ); - - parser.parse( "6 -> 24 + -5" ); - CPPUNIT_ASSERT( parser.getParents().size() == 1 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 2 ); - - parser.parse( "23 -> -11 + 11 + 13" ); - CPPUNIT_ASSERT( parser.getParents().size() == 1 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 3 ); - - parser.parse( "6 -> 24 + -5 + 21 + 21" ); - CPPUNIT_ASSERT( parser.getParents().size() == 1 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 4 ); - - parser.parse( "21+21 -> -6 + 6" ); - CPPUNIT_ASSERT( parser.getParents().size() == 2 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 2 ); - - parser.parse( "23 -> -11|-13 + 11|13" ); - CPPUNIT_ASSERT( parser.getParents().size() == 1 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 2 ); - - parser.parse( "23 -> " ); - CPPUNIT_ASSERT( parser.getParents().size() == 1 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 0 ); - - parser.parse( " -> -11 + 11" ); - CPPUNIT_ASSERT( parser.getParents().size() == 0 ); - CPPUNIT_ASSERT( parser.getChildren().size() == 2 ); - - } - -}; - -/// Registration of the test suite "DecayParserTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( DecayParserTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -#include <TestTools/CppUnit_testdriver.cxx> diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/FilterRangeTest_CppUnit.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/FilterRangeTest_CppUnit.cxx deleted file mode 100644 index c832435a18875a6de9953653c1184b46f618bf69..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/FilterRangeTest_CppUnit.cxx +++ /dev/null @@ -1,286 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the FilterRange class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <iostream> -#include <stdexcept> -#include <cmath> - -// CLHEP includes -#include "CLHEP/Units/SystemOfUnits.h" - -// AnalysisUtils includes -#include "AnalysisUtils/FilterRange.h" - -class FilterRangeTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite "FilterRangeTest" - CPPUNIT_TEST_SUITE( FilterRangeTest ); - - CPPUNIT_TEST( testConstructor ); - - CPPUNIT_TEST( testSetters ); - CPPUNIT_TEST( testGetters ); - - CPPUNIT_TEST( testRangeRounding ); - - CPPUNIT_TEST( testCopy ); - CPPUNIT_TEST( testCompareRanges ); - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - -public: - - /// Set up the data members - void setUp() - { - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - } - - /// test various ways of constructing a FilterRange - void testConstructor() - { - FilterRange r1; - CPPUNIT_ASSERT( false == r1.isActive() ); - - FilterRange r2(0., 10.); - CPPUNIT_ASSERT( true == r2.isActive() ); - - FilterRange r3(0., 0.); - CPPUNIT_ASSERT( true == r3.isActive() ); - - FilterRange r4( -FLT_MAX, FLT_MAX ); - CPPUNIT_ASSERT( false == r4.isActive() ); - - } - - /// test the setters - void testSetters() - { - FilterRange range; - - range.setRange( 0., 10. ); - CPPUNIT_ASSERT( true == range.isActive() ); - - range.includeAll(); - CPPUNIT_ASSERT( false == range.isActive() ); - - range.setRange( 0., 10. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( range.isInRange( 0. ) ); - CPPUNIT_ASSERT( range.isInRange( 10. ) ); - - range.setRange( -FLT_MAX, 0. ); - CPPUNIT_ASSERT( range.isInRange( -FLT_MAX ) ); - CPPUNIT_ASSERT( range.isInRange( 0. ) ); - - range.setRange( 0., FLT_MAX ); - CPPUNIT_ASSERT( range.isInRange( 0. ) ); - CPPUNIT_ASSERT( range.isInRange( FLT_MAX ) ); - - range.setRange( -FLT_MAX, FLT_MAX ); - CPPUNIT_ASSERT( false == range.isActive() ); - - range.setRange( 0., 10. ); - CPPUNIT_ASSERT( true == range.isActive() ); - - range.setMin( 5. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( !range.isInRange( 0. ) ); - CPPUNIT_ASSERT( range.isInRange( 5. ) ); - CPPUNIT_ASSERT( range.isInRange( 10. ) ); - - range.setMax( 5. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( !range.isInRange( 0. ) ); - CPPUNIT_ASSERT( range.isInRange( 5. ) ); - CPPUNIT_ASSERT( !range.isInRange( 10. ) ); - - range.includeAll(); - CPPUNIT_ASSERT( false == range.isActive() ); - - range.include( 0., 10. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( range.isInRange( 0. ) ); - CPPUNIT_ASSERT( range.isInRange( 5. ) ); - CPPUNIT_ASSERT( range.isInRange( 10. ) ); - - range.include( -100., -10. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( !range.isInRange( 0. ) ); - CPPUNIT_ASSERT( range.isInRange( -10. ) ); - CPPUNIT_ASSERT( range.isInRange( -100. ) ); - - } - - /// test the getters - void testGetters() - { - FilterRange range; - CPPUNIT_ASSERT( false == range.isActive() ); - CPPUNIT_ASSERT( -FLT_MAX == range.lower() ); - CPPUNIT_ASSERT( -FLT_MAX == range.getMin() ); - CPPUNIT_ASSERT( FLT_MAX == range.upper() ); - CPPUNIT_ASSERT( FLT_MAX == range.getMax() ); - - range.setRange( 0., 10. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( 0. == range.lower() ); - CPPUNIT_ASSERT( 0. == range.getMin() ); - CPPUNIT_ASSERT( 10. == range.upper() ); - CPPUNIT_ASSERT( 10. == range.getMax() ); - - range.includeAll(); - CPPUNIT_ASSERT( false == range.isActive() ); - CPPUNIT_ASSERT( -FLT_MAX == range.lower() ); - CPPUNIT_ASSERT( -FLT_MAX == range.getMin() ); - CPPUNIT_ASSERT( FLT_MAX == range.upper() ); - CPPUNIT_ASSERT( FLT_MAX == range.getMax() ); - - range.setMin( 0. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( 0. == range.lower() ); - CPPUNIT_ASSERT( 0. == range.getMin() ); - CPPUNIT_ASSERT( FLT_MAX == range.upper() ); - CPPUNIT_ASSERT( FLT_MAX == range.getMax() ); - - range.setMax( 10. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( 0. == range.lower() ); - CPPUNIT_ASSERT( 0. == range.getMin() ); - CPPUNIT_ASSERT( 10. == range.upper() ); - CPPUNIT_ASSERT( 10. == range.getMax() ); - - range.includeAll(); - range.setMax( 10. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( -FLT_MAX == range.lower() ); - CPPUNIT_ASSERT( -FLT_MAX == range.getMin() ); - CPPUNIT_ASSERT( 10. == range.upper() ); - CPPUNIT_ASSERT( 10. == range.getMax() ); - - range.setMin( 0. ); - CPPUNIT_ASSERT( true == range.isActive() ); - CPPUNIT_ASSERT( 0. == range.lower() ); - CPPUNIT_ASSERT( 0. == range.getMin() ); - CPPUNIT_ASSERT( 10. == range.upper() ); - CPPUNIT_ASSERT( 10. == range.getMax() ); - - } - - /// Test range rounding - void testRangeRounding() - { - FilterRange range; - range.setRange( -FLT_MAX+1, FLT_MAX-1 ); - CPPUNIT_ASSERT( false == range.isActive() ); - CPPUNIT_ASSERT( FLT_MAX == FLT_MAX-1 ); - - range.setRange( -FLT_MAX+10, FLT_MAX-10 ); - CPPUNIT_ASSERT( false == range.isActive() ); - CPPUNIT_ASSERT( FLT_MAX == FLT_MAX-10 ); - } - - /// Test the copy of ranges - void testCopy() - { - FilterRange r1; - FilterRange r2; - - CPPUNIT_ASSERT( r1 == r2 ); - CPPUNIT_ASSERT( r2 == r1 ); - - r1.include( 20*GeV, 40*GeV ); - r2.include( 20*GeV, 40*GeV ); - - CPPUNIT_ASSERT( r1 == r2 ); - CPPUNIT_ASSERT( r2 == r1 ); - - CPPUNIT_ASSERT( r1.lower() == r2.lower() ); - CPPUNIT_ASSERT( r1.upper() == r2.upper() ); - - FilterRange r3( r1 ); - CPPUNIT_ASSERT( r1 == r3 ); - CPPUNIT_ASSERT( r3 == r1 ); - CPPUNIT_ASSERT( r1.lower() == r3.lower() ); - CPPUNIT_ASSERT( r1.upper() == r3.upper() ); - - FilterRange r4 = r2; - CPPUNIT_ASSERT( r2 == r4 ); - CPPUNIT_ASSERT( r4 == r2 ); - CPPUNIT_ASSERT( r4.lower() == r2.lower() ); - CPPUNIT_ASSERT( r4.upper() == r2.upper() ); - - } - - /// Test the comparison of ranges - void testCompareRanges() - { - FilterRange r1; - FilterRange r2; - - CPPUNIT_ASSERT( r1 == r1 ); - CPPUNIT_ASSERT( r1 == r2 ); - CPPUNIT_ASSERT( r2 == r1 ); - - r1.include( 10*GeV, 20*GeV ); - r2.include( 10.*GeV, 20.*GeV ); - - CPPUNIT_ASSERT( r1 == r1 ); - CPPUNIT_ASSERT( r1 == r2 ); - CPPUNIT_ASSERT( r2 == r1 ); - - r1.include( 10*GeV, 20*GeV ); - r2.include( 100*GeV, 200*GeV ); - - CPPUNIT_ASSERT( r2 == r2 ); - CPPUNIT_ASSERT( r1 != r2 ); - CPPUNIT_ASSERT( r2 != r1 ); - CPPUNIT_ASSERT( !(r1 == r2) ); - CPPUNIT_ASSERT( !(r2 == r1) ); - - r1.include( 10*GeV, 20*GeV ); - r2.include( 15*GeV, 20*GeV ); - - CPPUNIT_ASSERT( !(r1 == r2) ); - CPPUNIT_ASSERT( !(r2 == r1) ); - CPPUNIT_ASSERT( r1 != r2 ); - CPPUNIT_ASSERT( r2 != r1 ); - - CPPUNIT_ASSERT( !(r1 < r2) ); - CPPUNIT_ASSERT( r2 >= r1 ); - - r1.include( 10*GeV, 10*GeV ); - r2.include( 20*GeV, 20*GeV ); - CPPUNIT_ASSERT( r1 < r2 ); - - r1.include( 10*GeV, 20*GeV ); - r2.include( 20*GeV, 25*GeV ); - CPPUNIT_ASSERT( !(r1 < r2) ); - CPPUNIT_ASSERT( r1 <= r2 ); - - } - -}; - -/// Registration of the test suite "FilterRangeTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( FilterRangeTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -#include <TestTools/CppUnit_testdriver.cxx> diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/IParticleAssocFilterTest_CppUnit.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/IParticleAssocFilterTest_CppUnit.cxx deleted file mode 100644 index 3ce5cc84e0148156bc83043d1bbd6be7ef3a0ea3..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/IParticleAssocFilterTest_CppUnit.cxx +++ /dev/null @@ -1,507 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the IParticleAssocFilter class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <iostream> -#include <cmath> - -// CLHEP includes -#include "CLHEP/Units/SystemOfUnits.h" - -#include "AthContainers/DataVector.h" - -// FourMom includes -#include "FourMom/P4PxPyPzE.h" -#include "FourMom/P4EEtaPhiM.h" - -// JetEvent includes -#include "JetEvent/Jet.h" -#include "JetEvent/JetCollection.h" - -// AnalysisAssociation includes -#include "AnalysisAssociation/IParticleAssocFilter.h" - -class IParticleAssocFilterTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite "IParticleAssocFilterTest" - CPPUNIT_TEST_SUITE( IParticleAssocFilterTest ); - - CPPUNIT_TEST( testConstructor ); - CPPUNIT_TEST( testCopyIParticleAssocFilter ); - CPPUNIT_TEST( testSettersAndGetters ); - - CPPUNIT_TEST( testDeltaPxAssoc ); - CPPUNIT_TEST( testDeltaPyAssoc ); - CPPUNIT_TEST( testDeltaPzAssoc ); - CPPUNIT_TEST( testDeltaEneAssoc ); - - CPPUNIT_TEST( testDeltaEtaAssoc ); - CPPUNIT_TEST( testDeltaPhiAssoc ); - CPPUNIT_TEST( testDeltaMassAssoc ); - CPPUNIT_TEST( testDeltaPtAssoc ); - - //CPPUNIT_TEST( testDeltaRAssoc ); - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - - -public: - - /// Set up the data members - void setUp() - { - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - } - - /// Test asociation filter constructor - void testConstructor() - { - IParticleAssocFilter filter; - CPPUNIT_ASSERT( filter.deltaPxMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPxMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPyMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPyMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPzMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPzMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaEneMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaEneMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaEtaMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaEtaMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPhiMin() == -M_PI ); - CPPUNIT_ASSERT( filter.deltaPhiMax() == M_PI ); - CPPUNIT_ASSERT( filter.deltaMassMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaMassMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPtMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaPtMax() == FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaRMin() == -FLT_MAX ); - CPPUNIT_ASSERT( filter.deltaRMax() == FLT_MAX ); - } - - /// Test that asociation filter cuts are well copied - void testCopyIParticleAssocFilter() - { - IParticleAssocFilter orig; - orig.setDeltaPx ( 10.*GeV, 20.*GeV ); - orig.setDeltaPy ( 10.*GeV, 20.*GeV ); - orig.setDeltaPz ( 10.*GeV, 20.*GeV ); - orig.setDeltaEne( 10.*GeV, 20.*GeV ); - - Jet p1; - Jet p2; - p1.set4Mom( P4PxPyPzE( 100.*GeV, 100*GeV, 100*GeV, 200*GeV ) ); - p2.set4Mom( P4PxPyPzE( 110.*GeV, 110*GeV, 110*GeV, 210*GeV ) ); - CPPUNIT_ASSERT( orig.isAccepted( &p1, &p2 ) ); - - IParticleAssocFilter assoc; - assoc.setDeltaPx( 100.*GeV, 200.*GeV ); - CPPUNIT_ASSERT( !assoc.isAccepted( &p1, &p2 ) ); - - assoc.setFilter( &orig ); - CPPUNIT_ASSERT( assoc.isAccepted( &p1, &p2 ) ); - - // FIXME - //assoc.reset(); - CPPUNIT_ASSERT( assoc.isAccepted( &p1, &p2 ) ); - - IParticleAssocFilter defaultFilter; - CPPUNIT_ASSERT( defaultFilter.isAccepted( &p1, &p2 ) ); - - } - - /// Test the setters and getters of the IParticleAssocFilter class - void testSettersAndGetters() - { - IParticleAssocFilter assocFilter; - const double min = M_PI/2.; - const double max = M_PI; - - CPPUNIT_ASSERT( min < max ); - - assocFilter.setDeltaPx( min, max ); - assocFilter.setDeltaPy( min, max ); - assocFilter.setDeltaPz( min, max ); - assocFilter.setDeltaEne( min, max ); - - assocFilter.setDeltaEta( min, max ); - assocFilter.setDeltaPhi( min, max ); - assocFilter.setDeltaMass( min, max ); - assocFilter.setDeltaPt( min, max ); - - assocFilter.setDeltaR( min, max ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPxMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPxMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPyMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPyMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPzMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPzMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaEneMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaEneMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaEtaMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaEtaMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPhiMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPhiMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaMassMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaMassMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaPtMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaPtMax() ); - - CPPUNIT_ASSERT( min == assocFilter.deltaRMin() ); - CPPUNIT_ASSERT( max == assocFilter.deltaRMax() ); - - /// Explore other interface - IParticleAssocFilter assocFilter2; - - // Max - assocFilter2.setDeltaPxMax( max ); - assocFilter2.setDeltaPyMax( max ); - assocFilter2.setDeltaPzMax( max ); - assocFilter2.setDeltaEneMax( max ); - - assocFilter2.setDeltaEtaMax( max ); - assocFilter2.setDeltaPhiMax( max ); - assocFilter2.setDeltaMassMax( max ); - assocFilter2.setDeltaPtMax( max ); - - assocFilter2.setDeltaRMax( max ); - - // Min - assocFilter2.setDeltaPxMin( min ); - assocFilter2.setDeltaPyMin( min ); - assocFilter2.setDeltaPzMin( min ); - assocFilter2.setDeltaEneMin( min ); - - assocFilter2.setDeltaEtaMin( min ); - assocFilter2.setDeltaPhiMin( min ); - assocFilter2.setDeltaMassMin( min ); - assocFilter2.setDeltaPtMin( min ); - - assocFilter2.setDeltaRMin( min ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPxMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPxMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPyMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPyMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPzMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPzMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaEneMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaEneMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaEtaMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaEtaMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPhiMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPhiMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaMassMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaMassMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaPtMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaPtMax() ); - - CPPUNIT_ASSERT( min == assocFilter2.deltaRMin() ); - CPPUNIT_ASSERT( max == assocFilter2.deltaRMax() ); - - } - - /// Test the association between objects based on their Px - void testDeltaPxAssoc() - { - IParticleAssocFilter assocFilter; - assocFilter.setDeltaPxMin( 0.*GeV ); - assocFilter.setDeltaPxMax( 10.*GeV ); - - Jet p1; - Jet p2; - p1.set4Mom( P4PxPyPzE( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ) ); - p2.set4Mom( P4PxPyPzE( 110.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPxMax( 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their Py - void testDeltaPyAssoc() - { - IParticleAssocFilter assocFilter; - assocFilter.setDeltaPyMin( 0.*GeV ); - assocFilter.setDeltaPyMax( 10.*GeV ); - - Jet p1; - Jet p2; - p1.set4Mom( P4PxPyPzE( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ) ); - p2.set4Mom( P4PxPyPzE( 100.*GeV, 110.*GeV, 100.*GeV, 200.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPyMax( 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their Pz - void testDeltaPzAssoc() - { - IParticleAssocFilter assocFilter; - assocFilter.setDeltaPzMin( 0.*GeV ); - assocFilter.setDeltaPzMax( 10.*GeV ); - - Jet p1; - Jet p2; - - p1.set4Mom( P4PxPyPzE( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ) ); - p2.set4Mom( P4PxPyPzE( 100.*GeV, 100.*GeV, 110.*GeV, 200.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPzMax( 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their energy - void testDeltaEneAssoc() - { - IParticleAssocFilter assocFilter; - assocFilter.setDeltaEneMin( 0.*GeV ); - assocFilter.setDeltaEneMax( 10.*GeV ); - - Jet p1; - Jet p2; - - p1.set4Mom( P4PxPyPzE( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ) ); - p2.set4Mom( P4PxPyPzE( 100.*GeV, 100.*GeV, 100.*GeV, 210.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaEneMax( 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their eta - void testDeltaEtaAssoc() - { - IParticleAssocFilter assocFilter; - assocFilter.setDeltaEtaMin( 0.0 ); - assocFilter.setDeltaEtaMax( 2.5 ); - - Jet p1; - Jet p2; - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 90.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaEtaMax( 2. ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, -1.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, -2.5, M_PI/2., 90.*GeV ) ); - - /// Test negative eta - assocFilter.setDeltaEtaMax( 1.5 ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaEta( 2., 3. ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - } - - /// Test the association between objects based on their phi - void testDeltaPhiAssoc() - { - IParticleAssocFilter assocFilter; - assocFilter.setDeltaPhiMin( 0.0 ); - assocFilter.setDeltaPhiMax( M_PI/2. ); - - Jet p1; - Jet p2; - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 90.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPhi( 0., M_PI/4. ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - /// Test negative phi - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, -M_PI/2., 90.*GeV ) ); - - assocFilter.setDeltaPhi( 0., M_PI/2. ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPhi( 0., M_PI/4. ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - /// Test Modulo - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, 2*M_PI, 90.*GeV ) ); - - assocFilter.setDeltaPhi( 0., 0. ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - /// Test Modulo at discontinuity point - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, M_PI, 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, -M_PI, 90.*GeV ) ); - - assocFilter.setDeltaPhi( 0., 0. ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - /// Test Modulo at discontinuity point - const double denom = 12; - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, M_PI-M_PI/denom, 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, -M_PI+M_PI/denom, 90.*GeV ) ); - - assocFilter.setDeltaPhi( 0., 2*M_PI/denom ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, -M_PI+M_PI/(denom-1), 90.*GeV ) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their mass - void testDeltaMassAssoc() - { - IParticleAssocFilter assocFilter; - assocFilter.setDeltaMassMin( 0.*GeV ); - assocFilter.setDeltaMassMax( 11.*GeV ); - - Jet p1; - Jet p2; - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 110.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 120.*GeV ) ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaMass( 0.*GeV, 9.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaMass( 0.*GeV, 10.*GeV ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - /// Test the accuracy of P4EEtaPhiM - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 10.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 20.*GeV ) ); - - assocFilter.setDeltaMass( 0.*GeV, 10.*GeV ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - /// Test the accuracy of P4EEtaPhiM - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 0.0, 0., 80.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 2.5, M_PI/2., 90.*GeV ) ); - - assocFilter.setDeltaMass( 0.*GeV, 10.*GeV ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - } - - /// Test the association between objects based on their Pt - void testDeltaPtAssoc() - { - IParticleAssocFilter assocFilter; - assocFilter.setDeltaPtMin( 0.*GeV ); - assocFilter.setDeltaPtMax( 200.*GeV ); - - Jet p1; - Jet p2; - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 3., M_PI, 90.*GeV ) ); //> Pt ~= 18 GeV - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 1., 0., 80.*GeV ) ); //> Pt ~= 119 GeV - - CPPUNIT_ASSERT( 17*GeV <= p1.pt() && p1.pt() <= 18*GeV ); - CPPUNIT_ASSERT( 118*GeV <= p2.pt() && p2.pt() <= 119*GeV ); - - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p1) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPtMax( 100.*GeV ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( !assocFilter.isAccepted(&p2, &p1) ); - - assocFilter.setDeltaPt( 100.*GeV, 105.*GeV ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p1, &p2) ); - CPPUNIT_ASSERT( assocFilter.isAccepted(&p2, &p1) ); - - } - -}; - -/// Registration of the test suite "IParticleAssocFilterTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( IParticleAssocFilterTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -#include <TestTools/CppUnit_SGtestdriver.cxx> diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/McVtxFilterTest_CppUnit.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/McVtxFilterTest_CppUnit.cxx deleted file mode 100644 index 972aedbc44d693b8ed5e62684d4ccf92b7bdb9b8..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/McVtxFilterTest_CppUnit.cxx +++ /dev/null @@ -1,712 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the McVtxFilter class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <iostream> -#include <stdexcept> -#include <cmath> - -// CLHEP includes -#include "CLHEP/Vector/LorentzVector.h" -#include "CLHEP/Units/SystemOfUnits.h" - -// HepMC includes -#include "AtlasHepMC/GenEvent.h" -#include "AtlasHepMC/GenVertex.h" -#include "AtlasHepMC/GenParticle.h" - -#include "AthContainers/DataVector.h" - - -// McParticleUtils includes -#include "McParticleUtils/McVtxFilter.h" - -class McVtxFilterTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite "FilterTest" - CPPUNIT_TEST_SUITE( McVtxFilterTest ); - - CPPUNIT_TEST( testConstructor ); - CPPUNIT_TEST( testCopyMcVtxFilter ); - CPPUNIT_TEST( testSettersAndGetters ); - - CPPUNIT_TEST( testFullVtx ); - - CPPUNIT_TEST( testZeeVertices ); - CPPUNIT_TEST( testTopWbggVertices ); - CPPUNIT_TEST( testWlnuVertices ); - CPPUNIT_TEST( testQuarkVertices ); - - CPPUNIT_TEST( testStableParticle ); - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - HepMC::GenEvent * m_evt; - int m_bcZee; - int m_bcZgee; - int m_bcTopWbgg; - typedef HepMC::FourVector HLV_t; - -public: - - /// Set up the data members - void setUp() - { - const int signalProcessId = 1000082; - const int evtNbr = 1; - m_evt = new HepMC::GenEvent( signalProcessId, evtNbr ); - m_evt->set_event_scale( -1 ); - m_evt->set_alphaQCD( -1 ); - m_evt->set_alphaQED( -1 ); - std::vector<double> weights(3); - weights[0] = 1; - weights[1] = 1; - weights[2] = 1; - std::vector<long> rdmStates(2); - rdmStates[0] = 85909879; - rdmStates[1] = 9707499; - m_evt->weights() = weights; - m_evt->set_random_states( rdmStates ); - - // Add 2 vertices - HepMC::GenVertex * v1 = new HepMC::GenVertex(); - m_evt->add_vertex( v1 ); - v1->add_particle_in( new HepMC::GenParticle( HLV_t(0,0, - 7000*GeV, - 7000*GeV), - 2212, 3 ) ); - HepMC::GenVertex* v2 = new HepMC::GenVertex; - m_evt->add_vertex( v2 ); - v2->add_particle_in( new HepMC::GenParticle( HLV_t(0,0, - -7000*GeV, - +7000*GeV), - 2212, 3 ) ); - - // - // create the outgoing particles of v1 and v2 - HepMC::GenParticle* p3 = - new HepMC::GenParticle( HLV_t(.750*GeV, - -1.569*GeV, - 32.191*GeV, - 32.238*GeV), 1, 3 ); - v1->add_particle_out( p3 ); - HepMC::GenParticle* p4 = - new HepMC::GenParticle( HLV_t( -3.047*GeV, - -19.*GeV, - -54.629*GeV, - 57.920*GeV), -2, 3 ); - v2->add_particle_out( p4 ); - - // - // create v3 - HepMC::GenVertex* v3 = new HepMC::GenVertex(); - m_evt->add_vertex( v3 ); - v3->add_particle_in( p3 ); - v3->add_particle_in( p4 ); - v3->add_particle_out( - new HepMC::GenParticle( HLV_t(-3.813,0.113,-1.833,4.233 ), - 22, 1 ) - ); - HepMC::GenParticle* p5 = - new HepMC::GenParticle( HLV_t(1.517,-20.68,-20.605,85.925), - -24,3); - v3->add_particle_out( p5 ); - - // - // tell the event which vertex is the signal process vertex - m_evt->set_signal_process_vertex( v3 ); - - // - // add a Z0->4gammas,e+,e- - // - HepMC::GenVertex * vZgee = new HepMC::GenVertex; - m_evt->add_vertex( vZgee ); - // Z0 - vZgee->add_particle_in( new HepMC::GenParticle( HLV_t( -4.49e+04, - +8.36e+03, - -2.70e+05, - +2.89e+05 ), - 23, 2 ) ); - // Gammas - vZgee->add_particle_out( new HepMC::GenParticle( HLV_t( -1.28e+03, - +1.03e+03, - -5.47e+03, - +5.71e+03 ), - 22, 1 ) ); - vZgee->add_particle_out( new HepMC::GenParticle( HLV_t( +3.89e+02, - -3.16e+02, - -6.69e+03, - +6.70e+03 ), - 22, 1 ) ); - vZgee->add_particle_out( new HepMC::GenParticle( HLV_t( +7.34e+00, - -2.71e+01, - -4.12e+01, - +4.98e+01 ), - 22, 1 ) ); - vZgee->add_particle_out( new HepMC::GenParticle( HLV_t( -1.36e+02, - +9.38e+01, - -5.62e+02, - +5.86e+02 ), - 22, 1 ) ); - // Electrons - vZgee->add_particle_out( new HepMC::GenParticle( HLV_t( +8.01e+03, - -2.96e+04, - -4.50e+04, - +5.44e+04 ), - -11, 1 ) ); - vZgee->add_particle_out( new HepMC::GenParticle( HLV_t( -5.19e+04, - +3.72e+04, - -2.13e+05, - +2.22e+05 ), - 11, 1 ) ); - // store its barcode for later use - m_bcZgee = vZgee->barcode(); - - // - // Add a Z->e+e- - HepMC::GenVertex * vZee = new HepMC::GenVertex; - m_evt->add_vertex( vZee ); - vZee->add_particle_in( new HepMC::GenParticle( HLV_t( +7.29e+03, - +2.34e+04, - +2.81e+05, - +2.96e+05 ), - 23, 2 ) ); - - vZee->add_particle_out( new HepMC::GenParticle( HLV_t( +2.74e+04, - -1.83e+04, - +4.70e+04, - +5.74e+04 ), - 11, 1 ) ); - vZee->add_particle_out( new HepMC::GenParticle( HLV_t( -2.01e+04, - +4.17e+04, - +2.34e+05, - +2.38e+05 ), - -11, 1 ) ); - m_bcZee = vZee->barcode(); - - // - // Add a t->W+bgg - HepMC::GenVertex * vtWbgg = new HepMC::GenVertex; - m_evt->add_vertex( vtWbgg ); - // top - vtWbgg->add_particle_in(new HepMC::GenParticle(HLV_t(-2.35e+05, - +7.34e+04, - +3.60e+04, - +3.04e+05), - 6, 3 ) ); - - // Wbgg - vtWbgg->add_particle_out(new HepMC::GenParticle(HLV_t(-1.09e+05, - +6.99e+04, - -3.86e+04, - +1.57e+05), - 24, 2 ) ); - vtWbgg->add_particle_out(new HepMC::GenParticle(HLV_t(-9.23e+04, - +2.54e+03, - +5.32e+04, - +1.07e+05), - 5, 2 ) ); - vtWbgg->add_particle_out(new HepMC::GenParticle(HLV_t(-4.76e+03, - +6.72e+02, - +2.90e+03, - +5.62e+03), - 21, 2 ) ); - vtWbgg->add_particle_out(new HepMC::GenParticle(HLV_t(-2.93e+04, - +2.13e+02, - +1.85e+04, - +3.46e+04), - 21, 2 ) ); - m_bcTopWbgg = vtWbgg->barcode(); - - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - if ( m_evt ) { - delete m_evt; - m_evt = 0; - } - } - - /// Test the McVtxFilter constructors - void testConstructor() - { - const unsigned int defaultCand = 0; - McVtxFilter filter; - CPPUNIT_ASSERT( false == filter.matchSign() ); - CPPUNIT_ASSERT( false == filter.matchBranches() ); - CPPUNIT_ASSERT( "" == filter.decayPattern() ); - CPPUNIT_ASSERT( defaultCand == filter.parentList().size() ); - CPPUNIT_ASSERT( defaultCand == filter.childList().size() ); - - McVtxFilter f2( false, false ); - CPPUNIT_ASSERT( false == f2.matchSign() ); - CPPUNIT_ASSERT( false == f2.matchBranches() ); - CPPUNIT_ASSERT( "" == f2.decayPattern() ); - CPPUNIT_ASSERT( defaultCand == f2.parentList().size() ); - CPPUNIT_ASSERT( defaultCand == f2.childList().size() ); - - McVtxFilter f3( true, false ); - CPPUNIT_ASSERT( true == f3.matchSign() ); - CPPUNIT_ASSERT( false == f3.matchBranches() ); - CPPUNIT_ASSERT( "" == f3.decayPattern() ); - CPPUNIT_ASSERT( defaultCand == f3.parentList().size() ); - CPPUNIT_ASSERT( defaultCand == f3.childList().size() ); - - McVtxFilter f4( false, true ); - CPPUNIT_ASSERT( false == f4.matchSign() ); - CPPUNIT_ASSERT( true == f4.matchBranches() ); - CPPUNIT_ASSERT( "" == f4.decayPattern() ); - CPPUNIT_ASSERT( defaultCand == f4.parentList().size() ); - CPPUNIT_ASSERT( defaultCand == f4.childList().size() ); - - McVtxFilter f5( f4 ); - CPPUNIT_ASSERT( false == f5.matchSign() ); - CPPUNIT_ASSERT( true == f5.matchBranches() ); - CPPUNIT_ASSERT( "" == f5.decayPattern() ); - CPPUNIT_ASSERT( defaultCand == f5.parentList().size() ); - CPPUNIT_ASSERT( defaultCand == f5.childList().size() ); - - McVtxFilter f6 = f4; - CPPUNIT_ASSERT( false == f6.matchSign() ); - CPPUNIT_ASSERT( true == f6.matchBranches() ); - CPPUNIT_ASSERT( "" == f6.decayPattern() ); - CPPUNIT_ASSERT( defaultCand == f6.parentList().size() ); - CPPUNIT_ASSERT( defaultCand == f6.childList().size() ); - - } - - /// Test that McVtxFilter cuts are well copied - void testCopyMcVtxFilter() - { - const unsigned int defaultCand = 0; - McVtxFilter filter( false, true ); - CPPUNIT_ASSERT( false == filter.matchSign() ); - CPPUNIT_ASSERT( true == filter.matchBranches() ); - CPPUNIT_ASSERT( "" == filter.decayPattern() ); - CPPUNIT_ASSERT( defaultCand == filter.parentList().size() ); - CPPUNIT_ASSERT( defaultCand == filter.childList().size() ); - CPPUNIT_ASSERT( false == filter.isFullVtx() ); - - filter.setDecayPattern( "6 -> 24 + -5" ); - CPPUNIT_ASSERT( "6 -> 24 + -5" == filter.decayPattern() ); - CPPUNIT_ASSERT( 1 == filter.parentList().size() ); - CPPUNIT_ASSERT( 2 == filter.childList().size() ); - CPPUNIT_ASSERT( true == filter.isFullVtx() ); - - McVtxFilter copy; - CPPUNIT_ASSERT( false == copy.matchSign() ); - CPPUNIT_ASSERT( false == copy.matchBranches() ); - CPPUNIT_ASSERT( "" == copy.decayPattern() ); - CPPUNIT_ASSERT( defaultCand == copy.parentList().size() ); - CPPUNIT_ASSERT( defaultCand == copy.childList().size() ); - CPPUNIT_ASSERT( false == copy.isFullVtx() ); - - copy.setFilter( &filter ); - CPPUNIT_ASSERT( false == copy.matchSign() ); - CPPUNIT_ASSERT( true == copy.matchBranches() ); - CPPUNIT_ASSERT( "6 -> 24 + -5" == copy.decayPattern() ); - CPPUNIT_ASSERT( 1 == copy.parentList().size() ); - CPPUNIT_ASSERT( 2 == copy.childList().size() ); - CPPUNIT_ASSERT( true == copy.isFullVtx() ); - } - - /// Test setters and getters - void testSettersAndGetters() - { - std::cout << std::endl; - // - // Print event - // - m_evt->print(); - - const unsigned int defaultCand = 0; - McVtxFilter filter( false, true ); - CPPUNIT_ASSERT( false == filter.matchSign() ); - CPPUNIT_ASSERT( true == filter.matchBranches() ); - CPPUNIT_ASSERT( "" == filter.decayPattern() ); - CPPUNIT_ASSERT( defaultCand == filter.parentList().size() ); - CPPUNIT_ASSERT( defaultCand == filter.childList().size() ); - - filter.setMatchSign( true ); - CPPUNIT_ASSERT( true == filter.matchSign() ); - filter.setMatchSign( false ); - CPPUNIT_ASSERT( false == filter.matchSign() ); - - filter.setMatchBranches( false ); - CPPUNIT_ASSERT( false == filter.matchBranches() ); - filter.setMatchBranches( true ); - CPPUNIT_ASSERT( true == filter.matchBranches() ); - - filter.setDecayPattern( "6 -> 24 + -5" ); - CPPUNIT_ASSERT( "6 -> 24 + -5" == filter.decayPattern() ); - CPPUNIT_ASSERT( 1 == filter.parentList().size() ); - CPPUNIT_ASSERT( 2 == filter.childList().size() ); - - filter.setDecayPattern( "23 -> -11|-13 + 11|13|15" ); - CPPUNIT_ASSERT( "23 -> -11|-13 + 11|13|15" == filter.decayPattern() ); - CPPUNIT_ASSERT( 1 == filter.parentList().size() ); - CPPUNIT_ASSERT( 2 == filter.childList().size() ); - - bool matchSign = false; - CPPUNIT_ASSERT( (filter.parentList()[0])->hasInList(PDG::Z0, matchSign) ); - matchSign = true; - CPPUNIT_ASSERT( (filter.parentList()[0])->hasInList(PDG::Z0, matchSign) ); - - matchSign = false; - CPPUNIT_ASSERT((filter.childList()[0])->hasInList(PDG::e_plus, matchSign)); - CPPUNIT_ASSERT((filter.childList()[0])->hasInList(PDG::mu_plus,matchSign)); - matchSign = true; - CPPUNIT_ASSERT((filter.childList()[0])->hasInList(PDG::e_plus, matchSign)); - CPPUNIT_ASSERT((filter.childList()[0])->hasInList(PDG::mu_plus,matchSign)); - - matchSign = true; - CPPUNIT_ASSERT(!(filter.childList()[0])->hasInList( PDG::e_minus, - matchSign)); - CPPUNIT_ASSERT(!(filter.childList()[0])->hasInList( PDG::mu_minus, - matchSign)); - - CPPUNIT_ASSERT( 1 == (filter.parentList()[0])->size() ); - std::vector<PDG::pidType> parent; - for ( std::list<PDG::pidType>::const_iterator itr = - (filter.parentList()[0])->begin(); - itr != (filter.parentList()[0])->end(); - ++itr ) { - parent.push_back( *itr ); - } - - CPPUNIT_ASSERT( PDG::Z0 == parent[0] ); - - CPPUNIT_ASSERT( 2 == (filter.childList()[0])->size() ); - std::vector<PDG::pidType> child1; - for ( std::list<PDG::pidType>::const_iterator itr = - (filter.childList()[0])->begin(); - itr != (filter.childList()[0])->end(); - ++itr ) { - child1.push_back( *itr ); - } - CPPUNIT_ASSERT( 2 == child1.size() ); - CPPUNIT_ASSERT( PDG::e_plus == child1[0] ); - CPPUNIT_ASSERT( PDG::mu_plus == child1[1] ); - - CPPUNIT_ASSERT( 3 == (filter.childList()[1])->size() ); - std::vector<PDG::pidType> child2; - for ( std::list<PDG::pidType>::const_iterator itr = - (filter.childList()[1])->begin(); - itr != (filter.childList()[1])->end(); - ++itr ) { - child2.push_back( *itr ); - } - CPPUNIT_ASSERT( 3 == child2.size() ); - - CPPUNIT_ASSERT( PDG::e_minus == child2[0] ); - CPPUNIT_ASSERT( PDG::mu_minus == child2[1] ); - CPPUNIT_ASSERT( PDG::tau_minus == child2[2] ); - - } - - /// Test full vtx - void testFullVtx() - { - HepMC::GenVertex * vtx = new HepMC::GenVertex; - m_evt->add_vertex( vtx ); - vtx->add_particle_in( new HepMC::GenParticle( HLV_t( -2.45e+04, - +1.88e+04, - -8.65e+05, - +8.65e+05 ), - 22, 3 ) ); - vtx->add_particle_out( new HepMC::GenParticle( HLV_t( -2.45e+04, - +1.88e+04, - -8.65e+05, - +8.65e+05 ), - 22, 1 ) ); - - McVtxFilter filter; - filter.setDecayPattern( "22->" ); - CPPUNIT_ASSERT( false == filter.isFullVtx() ); - CPPUNIT_ASSERT( filter.isAccepted( vtx ) ); - - filter.setDecayPattern( "->22" ); - CPPUNIT_ASSERT( false == filter.isFullVtx() ); - CPPUNIT_ASSERT( filter.isAccepted( vtx ) ); - - filter.setDecayPattern( "24->-24" ); - CPPUNIT_ASSERT( true == filter.isFullVtx() ); - CPPUNIT_ASSERT( !filter.isAccepted( vtx ) ); - - filter.setDecayPattern( "-> -24 + 24" ); - CPPUNIT_ASSERT( false == filter.isFullVtx() ); - CPPUNIT_ASSERT( !filter.isAccepted( vtx ) ); - - filter.setDecayPattern( "22 -> -11 + 11" ); - CPPUNIT_ASSERT( true == filter.isFullVtx() ); - CPPUNIT_ASSERT( !filter.isAccepted( vtx ) ); - - filter.setDecayPattern( "22 -> -11" ); - CPPUNIT_ASSERT( true == filter.isFullVtx() ); - CPPUNIT_ASSERT( !filter.isAccepted( vtx ) ); - - filter.setDecayPattern( "22 -> 22" ); - CPPUNIT_ASSERT( true == filter.isFullVtx() ); - CPPUNIT_ASSERT( filter.isAccepted( vtx ) ); - - } - - /// Test some vertices - void testZeeVertices() - { - McVtxFilter filter; - filter.setDecayPattern( "23 -> -11 + 11" ); - - const HepMC::GenVertex * vtx = m_evt->barcode_to_vertex(m_bcZee); - CPPUNIT_ASSERT( 0 != vtx ); - - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - - filter.setMatchSign( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - filter.setMatchSign( true ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - - filter.setMatchBranches( true ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - - // Retrieve a vtx with FSR showering - vtx = m_evt->barcode_to_vertex(m_bcZgee); - CPPUNIT_ASSERT( 0 != vtx ); - - filter.setMatchSign( false ); - filter.setMatchBranches( true ); - CPPUNIT_ASSERT( !filter.isAccepted(vtx) ); - - filter.setMatchSign( false ); - filter.setMatchBranches( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - - filter.setMatchSign( true ); - filter.setMatchBranches( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - - filter.setMatchSign( true ); - filter.setMatchBranches( true ); - CPPUNIT_ASSERT( !filter.isAccepted(vtx) ); - } - - /// Test some vertices - void testTopWbggVertices() - { - const HepMC::GenVertex * vtx = m_evt->barcode_to_vertex(m_bcTopWbgg); - CPPUNIT_ASSERT( 0 != vtx ); - - { - McVtxFilter filter; - filter.setDecayPattern( "6 -> 24 + 5" ); - - filter.setMatchSign( true ); - filter.setMatchBranches( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - - filter.setMatchSign( true ); - filter.setMatchBranches( true ); - CPPUNIT_ASSERT( !filter.isAccepted(vtx) ); - - filter.setMatchSign( false ); - filter.setMatchBranches( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - - filter.setMatchSign( false ); - filter.setMatchBranches( true ); - CPPUNIT_ASSERT( !filter.isAccepted(vtx) ); - } - } - - /// Test some vertices - void testWlnuVertices() - { - - HepMC::GenVertex * vtx = new HepMC::GenVertex; - m_evt->add_vertex( vtx ); - vtx->add_particle_in( new HepMC::GenParticle( HLV_t( -6.76e+04, - +4.85e+03, - -1.46e+03, - +9.51e+04 ), - -24, 2 ) ); - vtx->add_particle_out( new HepMC::GenParticle( HLV_t( -7.14e+04, - -6.17e+03, - +1.67e+04, - +7.36e+04 ), - 13, 1 ) ); - - vtx->add_particle_out( new HepMC::GenParticle( HLV_t( +3.75e+03, - +1.10e+04, - -1.81e+04, - +2.15e+04 ), - -14, 1 ) ); - //const int bcWlnu = vtx->barcode(); - - McVtxFilter filter; - filter.setDecayPattern( "24 -> -13 + -14" ); - - filter.setMatchSign( true ); - CPPUNIT_ASSERT( !filter.isAccepted(vtx) ); - filter.setMatchSign( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - - filter.setDecayPattern( "-24 -> 13 + -14" ); - filter.setMatchSign( true ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - filter.setMatchSign( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtx) ); - - } - - /* -GenVertex: -5 ID: 0 (X,cT):0 - I: 2 5 21 +1.23e+04,-4.79e+03,+6.52e+04,+6.65e+04 3 -5 - 6 21 +1.14e+02,+1.35e+04,-6.42e+04,+6.56e+04 3 -5 - O: 2 7 5 +4.56e+04,+1.53e+04,-5.08e+04,+7.01e+04 3 -8 - 8 -5 -3.32e+04,-6.56e+03,+5.18e+04,+6.20e+04 3 -9 -GenVertex: -39 ID: 0 (X,cT):0 - I: 1 158 -5 -3.21e+04,-6.19e+03,+5.05e+04,+6.38e+04 2 -39 - O: 2 159 -5 -1.29e+04,+1.12e+03,+3.50e+04,+3.77e+04 2 -92 - 160 21 -1.92e+04,-7.30e+03,+1.55e+04,+2.61e+04 2 -40 - */ - - /// Test some vertices - void testQuarkVertices() - { - // create a b->g+b vertex - HepMC::GenVertex * vtxgb = new HepMC::GenVertex; - m_evt->add_vertex( vtxgb ); - vtxgb->add_particle_in( new HepMC::GenParticle( HLV_t( -3.21e+04, - -6.19e+03, - +5.05e+04, - +6.38e+04 ), - -5, 2 ) ); - vtxgb->add_particle_out( new HepMC::GenParticle( HLV_t( -1.29e+04, - +1.12e+03, - +3.50e+04, - +3.77e+04 ), - -5, 2 ) ); - - vtxgb->add_particle_out( new HepMC::GenParticle( HLV_t( -1.92e+04, - -7.30e+03, - +1.55e+04, - +2.61e+04 ), - 21, 2 ) ); - - // create a gg->b+bbar vertex - HepMC::GenVertex * vtxbb = new HepMC::GenVertex; - m_evt->add_vertex( vtxbb ); - vtxbb->add_particle_in( new HepMC::GenParticle( HLV_t( +1.23e+04, - -4.79e+03, - +6.52e+04, - +6.65e+04 ), - 21, 3 ) ); - vtxbb->add_particle_in( new HepMC::GenParticle( HLV_t( +1.14e+02, - +1.35e+04, - -6.42e+04, - +6.56e+04 ), - 21, 3 ) ); - vtxbb->add_particle_out( new HepMC::GenParticle( HLV_t( +4.56e+04, - +1.53e+04, - -5.08e+04, - +7.01e+04 ), - 5, 3 ) ); - - vtxbb->add_particle_out( new HepMC::GenParticle( HLV_t( -3.32e+04, - -6.56e+03, - +5.18e+04, - +6.20e+04 ), - -5, 3 ) ); - - McVtxFilter filter; - filter.setDecayPattern( " -> -5 + 5" ); - - filter.setMatchSign( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtxbb) ); - CPPUNIT_ASSERT( !filter.isAccepted(vtxgb) ); - - filter.setMatchSign( true ); - CPPUNIT_ASSERT( filter.isAccepted(vtxbb) ); - CPPUNIT_ASSERT( !filter.isAccepted(vtxgb) ); - - filter.setDecayPattern( "21+21 -> -5 + 5" ); - filter.setMatchSign( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtxbb) ); - CPPUNIT_ASSERT( !filter.isAccepted(vtxgb) ); - - filter.setMatchSign( true ); - CPPUNIT_ASSERT( filter.isAccepted(vtxbb) ); - CPPUNIT_ASSERT( !filter.isAccepted(vtxgb) ); - - filter.setMatchBranches(true); - filter.setMatchSign( false ); - CPPUNIT_ASSERT( filter.isAccepted(vtxbb) ); - CPPUNIT_ASSERT( !filter.isAccepted(vtxgb) ); - - filter.setMatchSign( true ); - CPPUNIT_ASSERT( filter.isAccepted(vtxbb) ); - CPPUNIT_ASSERT( !filter.isAccepted(vtxgb) ); - - } - - /// Test Stable particles (no end_vertex) - void testStableParticle() - { - HepMC::GenVertex * vtx = new HepMC::GenVertex; - m_evt->add_vertex( vtx ); - vtx->add_particle_in( new HepMC::GenParticle( HLV_t( -2.45e+04, - +1.88e+04, - -8.65e+05, - +8.65e+05 ), - 23, 3 ) ); - HepMC::GenParticle * photon = 0; - photon = new HepMC::GenParticle( HLV_t( -2.45e+04, - +1.88e+04, - -8.65e+05, - +8.65e+05 ), - 22, 1 ); - vtx->add_particle_out( photon ); - - // no end_vertex so : particle is stable - CPPUNIT_ASSERT( photon->end_vertex() == 0 ); - - McVtxFilter filter; - filter.setDecayPattern( "23->" ); - CPPUNIT_ASSERT( false == filter.isFullVtx() ); - CPPUNIT_ASSERT( filter.isAccepted( vtx ) ); - - filter.setDecayPattern( "22->" ); - CPPUNIT_ASSERT( false == filter.isFullVtx() ); - CPPUNIT_ASSERT( !filter.isAccepted( vtx ) ); - - filter.setDecayPattern( "->23" ); - CPPUNIT_ASSERT( false == filter.isFullVtx() ); - CPPUNIT_ASSERT( !filter.isAccepted( vtx ) ); - - filter.setDecayPattern( "->22" ); - CPPUNIT_ASSERT( false == filter.isFullVtx() ); - CPPUNIT_ASSERT( filter.isAccepted( vtx ) ); - - } - -}; - -/// Registration of the test suite "McVtxFilterTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( McVtxFilterTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -#include <TestTools/CppUnit_SGtestdriver.cxx> diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/MomentumFilterTest_CppUnit.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/MomentumFilterTest_CppUnit.cxx deleted file mode 100644 index 0aaafa13e2199b1c70cb88b4da2f0b96f91b34a2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/MomentumFilterTest_CppUnit.cxx +++ /dev/null @@ -1,664 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the MomentumFilter class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <iostream> -#include <stdexcept> -#include <cmath> - -// CLHEP includes -#include "CLHEP/Units/SystemOfUnits.h" - -#include "AthContainers/DataVector.h" - -// EventKernel -#include "EventKernel/I4Momentum.h" -#include "EventKernel/IParticle.h" - -// FourMom includes -#include "FourMom/P4PxPyPzE.h" -#include "FourMom/P4EEtaPhiM.h" - -// AnalysisUtils includes -#include "AnalysisUtils/MomentumFilter.h" - -class MomentumFilterTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite "MomentumFilterTest" - CPPUNIT_TEST_SUITE( MomentumFilterTest ); - - CPPUNIT_TEST( testCopyMomentumFilter ); - - CPPUNIT_TEST( testSettersAndGetters ); - CPPUNIT_TEST( testModuloPhi ); - - CPPUNIT_TEST( testPxFilter ); - CPPUNIT_TEST( testPyFilter ); - CPPUNIT_TEST( testPzFilter ); - CPPUNIT_TEST( testEneFilter ); - - CPPUNIT_TEST( testEtaFilter ); - CPPUNIT_TEST( testPhiFilter ); - CPPUNIT_TEST( testMassFilter ); - CPPUNIT_TEST( testPtFilter ); - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - -public: - - /// Set up the data members - void setUp() - { - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - } - - /// Test that momentum filter cuts are well copied - void testCopyMomentumFilter() - { - MomentumFilter<I4Momentum> orig; - orig.setRange( "px", 100.*GeV, 120.*GeV ); - orig.setRange( "py", 100.*GeV, 120.*GeV ); - orig.setRange( "pz", 100.*GeV, 120.*GeV ); - orig.setRange( "ene",200.*GeV, 200.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100*GeV, 100*GeV, 200*GeV ); - P4PxPyPzE p2( 110.*GeV, 110*GeV, 110*GeV, 210*GeV ); - - CPPUNIT_ASSERT( orig.isAccepted( &p1 ) ); - CPPUNIT_ASSERT( !orig.isAccepted( &p2 ) ); - - { - MomentumFilter<I4Momentum> filter; - filter.setEneMin( 205.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted( &p1 ) ); - CPPUNIT_ASSERT( filter.isAccepted( &p2 ) ); - - filter.setFilter( &orig ); - CPPUNIT_ASSERT( filter.isAccepted( &p1 ) ); - CPPUNIT_ASSERT( !filter.isAccepted( &p2 ) ); - } - { - MomentumFilter<I4Momentum> filter; - filter.setEneMin( 205.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted( &p1 ) ); - CPPUNIT_ASSERT( filter.isAccepted( &p2 ) ); - - filter = orig; - CPPUNIT_ASSERT( filter.isAccepted( &p1 ) ); - CPPUNIT_ASSERT( !filter.isAccepted( &p2 ) ); - } - { - MomentumFilter<I4Momentum> filter = orig; - CPPUNIT_ASSERT( filter.isAccepted( &p1 ) ); - CPPUNIT_ASSERT( !filter.isAccepted( &p2 ) ); - } - { - MomentumFilter<I4Momentum> filter(orig); - CPPUNIT_ASSERT( filter.isAccepted( &p1 ) ); - CPPUNIT_ASSERT( !filter.isAccepted( &p2 ) ); - } - } - - /// Test the setters and getters - void testSettersAndGetters() - { - MomentumFilter<I4Momentum> orig; - - MomentumFilter<I4Momentum> filter; - CPPUNIT_ASSERT( -FLT_MAX == filter.pxMin() ); - CPPUNIT_ASSERT( +FLT_MAX == filter.pxMax() ); - CPPUNIT_ASSERT( -FLT_MAX == filter.pyMin() ); - CPPUNIT_ASSERT( +FLT_MAX == filter.pyMax() ); - CPPUNIT_ASSERT( -FLT_MAX == filter.pzMin() ); - CPPUNIT_ASSERT( +FLT_MAX == filter.pzMax() ); - CPPUNIT_ASSERT( -FLT_MAX == filter.eneMin() ); - CPPUNIT_ASSERT( +FLT_MAX == filter.eneMax() ); - CPPUNIT_ASSERT( -FLT_MAX == filter.etaMin() ); - CPPUNIT_ASSERT( +FLT_MAX == filter.etaMax() ); - CPPUNIT_ASSERT( -M_PI == filter.phiMin() ); - CPPUNIT_ASSERT( +M_PI == filter.phiMax() ); - CPPUNIT_ASSERT( -FLT_MAX == filter.massMin() ); - CPPUNIT_ASSERT( +FLT_MAX == filter.massMax() ); - CPPUNIT_ASSERT( -FLT_MAX == filter.ptMin() ); - CPPUNIT_ASSERT( +FLT_MAX == filter.ptMax() ); - - double min = 10*GeV; - double max = 100*GeV; - - // Px - filter.setFilter( &orig ); - filter.setPxMin( min ); - filter.setPxMax( max ); - CPPUNIT_ASSERT( min == filter.pxMin() ); - CPPUNIT_ASSERT( max == filter.pxMax() ); - - // Py - filter.setFilter( &orig ); - filter.setPyMin( min ); - filter.setPyMax( max ); - CPPUNIT_ASSERT( min == filter.pyMin() ); - CPPUNIT_ASSERT( max == filter.pyMax() ); - - // Pz - filter.setFilter( &orig ); - filter.setPzMin( min ); - filter.setPzMax( max ); - CPPUNIT_ASSERT( min == filter.pzMin() ); - CPPUNIT_ASSERT( max == filter.pzMax() ); - - // Ene - filter.setFilter( &orig ); - filter.setEneMin( min ); - filter.setEneMax( max ); - CPPUNIT_ASSERT( min == filter.eneMin() ); - CPPUNIT_ASSERT( max == filter.eneMax() ); - - // Eta - filter.setFilter( &orig ); - filter.setEtaMin( 1. ); - filter.setEtaMax( 2.5 ); - CPPUNIT_ASSERT( 1 == filter.etaMin() ); - CPPUNIT_ASSERT( 2.5 == filter.etaMax() ); - - // Phi - filter.setFilter( &orig ); - filter.setPhiMin( -M_PI ); - filter.setPhiMax( +M_PI ); - CPPUNIT_ASSERT( -M_PI == filter.phiMin() ); - CPPUNIT_ASSERT( +M_PI == filter.phiMax() ); - - // Mass - filter.setFilter( &orig ); - filter.setMassMin( min ); - filter.setMassMax( max ); - CPPUNIT_ASSERT( min == filter.massMin() ); - CPPUNIT_ASSERT( max == filter.massMax() ); - - // Pt - filter.setFilter( &orig ); - filter.setPtMin( min ); - filter.setPtMax( max ); - CPPUNIT_ASSERT( min == filter.ptMin() ); - CPPUNIT_ASSERT( max == filter.ptMax() ); - - - min = 20*GeV; - max = 200*GeV; - - // Px - filter.setFilter( &orig ); - filter.setRange( "px", min, max ); - CPPUNIT_ASSERT( min == filter.pxMin() ); - CPPUNIT_ASSERT( max == filter.pxMax() ); - - // Py - filter.setFilter( &orig ); - filter.setRange( "py", min, max ); - CPPUNIT_ASSERT( min == filter.pyMin() ); - CPPUNIT_ASSERT( max == filter.pyMax() ); - - // Pz - filter.setFilter( &orig ); - filter.setRange( "pz", min, max ); - CPPUNIT_ASSERT( min == filter.pzMin() ); - CPPUNIT_ASSERT( max == filter.pzMax() ); - - // Ene - filter.setFilter( &orig ); - filter.setRange( "ene", min, max ); - CPPUNIT_ASSERT( min == filter.eneMin() ); - CPPUNIT_ASSERT( max == filter.eneMax() ); - - // Eta - filter.setFilter( &orig ); - filter.setRange( "eta", 1., 2.5 ); - CPPUNIT_ASSERT( 1 == filter.etaMin() ); - CPPUNIT_ASSERT( 2.5 == filter.etaMax() ); - - // Phi - filter.setFilter( &orig ); - filter.setRange( "phi", -M_PI, +M_PI ); - CPPUNIT_ASSERT( -M_PI == filter.phiMin() ); - CPPUNIT_ASSERT( +M_PI == filter.phiMax() ); - filter.setFilter( &orig ); - filter.setRange( "phi", 0., +M_PI/2 ); - CPPUNIT_ASSERT( 0 == filter.phiMin() ); - CPPUNIT_ASSERT( +M_PI/2 == filter.phiMax() ); - filter.setFilter( &orig ); - filter.setRange( "phi", M_PI/2, +M_PI ); - CPPUNIT_ASSERT( M_PI/2 == filter.phiMin() ); - CPPUNIT_ASSERT( +M_PI == filter.phiMax() ); - filter.setFilter( &orig ); - filter.setRange( "phi", M_PI, 3*M_PI/2 ); - CPPUNIT_ASSERT( -M_PI/2 == filter.phiMin() ); - CPPUNIT_ASSERT( M_PI == filter.phiMax() ); - filter.setFilter( &orig ); - filter.setRange( "phi", 3*M_PI/2, 4*M_PI/2 ); - CPPUNIT_ASSERT( -M_PI/2 == filter.phiMin() ); - CPPUNIT_ASSERT( 0 == filter.phiMax() ); - - // Mass - filter.setFilter( &orig ); - filter.setRange( "mass", min, max ); - CPPUNIT_ASSERT( min == filter.massMin() ); - CPPUNIT_ASSERT( max == filter.massMax() ); - - // Pt - filter.setFilter( &orig ); - filter.setRange( "pt", min, max ); - CPPUNIT_ASSERT( min == filter.ptMin() ); - CPPUNIT_ASSERT( max == filter.ptMax() ); - - } - - /// Test the phi modulation - void testModuloPhi() - { - MomentumFilter<I4Momentum> filter; - - CPPUNIT_ASSERT( -M_PI == filter.atlasPhi( -M_PI ) ); - CPPUNIT_ASSERT( M_PI == filter.atlasPhi( M_PI ) ); - CPPUNIT_ASSERT( -M_PI != filter.atlasPhi( M_PI ) ); - CPPUNIT_ASSERT( M_PI != filter.atlasPhi( -M_PI ) ); - - CPPUNIT_ASSERT( 0 == filter.atlasPhi( 0 ) ); - CPPUNIT_ASSERT( M_PI != filter.atlasPhi( 0 ) ); - CPPUNIT_ASSERT( -M_PI != filter.atlasPhi( 0 ) ); - - CPPUNIT_ASSERT( M_PI/2 != filter.atlasPhi( 0 ) ); - CPPUNIT_ASSERT( -M_PI/2 != filter.atlasPhi( 0 ) ); - - filter.setRange( "phi", M_PI/2, M_PI ); - P4EEtaPhiM p1( 200.*GeV, 1., 0., 5.*GeV ); - - CPPUNIT_ASSERT( M_PI/2 == filter.phiMin() ); - CPPUNIT_ASSERT( M_PI == filter.phiMax() ); - CPPUNIT_ASSERT( 0 == filter.atlasPhi( p1.phi() ) ); - - CPPUNIT_ASSERT( -M_PI != filter.phiMin() ); - CPPUNIT_ASSERT( +M_PI == filter.phiMax() ); - - CPPUNIT_ASSERT( -M_PI != filter.atlasPhi(filter.phiMin()) || - +M_PI != filter.atlasPhi(filter.phiMax()) ); - CPPUNIT_ASSERT( !( (filter.phiMin() <= filter.atlasPhi(p1.phi()) && - filter.phiMax() >= filter.atlasPhi(p1.phi()) ) ) ); - CPPUNIT_ASSERT( !filter.isAccepted( &p1 ) ); - } - - /// Test filtering objects based on their Px - void testPxFilter() - { - MomentumFilter<I4Momentum> filter; - filter.setPxMin( 0.*GeV ); - filter.setPxMax( 100.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - P4PxPyPzE p2( 110.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setPxMax( 110.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setPxMin( 110.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "px", 0.*GeV, 100.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "px", 0.*GeV, 110.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "px", 105.*GeV, 110.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - } - - /// Test filtering objects based on their Py - void testPyFilter() - { - MomentumFilter<I4Momentum> filter; - filter.setPyMin( 0.*GeV ); - filter.setPyMax( 100.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - P4PxPyPzE p2( 100.*GeV, 110.*GeV, 100.*GeV, 200.*GeV ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setPyMax( 110.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setPyMin( 110.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "py", 0.*GeV, 100.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "py", 105.*GeV, 110.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - } - - /// Test filtering objects based on their Pz - void testPzFilter() - { - MomentumFilter<I4Momentum> filter; - filter.setPzMin( 0.*GeV ); - filter.setPzMax( 100.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - P4PxPyPzE p2( 100.*GeV, 100.*GeV, 110.*GeV, 200.*GeV ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setPzMax( 110.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setPzMin( 110.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "pz", 0.*GeV, 100.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "pz", 105.*GeV, 110.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - } - - /// Test filtering objects based on their Ene - void testEneFilter() - { - MomentumFilter<I4Momentum> filter; - filter.setEneMin( 0.*GeV ); - filter.setEneMax( 200.*GeV ); - - P4PxPyPzE p1( 100.*GeV, 100.*GeV, 100.*GeV, 200.*GeV ); - P4PxPyPzE p2( 100.*GeV, 100.*GeV, 100.*GeV, 210.*GeV ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setEneMax( 210.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setEneMin( 210.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "ene", 0.*GeV, 200.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "ene", 205.*GeV, 210.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - } - - /// Test filtering objects based on their Eta - void testEtaFilter() - { - MomentumFilter<I4Momentum> filter; - filter.setEtaMin( 0.0 ); - filter.setEtaMax( 2.5 ); - - P4EEtaPhiM p1( 200.*GeV, 1., M_PI, 5.*GeV ); - P4EEtaPhiM p2( 200.*GeV, 3., M_PI, 5.*GeV ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setEtaMax( 3. ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setEtaMin( 2.5 ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "eta", 0., 2.5 ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "eta", 2.5, 3. ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - /// Explore negative eta - p1.set4Mom( P4EEtaPhiM( 200.*GeV, -1., M_PI, 5.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, -3., M_PI, 5.*GeV ) ); - - filter.setEtaMin( -2.5 ); - filter.setEtaMax( 0.0 ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setEtaMin( -3. ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setEtaMax( -2.5 ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "eta", -2.5, 0. ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "eta", -3., -2.5 ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - } - - /// Test filtering objects based on their Phi - void testPhiFilter() - { - MomentumFilter<I4Momentum> filter; - filter.setPhiMin( 0.0 ); - filter.setPhiMax( M_PI/2. ); - - P4EEtaPhiM p1( 200.*GeV, 1., 0., 5.*GeV ); - P4EEtaPhiM p2( 200.*GeV, 3., M_PI, 5.*GeV ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setPhiMax( M_PI ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setPhiMin( M_PI/2. ); - CPPUNIT_ASSERT( M_PI/2 == filter.phiMin() && - M_PI == filter.phiMax() ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "phi", 0., M_PI/2. ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "phi", M_PI/2., M_PI ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - /// Explore negative phi - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 1., 0., 5.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 3., -M_PI, 5.*GeV ) ); - - filter.setPhiMin( -M_PI/2. ); - filter.setPhiMax( 0.0 ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setPhiMin( -M_PI ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setPhiMax( -M_PI/2. ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "phi", -M_PI/2., 0. ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "phi", -M_PI, -M_PI/2. ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "phi", -M_PI/2, -M_PI ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - /// - /// Explore modulo phi - /// - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 1., 0., 5.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 3., 2*M_PI, 5.*GeV ) ); - - // No phi range policy enforced on the 4-vectors - CPPUNIT_ASSERT( 0. == p1.phi() ); - CPPUNIT_ASSERT( 2*M_PI == p2.phi() ); - - filter.setRange( "phi", 0., 0. ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "phi", 2*M_PI, 2*M_PI ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - p1.set4Mom( P4EEtaPhiM( 200.*GeV, 1., M_PI/2., 5.*GeV ) ); - p2.set4Mom( P4EEtaPhiM( 200.*GeV, 3., -3*M_PI/2., 5.*GeV ) ); - - filter.setRange( "phi", M_PI/2., M_PI/2. ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "phi", -3*M_PI/2, -3*M_PI/2 ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "phi", -3*M_PI/2, M_PI/2 ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "phi", M_PI/2, -3*M_PI/2 ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - // test that even if phiRange=[-PI, PI[, the phi range is *not* active - MomentumFilter<I4Momentum> phiFilter; - CPPUNIT_ASSERT( phiFilter.isAccepted( &p1 ) ); - CPPUNIT_ASSERT( phiFilter.isAccepted( &p2 ) ); - } - - /// Test filtering objects based on their Mass - void testMassFilter() - { - MomentumFilter<I4Momentum> filter; - filter.setMassMin( 0.*GeV ); - filter.setMassMax( 80.*GeV ); - - P4EEtaPhiM p1( 200.*GeV, 1., 0., 80.*GeV ); - P4EEtaPhiM p2( 200.*GeV, 3., M_PI, 90.*GeV ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setMassMax( 90.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setMassMin( 85.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "mass", 0.*GeV, 80.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "mass", 85.*GeV, 90.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - } - - /// Test filtering objects based on their Pt - void testPtFilter() - { - MomentumFilter<I4Momentum> filter; - filter.setPtMin( 0.*GeV ); - filter.setPtMax( 20.*GeV ); - - P4EEtaPhiM p1( 200.*GeV, 3., M_PI, 90.*GeV ); //> Pt ~= 18 GeV - P4EEtaPhiM p2( 200.*GeV, 1., 0., 80.*GeV ); //> Pt ~= 119 GeV - - CPPUNIT_ASSERT( 17*GeV <= p1.pt() && p1.pt() <= 18*GeV ); - CPPUNIT_ASSERT( 118*GeV <= p2.pt() && p2.pt() <= 119*GeV ); - - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setPtMax( 119.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setPtMin( 20.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - filter.setRange( "pt", 0.*GeV, 20.*GeV ); - CPPUNIT_ASSERT( filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( !filter.isAccepted(&p2) ); - - filter.setRange( "pt", 20.*GeV, 119.*GeV ); - CPPUNIT_ASSERT( !filter.isAccepted(&p1) ); - CPPUNIT_ASSERT( filter.isAccepted(&p2) ); - - } - -}; - -/// Registration of the test suite "MomentumFilterTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( MomentumFilterTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -#include <TestTools/CppUnit_testdriver.cxx> diff --git a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/PdgIdFilterTest_CppUnit.cxx b/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/PdgIdFilterTest_CppUnit.cxx deleted file mode 100644 index b71bc55fd556beb12301a5b72d1f779f2e4dde06..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisCommon/AnalysisTest/test/PdgIdFilterTest_CppUnit.cxx +++ /dev/null @@ -1,247 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the PdgIdFilter class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <iostream> -#include <stdexcept> -#include <cmath> - -// CLHEP includes -#include "CLHEP/Units/SystemOfUnits.h" -#include "AtlasHepMC/GenParticle.h" - -#include "AthContainers/DataVector.h" - -// EventKernel includes -#include "EventKernel/IParticle.h" - -// FourMom includes -#include "FourMom/P4PxPyPzE.h" -#include "FourMom/P4EEtaPhiM.h" - -// JetEvent -#include "JetEvent/Jet.h" -#include "JetEvent/JetCollection.h" - -// McParticleEvent -#include "McParticleEvent/TruthParticle.h" - -// AnalysisUtils includes -#include "AnalysisUtils/AnalysisSelection.h" -#include "AnalysisUtils/AnalysisCombination.h" -#include "AnalysisUtils/PdgIdFilter.h" - -class PdgIdFilterTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite " PdgIdFilterTest" - CPPUNIT_TEST_SUITE( PdgIdFilterTest ); - - CPPUNIT_TEST( testCopyPdgIdFilter ); - CPPUNIT_TEST( testSettersAndGetters ); - - CPPUNIT_TEST( testBQuarkFilter ); - - CPPUNIT_TEST( testLightFlavourFilter ); - CPPUNIT_TEST( testHeavyFlavourFilter ); - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - unsigned int m_nJets; - unsigned int m_nLightJets; - unsigned int m_nBJets; - JetCollection * m_jets; - -public: - - /// Set up the data members - void setUp() - { - m_nJets = 10; - m_nLightJets = 8; - m_nBJets = 2; - m_jets = new JetCollection; - - const double px = 100.*GeV; - const double py = 100.*GeV; - const double pz = 100.*GeV; - const double E = 200.*GeV; - - std::vector<PDG::pidType> pdgs; - pdgs.push_back( PDG::null ); - pdgs.push_back( PDG::d ); - pdgs.push_back( PDG::s ); - pdgs.push_back( PDG::b ); - - for ( unsigned int i = 0; i < m_nJets; ++i ) { - Jet * jet = 0; - jet = new Jet(); - - jet->set4Mom( P4PxPyPzE( ((i%4)+1)*px, ((i%4)+1)*py, - ((i%4)+1)*pz, ((i%4)+1)*E ) ); - jet->set_pdgId( pdgs[i%4] ); - m_jets->push_back(jet); - /* - std::cout << "\tjet " << i - << "pdgId= " << jet->pdgId() - << std::endl; - */ - } - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - if ( m_jets ) { - delete m_jets; - m_jets = 0; - } - } - - /// Test that PdgIdFilter cuts are well copied - void testCopyPdgIdFilter() - { - PdgIdFilter<IParticle> orig; - - Jet bbar; - bbar.set_pdgId( PDG::b ); - CPPUNIT_ASSERT( orig.isAccepted( &bbar ) ); - - bbar.set_pdgId( PDG::anti_b ); - CPPUNIT_ASSERT( orig.isAccepted( &bbar ) ); - - PdgIdFilter<IParticle> filter; - filter.setPdgId( PDG::b ); - CPPUNIT_ASSERT( !filter.isAccepted( &bbar ) ); - - filter.setFilter( &orig ); - CPPUNIT_ASSERT( filter.isAccepted( &bbar ) ); - - orig.setPdgId( PDG::b ); - CPPUNIT_ASSERT( !orig.isAccepted( &bbar ) ); - - filter.setFilter( &orig ); - CPPUNIT_ASSERT( !filter.isAccepted( &bbar ) ); - - } - - /// Test setters and getters - void testSettersAndGetters() - { - PdgIdFilter<IParticle> filter; - CPPUNIT_ASSERT( true == filter.matchSign() ); - - filter.setMatchSign( false ); - CPPUNIT_ASSERT( false == filter.matchSign() ); - - filter.setMatchSign( true ); - CPPUNIT_ASSERT( true == filter.matchSign() ); - - } - - /// Test that PdgIdFilter selects b-quarks - void testBQuarkFilter() - { - PdgIdFilter<IParticle> filter; - filter.setPdgId( PDG::b ); - - Jet bjet; - - bjet.set_pdgId( PDG::b ); - CPPUNIT_ASSERT( filter.isAccepted( &bjet ) ); - - bjet.set_pdgId( PDG::anti_b ); - CPPUNIT_ASSERT( !filter.isAccepted( &bjet ) ); - - filter.setMatchSign( false ); - CPPUNIT_ASSERT( filter.isAccepted( &bjet ) ); - - HepMC::GenParticle hepBQuark; - hepBQuark.set_pdg_id( static_cast<int>(PDG::anti_b) ); - TruthParticle bquark(&hepBQuark); - filter.setMatchSign( false ); - CPPUNIT_ASSERT( filter.isAccepted( &bquark ) ); - - filter.setMatchSign( true ); - CPPUNIT_ASSERT( !filter.isAccepted( &bquark ) ); - } - - /// Test the filtering on light flavour - void testLightFlavourFilter() - { - ParticleCandidateList pdgIds; - pdgIds.clear(); - pdgIds.addLightJets(); - - //> Create a light jet filter - PdgIdFilter<IParticle> ljetFilter; - ljetFilter.setPdgIds( pdgIds ); - - // Test with a std::vector - std::vector<Jet*> lightJets; - CPPUNIT_ASSERT( lightJets.size() == static_cast<unsigned int>(0) ); - AnalysisUtils::copy_if( m_jets->begin(), - m_jets->end(), - std::back_inserter(lightJets), - ljetFilter ); - CPPUNIT_ASSERT( lightJets.size() == m_nLightJets ); - - // Test with a Selection - AnalysisUtils::Selection<PdgIdFilter<IParticle> > ljetFilterSel; - ljetFilterSel.setPdgIds( pdgIds ); - - lightJets.clear(); - CPPUNIT_ASSERT( lightJets.size() == static_cast<unsigned int>(0) ); - ljetFilterSel.getObjects( m_jets, lightJets); - - CPPUNIT_ASSERT( (lightJets.size() == m_nLightJets) ); - - // Test with a JetCollection - JetCollection lJets(SG::VIEW_ELEMENTS); - CPPUNIT_ASSERT( lJets.size() == static_cast<unsigned int>(0) ); - AnalysisUtils::copy_if( m_jets->begin(), - m_jets->end(), - std::back_inserter(lJets), - ljetFilter ); - CPPUNIT_ASSERT( lJets.size() == m_nLightJets ); - } - - /// Test the filtering on heavy flavour - void testHeavyFlavourFilter() - { - ParticleCandidateList pdgIds; - - //> Create a b-jet filter - PdgIdFilter<IParticle> bjetFilter; - pdgIds.clear(); - pdgIds.add( PDG::b ); - pdgIds.add( PDG::anti_b ); - bjetFilter.setPdgIds( pdgIds ); - - std::vector<Jet*> bJets; - AnalysisUtils::copy_if( m_jets->begin(), - m_jets->end(), - std::back_inserter(bJets), - bjetFilter ); - - CPPUNIT_ASSERT( bJets.size() == m_nBJets ); - - return; - } -}; - -/// Registration of the test suite "PdgIdFilterTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( PdgIdFilterTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -#include <TestTools/CppUnit_SGtestdriver.cxx> diff --git a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/CMakeLists.txt b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/CMakeLists.txt index 6c63c612d25876c06e60256a0fca71d93960ef06..f5bb2bb6a63e58f9eba4d1de92b7f66e6d3e0752 100644 --- a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/CMakeLists.txt +++ b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/CMakeLists.txt @@ -1,29 +1,8 @@ -################################################################################ -# Package: AnalysisTriggerAlgs -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( AnalysisTriggerAlgs ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PRIVATE - Control/AthenaBaseComps - Control/AthenaKernel - Control/StoreGate - Event/EventInfo - Event/xAOD/xAODTrigL1Calo - Event/xAOD/xAODTrigger - Event/xAOD/xAODTriggerCnv - GaudiKernel - PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent - Trigger/TrigConfiguration/TrigConfInterfaces - Trigger/TrigConfiguration/TrigConfL1Data - Trigger/TrigT1/TrigT1CaloEvent - Trigger/TrigT1/TrigT1CaloToolInterfaces - Trigger/TrigT1/TrigT1Interfaces - Trigger/TrigT1/TrigT1Result ) - # External dependencies: find_package( CLHEP ) diff --git a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/share/AnalysisTrigger_jobOptions.py b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/share/AnalysisTrigger_jobOptions.py deleted file mode 100644 index 91d3785e8067b7ff26b7b8290009f1f3fc001cbb..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/share/AnalysisTrigger_jobOptions.py +++ /dev/null @@ -1,6 +0,0 @@ - -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -from AnalysisTriggerAlgs.AnalysisTriggerAlgsConfig import RoIBResultToAOD -topSequence += RoIBResultToAOD("RoIBResultToAOD") diff --git a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/share/Data09MuCTPIFix_jobOfragment.py b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/share/Data09MuCTPIFix_jobOfragment.py deleted file mode 100644 index d0ef7dd2376a911faaed0fde10af26da4b0c3473..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/share/Data09MuCTPIFix_jobOfragment.py +++ /dev/null @@ -1,40 +0,0 @@ -# $Id: Data09MuCTPIFix_jobOfragment.py 275499 2010-01-27 18:25:00Z krasznaa $ -# -# JobOptions fragment fixing the LVL1_ROI object in the ESD files for the -# problem in the MuCTPI. (Present for all 2009 collision data.) -# - -# Create a new logger, saving the old one if it already exists with this name: -if "logger" in dir(): orig_logger = logger -from AthenaCommon.Logging import logging -logger = logging.getLogger( "Data09MuCTPIFix" ) - -# Set up the trigger configuration: -from TriggerJobOpts.TriggerConfigGetter import TriggerConfigGetter -TriggerConfigGetter( "ReadPool" ) -logger.info( "Set up the trigger configuration service" ) - -# Access the algorithm sequence: -from AthenaCommon.AlgSequence import AlgSequence -theJob = AlgSequence() - -# -# Fix the RoIBResult object based on the MuCTPI_RDO: -# -from AnalysisTriggerAlgs.AnalysisTriggerAlgsConf import MuCTPI_RDOToRoIBResult -theJob += MuCTPI_RDOToRoIBResult() -theJob.MuCTPI_RDOToRoIBResult.RoIBOutputKey = "CorrectRoIBResult" -logger.info( "Added the RoIBResult object fixer algorithm" ) - -# -# Create the LVL1_ROI object with the correct muon content. -# Warning: The Calo RoIs should be taken from the original LVL1_ROI object! -# -from AnalysisTriggerAlgs.AnalysisTriggerAlgsConfig import RoIBResultToAOD -theJob += RoIBResultToAOD() -theJob.RoIBResultToAOD.DoCalo = False -theJob.RoIBResultToAOD.RoIBResultInputKey = "CorrectRoIBResult" -theJob.RoIBResultToAOD.LVL1_ROIOutputKey = "LVL1_ROI" - -# Restore the original logger if necessary: -if "orig_logger" in dir(): logger = orig_logger diff --git a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent/CMakeLists.txt b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent/CMakeLists.txt index 470872ea25ea3cf65bbc4dc34d1b8a6a2ae548a6..e23fa198ca2b010489beef79d73102224f02fd8d 100644 --- a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent/CMakeLists.txt +++ b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent/CMakeLists.txt @@ -1,31 +1,15 @@ -################################################################################ -# Package: AnalysisTriggerEvent -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( AnalysisTriggerEvent ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaKernel - Control/Navigation - Event/EventKernel - Event/FourMom ) - -# External dependencies: -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) - # Component(s) in the package: atlas_add_library( AnalysisTriggerEvent src/*.cxx PUBLIC_HEADERS AnalysisTriggerEvent - PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES Navigation AthenaKernel EventKernel FourMom - PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ) + LINK_LIBRARIES Navigation AthenaKernel EventKernel FourMom ) atlas_add_dictionary( AnalysisTriggerEventDict AnalysisTriggerEvent/AnalysisTriggerEventDict.h AnalysisTriggerEvent/selection.xml - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} Navigation AthenaKernel EventKernel FourMom AnalysisTriggerEvent ) - + LINK_LIBRARIES AnalysisTriggerEvent ) diff --git a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEventAthenaPool/CMakeLists.txt b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEventAthenaPool/CMakeLists.txt index 9e1b347b3e510e5564c95d2f3364a51c619ebfc5..a3056cde7e005806a8338376ae062bd868079f29 100644 --- a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEventAthenaPool/CMakeLists.txt +++ b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEventAthenaPool/CMakeLists.txt @@ -1,19 +1,8 @@ -################################################################################ -# Package: AnalysisTriggerEventAthenaPool -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( AnalysisTriggerEventAthenaPool ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Database/AthenaPOOL/AthenaPoolUtilities - GaudiKernel - PRIVATE - Database/AthenaPOOL/AthenaPoolCnvSvc - PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent - PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEventTPCnv ) - # Component(s) in the package: atlas_add_poolcnv_library( AnalysisTriggerEventAthenaPoolPoolCnv src/*.cxx diff --git a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEventTPCnv/CMakeLists.txt b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEventTPCnv/CMakeLists.txt index ed78325ff00c3da4fcdc4e5a1408f877e96a4e58..e5825166ae0ee7f34985abd1ce2f9f34064f3dbd 100644 --- a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEventTPCnv/CMakeLists.txt +++ b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEventTPCnv/CMakeLists.txt @@ -1,32 +1,21 @@ -################################################################################ -# Package: AnalysisTriggerEventTPCnv -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( AnalysisTriggerEventTPCnv ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Database/AthenaPOOL/AthenaPoolCnvSvc - GaudiKernel - PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent - PRIVATE - Control/AthenaKernel - Trigger/TrigT1/TrigT1Interfaces ) - # External dependencies: -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) +find_package( ROOT COMPONENTS Core ) # Component(s) in the package: atlas_add_tpcnv_library( AnalysisTriggerEventTPCnv src/*.cxx PUBLIC_HEADERS AnalysisTriggerEventTPCnv PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib GaudiKernel AnalysisTriggerEvent AthenaKernel TrigT1Interfaces ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib AnalysisTriggerEvent + PRIVATE_LINK_LIBRARIES AthenaKernel GaudiKernel TrigT1Interfaces ) atlas_add_dictionary( AnalysisTriggerEventTPCnvDict AnalysisTriggerEventTPCnv/AnalysisTriggerEventTPCnvDict.h AnalysisTriggerEventTPCnv/selection.xml INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib GaudiKernel AnalysisTriggerEvent AthenaKernel TrigT1Interfaces AnalysisTriggerEventTPCnv ) - + LINK_LIBRARIES ${ROOT_LIBRARIES} AnalysisTriggerEventTPCnv ) diff --git a/PhysicsAnalysis/BPhys/BPhysTagTools/BPhysTagTools/BPhysTagTool.h b/PhysicsAnalysis/BPhys/BPhysTagTools/BPhysTagTools/BPhysTagTool.h deleted file mode 100755 index 975c8e132c599d08426eb692096762abc41bd180..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/BPhys/BPhysTagTools/BPhysTagTools/BPhysTagTool.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// BPhysTagTools.h -// Author: James Catmore (James.Catmore@cern.ch), Pavel Reznicek (Pavel.Reznicek@cern.ch), -// This is B-Physics TAG-word filling algorithm -// AS OF RELEASE 19 THIS IS NOW A DUMMY AND IS NOT DOING ANYTHING - -#ifndef BPHYSTAGTOOL_H -#define BPHYSTAGTOOL_H - -#include <string> -#include <map> - -#include "AthenaBaseComps/AthAlgTool.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -/////////////////////////////////////////////////////////////////////////////// - - -// Interface ID for BPhysTagTool -static const InterfaceID IID_BPhysTagTool("BPhysTagTool", 1, 0); - -class BPhysTagTool : public AthAlgTool { - -public: - - // Standard Constructor - BPhysTagTool(const std::string&, const std::string&, const IInterface*); - - // AlgTool and IAlgTool interface methods - static const InterfaceID& interfaceID() { return IID_BPhysTagTool; }; - - // Overriding initialize, finalize and execute - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>&, const int); - virtual StatusCode execute(TagFragmentCollection&, const int); - virtual StatusCode finalize(); - - -}; - -#endif // BPHYSTAGTOOL_H diff --git a/PhysicsAnalysis/BPhys/BPhysTagTools/CMakeLists.txt b/PhysicsAnalysis/BPhys/BPhysTagTools/CMakeLists.txt deleted file mode 100644 index 48999be63ce551b1fbf60b3886d004a47764d613..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/BPhys/BPhysTagTools/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Package: BPhysTagTools -################################################################################ - -# Declare the package name: -atlas_subdir( BPhysTagTools ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaBaseComps - Database/AthenaPOOL/AthenaPoolUtilities - GaudiKernel - PhysicsAnalysis/EventTag/TagEvent ) - -# Component(s) in the package: -atlas_add_library( BPhysTagToolsLib - src/*.cxx - PUBLIC_HEADERS BPhysTagTools - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent ) - -atlas_add_component( BPhysTagTools - src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent BPhysTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/BPhys/BPhysTagTools/doc/packagedoc.h b/PhysicsAnalysis/BPhys/BPhysTagTools/doc/packagedoc.h deleted file mode 100644 index 2d1ff30da1894166d266d206eecfac8833d71a72..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/BPhys/BPhysTagTools/doc/packagedoc.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page BPhysTagTools_page BPhysTagTools - -@section BPhysTagTools_introductionBPhysTagTools Introduction -This package contains the alg tools for building the TAG fragment for B-Physics analysis: the results of various -exclusive yes/no hypotheses, for example, can be encode into a TAG word. - -@section BPhysTagTools_packagecontentBPhysTagTools Package Contents -BPhysTagTools contains the following tools: - -- BPhysTagTool ... tool for B-Physics Analysis TAG - for example the results of exclusive hypotheses - -- for questions and comments: ketevi@bnl.gov - - - -*/ diff --git a/PhysicsAnalysis/BPhys/BPhysTagTools/share/BPhysTagTool_jobOptions.py b/PhysicsAnalysis/BPhys/BPhysTagTools/share/BPhysTagTool_jobOptions.py deleted file mode 100755 index 33dac02bf13f865052c17ba1b7ae5095f9c4a076..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/BPhys/BPhysTagTools/share/BPhysTagTool_jobOptions.py +++ /dev/null @@ -1,13 +0,0 @@ -include.block ("BPhysTagTools/BPhysTagTool_jobOptions.py") - -from EventTagAlgs.EventTagGlobal import EventTagGlobal - -if not EventTagGlobal.InitEventTagBuilder: - raise RunTimeError('EventTagBuilder has not been initialized') - -########### BPhysics analysis Tag options ################ - -from BPhysTagTools.BPhysTagToolsConf import BPhysTagTool as ConfiguredBPhysTagTool -BPhysTagTool = ConfiguredBPhysTagTool( - ) -ToolSvc += BPhysTagTool diff --git a/PhysicsAnalysis/BPhys/BPhysTagTools/src/BPhysTagTool.cxx b/PhysicsAnalysis/BPhys/BPhysTagTools/src/BPhysTagTool.cxx deleted file mode 100755 index 9e81608c2729d6adfce02c88e29a36c3ca2125b3..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/BPhys/BPhysTagTools/src/BPhysTagTool.cxx +++ /dev/null @@ -1,73 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// BPhysTagTools -// Author: James Catmore (James.Catmore@cern.ch), Pavel Reznicek (Pavel.Reznicek@cern.ch), -// This is B-Physics TAG-word filling algorithm -// AS OF RELEASE 19 THIS IS NOW A DUMMY AND IS NOT DOING ANYTHING - -#include "BPhysTagTools/BPhysTagTool.h" -#include "GaudiKernel/IToolSvc.h" -#include "TagEvent/BPhysAttributeNames.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -/////////////////////////////////////////////////////////////////////////////// - -BPhysTagTool::BPhysTagTool(const std::string& type, const std::string& name, const IInterface* parent) : - AthAlgTool(type, name, parent) { - - declareInterface<BPhysTagTool>(this); -} - -/////////////////////////////////////////////////////////////////////////////// - - -/////////////////////////////////////////////////////////////////////////////// - -StatusCode BPhysTagTool::initialize() { - - // Athena message stream - ATH_MSG_DEBUG( "In intialize()" ); - return StatusCode::SUCCESS; -} - -/////////////////////////////////////////////////////////////////////////////// - -StatusCode BPhysTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int /*max*/) { - - ATH_MSG_DEBUG( "In attributeSpecification()" ); - - // Build the attribute list - called in initialize and specify the BPhys the attributes - attrMap[ BPhysAttributeNames[0] ] =AthenaAttributeType(std::string("unsigned int"), BPhysAttributeUnitNames[0], BPhysAttributeGroupNames[0]); - - return StatusCode::SUCCESS; -} - -/////////////////////////////////////////////////////////////////////////////// - -StatusCode BPhysTagTool::execute(TagFragmentCollection& bphysTagColl, const int /*max*/) { - - ATH_MSG_DEBUG( "In execute()" ); - - //============================================================================= - // Fill the B-physics TAG word ================================================ - //============================================================================= - - // The B-physics word (32 bits) - unsigned int bphysWord = 0x0; - - // Finally write the B-physics word to the TAG file - bphysTagColl.insert(BPhysAttributeNames[0],bphysWord); - - return StatusCode::SUCCESS; -} - -/////////////////////////////////////////////////////////////////////////////// - -StatusCode BPhysTagTool::finalize() { - - ATH_MSG_DEBUG( "In finalize()" ); - - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/BPhys/BPhysTagTools/src/components/BPhysTagTools_entries.cxx b/PhysicsAnalysis/BPhys/BPhysTagTools/src/components/BPhysTagTools_entries.cxx deleted file mode 100644 index b0e34a82c7f6c009b6435ee65589b6feb6797768..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/BPhys/BPhysTagTools/src/components/BPhysTagTools_entries.cxx +++ /dev/null @@ -1,6 +0,0 @@ -#include "BPhysTagTools/BPhysTagTool.h" - - -DECLARE_COMPONENT( BPhysTagTool ) - - diff --git a/PhysicsAnalysis/D2PDMaker/python/D2PDFlags.py b/PhysicsAnalysis/D2PDMaker/python/D2PDFlags.py index f388f6d054cfc74b7df8bb481b17696986e4927a..3aac061de773ebdbf6ac424ee77b166e69481592 100644 --- a/PhysicsAnalysis/D2PDMaker/python/D2PDFlags.py +++ b/PhysicsAnalysis/D2PDMaker/python/D2PDFlags.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration ##============================================================================= ## Name: D2PDFlags @@ -9,7 +9,6 @@ ## Description: Here, all neccessary job flags for the D2PDMaker ## are defined. ## -## $Id: D2PDFlags.py,v 1.2 2009/04/16 08:39:22 kkoeneke Exp $ ##============================================================================= __doc__ = """Here, all neccessary job flags for the D2PDMaker are defined.""" @@ -266,21 +265,6 @@ class WriteDAOD_JPSIHSG2Stream(JobProperty): jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_JPSIHSG2Stream) listAODtoD2PD.append(WriteDAOD_JPSIHSG2Stream.StreamName) -class WriteDAOD_HSG1Stream(JobProperty): - """Produce DAOD_HSG1""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "DAOD_HSG1" - FileName = "" - DPDMakerScript = "HSG1DPDUtils/DAOD_HSG1.py" - ApplyThinning = True - ApplySlimming = True - CreateControlPlots = False - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_HSG1Stream) -listAODtoD2PD.append(WriteDAOD_HSG1Stream.StreamName) - class WriteDAOD_HWWStream(JobProperty): """Produce DAOD_HWW""" statusOn = True diff --git a/PhysicsAnalysis/D2PDMaker/share/DAOD_SUSYEGamma.py b/PhysicsAnalysis/D2PDMaker/share/DAOD_SUSYEGamma.py deleted file mode 100644 index ffbc73eaedd324fafd61ba703e2f66e708b977d9..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/DAOD_SUSYEGamma.py +++ /dev/null @@ -1,50 +0,0 @@ -##Creation: George Redlinger & David Cote, September 2010 -##This file defines the SUSYEGAMMA stream and filters instances -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -#==================================================================== -# Define the particle and event selections -#==================================================================== -# from D2PDMaker.SUSYFilters import SetupEGammaStreamFilters -# acceptAlgs=SetupEGammaStreamFilters(topSequence) -from SUSYD3PDMaker.SUSYTriggerFilters import SetupSUSYTriggerFilters -acceptAlgs=SetupSUSYTriggerFilters(topSequence) - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -from D2PDMaker.D2PDHelpers import buildFileName -from D2PDMaker.D2PDFlags import D2PDFlags -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -fileName = buildFileName( D2PDFlags.WriteDAOD_SUSYEGammaStream ) -streamName = D2PDFlags.WriteDAOD_SUSYEGammaStream.StreamName -SUSYEGammaStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -SUSYEGammaStream.AcceptAlgs( acceptAlgs ) - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [] -excludeList = list(set(excludeList)) # This removes dublicates from the list -dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# You need to add your newly created output containers from above to the output stream -SUSYEGammaStream.AddItem( ['CompositeParticleContainer#*'] ) -SUSYEGammaStream.AddItem( ['INav4MomLinkContainer#*'] ) - - - - diff --git a/PhysicsAnalysis/D2PDMaker/share/DAOD_SUSYJets.py b/PhysicsAnalysis/D2PDMaker/share/DAOD_SUSYJets.py deleted file mode 100644 index d66a63fb2f9d54dbc941ca504a07de5d751e4081..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/DAOD_SUSYJets.py +++ /dev/null @@ -1,49 +0,0 @@ -##Creation: George Redlinger & David Cote, September 2010 -##This file defines the SUSYJETS stream and filters instances -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -#==================================================================== -# Define the particle and event selections -#==================================================================== -#from D2PDMaker.SUSYFilters import SetupJetsStreamFilters -#acceptAlgs=SetupJetsStreamFilters(topSequence) -from SUSYD3PDMaker.SUSYTriggerFilters import SetupSUSYTriggerFilters -acceptAlgs=SetupSUSYTriggerFilters(topSequence) - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -from D2PDMaker.D2PDHelpers import buildFileName -from D2PDMaker.D2PDFlags import D2PDFlags -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -fileName = buildFileName( D2PDFlags.WriteDAOD_SUSYJetsStream ) -streamName = D2PDFlags.WriteDAOD_SUSYJetsStream.StreamName -SUSYJetStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -SUSYJetStream.AcceptAlgs( acceptAlgs ) - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [] -dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# You need to add your newly created output containers from above to the output stream -SUSYJetStream.AddItem( ['CompositeParticleContainer#*'] ) -SUSYJetStream.AddItem( ['INav4MomLinkContainer#*'] ) - - - - diff --git a/PhysicsAnalysis/D2PDMaker/share/DAOD_SUSYMuons.py b/PhysicsAnalysis/D2PDMaker/share/DAOD_SUSYMuons.py deleted file mode 100644 index c969ef3a9f7e6ac9da0da873b63aa4b1c97173c7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/DAOD_SUSYMuons.py +++ /dev/null @@ -1,50 +0,0 @@ -##Creation: George Redlinger & David Cote, September 2010 -##This file defines the SUSYMUONS stream and filters instances -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -#==================================================================== -# Define the particle and event selections -#==================================================================== -#from D2PDMaker.SUSYFilters import SetupMuonsStreamFilters -#acceptAlgs=SetupMuonsStreamFilters(topSequence) -from SUSYD3PDMaker.SUSYTriggerFilters import SetupSUSYTriggerFilters -acceptAlgs=SetupSUSYTriggerFilters(topSequence) - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -from D2PDMaker.D2PDHelpers import buildFileName -from D2PDMaker.D2PDFlags import D2PDFlags -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -fileName = buildFileName( D2PDFlags.WriteDAOD_SUSYMuonsStream ) -streamName = D2PDFlags.WriteDAOD_SUSYMuonsStream.StreamName -SUSYMuonStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -SUSYMuonStream.AcceptAlgs( acceptAlgs ) - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [] -excludeList = list(set(excludeList)) # This removes dublicates from the list -dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# You need to add your newly created output containers from above to the output stream -SUSYMuonStream.AddItem( ['CompositeParticleContainer#*'] ) -SUSYMuonStream.AddItem( ['INav4MomLinkContainer#*'] ) - - - - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/CMakeLists.txt b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/CMakeLists.txt index 3e60bdb8989e9e724aad91e5d47239abd89d0bff..b657894d93ca82f75c93a5067f54f955ccde2d95 100644 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/CMakeLists.txt +++ b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/CMakeLists.txt @@ -1,13 +1,9 @@ -################################################################################ -# Package: D3PDMakerConfig -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( D3PDMakerConfig ) # Install files from the package: -atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) atlas_install_joboptions( share/*.py ) -atlas_install_runtime( test/D3PDMakerConfig_TestConfiguration.xml ) atlas_install_scripts( scripts/D3PDSizeSummary.py ) - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonD3PDMakerFlags.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonD3PDMakerFlags.py deleted file mode 100644 index bb0966bdc77463308ce6b076467d7dd6dc3db841..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonD3PDMakerFlags.py +++ /dev/null @@ -1,652 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# -## @file D3PDMakerConfig/python/CommonD3PDMakerFlags.py -## author Lei Zhou <lei.zhou@cern.ch> -## brief commond flags for Common D3PD -# - -"""Flags for Common D3PD making. -""" - -from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer -from AthenaCommon.JobProperties import jobproperties - -class CommonD3PDMakerFlags (JobPropertyContainer): - """Flags for Common D3PD making - """ - -jobproperties.add_Container (CommonD3PDMakerFlags) - -class electronInclude (JobProperty): - """electron include list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(electronInclude) - -class electronExclude (JobProperty): - """electron exclude list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = ['TruthClassification','Truth', 'JetMatch',] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(electronExclude) - -class photonInclude (JobProperty): - """photon include list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(photonInclude) - -class photonExclude (JobProperty): - """photon exclude list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = ['TruthClassification','Truth','JetCollection','TrueJetKinematics', 'JetKinematics', 'TruthJetKinematics'] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(photonExclude) - -class muonInclude (JobProperty): - """muon include list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(muonInclude) - -class muonExclude (JobProperty): - """muon exclude list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = ['Truth'] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(muonExclude) - -class doCaloMuon (JobProperty): - """If true, put calo muon information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doCaloMuon) - -class tauInclude (JobProperty): - """tau include list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = ['TrkOO'] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(tauInclude) - -class tauExclude (JobProperty): - """tau exclude list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(tauExclude) - -class smallJetLevel (JobProperty): - """smallJet level""" - statusOn = True - allowedTypes = ['int'] - StoredValue = 3 -jobproperties.CommonD3PDMakerFlags.add_JobProperty(smallJetLevel) - -class smallJetInclude (JobProperty): - """smallJet include""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(smallJetInclude) - -class smallJetExclude (JobProperty): - """smallJet exclude""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(smallJetExclude) - -class towerJetLevel (JobProperty): - """towerJet level""" - statusOn = True - allowedTypes = ['int'] - StoredValue = 2 -jobproperties.CommonD3PDMakerFlags.add_JobProperty(towerJetLevel) - -class eljetInclude (JobProperty): - """electron jet include""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(eljetInclude) - -class largeJetLevel (JobProperty): - """ largeJet level""" - statusOn = True - allowedTypes = ['int'] - StoredValue = 4 -jobproperties.CommonD3PDMakerFlags.add_JobProperty(largeJetLevel) - -class largeJetInclude (JobProperty): - """largeJet include""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(largeJetInclude) - - -class missingEtInclude (JobProperty): - """missingEt include list (only for not doAdditionalMissingET case)""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(missingEtInclude) - -class missingEtExclude (JobProperty): - """missingEt exclude list (only for not doAdditionalMissingET case)""" - statusOn = True - allowedTypes = ['list'] - StoredValue = ['MET_Phi', 'MET_Et'] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(missingEtExclude) - -class doHadronicMissingEt (JobProperty): - """hardonic missing Et""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doHadronicMissingEt) - -class hadronicMissingEtLevel (JobProperty): - """hardronic missing Et level""" - statusOn = True - allowedTypes = ['int'] - StoredValue = 0 -jobproperties.CommonD3PDMakerFlags.add_JobProperty(hadronicMissingEtLevel) - -class hadronicMissingEtInclude (JobProperty): - """hadronic missing Et include list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(hadronicMissingEtInclude) - -class hadronicMissingEtExclude (JobProperty): - """hadronic missing Et exclude list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(hadronicMissingEtExclude) - -class truthHadronicMissingEtInclude (JobProperty): - """truth hadronic missing Et include list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(truthHadronicMissingEtInclude) - -class doAdditionalMissingET (JobProperty): - """If true, put some additional Missing ET in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doAdditionalMissingET) - -class doMissingETGoodness (JobProperty): - """If true, put MissingETGoodness in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doMissingETGoodness) - -class doTrack (JobProperty): - """If true, put track in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doTrack) - -class doClusterHad (JobProperty): - """If true, put CaloCalTopoCluster in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doClusterHad) - -class doClusterEM (JobProperty): - """If true, put CaloTopoCluster in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doClusterEM) - -class doEventShape (JobProperty): - """If true, put EventShape in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doEventShape) - -class doMuonSpShower2 (JobProperty): - """If true, put MuonSpShower in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doMuonSpShower2) - -class doTruthJet (JobProperty): - """If true, put truth jet in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doTruthJet) - -class truthJetLevel (JobProperty): - """truthJet include list """ - statusOn = True - allowedTypes = ['int'] - StoredValue = 0 -jobproperties.CommonD3PDMakerFlags.add_JobProperty(truthJetLevel) - -class truthJetInclude (JobProperty): - """truthJet include list """ - statusOn = True - allowedTypes = ['list'] - StoredValue = [] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(truthJetInclude) - -class truthJetExclude (JobProperty): - """truthJet exclude list""" - statusOn = True - allowedTypes = ['list'] - StoredValue = ['KineMoments','child_TruthParticleChildAssociation','parent_TruthParticleParentAssociation'] -jobproperties.CommonD3PDMakerFlags.add_JobProperty(truthJetExclude) - -class doRecJet (JobProperty): - """If true, put jet reconstreucted on-the-fly.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doRecJet) - -class doRecJetOnlyAdditional (JobProperty): - """If true, make only additional jet with on the fly (not re-reconstruct jets in ESD/AOD)""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doRecJetOnlyAdditional) - -class doLCTopoCBJet (JobProperty): - """If true, put LCTopoCB jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doLCTopoCBJet) - -class doBTagging (JobProperty): - """If true, run BTagging """ - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doBTagging) - -class doRecMET (JobProperty): - """If true, put MET reconstreucted on-the-fly.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doRecMET) - -class doRecTruthJet (JobProperty): - """If true, put additional truth jet in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doRecTruthJet) - -class doJVFFix (JobProperty): - """If true, do JVFFix for original jets""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doJVFFix) - -class doHR (JobProperty): - """If true, put HadronicRecoil info.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doHR) - -class doSMQCD (JobProperty): - """If true, put HadronicRecoil info.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doSMQCD) - -class doJETMET (JobProperty): - """If true, put HadronicRecoil info.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doJETMET) - -class doClusterHad (JobProperty): - """If true, put CaloCalTopoCluster in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doClusterHad) - -class doClusterEM (JobProperty): - """If true, put CaloTopoCluster in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doClusterEM) - -class doSoftQCD (JobProperty): - """if true, write softQCD info into D3PD""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doSoftQCD) - - -# sth QCD group likes to add -class doTruthPileupJet (JobProperty): - """If true, put additional truth jet in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doTruthPileupJet) - -class doTrackJet (JobProperty): - """If true, put Track jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doTrackJet) - -class doTopoJet (JobProperty): - """If true, put topo jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doTopoJet) - -class doTopoEMJet (JobProperty): - """If true, put TopoEM jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doTopoEMJet) - -class doTopoEMLowPtJet (JobProperty): - """If true, put TopoEMLowPt jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doTopoEMLowPtJet) - -class doTowerJet (JobProperty): - """If true, put Tower jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doTowerJet) - -class doTowerEMJet (JobProperty): - """If true, put TowerEM jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doTowerEMJet) - -class doGhostJet (JobProperty): - """If true, put ghost jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doGhostJet) - -class doLCTopoJet (JobProperty): - """If true, put LCTopo jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doLCTopoJet) - -class doLCTopoLowPtJet (JobProperty): - """If true, put LCTopoLowPt jet information in D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doLCTopoLowPtJet) - -class doRecalibJet (JobProperty): - """If true, apply re-calibartion for the default jets""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doRecalibJet) - -class doJVFFix (JobProperty): - """If true, do JVFFix for original jets""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doJVFFix) - -class doGSCFix (JobProperty): - """If true, do GSCFix for original jets""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doGSCFix) - -class doCopyJetMoments (JobProperty): - """If true, copy the jet moments from AOD""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = True -jobproperties.CommonD3PDMakerFlags.add_JobProperty(doCopyJetMoments) - -# end of stuff for QCD group - -CommonD3PDMakerFlags = jobproperties.CommonD3PDMakerFlags - -def CommonD3PDMakerFlagsSetDefaults(): - flags = CommonD3PDMakerFlags - flags.electronInclude.set_Value(['TrkFitQuality','Vertex', 'Isolation_500MeV','MaxEcell','Iso','IsoPtCorrected','PAU','PAUVariables','Pointing','ClusterKin','HadLeakage','Layer1Shape','Layer2Shape','Samplings', 'EMTrackFitDetailsRefit', 'EMTrackFitDetailsRefitCov', 'miniiso10', 'miniiso15']) - - flags.photonInclude.set_Value(['MaxEcell','Pointing','EMTrackFitDetailsBrem','EMTrackFitDetailsRefit', 'UDTruthFlags']) - - flags.muonInclude.set_Value(["L1InfoIndex","Isolation_500MeV","Isolation_elstyletracks", "miniiso10", "miniiso15", "ParametersAtPV", "IDTrackDiagonalCovarianceAtPV", "PrimaryTrackDiagonalCovarianceAtPV"]) - - flags.tauInclude.set_Value(['TauLeadTrack', 'OtherTrk00', 'OtherTrkTJVA', 'OtherTrkPV', 'OtherIDHits', 'TauCalcVars']) - - from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys - from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags - #flags.smallJetInclude.set_Value([JetTagD3PDKeys.BTagWeightsBlockName(), JetTagD3PDKeys.TruthInfoBlockName(), - # JetTagD3PDKeys.JetFitterCharmTagInfoBlockName(), - # JetTagD3PDKeys.SVInfoPlusBlockName(),JetTagD3PDKeys.SV0InfoPlusBlockName(), - # JetTagD3PDKeys.JetFitterInfoBaseBlockName(),JetTagD3PDKeys.JetFitterCombInfoBaseBlockName(), - # JetTagD3PDKeys.SoftMuonInfoMuonBlockName(),JetTagD3PDKeys.JetFitterCharmInfoBaseBlockName(), - # JetTagD3PDKeys.MultiSVInfoPlusBlockName(), - # JetTagD3PDKeys.IP2DInfoBaseBlockName(),JetTagD3PDKeys.IP2DIPInfoBaseBlockName(), - # JetTagD3PDKeys.IP3DInfoBaseBlockName(),JetTagD3PDKeys.IP3DIPInfoBaseBlockName(), - # JetTagD3PDKeys.SV1InfoBaseBlockName(),JetTagD3PDKeys.SV2InfoBaseBlockName(), - # JetTagD3PDKeys.JetFitterTagInfoBlockName(),JetTagD3PDKeys.SoftMuonChi2InfoMuonBlockName(), - # JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName(),JetTagD3PDKeys.IPInfoPlusTrackBlockName(), - # JetTagD3PDKeys.SVInfoPlusTrackAssocBlockName(), - # JetTagD3PDFlags.StdInfoInclude(), - # 'Uncertainties','BeamBackground','ConstituentScale','Constituents','Samplings','AssocTrackCont', - # 'JetVertexFraction','JVtx','TracksMoments', - # 'Kinematics','DQMoments','EMFraction','JESMoments','EMScale','CaloQual', - # 'JetRoIword','CaloClusterNavigableConstituentAssociationTool','TrackAssocblockindex','JetLabel', - # 'Special','TrackMF']) - flags.eljetInclude.set_Value(['AssocTrackCont', - JetTagD3PDKeys.BTagWeightsBlockName(), - 'JetVertexFraction', 'JVtx', JetTagD3PDKeys.TruthInfoBlockName()]) - - #tmpMEtInclude = CommonD3PDMakerFlagsSetMEtInclude() - #flags.missingEtInclude.set_Value(tmpMEtInclude) - - #tmpMEtExclude = CommonD3PDMakerFlagsSetMEtExclude() - #flags.missingEtExclude.set_Value(tmpMEtExclude) - - tmpHadronicMEtInclude = CommonD3PDMakerFlagsSetHadronicMEtInclude() - flags.hadronicMissingEtInclude.set_Value(tmpHadronicMEtInclude) - - tmpTruthHadronicMEtInclude = CommonD3PDMakerFlagsSetTruthHadronicMEtInclude() - flags.truthHadronicMissingEtInclude.set_Value(tmpTruthHadronicMEtInclude) - - -def CommonD3PDMakerFlagsSetMEtInclude(): - - tmpMissingEtInclude = [] - - tmpMissingEtInclude += ['MET_MuonBoy','MET_Track','MET_RefGamma','MET_RefEle','MET_RefJet', - 'MET_RefMuon','MET_RefMuon_Track','MET_RefTau','MET_RefFinal','MET_RefFinal_em', - 'MET_SoftJets','MET_SoftJets_em','MET_Cryo','MET_CellOut','MET_CellOut_Eflow', - 'MET_Muid','MET_Calo_Samplings', 'MET_Staco','MET_LocHadTopoObj', #'MET_Truth_Int', - 'MET_Muon','MET_Final','MET_Topo_Samplings','MET_Topo_Regions', - 'MET_MuonBoy_Track','MET_MuonBoy_Spectro', #'MET_LocHadTopo','MET_Topo', - 'MET_LocHadTopo_Samplings','MET_LocHadTopo_Regions',#'MET_Truth_NonInt', - 'MET_RefMuon_Staco','MET_RefMuon_Muid','MET_RefEle_em','MET_RefJet_em','MET_RefMuon_em', - 'MET_RefMuon_Track_em','MET_RefGamma_em','MET_RefTau_em','MET_CellOut_em','MET_Muon_Isol_Staco', # include met_region since here? - 'MET_Muon_NonIsol_Staco','MET_Muon_Total_Staco','MET_Muon_Isol_Muid','MET_Muon_NonIsol_Muid', - 'MET_Muon_Total_Muid','MET_RefJet_JVF','MET_RefJet_JVFCut','MET_CellOut_Eflow_STVF', - 'MET_CellOut_Eflow_JetArea','MET_CellOut_Eflow_JetAreaJVF','MET_CellOut_Eflow_JetAreaRhoEta5JVF', - 'MET_RefMuon_Track_Staco','MET_RefMuon_Track_Muid','MET_TopoObj', - 'MET_CellOut_Eflow_JetAreaJVF_LCW_pt20','MET_CellOut_Eflow_JetAreaRhoEta5JVF_LCW_pt20', - 'MET_RefMuon_LCW_pt20','MET_RefMuon_Muid_LCW_pt20','MET_RefMuon_Track_Muid_LCW_pt20', - 'MET_CellOut_Eflow_JetAreaJVF_LCW_NI_eflow6','MET_CellOut_Eflow_JetAreaRhoEta5JVF_LCW_NI_eflow6', - 'MET_RefMuon_LCW_NI_eflow6','MET_RefMuon_Track_Staco_LCW_NI_eflow6','MET_RefEle_em_jetelepp', - 'MET_RefJet_em_jetelepp','MET_SoftJets_em_jetelepp','MET_CellOut_em_jetelepp', - 'MET_Muon_Isol_Muid_em_jetelepp','MET_Muon_NonIsol_Muid_em_jetelepp','MET_Muon_Total_Muid_em_jetelepp', - 'MET_RefGamma_em_jetelepp','MET_RefFinal_em_jetelepp','MET_Muon_Isol_Muons_em_jetelepp', - 'MET_Muon_NonIsol_Muons_em_jetelepp','MET_Muon_Total_Muons_em_jetelepp','MET_RefMuon_STVF', - 'MET_RefFinal_STVF_AntiKt4LCTopoJets_tightpp_ExclRefCalib','MET_RefMuon_STVF_top', - 'METComposition'] - - customMETList = ['MET_RefFinal', 'MET_RefGamma', 'MET_RefEle', 'MET_RefTau', 'MET_RefJet', 'MET_CellOut', - 'MET_SoftJets', 'MET_RefMuon_Staco','MET_Muon_Total_Staco','MET_Muon_Total_Muid', - 'MET_Muon_Isol_Muid', 'MET_Muon_Isol_Muons', 'MET_Muon_NonIsol_Muons', 'MET_Muon_Total_Muons', - 'MET_Cryo', 'MET_RefJet_JVF', 'MET_RefJet_JVFCut', 'MET_CellOut_Eflow_STVF', - 'MET_Muon_NonIsol_Muid', 'MET_CellOut_Eflow_JetArea', 'MET_RefMuon_STVF', - 'MET_Muon_Isol_Staco', 'MET_Muon_NonIsol_Staco', 'Muon_Total_Staco', - 'MET_RefMuon_Track', 'MET_RefMuon_Track_StacoMET_CellOut','MET_CellOut_Track', - 'MET_CellOut_TrackPV', 'MET_CellOutCorr'] - customMETConf = ['BDTMedium','AntiKt4LCTopo_tightpp', 'AntiKt4LCTopoJets_tightpp', - 'AntiKt4LCTopoJets_tightpp_photonTightAR', 'AntiKt4LCTopoJets_mediumpp_photonTightAR', - 'AntiKt4LCTopoJets_tightpp_photonLooseAR', 'AntiKt4LCTopoJets_mediumpp', - 'AntiKt4LCTopoJets_loosepp', 'AntiKt4LCTopoJets_tightpp_ExclRefCalib', - 'STVF', 'STVF_top', 'LCW_NI_eflow6', 'LCW_pt20', 'STVF_LCW_pt20', 'STVF_LCW_NI_eflow6'] - for conf in customMETConf: - for item in customMETList: - if conf == 'STVF' and item == 'MET_RefFinal': # avoid duplicate ? - continue - pass - tmpMissingEtInclude += [item+'_'+conf] - - custom_parts_prefix = ['MET_RefGamma', 'MET_RefFinal', 'MET_RefJet', 'MET_RefEle', 'MET_Muon_Total_Staco', - 'MET_Muon_Isol_Staco', 'MET_Muon_NonIsol_Staco', 'MET_CellOut','MET_Muon_Isol_Muid', - 'MET_Muon_NonIsol_Muid', 'MET_Muon_Total_Muid', 'MET_Track', 'MET_SoftJets', - 'MET_RefMuon','MET_MuonBoy', 'MET_CellOut_Track','MET_CellOut_TrackPV','MET_CellOutCorr'] - - custom_parts_suffix = ['_Simplified20', '_Egamma10NoTau_STVF', '_LooseEgamma10NoTau', #'_Egamma10NoTau', - '_Egamma10NoTauTightPhotonRef', #'_Egamma10NoTauLoosePhotonRef', - '_Egamma10NoTauLoosePhotonEm', '_LooseEgamma10NoTau_STVF', - '_Egamma10NoTauTightPhotonRef_STVF', '_Egamma10NoTauLoosePhotonRef_STVF', - '_Egamma10NoTauLoosePhotonEm_STVF'] - for custom_pre in custom_parts_prefix: - for custom_suf in custom_parts_suffix: - tmpMissingEtInclude += [custom_pre + custom_suf] - - #custom_parts_pre_2 = ['MET_Egamma10LooseTau', 'MET_LooseEgamma10NoTauLoosePhotonRef'] # from SUSY - #custom_parts_ref_2 = ['RefGamma', 'RefFinal', 'RefJet', 'RefEle', 'Muon_Total_Staco', - # 'Muon_Isol_Staco', 'Muon_NonIsol_Staco', 'CellOut', 'CellOut_Eflow', 'Muon_Isol_Muid', - # 'Muon_NonIsol_Muid', 'Muon_Total_Muid', 'Track','RefFinal_STVF', 'CellOut_Eflow_STVF', - # 'CellOut_Eflow_JetArea', 'RefJet_JVF', 'RefJet_JVFCut', 'CellOut_Eflow_JetAreaJVF', - # 'CellOut_Eflow_JetAreaRhoEta5JVF', 'SoftJets', 'RefMuon', 'MuonBoy', 'RefMuon_Staco', - # 'RefMuon_Muid', 'RefMuon_Track', 'RefMuon_Track_Staco', 'RefMuon_Track_Muid', - # 'RefTau'] - #for pre_2 in custom_parts_pre_2: - # for ref_2 in custom_parts_ref_2: - # tmpMissingEtInclude += [pre_2 + '_' + ref_2] - - customTopMET_pre = ["MET_RefEle","MET_RefJet","MET_SoftJets","MET_CellOut","MET_Muon_Isol_Muid", - "MET_Muon_NonIsol_Muid","MET_Muon_Total_Muid","MET_RefGamma","MET_RefFinal", - "MET_Muon_Isol_Muons","MET_Muon_NonIsol_Muons","MET_Muon_Total_Muons"] - customTopMET_suf = ['_em_tightpp','_em_mediumpp','_em_loosepp','_em_jetele','_em_jetelepp' - '_em_tightpp_photonTightAR','_em_mediumpp_photonTightAR', - '_em_tightpp_photonLooseAR'] - for top_pre in customTopMET_pre: - for top_suf in customTopMET_suf: - tmpMissingEtInclude += [top_pre + top_suf] - - - return tmpMissingEtInclude - - -def CommonD3PDMakerFlagsSetMEtExclude(): - tmpMissingEtExclude = [] - tmpMissingEtExclude += ['MET_RefFinal_Comps','MET_Calib_Comps','MET_CellOut_Comps', - 'MET_CorrTopo_Comps','MET_Cryo_Comps','MET_CryoCone_Comps', - 'MET_Final_Comps','MET_LocHadTopo_Comps', - 'MET_LocHadTopoObj_Comps','MET_Muid_Comps', - 'MET_Muid_Spectro_Comps','MET_Muid_Track_Comps', - 'MET_MuonBoy_Comps','MET_MuonBoy_Spectro_Comps', - 'MET_MuonBoy_Track_Comps','MET_MuonMuid_Comps', - 'MET_Muon_Comps','MET_Muon_Isol_Muid_Comps', - 'MET_Muon_Isol_Staco_Comps','MET_Muon_NonIsol_Muid_Comps' - 'MET_Muon_NonIsol_Staco_Comps','MET_Muon_Total_Muid_Comps', - 'MET_Muon_Total_Staco_Comps','MET_RefEle_Comps', - 'MET_RefEle_em_Comps','MET_RefGamma_Comps', - 'MET_RefGamma_em_Comps','MET_RefJet_Comps', - 'MET_RefJet_em_Comps','MET_RefMuon_Comps', - 'MET_RefMuon_Muid_Comps','MET_RefMuon_Staco_Comps', - 'MET_RefMuon_Track_Muid_Comps','MET_RefMuon_Track_Staco_Comps', - 'MET_RefMuon_Track_em_Comps','MET_RefMuon_Track_Comps', - 'MET_RefMuon_em_Comps','MET_RefTau_Comps', - 'MET_RefTau_em_Comps','MET_SoftJets_Comps', - 'MET_SoftJets_em_Comps','MET_Topo_Comps', - 'MET_TopoObj_Comps','MET_Track_Comps','MET_Comps'] - - return tmpMissingEtExclude - - - - -def CommonD3PDMakerFlagsSetHadronicMEtInclude(): - sgkeyList = ['RoughRecoil_15', 'ueCorrection_15', 'RefinedRecoil_15', 'MET_HR_15', - 'RoughRecoil_Eflow_15', 'ueCorrection_Eflow_15', 'RefinedRecoil_Eflow_15', 'MET_HR_Eflow_15', - 'RoughRecoil_track_15', 'ueCorrection_track_15', 'RefinedRecoil_track_15', 'MET_HR_track_15', - 'RoughRecoil_20', 'ueCorrection_20', 'RefinedRecoil_20', 'MET_HR_20', - 'RoughRecoil_track_20', 'ueCorrection_track_20', 'RefinedRecoil_track_20', 'MET_HR_track_20', - 'RoughRecoil_clusNoTrack_20', 'ueCorrection_clusNoTrack_20', 'RefinedRecoil_clusNoTrack_20', 'MET_HR_clusNoTrack_20', - 'RoughRecoil_Eflow_20', 'ueCorrection_Eflow_20', 'RefinedRecoil_Eflow_20', 'MET_HR_Eflow_20', - 'RoughRecoil_25', 'ueCorrection_25', 'RefinedRecoil_25', 'MET_HR_25', - 'RoughRecoil_Eflow_25', 'ueCorrection_Eflow_25', 'RefinedRecoil_Eflow_25', 'MET_HR_Eflow_25', - 'RoughRecoil_track_25', 'ueCorrection_track_25', 'RefinedRecoil_track_25', 'MET_HR_track_25'] - return sgkeyList - - -def CommonD3PDMakerFlagsSetTruthHadronicMEtInclude(): - truthSgkeyList = ['RoughRecoil_TruthLep_15', 'ueCorrection_TruthLep_15', 'RefinedRecoil_TruthLep_15', - 'RoughRecoil_TruthLep_Eflow_15', 'ueCorrection_TruthLep_Eflow_15', 'RefinedRecoil_TruthLep_Eflow_15', - 'RoughRecoil_TruthLep_track_15', 'ueCorrection_TruthLep_track_15', 'RefinedRecoil_TruthLep_track_15', - 'RoughRecoil_TruthLep_20', 'ueCorrection_TruthLep_20', 'RefinedRecoil_TruthLep_20', - 'RoughRecoil_TruthLep_Eflow_20', 'ueCorrection_TruthLep_Eflow_20', 'RefinedRecoil_TruthLep_Eflow_20', - 'RoughRecoil_TruthLep_track_20', 'ueCorrection_TruthLep_track_20', 'RefinedRecoil_TruthLep_track_20', - 'RoughRecoil_TruthLep_25', 'ueCorrection_TruthLep_25', 'RefinedRecoil_TruthLep_25', - 'RoughRecoil_TruthLep_Eflow_25', 'ueCorrection_TruthLep_Eflow_25', 'RefinedRecoil_TruthLep_Eflow_25', - 'RoughRecoil_TruthLep_track_25', 'ueCorrection_TruthLep_track_25', 'RefinedRecoil_TruthLep_track_25'] - return truthSgkeyList - - - - - - - - - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonGroomedJetsConfig.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonGroomedJetsConfig.py deleted file mode 100644 index dc7224e6bbcb20924242403643d45a602a67d1e1..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonGroomedJetsConfig.py +++ /dev/null @@ -1,155 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -import copy - -def getGroomedJetsConfig(): - - dictsConf = [] - - GroomedDictsTrimming = [ - # { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.3, 'PtFrac' : 0.01} }, - # { 'Type' : 'Trimming' , 'args' : {} }, # default ={ 'SmallR' : 0.3, 'PtFrac' : 0.03} }, - #{ 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.3, 'PtFrac' : 0.05, 'SaveSubjets' : True } }, - { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.3, 'PtFrac' : 0.05, 'SaveSubjets' : True, 'AreaCorr': True } }, - - # { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.2, 'PtFrac' : 0.01} }, - # { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.2, 'PtFrac' : 0.03} }, - # { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.2, 'PtFrac' : 0.05} } - ] - - GroomedDictsFiltering = [ - #{ 'Type' : 'BDRSFiltering', 'args' : { 'minSplitR' : 0., 'massFraction' : 0.20 } }, - #{ 'Type' : 'BDRSFiltering', 'args' : { 'minSplitR' : 0., 'massFraction' : 0.33 } }, - { 'Type' : 'BDRSFiltering', 'args' : { 'minSplitR' : 0., 'massFraction' : 0.67, 'SaveSubjets' : True } } - ] - - GroomedDictsPruning = [ - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 0.5, 'Zcut' : 0.05 } }, - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 0.5, 'Zcut' : 0.10 } }, - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 0.5, 'Zcut' : 0.15 } }, - - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 1., 'Zcut' : 0.05 } }, - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 1., 'Zcut' : 0.10 } }, - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 1., 'Zcut' : 0.15 } } - ] - - # not needed anymore - #GroomedDictsKtSubJets = [ { 'Type' : 'KtSubJets' ,'args' : {} } ] # default = { 'NSubJets' : 3 } } ] - - -#### AntiKt R=1.0 #### - - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 1.0, - 'JetInput' : 'Track', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 1.0, - 'JetInput' : 'Truth', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 1.0, - 'JetInput' : 'LCTopo', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming)] ] - - -#### C/A R=1.2#### - - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'Truth', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsFiltering)] ] - -## - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'Track', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsFiltering)] ] - -## - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'LCTopo', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsFiltering)] ] - -#### AntiKt R=1.2 #### - - #ParentDict = { - # 'JetFinder' : 'AntiKt', - # 'JetdR' : 1.2, - # 'JetInput' : 'Track', - # } - - #dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - #ParentDict = { - # 'JetFinder' : 'AntiKt', - # 'JetdR' : 1.2, - # 'JetInput' : 'Truth', - # } - - #dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - #ParentDict = { - # 'JetFinder' : 'AntiKt', - # 'JetdR' : 1.2, - # 'JetInput' : 'LCTopo', - # } - - #dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - - -#### C/A R=1.0#### - - #ParentDict = { - # 'JetFinder' : 'CamKt', - # 'JetdR' : 1.0, - # 'JetInput' : 'Truth', - # } - - #dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - #ParentDict = { - # 'JetFinder' : 'CamKt', - # 'JetdR' : 1.0, - # 'JetInput' : 'Track', - # } - - #dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - #ParentDict = { - # 'JetFinder' : 'CamKt', - # 'JetdR' : 1.0, - # 'JetInput' : 'LCTopo', - # } - - #dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - - - return dictsConf diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonJSD3PD.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonJSD3PD.py deleted file mode 100644 index ef263a2f7b15c4d871cf75cb361d0e1d1b442740..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonJSD3PD.py +++ /dev/null @@ -1,318 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -from __future__ import print_function - -from JetD3PDMaker.JetD3PDObject import getJetD3PDObject -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from RecExConfig.RecFlags import rec -from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation -from D3PDMakerCoreComps.IndexAssociation import IndexAssociation -from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation -from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation -import JetSubstructureD3PDMaker -from D3PDMakerCoreComps.D3PDObject import make_SG_D3PDObject, make_SGDataVector_D3PDObject -import EventCommonD3PDMaker -from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys -from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags -import JetTagD3PDMaker - - -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -def getJetCollectionD3PDObject(objectname = 'JetCollectionD3PDObject', prefix = 'jet_'): - return make_SG_D3PDObject('JetCollection','','jet_', objectname) - - -def AddUniqueMoments(obj, momlist, theblockname = 'ConfigParams', level = 0): - obj.defineBlock(level, theblockname, JetSubstructureD3PDMaker.JetMomentUniqueFillerTool, Moments = momlist, OutputLevel=3) - -def AddLeptonicInfo(obj, level = 0): - ############ Electron ##### - IndJetElectronAssoc = IndexMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,'el_',level = level, - prefix='Electron_', blockname='elecblockindex', AssociationName='jetsubstructure_electrons', - IndexedMoments=['contained'], IndexedMomentsSuffix = "_E" ) - # IndexedMoments=['X', 'Y', 'Z','MINIISO', 'MINIISO10','DR','X_Prime', 'Y_Prime','Z_Prime', 'DR_Prime', 'contained'] - ############# Muon ######### - IndJetMuonAssoc = IndexMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,'mu_',level = level, - prefix='Muon_', blockname='muonblockindex', AssociationName='jetsubstructure_muons', - IndexedMoments=['contained'], IndexedMomentsSuffix = "_U") - # IndexedMoments=['X', 'Y', 'Z','MINIISO', 'MINIISO10','DR', 'X_Prime', 'Y_Prime','Z_Prime', 'DR_Prime','contained'] - -def AddTruthLeptonicInfo(object, typename='TruthParticle', target='mc_', level=0, extra_list_m=[]): - import TruthD3PDMaker - LeptAssoc = ContainedVectorMultiAssociation \ - (object, - JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool, - 'Lepton_', - blockname=typename+'Leptonblockindex', - level = level, AssociationName='jetsubstructure_truthleptons', IndexedMoments=['contained'] + extra_list_m, IndexedMomentsSuffix = "_L") - genPart = SimpleAssociation(LeptAssoc,TruthD3PDMaker.TruthParticleGenParticleAssociationTool, blockname = 'TruthParticleGenParticleAssociationTool_AddTruthLeptonicInfo') - trupart2 = IndexAssociation (genPart, TruthD3PDMaker.GenParticleTruthParticleAssociationTool, blockname = 'GenParticleTruthParticleAssociationTool_AddTruthLeptonicInfo', - target = 'mc_', - Target = 'mc_') - - -def AddHadronicInfo(obj, additionalMoments = [], theblockname = 'SubjetMomentsHadronic', level=0): - - from JetD3PDMaker import JetMomentFillerTool - obj.defineBlock(level, theblockname, JetMomentFillerTool,Moments= [] + additionalMoments) - -def AddAssocJetsIndex(obj, jetassocname, jettarget, intermediate_names = [], level=0): - - JetAssocTrack = IndexMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,jettarget,level = level, - prefix=jetassocname+'_', - blockname=jetassocname+'blockindex', AssociationName = jetassocname , IntermediateAssociationNames=intermediate_names, OutputLevel=3 ) - -def AddConstitIndex(object, typename='CaloCluster', target='cl_lc_', level=0): - - import EventCommonD3PDMaker - import D3PDMakerCoreComps - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = True, - level = level) - - ConstitAssoc.defineBlock (0, 'ConstitIndex'+typename, D3PDMakerCoreComps.IndexFillerTool, Target = target) - -def AddAssocConstitIndex(object, typename='Analysis::Electron', target='el_', level=0): - import EventCommonD3PDMaker - import D3PDMakerCoreComps - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_'+target, - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = True, - level = level) - ConstitAssoc.defineBlock (0, 'ConstitIndex'+typename, D3PDMakerCoreComps.IndexFillerTool, Target = target) - -def AddConstitTruthIndex(object, typename='TruthParticle', target='mc_', level=0): - - import EventCommonD3PDMaker - import D3PDMakerCoreComps - import TruthD3PDMaker - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = False, - level = level) - - genPart = SimpleAssociation(ConstitAssoc,TruthD3PDMaker.TruthParticleGenParticleAssociationTool) - trupart2 = IndexAssociation (genPart, TruthD3PDMaker.GenParticleTruthParticleAssociationTool, - target = 'mc_', - Target = 'mc_') - - - -def AddBTaggingInfo(obj, level = 0, block_prefix = "my"): - - obj.defineBlock(level,block_prefix+JetTagD3PDKeys.BTagWeightsBlockName(), - JetTagD3PDMaker.JetTagBTagWeightsFillerTool, - prefix=JetTagD3PDKeys.BTagWeightsPrefix(), - TaggerNames=JetTagD3PDFlags.Taggers()) - #addBTagInfoToJetObject(obj,0) - -def AddBTaggingInfoFromSubjets(obj, sj_assoc_name = 'SplitFiltSubjets', sj_prefix = "subjets", level=0): - t = ContainedVectorMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,level = level, prefix= sj_prefix+"_", - blockname='blockbtag'+sj_assoc_name, nrowName = 'nsj', OutputLevel=3, AssociationName=sj_assoc_name, IntermediateAssociationNames=['Parent']) - - #t.defineBlock(0, 'myKinematics', EventCommonD3PDMaker.FourMomFillerTool, WriteE = True) - - AddBTaggingInfo(t, 0, "my"+sj_assoc_name) - -myJSD3PD = [] - -def CommonJSD3PD(jetsToWrite, alg): - - global myJSD3PD - - if not alg: - raise TypeError("alg should be specified!") - - jsD3PD=None - for val in myJSD3PD: - if val[0]==jetsToWrite: - print ("using existing JSD3PD") - jsD3PD=val[1] - break - - if jsD3PD==None: - jsD3PD = JSD3PD_Tool(jetsToWrite) - myJSD3PD += [ (jetsToWrite, jsD3PD) ] - - jsD3PD.addToAlg(alg) - - -class JSD3PD_Tool(object): - - def __init__(self,jetsToWrite): - - self.commonExcludeList = [] #'El02Match','Mu02Match','L1Info','L2Info','EFInfo'] - self.commonIncludeList = ['El02Match','Mu02Match','L1Info','L2Info','EFInfo', 'SubjetMomentsHadronic'] - - MyJetD3PDObject = getJetD3PDObject(objectname='MyJetD3PDObject') - MyGroomedJetD3PDObject = getJetD3PDObject(objectname='MyGroomedJetD3PDObject') - - import re - JetAlgPattern = re.compile(r'^(\D+)(\d{1,2})(\D+)Jets') #assuming standard notation - ars = JetAlgPattern.match(jetsToWrite[0]).groups() - - self.parentJets = ''.join(ars) #remove the 'Jets' at the end - #global self.parentJets - self.groomedJetsList = jetsToWrite[1] - - ## Electron LC cluster overlap map - if ('LCTopo' in self.parentJets): - MyJetAssocD3PDObject = make_SGDataVector_D3PDObject('DataVector<INavigable4Momentum>', 'ElectronAODCollection_CaloCalTopoCluster_jetsubstructure_electrons', 'ElecTopoClusterAssoc_', 'myJetAssocD3PDObject') - AddAssocConstitIndex(MyJetAssocD3PDObject) - AddAssocConstitIndex(MyJetAssocD3PDObject, 'CaloCluster', 'cl_lc_') - #alg += MyJetAssocD3PDObject(0) - - if 'Track' in self.parentJets: - AddConstitIndex(MyGroomedJetD3PDObject, typename='Rec::TrackParticle', target='trk') - AddConstitIndex(MyJetD3PDObject, typename='Rec::TrackParticle', target='trk') - #AddLeptonicInfo(MyJetD3PDObject,level=0) - #AddLeptonicInfo(MyGroomedJetD3PDObject,99) - elif 'Topo' in self.parentJets: - AddConstitIndex(MyGroomedJetD3PDObject) - AddConstitIndex(MyJetD3PDObject) - AddLeptonicInfo(MyJetD3PDObject, level=0) - AddLeptonicInfo(MyGroomedJetD3PDObject,99) - AddAssocJetsIndex(MyJetD3PDObject, 'TrackAssoc', 'trk') - AddAssocJetsIndex(MyGroomedJetD3PDObject, 'TrackAssoc', 'trk') - elif 'Truth' in self.parentJets: - AddConstitTruthIndex(MyJetD3PDObject) - AddConstitTruthIndex(MyGroomedJetD3PDObject) - AddTruthLeptonicInfo(MyJetD3PDObject, level=0) - AddTruthLeptonicInfo(MyGroomedJetD3PDObject, level=0) - - - if 'Track' not in self.parentJets and 'Truth' not in self.parentJets: - AddAssocJetsIndex(MyJetD3PDObject, 'TrackJets', 'jet_' + ars[0] + ars[1] + 'TrackZ_') - if rec.doTruth(): - if self.parentJets == "AntiKt10LCTopo" or self.parentJets == "CamKt12LCTopo": - AddAssocJetsIndex(MyJetD3PDObject, 'TruthJets', 'jet_' + ars[0] + ars[1] + 'Truth_') - else : - AddAssocJetsIndex(MyJetD3PDObject, 'TruthJets', 'jet_' + ars[0] + ars[1] + 'Truth_') - #AddAssocJetsIndex(MyJetD3PDObject, 'TruthJets', 'jet_' + ars[0] + ars[1] + 'Truth_') - - self.JetQualInclude = [] - - if 'Topo' in self.parentJets or 'LCTopo' in self.parentJets: - self.commonIncludeList += ['ConstituentScale', 'EMScale', 'EMFraction', 'JetSamplingsFrac'] #, 'El02Match', 'Mu02Match', 'L1Info', 'L2Info', 'EFInfo'] - AddHadronicInfo(MyJetD3PDObject, ['OriginIndex','nTrk','sumPtTrk','EtaOrigin' , 'PhiOrigin' , 'MOrigin'], theblockname = 'OriginIndexBlock') - AddHadronicInfo(MyGroomedJetD3PDObject, ['EtaOrigin' , 'PhiOrigin' , 'MOrigin' ], theblockname = 'OriginIndexBlock') - - if (self.parentJets == 'AntiKt10LCTopo') or (self.parentJets == 'CamKt12LCTopo'): - AddHadronicInfo(MyJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock') - AddHadronicInfo(MyGroomedJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock') - - self.VtxInclude = [] - - #if 'Topo' in self.parentJets: - # self.VtxInclude += ['JVtx','JetVertexFraction'] - self.VtxInclude += ['JVtx','JetVertexFraction'] - - tmpParentJets = self.parentJets.replace("JS", "") - AddAssocJetsIndex(MyGroomedJetD3PDObject, 'Parent', 'jet_' + tmpParentJets + '_') - for gr in self.groomedJetsList: - AddAssocJetsIndex(MyJetD3PDObject, gr, 'jet_' + tmpParentJets + gr + '_') - - MyGroomedJetCollectionD3PDObject = getJetCollectionD3PDObject(objectname = "MyGroomedJetCollectionD3PDObject") - AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['SmallR','PtFrac', 'NSub'], theblockname = 'TrimConfigMoments', level=99) - AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['NSubjets','ktycut2','massFraction','minRfilt','minSplitR'], theblockname = 'FiltConfigMoments', level = 0) - - AddHadronicInfo(MyGroomedJetD3PDObject, ['CORE_RBB','CORE_RFILT'], theblockname = 'FiltMoments', level=99) - - AddHadronicInfo(MyGroomedJetD3PDObject, ['Tau1','Tau2','Tau3', 'WIDTH', 'SPLIT12', 'SPLIT23', 'SPLIT34', 'ZCUT12', 'ZCUT23', 'ZCUT34','Dip12', 'Dip13', 'Dip23','DipExcl12','PlanarFlow','Angularity','ActiveArea', 'ActiveArea_px', 'ActiveArea_py', 'ActiveArea_pz', 'ActiveArea_e', 'VoronoiArea', 'QW', 'PullMag', 'PullPhi', 'Pull_C00', 'Pull_C01', 'Pull_C10', 'Pull_C11'], theblockname = 'jsObsblock' ) - AddHadronicInfo(MyJetD3PDObject, ['Tau1','Tau2','Tau3', 'WIDTH', 'SPLIT12', 'SPLIT23', 'SPLIT34', 'ZCUT12', 'ZCUT23', 'ZCUT34','Dip12', 'Dip13', 'Dip23','DipExcl12','PlanarFlow','Angularity','ActiveArea','ActiveArea_px', 'ActiveArea_py', 'ActiveArea_pz', 'ActiveArea_e','VoronoiArea', 'QW', 'PullMag', 'PullPhi', 'Pull_C00', 'Pull_C01', 'Pull_C10', 'Pull_C11'], theblockname = 'jsObsblock' ) - - #add area corrected kinematics for the groomed jets - from D3PDMakerConfig.CommonGroomedJetsConfig import getGroomedJetsConfig - dictsConfig = getGroomedJetsConfig() - from D3PDMakerConfig.CommonJSjets import buildName - self.AreaCorr = [] - for dC in dictsConfig: - for l in dC[1]: - if 'AreaCorr' in l['args']: - if l['args']['AreaCorr']: self.AreaCorr.append(buildName(l)) - if (self.AreaCorr) and ((self.parentJets == 'AntiKt10LCTopo') or (self.parentJets == 'CamKt12LCTopo')): - AddHadronicInfo(MyGroomedJetD3PDObject, ['m_areacorrected', 'pt_areacorrected', 'phi_areacorrected','eta_areacorrected', 'm_voronoiareacorrected', 'pt_voronoiareacorrected', 'phi_voronoiareacorrected','eta_voronoiareacorrected', 'm_voronoighostareacorrected', 'pt_voronoighostareacorrected', 'phi_voronoighostareacorrected','eta_voronoighostareacorrected'], theblockname = 'AreaCorrectedMoments', level=99) - - ## in groomedJetsList, subjets name should follow the name of the 'full/composite' jet. - for idx,gr in enumerate(self.groomedJetsList): - ## names are unique - if 'KtSubjets' in gr: - #AddBTaggingInfoFromSubjets(MyGroomedJetD3PDObject, sj_assoc_name = gr, sj_prefix = gr, level = 99) - AddAssocJetsIndex(MyGroomedJetD3PDObject, gr, 'jet_' + tmpParentJets + gr + '_', intermediate_names = ['Parent'], level=99) - elif 'Subjets' in gr and idx != 0 and 'Subjets' not in self.groomedJetsList[idx-1]: - #AddBTaggingInfoFromSubjets(MyGroomedJetD3PDObject, sj_assoc_name = gr, sj_prefix = gr, level = 99) - AddAssocJetsIndex(MyGroomedJetD3PDObject, gr, 'jet_' + tmpParentJets + gr + '_', intermediate_names = ['Parent'], level=99) - if 'LCTopo' in self.parentJets: - AddBTaggingInfoFromSubjets(MyGroomedJetD3PDObject, sj_assoc_name = gr, sj_prefix = gr, level = 99) - elif 'Subjets' in gr: - raise ValueError("Subjets without full composite jet ?") ## not suppose to happen - - self.MyJetD3PDObject = MyJetD3PDObject - self.MyGroomedJetD3PDObject = MyGroomedJetD3PDObject - self.MyGroomedJetCollectionD3PDObject = MyGroomedJetCollectionD3PDObject - if ('LCTopo' in self.parentJets): - self.MyJetAssocD3PDObject = MyJetAssocD3PDObject - - - - def addToAlg(self,alg): - outputJetsName = self.parentJets - if(self.parentJets.find("JS")>-1): - #outputJetsName = self.parentJets.replace("JS", "") - pass - - if ('LCTopo' in self.parentJets) and (not hasattr(alg, 'ElecTopoClusterAssoc_Filler')): - alg += self.MyJetAssocD3PDObject(0) - - jet_suffix = 'Jets' - if 'Subjets' in self.parentJets: - jet_suffix = 'JetsReTagged'# replacing by NewJets - #jet_suffix = 'NewJets' - alg += self.MyJetD3PDObject(0, prefix='jet_' + outputJetsName.replace("JS", "") + '_', sgkey=self.parentJets+jet_suffix, exclude=self.commonExcludeList, include = self.commonIncludeList + self.VtxInclude + self.JetQualInclude + ['elecblockindex','muonblockindex', 'LCJESBlock', 'OriginIndexBlock']) - - for idx,gr in enumerate(self.groomedJetsList): - - kw = {} - includelist = [] - includelist_unique = [] - - if 'Trim' in gr and 'Subjets' not in gr: - includelist_unique += ['TrimConfigMoments', 'blockindex'] - if [x for x in self.AreaCorr if x in gr]: - includelist += ['AreaCorrectedMoments'] - if len(self.groomedJetsList) > idx+1 and 'Subjets' in self.groomedJetsList[idx+1]: - includelist += [self.groomedJetsList[idx+1]+'blockindex'] - #if 'LCTopo' in self.parentJets: - # includelist += ['blockbtag'+self.groomedJetsList[idx+1]] - - elif 'Filt' in gr and 'Subjets' not in gr: - includelist += ['FiltMoments'] - includelist_unique += ['FiltConfigMoments'] - #if len(self.groomedJetsList) > idx+1 and 'Subjets' in self.groomedJetsList[idx+1]: - # includelist += ['blockbtag'+self.groomedJetsList[idx+1], self.groomedJetsList[idx+1]+'blockindex'] - - elif 'Subjets' in gr: - includelist += ['minSplitR'] - if 'LCTopo' in self.parentJets: - includelist += [JetTagD3PDKeys.TruthInfoBlockName(), JetTagD3PDKeys.BTagWeightsBlockName()] - #kw[JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']= "trk" - #kw[JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target']= "trk" - - - alg += self.MyGroomedJetD3PDObject(0, prefix='jet_' + outputJetsName.replace("JS", "") + gr + '_', sgkey=self.parentJets + gr + 'Jets', include = includelist + self.commonIncludeList + ['OriginIndexBlock','FiltMoments','LCJESBlock','minSplitR', 'elecblockindex', 'muonblockindex'],exclude=self.commonExcludeList,**kw) - - alg += self.MyGroomedJetCollectionD3PDObject( 0, prefix='jet_' + outputJetsName.replace("JS", "") + gr + '_config_', sgkey=self.parentJets + gr + 'Jets', include = includelist_unique) - - return diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonJSTrackJets.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonJSTrackJets.py deleted file mode 100644 index c1ba12c4444506abedc1ce46296dc8eb0dca2989..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonJSTrackJets.py +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -############################################################### -# -# JetTrackZClusterTool jobOptions file -# # PhysicsAnalysis/JetEtMissDPDModifier/share/JetTrackZClusterTool_jobOptions.py -# # https://svnweb.cern.ch/trac/atlasoff/browser/PhysicsAnalysis/D3PDMaker/SUSYD3PDMaker/trunk/share/JetTrackZClusterTool_jobOptions.py -#============================================================== - -#-------------------------------------------------------------- -# JetTrackZClusterTool Options -#-------------------------------------------------------------- - -# Import configurable for tool -from JetRecTools.JetRecToolsConf import JetTrackZClusterTool -from JetRec.JetGetters import * -from JetRec.JetRecConf import * - -def createJSTrackJets ( theseq, myjetfinder, myjetdr ): - - # Setup tool so that it can be used - JS_MyJetTrackZClusterTool = JetTrackZClusterTool( "JS_JetTrackZClusterTool_%s%d" % (myjetfinder,myjetdr*10) ) - - JS_MyJetTrackZClusterTool.TrackJetMinMulti = 2 - JS_MyJetTrackZClusterTool.TrackJetMinPt = 50000 # MeV - JS_MyJetTrackZClusterTool.UseVtxSeeding = True - JS_MyJetTrackZClusterTool.DeltaZRange = 10000.0 - JS_MyJetTrackZClusterTool.TrackParticleContainerName = "TrackParticleCandidate" - JS_MyJetTrackZClusterTool.VxContainerName = "VxPrimaryCandidate" - JS_MyJetTrackZClusterTool.OutputLevel = 3 - - #-------------------------------------------------------------- - # TrackSelector Tool Options - #-------------------------------------------------------------- - from AthenaCommon.AppMgr import ToolSvc - from D3PDMakerConfig.CommonTrackJetSeletorTool import GetCachedTrackSelectorTool - if hasattr(ToolSvc, "CachedTrackSelectorTool"): - JS_MyJetTrackZClusterTool.TrackSelector = ToolSvc.CachedTrackSelectorTool - else: - JS_MyJetTrackZClusterTool.TrackSelector = GetCachedTrackSelectorTool() - - #-------------------------------------------------------------- - # JetFinder Tool Options (Anti-Kt) - #-------------------------------------------------------------- - - from JetRec.JetRecConf import JetFastJetFinderTool - myfastfinder = JetFastJetFinderTool("JS_%s%dTrackJetFinder" % (myjetfinder,myjetdr*10)) - - if myjetfinder == 'AntiKt': - myfastfinder.Algorithm = "anti-kt" - elif myjetfinder == 'CamKt': - myfastfinder.Algorithm = "cambridge" - - myfastfinder.Radius = myjetdr - myfastfinder.RecombScheme = "E" - myfastfinder.Strategy = "Best" - myfastfinder.FailIfMisconfigured = True - myfastfinder.Inclusive = True - myfastfinder.CalculateJetArea = False - myfastfinder.StoreNFlipValues = 0 - - ToolSvc += myfastfinder - - # Tell "TrackZClusterTool" to use this tool - JS_MyJetTrackZClusterTool.JetFinder = myfastfinder - - #------------------------------------------------------------- - # Jet Getter - #------------------------------------------------------------- - - JS_TrackZToolList = [JS_MyJetTrackZClusterTool, - JetSignalSelectorTool('JSTZ_JetFinalPtCut',UseTransverseMomentum = True,MinimumSignal= jetFlags.finalMinEt()), - JetSorterTool('JSTZ_JetSorter',SortOrder="ByPtDown") ] - - mytrackzjetgetter = make_StandardJetGetter(myjetfinder, myjetdr,'TrackZ',seq = theseq, allTools = JS_TrackZToolList) - - return mytrackzjetgetter -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonJSjets.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonJSjets.py deleted file mode 100644 index 76ac283e9fea64cefdc5600192882b5b7411e7dd..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonJSjets.py +++ /dev/null @@ -1,437 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -#####Jet Reco ############ - -# Before adding your algorithms to topSequence -from JetRec.JetGetters import * -from JetRec.JetRecFlags import jetFlags -from JetRecTools.JetRecToolsConf import * -from JetRec.JetMomentGetter import add_jetMoments_to_JetAlg, make_JetMomentGetter -from JetRec.JetRecConf import JetSorterTool -from JetMomentTools.JetMomentToolsConf import JetWidthTool -from AthenaCommon.SystemOfUnits import GeV -from AthenaCommon.AlgSequence import AlgSequence - -#from JetMomentTools.JetMomentsConfigHelpers import recommendedAreaAndJVF_StandardJetGetter - -import JetSubStructure - -_GroomingTool = { - 'Trimming' : JetSubStructure.SimpleTrimmingTool, - 'BDRSFiltering' : JetSubStructure.BDRSFilteringTool, - #'Pruning' : JetSubStructure.PruningTool, - 'KtSubJets' : JetSubStructure.KtSubJetsTool -} - -def buildName(GroomedDict): - - if type(GroomedDict) != dict: - raise TypeError("GroomedDicts must contain dicts!") - - if GroomedDict['Type'] in _GroomingTool: - strconfig = "" - theArgs = GroomedDict['args'] - for k in theArgs.keys(): - if type(theArgs[k]) == int: - strconfig += k + '%d' % theArgs[k] - elif type(theArgs[k]) == float: - strconfig += k + '%d' % (theArgs[k]*100) - - toolname = strconfig - - return toolname - else: - raise KeyError("Couldn't find grooming tool %s" % GroomedDict['Type']) - - -def getGroomingTools(GroomedDicts): - - myGroomingTools = [] - catNames = [] - for gr in GroomedDicts: - toolname = buildName(gr) - defname = _GroomingTool[gr['Type']].__slots__['Name'] ## safe hack ? - - defsubjetsname = '' - if "SubjetsName" in _GroomingTool[gr['Type']].__slots__.keys(): - defsubjetsname = _GroomingTool[gr['Type']].__slots__['SubjetsName'] - - kw = gr['args'].copy() - if 'Name' not in kw.keys(): - kw['Name'] = defname - kw['Name'] += toolname - - if 'SubjetsName' not in kw.keys() and defsubjetsname != '': - kw['SubjetsName'] = defsubjetsname - if defsubjetsname != '': - kw['SubjetsName'] += toolname - - if gr['Type'] == 'KtSubJets': - myGroomingTools += [ _GroomingTool[gr['Type']](gr['Type']+toolname, **kw) ] # StoreConfigParam = True ... not implemented for KtSubJetsTool - else: - myGroomingTools += [ _GroomingTool[gr['Type']](gr['Type']+toolname, StoreConfigParam = True, **kw) ] - - catNames += [ kw['Name'] ] - - ## are we requesting subjets ? - if "SaveSubjets" in kw.keys(): - if kw["SaveSubjets"] == True: - catNames += [ kw['SubjetsName'] ] - - return myGroomingTools, catNames - - -###################### -## Truth Jets ## -###################### - -def setupTruthJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq): - - if rec.doTruth(): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - #catNames_trimmed = catNames - catNames_trimmed = list(x for x in catNames if 'Subjet' not in x) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - wrapped_sortertool = JetSubStructure.JetAlgToolWrapper("JetSorterWrapper", JetAlgTool = sortertool, GroomedjetsAuthor = catNames_trimmed) - - widthtool = JetWidthTool('JS_JetWidthTool') - - truth_assoc = [ JetSubStructure.TruthParticleJetAssociatorTool("myTruthLeptonsAssoc", ContainerName = "SpclMC", dR = myjetdr, OutputLevel=3, #SpclMC for AODs, INav4MomTruthEvent for ESD - ParticlesPdgID = [11,13], ParticlesStatus = [1, 1], ParticlesType=[2,6], ParticlesOrigin=[-1,-1]) ] - truth_assoc_ghost = [ JetSubStructure.GhostJetJetAssociatorTool("myTruthGhostJetJetAssociatorTool", JetdR = myjetdr, JetFinder = myjetfinder, JetInputTool = getStandardInputTools(input='Truth')[0],OutputLevel=3) ] - - - truth_assoc[0].mcTruthClassifier.OutputLevel=3 - truth_assoc[0].mcTruthClassifier.McEventCollection = "GEN_AOD" #"TruthEvent" for ESD - from MCTruthClassifier.MCTruthClassifierBase import exToCalo - truth_assoc[0].mcTruthClassifier.ExtrapolateToCaloTool = exToCalo - - assoc_tool_truth = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTruth', - AssociatorTools = truth_assoc + truth_assoc_ghost, - GroomingTools = myGroomingTools, UsedSignalState = 2, Area = True, - JetAlgTools = [ wrapped_sortertool, widthtool], OutputLevel = 3 - ) - - jetsubstructure_tool_truth = JetSubStructure.JetSubstructureTool( - name = 'JetSubstructureToolTruth', UsedSignalState = 2, OutputLevel=3, - SubstructureTools = [JetSubStructure.KtTruthLeptonSubstructureTool("mytruthleptontool", OutputLevel=3, GroomedjetsAuthor = []), - JetSubStructure.NSubjettinessTool("myNSubjettinessTool", N=[1,2,3], R0=myjetdr, GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.DipolarityTool("myDipolarityTool",GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.JetVoronoiAreaCalcTool("myVoronoiArea", GroomedjetsAuthor = catNames_trimmed, JetdR = myjetdr, JetInputTool = getStandardInputTools(input='Truth')[0]), - JetSubStructure.JetShapesSubstructureTool("myJetShapesTool", GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.JetPullVectorTool("myJetPullVectorTool", GroomedjetsAuthor = catNames_trimmed) ] ) - #need to use truth collection on disk for smaller R jets for the TrueFlavorComponent block - if myjetdr < 0.9: - contname = myjetfinder + '%dTruthJets' % (myjetdr*10) - else: - contname = myjetfinder + '%dTruthJSJets' % (myjetdr*10) #TruthJSJets - - myjetgetter_truth = make_StandardJetGetter(myjetfinder, myjetdr, 'Truth', seq = theseq, doCalib=False, outputCollectionName = contname, minPt=50*GeV ) #,addDefaultMoment=False) - - truthcontname = myjetgetter_truth.outputKey() - extra_moments_list = [] - if myjetgetter_truth.jetAlgorithmHandle() == None: - if truthcontname == None: - truthcontname = myjetgetter_truth.buildName() - extra_moments_list += [widthtool] ## jet moments lost for truth jets in ESD->AOD transition - - sss = make_JetMomentGetter(truthcontname , extra_moments_list + [assoc_tool_truth,jetsubstructure_tool_truth], theseq ) - - ## for lepton assoc - jetcont = truthcontname[:-4] #removing the 'Jets' - for x in catNames_trimmed: - make_JetMomentGetter(jetcont+x+'Jets', [JetSubStructure.JetAssociationTool('JetAssocToolTruthGr', AssociatorTools = truth_assoc, GroomingTools =[], UsedSignalState = 2, Area=True, JetAlgTools = []), - JetSubStructure.JetSubstructureTool('JetSubstructureToolTruthGr', UsedSignalState = 2, SubstructureTools = [JetSubStructure.KtTruthLeptonSubstructureTool("mytruthleptontool", GroomedjetsAuthor = [])]) ], - theseq) - - return [ truthcontname, catNames ] - else: - return [ None, None ] - - -###################### -## Track Jets ## -###################### - -def setupTrackJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - #catNames_trimmed = catNames - catNames_trimmed = list(x for x in catNames if 'Subjet' not in x) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - wrapped_sortertool = JetSubStructure.JetAlgToolWrapper("JetSorterWrapper", JetAlgTool = sortertool, GroomedjetsAuthor = catNames_trimmed) - - widthtool = JetWidthTool('JS_JetWidthTool') - - #assoc_tools = [ JetSubStructure.GhostJetJetAssociatorTool("myTruthGhostJetJetAssociatorTool", JetdR = myjetdr, JetFinder = myjetfinder, JetInputTool = getStandardInputTools(input='Track')[0],OutputLevel=3) ] - - e_assoc = JetSubStructure.ElectronJetAssociatorTool("JSEAssocTrack", ContainerName = 'ElectronAODCollection', UseCluster = False, UseTrack = True, dR = myjetdr, OutputLevel=3) - mu_assoc = JetSubStructure.MuonJetAssociatorTool("JSMuAssocTrack", ContainerName = 'MuidMuonCollection', UseTrack = True, dR = myjetdr, OutputLevel=3) - - assoc_tool_track = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTrack', - AssociatorTools = [e_assoc, mu_assoc], #+assoc_tools, - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = [wrapped_sortertool, widthtool], OutputLevel = 3 - ) - - jetsubstructure_tool_track = JetSubStructure.JetSubstructureTool( - name = 'JetSubstructureToolTrack', UsedSignalState = 2, OutputLevel=3, - SubstructureTools = [JetSubStructure.NSubjettinessTool("myNSubjettinessTool", N=[1,2,3], R0=myjetdr, GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtElectronSubstructureTool("myelectool", GroomedjetsAuthor = []), - JetSubStructure.KtMuonSubstructureTool("mymuontool", GroomedjetsAuthor = []), - JetSubStructure.DipolarityTool("myDipolarityTool",GroomedjetsAuthor = catNames_trimmed), - #JetSubStructure.JetShapesSubstructureTool("myJetShapesTool", GroomedjetsAuthor = catNames), - JetSubStructure.JetPullVectorTool("myJetPullVectorTool", GroomedjetsAuthor = catNames_trimmed) ] ) - - - #---- TrackJet ---- - - from D3PDMakerConfig.CommonJSTrackJets import createJSTrackJets - mygetter = createJSTrackJets(theseq, myjetfinder,myjetdr) - - trackjetcontname = mygetter.outputKey() - - add_jetMoments_to_JetAlg(mygetter, [widthtool]) - - #---- End TrackJet ---- - - sss = make_JetMomentGetter(trackjetcontname , [assoc_tool_track, jetsubstructure_tool_track], theseq ) - - ## for lepton assoc - jetcont = trackjetcontname[:-4] #removing the 'Jets' - for x in catNames_trimmed: - make_JetMomentGetter(jetcont+x+'Jets', [JetSubStructure.JetAssociationTool('JetAssocToolTrackGr', AssociatorTools = [ e_assoc, mu_assoc], GroomingTools =[], UsedSignalState = 2, JetAlgTools = []), - JetSubStructure.JetSubstructureTool('JetSubstructureToolTrackGr', UsedSignalState = 2, SubstructureTools = [ JetSubStructure.KtElectronSubstructureTool("myelectool", GroomedjetsAuthor = []), - JetSubStructure.KtMuonSubstructureTool("mymuontool", GroomedjetsAuthor = []) ]) ], - theseq) - - - - return [ trackjetcontname, catNames ] - - -###################### -## Calo Jets ## -###################### - -def setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - #catNames_trimmed = list(x for x in catNames if 'Trimmed' in x) - #catNames_trimmed += list(x for x in catNames if 'Filter' in x) - #catNames_trimmed = catNames - catNames_trimmed = list(x for x in catNames if 'Subjet' not in x) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - wrapped_sortertool = JetSubStructure.JetAlgToolWrapper("JetSorterWrapper", JetAlgTool = sortertool, GroomedjetsAuthor = catNames_trimmed) - - widthtool = JetWidthTool('JS_JetWidthTool') - - grjets_calib = [] - - from JetSubStructure.mySetupJetCalibrators import doEtaMassJESCorrection - from JetCalibTools.MakeCalibSequences import calibTags - calibTags['ETAMASSJES'] = doEtaMassJESCorrection - - ## Origin correction - - mydoCalib = False - mycalibName = '' - - if 'LCTopo' in myjetinput: - mydoCalib = True - if (myjetfinder + '%d'%(myjetdr*10) == 'AntiKt10') or (myjetfinder + '%d'%(myjetdr*10) == 'CamKt12'): - mycalibName = 'LC:ORIGIN_ETAMASSJES' - else: - mycalibName = 'LC:ORIGIN' - # overwrite with latest offset substraction - mycalibName = "LC:ApplyAreaOffset" - - stdcaliblist = [] - #allowedcalib = ['AntiKt10LCTopoTrimmedJets', 'AntiKt10LCTopoTrimmedPtFrac3SmallR30Jets','AntiKt10LCTopoTrimmedPtFrac5SmallR30Jets','CamKt12LCTopoTrimmedPtFrac5SmallR30Jets'] - allowedcalib = [] # etamassjes is currently obsolete for these jets - for x in catNames: - author = myjetfinder + '%d'%(myjetdr*10) + myjetinput + x + 'Jets' - if author in allowedcalib : - grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin_etamassjes_'+x, - JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput+x, doCalib=True, calibName='LC:ORIGIN_ETAMASSJES')[0], - GroomedjetsAuthor = [x] )] - #elif 'Trimmed' in x: - else: - stdcaliblist += [x] - - if stdcaliblist != [] : - grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin', - JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='LC:ORIGIN')[0], - GroomedjetsAuthor = stdcaliblist )] - elif 'Topo' in myjetinput: - mydoCalib = True - #mycalibName = 'EM:ORIGIN' - # overwrite with latest offset substraction - mycalibName = "EM:ApplyAreaOffset" - - grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin', - JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='EM:ORIGIN')[0], - GroomedjetsAuthor = catNames_trimmed )] - #grjets_calib += getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='EM:ORIGIN') - - truthcontname = 'none' - if rec.doTruth(): - if myjetdr < 0.9: #need to use truth collection on disk for smaller R jets for the TrueFlavorComponent block - truthcontname = myjetfinder + '%dTruthJets' % (myjetdr*10) - else: - truthcontname = myjetfinder + '%dTruthJSJets' % (myjetdr*10) - - trackjetcontname = myjetfinder + '%dTrackZJets' % (myjetdr*10) - - assoc_tools = [] - - trkj_assoc = JetSubStructure.JetJetAssociatorTool("Trk_JetJetAssociatorTool", ContainerName = trackjetcontname, - AssociationName = "TrackJets", - MatchOrigin = True) - assoc_tools += [ trkj_assoc ] - - - if rec.doTruth(): - truthj_assoc = JetSubStructure.JetJetAssociatorTool("Truth_JetJetAssociatorTool", ContainerName = truthcontname, - AssociationName = "TruthJets", - MatchOrigin = False) - assoc_tools += [ truthj_assoc ] - - e_assoc = JetSubStructure.ElectronJetAssociatorTool("JSEAssoc", ContainerName = 'ElectronAODCollection', UseCluster = True, UseTrack = False, dR = myjetdr, ResolveCluster=True, OutputLevel=3) - - e_assoc.METClusterResolver.MaximumRadialDistance = 0.2 - e_assoc.METClusterResolver.LongitudinalExtension = 1.0 - e_assoc.METClusterResolver.RadialExtension = 1.0 - e_assoc.METClusterResolver.EnergyFractionThreshold = 0.1 - e_assoc.METClusterResolver.OutputLevel = 3 - - mu_assoc = JetSubStructure.MuonJetAssociatorTool("JSMuAssoc", ContainerName = 'MuidMuonCollection', UseTrack = False, dR = myjetdr, OutputLevel=3) - assoc_tools += [ e_assoc, mu_assoc] - - assoc_tool_ghost = JetSubStructure.GhostJetJetAssociatorTool("myGhostJetJetAssociatorTool", JetdR = myjetdr, JetFinder = myjetfinder, JetInputTool = getStandardInputTools(input=myjetinput)[0],OutputLevel=3) - - ## btgging ## - subjets_names = [x for x in catNames if "Subjets" in x ] - - btag_tool = [] - if subjets_names != []: - from JetRec.JetGetters import getStandardBTaggerTool - jetFlags.doBTagging = True - _btag_tool = getStandardBTaggerTool('AntiKt', 0.4, 'LCTopo') - if len(_btag_tool) > 0: - btag_tool += [ JetSubStructure.JetAlgToolWrapper(name = 'JetBTagger_' + ''.join(subjets_names), JetAlgTool = _btag_tool[0], - GroomedjetsAuthor = subjets_names ) ] - jetFlags.doBTagging = True - ## btagging end ## - - - assoc_tool = JetSubStructure.JetAssociationTool( - name = 'JetAssocTool', - AssociatorTools = assoc_tools + [ assoc_tool_ghost ], - GroomingTools = myGroomingTools, UsedSignalState = 2, Area = True, - JetAlgTools = grjets_calib + [wrapped_sortertool, widthtool] + btag_tool, OutputLevel = 5 - ) - - jetsubstructure_tool = JetSubStructure.JetSubstructureTool( - name = 'JetSubstructureTool', UsedSignalState = 2, OutputLevel=3, - SubstructureTools = [JetSubStructure.NSubjettinessTool("myNSubjettinessTool", N=[1,2,3], R0=myjetdr, GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtElectronSubstructureTool("myelectool", GroomedjetsAuthor = []), - JetSubStructure.KtMuonSubstructureTool("mymuontool", GroomedjetsAuthor = []), - JetSubStructure.DipolarityTool("myDipolarityTool",GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.JetVoronoiAreaCalcTool("myVoronoiArea", GroomedjetsAuthor = catNames_trimmed, JetdR = myjetdr, JetInputTool = getStandardInputTools(input=myjetinput)[0]), - JetSubStructure.JetShapesSubstructureTool("myJetShapesTool", GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.JetPullVectorTool("myJetPullVectorTool", GroomedjetsAuthor = catNames_trimmed) ] ) - - - - outkey = myjetfinder + '%d'%(myjetdr*10) + myjetinput - if myjetinput == 'Topo': - outkey += 'EM' - outkey += 'Jets' #'JSJets' for rebuilding on the fly - - myjetgetter = make_StandardJetGetter(myjetfinder, myjetdr, myjetinput, seq = theseq, doCalib=mydoCalib, calibName=mycalibName,addDefaultMoment=False, outputCollectionName = outkey, minPt=50*GeV ) - - - contname = myjetgetter.outputKey() - - extra_moments_list = [] - if myjetgetter.jetAlgorithmHandle() == None: # JetCollection already in AOD - if contname == None: - contname=myjetgetter.buildName() - - #if contname == 'AntiKt4LCTopoJets': - # contname = 'AntiKt4LCTopoJetsReTagged' - else: - extra_moments_list += [widthtool] - - - # ------------------------------------------------ - # Associate a vertex and set the JVF moment. Must be placed AFTER vertex correction - # ------------------------------------------------ - from AthenaCommon.DetFlags import DetFlags - from AthenaCommon.AppMgr import ToolSvc - noVertex = jobproperties.Beam.beamType == 'cosmics' or jobproperties.Beam.beamType == 'singlebeam' - if DetFlags.detdescr.ID_on() and jetFlags.doJVF() and 'Truth' not in myjetinput and not noVertex and myjetdr >= 0.7: - from JetSubStructure.mySetupJetMomentTools import mygetJetVertexAssociationTool - myjvatool = mygetJetVertexAssociationTool(myjetfinder, myjetdr,myjetinput,'Custom%d'%(myjetdr*10)) - #add_jetMoments_to_JetAlg(myjetgetter, [myjvatool]) - extra_moments_list += [myjvatool] - - ## Ghost Track Matching - from JetMomentTools.GhostAssociation import setupGhostAssociationTool - t = setupGhostAssociationTool( contname, ["TrackAssoc"] ) - t.GhostAssociators[0].AssociationName="TrackAssocTmp" - t.CopyJetFindingMoment = False - extra_moments_list += [t] - - make_JetMomentGetter(contname , extra_moments_list + [assoc_tool, jetsubstructure_tool], theseq ) - - - ## for lepton assoc - jetcont = contname[:-4] #removing the 'Jets' - - if contname == 'AntiKt4LCTopoJetsReTagged' or contname == 'AntiKt4LCTopoNewJets' : - jetcont = 'AntiKt4LCTopo' - - for x in catNames_trimmed: - make_JetMomentGetter(jetcont+x+'Jets', [JetSubStructure.JetAssociationTool('JetAssocToolGr', AssociatorTools = [e_assoc, mu_assoc], GroomingTools =[], UsedSignalState = 2, Area=True, JetAlgTools = [], OutputLevel = 5), - JetSubStructure.JetSubstructureTool('JetSubstructureToolGr',UsedSignalState = 2, SubstructureTools = [ JetSubStructure.KtElectronSubstructureTool("myelectool", GroomedjetsAuthor = []), - JetSubStructure.KtMuonSubstructureTool("mymuontool", GroomedjetsAuthor = []) ]) ], - theseq) - - jetFlags.doBTagging = True - - return [ contname, catNames ] - - -def createJSJets( ParentDict, GroomedDicts, theseq = AlgSequence()) : - - if type(ParentDict) != dict: - raise TypeError("ParentDict must be a dict!") - - if type(GroomedDicts) != list: - raise TypeError("GroomedDicts must be a list!") - - myjetfinder = ParentDict["JetFinder"] - myjetdr = ParentDict["JetdR"] - myjetinput = ParentDict["JetInput"] - - if myjetinput == 'Truth': - return setupTruthJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq) - elif myjetinput == 'Track': - return setupTrackJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq) - else : - return setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq) - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonTrackJetSeletorTool.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonTrackJetSeletorTool.py deleted file mode 100644 index fa0937a415e0d9225218d1ed09acc7739de6c545..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CommonTrackJetSeletorTool.py +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -def GetCachedTrackSelectorTool(): - from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool - from AthenaCommon.AppMgr import ToolSvc - ToolSvc += InDet__InDetDetailedTrackSelectorTool( "MyDetailedTrackSelectorTool" ) - - ToolSvc.MyDetailedTrackSelectorTool.pTMin = 500 # MeV - ToolSvc.MyDetailedTrackSelectorTool.etaMax = 2.5 - ToolSvc.MyDetailedTrackSelectorTool.nHitBLayer = 0 - ToolSvc.MyDetailedTrackSelectorTool.nHitPix = 1 - ToolSvc.MyDetailedTrackSelectorTool.nHitBLayerPlusPix = 0 - ToolSvc.MyDetailedTrackSelectorTool.nHitSct = 6 - ToolSvc.MyDetailedTrackSelectorTool.nHitSi = 7 - ToolSvc.MyDetailedTrackSelectorTool.nHitTrt = 0 - ToolSvc.MyDetailedTrackSelectorTool.IPd0Max = 1.5 # d0 cut - ToolSvc.MyDetailedTrackSelectorTool.IPz0Max = 1.5 # z0*sin(theta) cut - ToolSvc.MyDetailedTrackSelectorTool.z0Max = 200 # z0 cut - ToolSvc.MyDetailedTrackSelectorTool.fitChi2OnNdfMax = 10000 #3 - ToolSvc.MyDetailedTrackSelectorTool.d0significanceMax = -1. - ToolSvc.MyDetailedTrackSelectorTool.z0significanceMax = -1. - ToolSvc.MyDetailedTrackSelectorTool.Extrapolator = ToolSvc.InDetExtrapolator - - ToolSvc.MyDetailedTrackSelectorTool.OutputLevel = 3 - - from TrkTrackSummaryTool.AtlasTrackSummaryTool import AtlasTrackSummaryTool - atst = AtlasTrackSummaryTool() - ToolSvc += atst - ToolSvc.MyDetailedTrackSelectorTool.TrackSummaryTool = atst - from JetSubStructure.JetSubStructureConf import JetSubStructure__CachedTrackSelectorTool - ToolSvc += JetSubStructure__CachedTrackSelectorTool("CachedTrackSelectorTool") - ToolSvc.CachedTrackSelectorTool.TrackSelector = ToolSvc.MyDetailedTrackSelectorTool - - return ToolSvc.CachedTrackSelectorTool diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CoreCommonD3PD.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CoreCommonD3PD.py deleted file mode 100644 index b829d14cc2abecd1e4d1fe4292caada049fde385..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CoreCommonD3PD.py +++ /dev/null @@ -1,552 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -# $Id: CoreGenericD3PD.py -# -# - -#------------------------------------- -# general athena and D3PD imports -#------------------------------------- -from RecExConfig.RecFlags import rec -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -from AthenaCommon.AlgSequence import AlgSequence -from AthenaCommon.AppMgr import ServiceMgr, ToolSvc, theApp - -import D3PDMakerCoreComps -from D3PDMakerCoreComps.resolveSGKey import testSGKey - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags,_string_prop -from D3PDMakerConfig.CommonD3PDMakerFlags import CommonD3PDMakerFlags -from D3PDMakerConfig.GenericTriggerBitsD3PDObject import GenericTriggerBitsD3PDObject -from D3PDMakerConfig.SUSYCustomMET import * -#from D3PDMakerConfig.PhotonCustomMET import * -from D3PDMakerConfig.CommonEventShapeD3PDObject import EventShapeD3PDObject -from D3PDMakerConfig.CoreTruthFilterTool import CoreTruthFilterTool -from SUSYD3PDMaker.SUSYD3PDFlags import SUSYD3PDFlags -import EventCommonD3PDMaker -from EventCommonD3PDMaker.LBMetadataConfig import LBMetadataConfig -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject -from BackgroundD3PDMaker.BeamBackgroundD3PDObject import BeamBackgroundD3PDObject -from BackgroundD3PDMaker.BackgroundWordD3PDObject import BackgroundWordD3PDObject -from TriggerD3PDMaker.BunchStructureMetadata import addBunchStructureMetadata - - -#------------------------------------- -# reco object imports -#------------------------------------- -import CaloD3PDMaker -from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject -from CaloD3PDMaker.MBTSTimeD3PDObject import MBTSTimeD3PDObject -from CaloD3PDMaker.LArCollisionTimeD3PDObject import LArCollisionTimeD3PDObject -from CaloD3PDMaker.CollisionDecisionD3PDObject import CollisionDecisionD3PDObject -from CaloD3PDMaker.ClusterD3PDObject import ClusterD3PDObject -from CaloD3PDMaker.makeClusterFilter import makeClusterFilter - -from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject -from egammaD3PDMaker.ElectronD3PDObject import ElectronClusterAssoc -from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject -from egammaD3PDMaker.PhotonD3PDObject import PhotonClusterAssoc -from egammaD3PDMaker.egammaTriggerBitsD3PDObject import egammaTriggerBitsD3PDObject -import BoostedTopD3PDMaker -from TrackD3PDMaker.V0D3PDObject import DefaultV0D3PDObject -from JetRecTools.JetRecToolsConf import * -from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags -from TrigJetD3PDMaker.EFJetD3PDObject import EFJetD3PDObject -from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject -from MuonD3PDMaker.MuonTriggerBitsD3PDObject import MuonTriggerBitsD3PDObject -from TauD3PDMaker.TauD3PDObject import TauD3PDObject -from TauD3PDMaker.makeTrackFilterAlg import makeTrackFilterAlg -from TopInputsD3PDMaker.HforD3PDObject import HforD3PDObject -from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags -import TrackD3PDMaker -#if(SUSYD3PDFlags.do01LepFactoryNtuple() == False): TrackD3PDFlags.storeTrackUnbiasedIPAtPV = True -from TrackD3PDMaker.TrackD3PDObject import TrackParticleD3PDObject -from TrackD3PDMaker.TrackD3PDObject import TrackD3PDObject -from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject -from TrackD3PDMaker.TruthVertexD3PDObject import TruthVertexD3PDObject -from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject - -import PhotonD3PDMaker - -import JetD3PDMaker -from JetD3PDMaker.JetD3PDObject import JetD3PDObject - -#------------------------------------- -# trigger imports -#------------------------------------- -import TriggerD3PDMaker -import TrigJetD3PDMaker -from TriggerD3PDMaker.JetROID3PDObject import JetROID3PDObject -from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject -from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata -from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject -from TrigMissingETD3PDMaker.TrigMETD3PD import TrigMETD3PDObjects -from TrigJetD3PDMaker.TrigJetD3PD import InitTrigD3PDObject -from TrigJetD3PDMaker.TrigJetD3PDObject import TrigJetD3PDObject -from TrigTauD3PDMaker.TrigEFTauD3PDObject import TrigEFTauD3PDObject -from TrigTauD3PDMaker.TrigL2TauD3PDObject import TrigL2TauD3PDObject -from TrigEgammaD3PDMaker.TrigEgammaD3PD import TrigEgammaD3PDObjects -#from D3PDMakerConfig.CommonTrigEgammaD3PD import CommonTrigEgammaD3PDObjects -from TrigMuonD3PDMaker.TrigMuonD3PD import TrigMuonD3PDObjects -#from D3PDMakerConfig.CommonTrigMuonD3PD import CommonTrigMuonD3PDObjects -from TrigBJetD3PDMaker.TrigBJetD3PD import TrigBJetD3PDObjects -from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool -from TriggerD3PDMaker.defineTriggerBits import defineTriggerBits -from CaloD3PDMaker.MBTSTriggerBitsD3PDObject import MBTSTriggerBitsD3PDObject -from TrigCaloD3PDMaker.TrigEMClusterD3PDObject import TrigEMClusterD3PDObject -from TrigInDetD3PDMaker.TrigInDetTrackD3PDObject import TrigInDetTrackD3PDObject -from MissingETD3PDMaker.MissingETD3PDTriggerBitsObject import METD3PDTriggerBitsObject -from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation -import JetSubstructureD3PDMaker -import TauD3PDMaker -from D3PDMakerCoreComps.IndexAssociation import IndexAssociation -from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation - -if rec.doTruth(): - from egammaD3PDMaker.egammaTruthD3PDObject import egammaTruthD3PDObject - from EventCommonD3PDMaker.DRIndexMultiAssociation import DRIndexMultiAssociation - import TruthD3PDMaker - from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject - from MuonD3PDMaker.TruthMuonD3PDObject import TruthMuonD3PDObject - from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject - from TruthD3PDMaker.GenVertexD3PDObject import GenVertexD3PDObject - from TruthD3PDMaker.GenParticleD3PDObject import GenParticleD3PDObject - from TruthD3PDMaker.GenParticleD3PDObject import GenTruthTrackD3PDObject - from TruthD3PDMaker.MCTruthClassifierConfig import D3PDMCTruthClassifier - -#------------------------------------- -# SUSY imports -#------------------------------------- -from SUSYD3PDMaker.SUSYD3PDMakerConf import * -from SUSYD3PDMaker.SUSYHardProcessD3PDObject import SUSYHardProcessD3PDObject - - -#D3PDMakerFlags.TruthWriteHadrons = True - -#------------------------------------- -# Silence Trig Navigation Warnings -#------------------------------------- -ToolSvc += Trig__TrigDecisionTool( 'TrigDecisionTool') -ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR - - -topSequence = AlgSequence() - -#addSUSYCustomMissingET( topSequence ) -#PhotonCustomMET() - -ExtendedJetD3PDObject = JetD3PDObject.copy() -myMuonD3PDObject = MuonD3PDObject.copy() -ExtendedTauD3PDObject = TauD3PDObject.copy() - -#from CaloD3PDMaker import ClusterMomentFillerTool as CMFT -#ClusterD3PDObject.defineBlock (99, 'CenterMagMoments', CMFT, Moments = [CMFT.CENTER_MAG, 'centermag']) - - -# make truth jets WIDTH and SPLIT variables for truth jets R=0.4/0.6 -import JetSubStructure -from JetRec.JetMomentGetter import make_JetMomentGetter -from JetMomentTools.JetMomentToolsConf import JetWidthTool -from JetRec.JetRecConf import JetSorterTool -widthtool = JetWidthTool('JS_JetWidthTool') -assoc_tool_truth = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTruth', - JetAlgTools = [widthtool], OutputLevel = 3) -jetsubstructure_tool_truth = JetSubStructure.JetSubstructureTool( - name = 'JetSubstructureToolTruth', UsedSignalState = 2, OutputLevel=3, - SubstructureTools = [JetSubStructure.KtTruthLeptonSubstructureTool("mytruthleptontool", OutputLevel=3, GroomedjetsAuthor = [])]) - -#make_JetMomentGetter("AntiKt4TruthNewJets", [widthtool, assoc_tool_truth, jetsubstructure_tool_truth], topSequence) -#make_JetMomentGetter("AntiKt6TruthNewJets", [widthtool, assoc_tool_truth, jetsubstructure_tool_truth], topSequence) - -# SPLIT variables for R=0.4/0.6 jets. -jetsubstructure_tool = JetSubStructure.JetSubstructureTool( - name = 'JetSubstructureTool', UsedSignalState = 2, OutputLevel=3, - SubstructureTools = [JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = []) ]) -#make_JetMomentGetter("AntiKt4TopoEMJets", [jetsubstructure_tool], topSequence) -#make_JetMomentGetter("AntiKt6TopoEMJets", [jetsubstructure_tool], topSequence) -make_JetMomentGetter("AntiKt4LCTopoNewJets", [jetsubstructure_tool], topSequence) # replacing RetaggedJets with NewJets -#make_JetMomentGetter("AntiKt6LCTopoNewJets", [jetsubstructure_tool], topSequence) # replacing RetaggedJets with NewJets - -if rec.doTruth() and CommonD3PDMakerFlags.doRecTruthJet() : - make_JetMomentGetter("AntiKt4TruthNewJets", [jetsubstructure_tool], topSequence) - #make_JetMomentGetter("AntiKt6TruthNewJets", [jetsubstructure_tool], topSequence) - make_JetMomentGetter("AntiKt4TruthNewJets", [widthtool, assoc_tool_truth, jetsubstructure_tool_truth], topSequence) - #make_JetMomentGetter("AntiKt6TruthNewJets", [widthtool, assoc_tool_truth, jetsubstructure_tool_truth], topSequence) - -make_JetMomentGetter("AntiKt4TrackJets", [jetsubstructure_tool], topSequence) # there is no TrackZJets but only TrackJets inside CommonJetTrackZClusterTool_jobOptions.py -#make_JetMomentGetter("AntiKt6TrackJets", [jetsubstructure_tool], topSequence) - -jetsubstructure_tool_track4 = JetSubStructure.JetSubstructureTool( - name = 'JetSubstructureToolTrack', UsedSignalState = 2, OutputLevel=3, - SubstructureTools = [JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = []), - JetSubStructure.DipolarityTool("myDipolarityTool",GroomedjetsAuthor = []), - JetSubStructure.JetShapesSubstructureTool("myJetShapesTool", GroomedjetsAuthor = []), - JetSubStructure.NSubjettinessTool("myNSubjettinessTool", N=[1,2,3], R0=0.4,GroomedjetsAuthor = [])]) -make_JetMomentGetter("AntiKt4TrackJets", [jetsubstructure_tool_track4], topSequence) # there is no TrackZJets but only TrackJets inside CommonJetTrackZClusterTool_jobOptions.py -from D3PDMakerConfig.CommonJSD3PD import AddHadronicInfo -#AddHadronicInfo(ExtendedJetD3PDObject, ['Tau1','Tau2','Tau3', 'ZCUT12', 'ZCUT23','ZCUT34','Dip12', 'Dip13', 'Dip23','DipExcl12','PlanarFlow','Angularity'], theblockname = 'substructureblocks', level=99) - - -#from HSG5DPDUtils.HSG5D3PD import addSTRUCTCalib -#addSTRUCTCalib('AntiKt4TopoEMJetsReTagged', input='Topo', mainParam=0.4) -#addSTRUCTCalib('AntiKt6TopoEMJetsReTagged', input='Topo', mainParam=0.6) -#addSTRUCTCalib('AntiKt4LCTopoJetsReTagged', input='Topo', mainParam=0.4) -#addSTRUCTCalib('AntiKt6LCTopoJetsReTagged', input='Topo', mainParam=0.6) - - -#from JetD3PDMaker import JetMomentFillerTool -#ExtendedJetD3PDObject.defineBlock(99, 'splitInfoBlock', JetMomentFillerTool,Moments= ['SPLIT12', 'SPLIT23', 'SPLIT34']) - -#------------------------------------------------ -# additional define blocks to fill more variables -#------------------------------------------------ -#ElectronClusterAssoc.defineBlock (0, 'ClusterTime', CaloD3PDMaker.ClusterTimeFillerTool,prefix = 'cl_') -#PhotonClusterAssoc.defineBlock (0, 'ClusterTime', CaloD3PDMaker.ClusterTimeFillerTool,prefix = 'cl_') -#ExtendedJetD3PDObject.defineBlock(99, 'Uncertainties', JetD3PDMaker.JetMomentFillerTool, Moments=['SmearingFactor']) - - -# track isolation for electrons, using new pt track cut -> 0.5GeV -from SUSYD3PDMaker.SUSYD3PDMakerConf import SUSYD3PD__SUSYEleTrkIsoFillerTool as SUSYEleTrkIsoFillerTool -#ElectronD3PDObject.defineBlock(1, "Isolation_500MeV", SUSYEleTrkIsoFillerTool, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool") - - -try: - from egammaTools.EMTrackIsolationToolBase import EMTrackIsolationToolBase - theemtrackisolationtool = EMTrackIsolationToolBase("emtrackisolationtool") - theemtrackisolationtool.useBremAssoc = True - ToolSvc += theemtrackisolationtool -except Exception: - traceback.print_exc() - -ElectronD3PDObject.defineBlock(99, "miniiso10", BoostedTopD3PDMaker.MiniIsolationElectronFillerTool, EMTrackIsolationTool=theemtrackisolationtool, KtDist=10., prefix="MI10_") -ElectronD3PDObject.defineBlock(99, "miniiso15", BoostedTopD3PDMaker.MiniIsolationElectronFillerTool, EMTrackIsolationTool=theemtrackisolationtool, KtDist=15., prefix="MI15_") - -# track isolation for muons, using new pt track cut -> 0.5GeV -#from SUSYD3PDMaker.SUSYD3PDMakerConf import SUSYD3PD__SUSYMuTrkIsoFillerTool as SUSYMuTrkIsoFillerTool -#myMuonD3PDObject.defineBlock(1, "Isolation_500MeV", SUSYMuTrkIsoFillerTool, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool", NamePrefix="trk500MeV") -#myMuonD3PDObject.defineBlock(1, "Isolation_elstyletracks", SUSYMuTrkIsoFillerTool, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool7",NamePrefix="trkelstyle") - - -#TrackParticleD3PDObject.defineBlock(999, "Isolation_20", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.2,prefix="cone20_") -#TrackParticleD3PDObject.defineBlock(999, "Isolation_30", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.3,prefix="cone30_") -#TrackParticleD3PDObject.defineBlock(999, "Isolation_40", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4,prefix="cone40_") -#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_1GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool1", prefix="cone40_ptmin1gev_") -#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_2GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool2", prefix="cone40_ptmin2gev_") -#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_3GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool3", prefix="cone40_ptmin3gev_") -#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_3GeV_hitschi", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool6", prefix="cone40_ptmin3gev_hitschi_") -#TrackParticleD3PDObject.defineBlock(999, "Isolation_40_4GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool4", prefix="cone40_ptmin4gev_") -#TrackParticleD3PDObject.defineBlock(999, "Isolation_50_5GeV", TrackD3PDMaker.TrackIsolationFillerTool, ConeSize=.4, TrackIsolationTool="TrackIsolationTool/TrackIsolationTool5", prefix="cone40_ptmin5gev_") - - -#IndexMultiAssociation(ExtendedJetD3PDObject, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,'el_',level = 99, -# prefix='Electron_', blockname='elecblockindex', AssociationName='jetsubstructure_electrons', -# IndexedMoments=['X', 'Y', 'Z','MINIISO', 'MINIISO10','DR','X_Prime', 'Y_Prime','Z_Prime', 'DR_Prime', 'contained'], IndexedMomentsSuffix = "_E" ) -#IndexMultiAssociation(ExtendedJetD3PDObject, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,'mu_',level = 99, -# prefix='Muon_', blockname='muonblockindex', AssociationName='jetsubstructure_muons', -# IndexedMoments=['X', 'Y', 'Z','MINIISO', 'MINIISO10','DR', 'X_Prime', 'Y_Prime','Z_Prime', 'DR_Prime','contained'], IndexedMomentsSuffix = "_U") - - - -if rec.doTruth(): - - from TruthD3PDAnalysis.truthParticleConfig import truthParticleConfig - truthParticleConfig(topSequence, sgkey=D3PDMakerFlags.TruthParticlesSGKey(), writeHadrons=True, writePartons=True, writeGeant=False) - -JetROID3PDObject.defineBlock( 0, "myKinematics", - EventCommonD3PDMaker.FourMomFillerTool, - WriteM = False, WritePt = True, - prefix = "myKin_") -#TrackParticleD3PDObject.defineBlock( 99, "TJVAperigee", -# TauD3PDMaker.TrackParticleAtTJVAFillerTool, prefix = 'atTJVA_') - - -# Special muon isolation variables -#from AthenaCommon.AppMgr import ToolSvc -from AthenaCommon.Include import include -include( "MuonIsolationTools/MuonIsolationTool_jobOptions.py" ) -myMuonD3PDObject.defineBlock(0, "miniiso10", BoostedTopD3PDMaker.MiniIsolationMuonFillerTool, MuIsolationTool=ToolSvc.MuonIsolationTool, KtDist=10., prefix="MI10_") -myMuonD3PDObject.defineBlock(0, "miniiso15", BoostedTopD3PDMaker.MiniIsolationMuonFillerTool, MuIsolationTool=ToolSvc.MuonIsolationTool, KtDist=15., prefix="MI15_") - - -#Add new triggers at request of HSG6 -defineTriggerBits( TauD3PDObject, 0, [ "EF_tau29T_medium1_xe55_tclcw", "EF_tau29T_medium1_xe55_tclcw_tight" ] ) - -#------------------------------------------------------------------ -# Enable saving the object metadata for D3PDReader code generation -#------------------------------------------------------------------ -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -D3PDMakerFlags.SaveObjectMetadata = True - - -flags = CommonD3PDMakerFlags - # ... high-pt tracks (nSCT>3; pt>4 GeV) - -if rec.doTruth(): - # ... remove empty GenEvents - from TruthD3PDAnalysis.TruthD3PDAnalysisConf import D3PD__GenObjectsFilterTool - smwzGenEvtFilterTool = D3PD__GenObjectsFilterTool( "smwzGenEvtFilterTool" ) - ToolSvc += smwzGenEvtFilterTool - smwzGenEvtFilterTool.RemoveDummyEvents = True - smwzGenEvtFilterTool.RemoveInTimePileUp = True - smwzGenEvtFilterTool.Remove2BCPileUp = True - smwzGenEvtFilterTool.Remove800nsPileUp = True - smwzGenEvtFilterTool.RemoveCavernBkg = True - smwzGenEvtFilterTool.RemoveEmptyEvents = True - - # ... heavy flavor truth information - smwzhfGenVtxFilterTool = D3PD__GenObjectsFilterTool( "SMWZHFGenVtxFilterTool" ) - ToolSvc += smwzhfGenVtxFilterTool - smwzhfGenVtxFilterTool.RemoveInTimePileUp = False - smwzhfGenVtxFilterTool.Remove2BCPileUp = True - smwzhfGenVtxFilterTool.Remove800nsPileUp = True - smwzhfGenVtxFilterTool.RemoveCavernBkg = True - smwzhfGenVtxFilterTool.RemoveEmptyEvents = True - smwzhfGenVtxFilterTool.RemoveDummyEvents = True - smwzhfGenVtxFilterTool.RemoveUnrequestedParticles=True - smwzhfGenVtxFilterTool.KeepBCHadrons=True - - smwzhfGenPartFilterTool = D3PD__GenObjectsFilterTool( "SMWZHFGenPartFilterTool" ) - ToolSvc += smwzhfGenPartFilterTool - smwzhfGenPartFilterTool.RemoveInTimePileUp = False - smwzhfGenPartFilterTool.Remove2BCPileUp = True - smwzhfGenPartFilterTool.Remove800nsPileUp = True - smwzhfGenPartFilterTool.RemoveCavernBkg = True - smwzhfGenPartFilterTool.RemoveEmptyEvents = True - smwzhfGenPartFilterTool.RemoveDummyEvents = True - smwzhfGenPartFilterTool.RemoveUnrequestedParticles=True - smwzhfGenPartFilterTool.KeepBCQuarks=True - smwzhfGenPartFilterTool.KeepBCQuarkAncestors=True - smwzhfGenPartFilterTool.KeepBCHadrons=True - smwzhfGenPartFilterTool.KeepBCHadronDecayChain=True - smwzhfGenPartFilterTool.BCHadronsDescendantsPtCut=200 - smwzhfGenPartFilterTool.BCHadronsDescendantsBarcodeCut=300000 - smwzhfGenPartFilterTool.BCHadronsDescendantsEtaCut=5 - - # ... leptonic W/Z truth information - smwzlepwzGenPartFilterTool = D3PD__GenObjectsFilterTool( "SMWZLepWZGenPartFilterTool" ) - ToolSvc += smwzlepwzGenPartFilterTool - smwzlepwzGenPartFilterTool.RemoveInTimePileUp = True - smwzlepwzGenPartFilterTool.Remove2BCPileUp = True - smwzlepwzGenPartFilterTool.Remove800nsPileUp = True - smwzlepwzGenPartFilterTool.RemoveCavernBkg = True - smwzlepwzGenPartFilterTool.RemoveEmptyEvents = True - smwzlepwzGenPartFilterTool.RemoveDummyEvents = True - smwzlepwzGenPartFilterTool.RemoveUnrequestedParticles=True - smwzlepwzGenPartFilterTool.KeepLeptonicWZBosons=True - smwzlepwzGenPartFilterTool.KeepLeptonicWZBosonDecayChains=True - smwzlepwzGenPartFilterTool.KeepLeptonicWZBosonsParents=True - - -### for NTUP_PHOTON -#associate the electron to a track -import egammaD3PDMaker -from D3PDMakerCoreComps.IndexAssociation import IndexAssociation -ElectronTrackParticleIndexAssociation = IndexAssociation(ElectronD3PDObject, - egammaD3PDMaker.egammaTrackParticleAssociationTool, - target="trk", - prefix="trk_", - level=1, - blockname="TrackIndex", - allowMissing=False) -GSFTrackParticlesInSample = testSGKey ('Rec::TrackParticleContainer', "GSFTrackParticleCandidate") -if GSFTrackParticlesInSample: - from D3PDMakerCoreComps.IndexAssociation import IndexAssociation - ElectronTrackParticleIndexAssociation = IndexAssociation(ElectronD3PDObject, - egammaD3PDMaker.egammaTrackParticleAssociationTool, - target="GSF_trk", - prefix="GSF_trk_", - level=1, - blockname="GSFTrackIndex", - allowMissing=False) - - -# ********************************** begin add eraw57 and topocluster isolations ********************************* # -#CellsSGKey = "AODCellContainer" -## Some common tools for isolation calculations -## create tool CaloNoiseTool -#from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault -#theCaloNoiseTool=CaloNoiseToolDefault('db') -#ToolSvc += theCaloNoiseTool - -## add tool egammaiso -#from egammaCaloTools.egammaCaloToolsConf import egammaIso -#theegammaiso=egammaIso("PD3PD_egammaIso", -# CaloNoiseTool= theCaloNoiseTool) -#ToolSvc += theegammaiso - -#from CaloClusterCorrection.CaloClusterCorrectionConf import CaloFillRectangularCluster as cfrc -#caloFillRect = cfrc(name = "PhotonD3PD_CaloFillRectangularCluster", -# eta_size = 5, -# phi_size = 7, -# cells_name = CellsSGKey) -#ToolSvc += caloFillRect - -#PhotonUDPrefix = "PhotonD3PD::PhotonUDPrefix_" -#IsolationVars = [] -#Fill_EtCone_exclude_phi_strip = [] -#Fill_Etconoise_Radii = [] -#Fill_Etconoise_Sigma = [] -#Fill_Etringnoise_Radii = [] -#Fill_Etringnoise_Sigma = [] -#Fill_EM_Layer_0 = [] -#Fill_EM_Layer_1 = [] -#Fill_EM_Layer_2 = [] -#Fill_EM_Layer_3 = [] -#Fill_HAD_Layer_0 = [] -#Fill_HAD_Layer_1 = [] -#Fill_HAD_Layer_2 = [] -#Fill_TopoCluster = [] # These should be already filled! -#Fill_PositiveTopoCluster = [20, 30, 40, 50, 60] -#IsolationVars.extend(['topoPosEtcone20', '', 'float']) -#IsolationVars.extend(['topoPosEtcone30', '', 'float']) -#IsolationVars.extend(['topoPosEtcone40', '', 'float']) -#IsolationVars.extend(['topoPosEtcone50', '', 'float']) -#IsolationVars.extend(['topoPosEtcone60', '', 'float']) - -#Fill_TopoEMCluster = [] # These should be already filled! -#Fill_PositiveTopoEMCluster = [20, 30, 40, 50, 60] -#IsolationVars.extend(['topoEMPosEtcone20', '', 'float']) -#IsolationVars.extend(['topoEMPosEtcone30', '', 'float']) -#IsolationVars.extend(['topoEMPosEtcone40', '', 'float']) -#IsolationVars.extend(['topoEMPosEtcone50', '', 'float']) -#IsolationVars.extend(['topoEMPosEtcone60', '', 'float']) - -#preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) -#DVGetter = D3PDMakerCoreComps.SGDataVectorGetterTool -#preseq += PhotonD3PDMaker.IsolationCalculatorAlg ("PhotonIsoAlg", -# EgammaGetter = DVGetter ('PhotonIsoAlgPhotonGetter', -# TypeName = 'PhotonContainer', -# SGKey = D3PDMakerFlags.PhotonSGKey()), -# ClusterGetter = DVGetter ('PhotonIsoAlgClusterGetter', -# TypeName = 'CaloClusterContainer', -# SGKey = D3PDMakerFlags.ClusterSGKey()), -# EMCaloIsolationTool = theegammaiso, -# CaloFillRectangularClusterTool= caloFillRect, -# UDPrefix = PhotonUDPrefix, -# CellContainerName = CellsSGKey, -# Fill_TopoCluster = Fill_TopoCluster, -# Fill_PositiveTopoCluster = Fill_PositiveTopoCluster, -# Fill_TopoEMCluster = Fill_TopoEMCluster, -# Fill_PositiveTopoEMCluster = Fill_PositiveTopoEMCluster, -# Fill_EtCone_exclude_phi_strip = Fill_EtCone_exclude_phi_strip, -# Fill_EM_Layer_0 = Fill_EM_Layer_0 , -# Fill_EM_Layer_1 = Fill_EM_Layer_1 , -# Fill_EM_Layer_2 = Fill_EM_Layer_2 , -# Fill_EM_Layer_3 = Fill_EM_Layer_3 , -# Fill_HAD_Layer_0 = Fill_HAD_Layer_0, -# Fill_HAD_Layer_1 = Fill_HAD_Layer_1, -# Fill_HAD_Layer_2 = Fill_HAD_Layer_2, -# Fill_Etconoise_Radii = Fill_Etconoise_Radii, -# Fill_Etconoise_Sigma = Fill_Etconoise_Sigma, -# Fill_Etringnoise_Radii = Fill_Etringnoise_Radii, -# Fill_Etringnoise_Sigma = Fill_Etringnoise_Sigma -# ) - -## raw cluster variables -#IsolationVars.extend(['Eraw57' , '', 'float', -# 'etaraw57', '', 'float']); -#PhotonD3PDObject.defineBlock(1, "PhotonUDIsoVars", -# D3PDMakerCoreComps.UserDataFillerTool, -# UDPrefix = PhotonUDPrefix, -# Vars = IsolationVars) - -# ********************************** end add eraw57 and topocluster isolations ********************************* # - - -## This part creates an index (and some other content) for the tracks associated with the primary -## conversion vertex, with the index pointing towards the "trk_" block - -## Associate the photon with TrackParticles -#ConversionTrackParticleAssociation = IndexMultiAssociation(PhotonD3PDObject, -# PhotonD3PDMaker.ConversionTrackParticleAssociationTool, -# "trk", -# "convTrk_", -# level=1, -# blockname="ConversionTrackIndex", -# allowMissing=False) -## Associate the track particles with their TrackInfo -#ConversionTrackParticleTrackInfoAssociation = SimpleAssociation(ConversionTrackParticleAssociation, -# TrackD3PDMaker.TrackParticleInfoAssociationTool) -#ConversionTrackParticleTrackInfoAssociation.defineBlock(1, "ConversionTrackInfo", TrackD3PDMaker.TrackInfoFillerTool) - - - -## This part is very similar to the above, but it does it for all conversion vertices -## associated with the photon. So it makes vector<vector<vector<T>>>'s, again with the -## index pointing towards the trk_ block. - -## In principle, this could replace the block above, since all the information in -## the previous block is contained in these vectors. - -#from D3PDMakerCoreComps.ContainedMultiAssociation import ContainedMultiAssociation -#from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation -## Associate the photon with secondary vertices -#ConversionVertexAssociation = ContainedVectorMultiAssociation(PhotonD3PDObject, -# PhotonD3PDMaker.ConversionVertexAssociationTool, -# prefix='vx_') -## Associate each secondary vertex with VxTrackAtVertex's -#ConversionVertexTrackAssociation = ContainedVectorMultiAssociation(ConversionVertexAssociation, -# TrackD3PDMaker.VertexTrackAssociationTool, -# prefix="convTrk_") - -## Associate each VxTrackAtVertex with a TrackParticle -#ConversionVertexTrackTrackParticleAssociation = IndexAssociation(ConversionVertexTrackAssociation, -# TrackD3PDMaker.VxTrackAtVertexTrackParticleAssociationTool, -# "trk", -# '', -# level=1, -# blockname="ConversionVertexTrackIndex", -# allowMissing=False) -## Associate each TrackParticle with TrackInfo -#ConversionVertexTrackTrackParticleTrackInfoAssociation = SimpleAssociation(ConversionVertexTrackTrackParticleAssociation, -# TrackD3PDMaker.TrackParticleInfoAssociationTool) -#ConversionVertexTrackTrackParticleTrackInfoAssociation.defineBlock(1, "ConversionVertexTrackInfo", TrackD3PDMaker.TrackInfoFillerTool) - - - - - - - - -# Track parameters at conversion vertex -from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation -from egammaD3PDMaker.PhotonD3PDObject import ConversionVertexAssociation -VxTrackAtConversionVertexAssociationTool = ContainedVectorMultiAssociation(ConversionVertexAssociation, - PhotonD3PDMaker.VxTrackAtVertexAssociationTool, - prefix="paramsAtConvVtx_") -ConversionVertexTrackTrackParticlePerigeeAtVertexAssociationTool = SimpleAssociation(VxTrackAtConversionVertexAssociationTool, - PhotonD3PDMaker.ConversionPerigeeAssociationTool) -ConversionVertexTrackTrackParticlePerigeeAtVertexAssociationTool.defineBlock (1, 'Trk', - TrackD3PDMaker.PerigeeFillerTool) -TrackParticleCovarAssoc = SimpleAssociation (ConversionVertexTrackTrackParticlePerigeeAtVertexAssociationTool, - TrackD3PDMaker.PerigeeCovarianceAssociationTool) -TrackParticleCovarAssoc.defineBlock (3, 'TrkCovDiag', - TrackD3PDMaker.CovarianceFillerTool, - IsTrackPerigee = True, - Error = False, - DiagCovariance = True) -TrackParticleCovarAssoc.defineBlock (3, 'TrkCovOffDiag', - TrackD3PDMaker.CovarianceFillerTool, - IsTrackPerigee = True, - Error = False, - OffDiagCovariance = True) - - -# ********* already added in PhotonD3PDObject, don't need here ************* # - -# Associate the photon with secondary vertices -#from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation -#ConversionVertexAssociation = ContainedVectorMultiAssociation(PhotonD3PDObject, -# egammaD3PDMaker.ConversionVertexAssociationTool, -# prefix='vx_') -#ConversionVertexAssociation.defineBlock(10, 'ConversionVertexPosition', TrackD3PDMaker.VertexPositionFillerTool) -#ConversionVertexAssociation.defineBlock(10, 'ConversionVertexKinematics', TrackD3PDMaker.VertexKineFillerTool) - -# Associate each secondary vertex with VxTrackAtVertex's -#ConversionVertexTrackAssociation = ContainedVectorMultiAssociation(ConversionVertexAssociation, -# TrackD3PDMaker.VertexTrackAssociationTool, -# prefix="convTrk_") - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CoreTruthFilterTool.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CoreTruthFilterTool.py deleted file mode 100644 index 109490a46d7b56660b99067ec6eb60a8e346eaf6..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/CoreTruthFilterTool.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# $Id: GenObjectsFilterTool.py 348268 2011-02-28 16:12:50Z krasznaa $ -# - -## -# @short Function returning a pre-configured instance of GenObjectsFilterTool -# -# This configuration of the tool lets the user select almost all particles -# from the truth record. -# -def CoreTruthFilterTool(): - - # Name for this tool instance: - toolName = "CoreTruthFilterTool" - - # Instantiate the tool if necessary: - from AthenaCommon.AppMgr import ToolSvc - if not hasattr( ToolSvc, toolName ): - from TruthD3PDAnalysis.TruthD3PDAnalysisConf import D3PD__GenObjectsFilterTool - ToolSvc += D3PD__GenObjectsFilterTool( toolName ) - - # Get hold of the tool: - tool = getattr( ToolSvc, toolName ) - - # Set all of the tool's properties: - tool.PtMin = 100.0 - tool.EtaMax = 5.0 - tool.RemoveEmptyEvents = True - tool.RemoveDummyEvents = True - tool.RemoveInTimePileUp = True - tool.Remove2BCPileUp = True - tool.Remove800nsPileUp = True - tool.RemoveCavernBkg = False - tool.SelectTruthTracks = False - - # Return this tool to the user: - return tool diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/D3PDProdFlags.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/D3PDProdFlags.py index c5cb7cf08a063d56419c648d02a2ec57e3e10d01..083e09528c87eaad671b095e23844ba40cda0693 100644 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/D3PDProdFlags.py +++ b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/D3PDProdFlags.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # $Id$ # @@ -97,54 +97,6 @@ jobproperties.D3PDProdFlags.add_JobProperty (WriteMuonD3PD) listAllKnownD3PD.append (prodFlags.WriteMuonD3PD) -class WritePhysicsD3PD (JobProperty): - """Produce the physics D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_PHYSICS' - FileName = '' - isVirtual = False - DPDMakerScript = "D3PDMakerConfig/PhysicsD3PD_prodJobOFragment.py" - TreeNames = ['physics', 'physicsTrigDec'] - SubSteps = ['a2d', 'e2d'] -jobproperties.D3PDProdFlags.add_JobProperty (WritePhysicsD3PD) -listAllKnownD3PD.append (prodFlags.WritePhysicsD3PD) - - -class WriteLongLivedParticleD3PD (JobProperty): - """Produce the Long Lived Particle D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_SUSYLLP' - FileName = '' - isVirtual = False - DPDMakerScript = "LongLivedParticleD3PDMaker/LongLivedParticleD3PD_prodJob\ -OFragment.py" - TreeNames = ['llp'] - SubSteps = ['a2d', 'e2d'] -jobproperties.D3PDProdFlags.add_JobProperty (WriteLongLivedParticleD3PD) -listAllKnownD3PD.append (prodFlags.WriteLongLivedParticleD3PD) - - -class WriteTopBoostJSD3PD (JobProperty): - """Produce the BoostedTop D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_TOPBOOST' - FileName = '' - isVirtual = False - DPDMakerScript = "BoostedTopD3PDMaker/TopBoostJSD3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -jobproperties.D3PDProdFlags.add_JobProperty (WriteTopBoostJSD3PD) -listAllKnownD3PD.append (prodFlags.WriteTopBoostJSD3PD) - - - - class WriteBackgroundD3PD (JobProperty): """Produce the Background D3PD.""" statusOn = True @@ -179,47 +131,17 @@ jobproperties.D3PDProdFlags.add_JobProperty (WriteTriggerD3PD) listAllKnownD3PD.append (prodFlags.WriteTriggerD3PD) -class WriteTrigMuonD3PD (JobProperty): - """Produce the TrigMuon D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_TRIGMU' - FileName = '' - isVirtual = False - DPDMakerScript = "TrigMuonD3PDMaker/TrigMuonD3PD_prodJobOFragment.py" - TreeNames = ['trigger'] - SubSteps = ['e2d', 'a2d'] -jobproperties.D3PDProdFlags.add_JobProperty (WriteTrigMuonD3PD) -listAllKnownD3PD.append (prodFlags.WriteTrigMuonD3PD) - # # ####################################################### -# Top D3PDs -_importFlagsFromModule ('TopInputsD3PDMaker.TopInputsD3PDProdFlags', True) - -# Standard Model D3PDs -_importFlagsFromModule ('PhysicsD3PDMaker.PhysicsD3PDProdFlags') - # Jet tag D3PDs _importFlagsFromModule ('JetTagD3PDMaker.JetTagD3PDProdFlags') -# SUSY D3PDs -_importFlagsFromModule ('SUSYD3PDMaker.SUSYD3PDProdFlags', True) - # Tracking D3PDs. _importFlagsFromModule ('InDetD3PDMaker.VertexD3PDAnalysisProdFlags', True) # egamma D3PDs. _importFlagsFromModule ('egammaD3PDMaker.egammaD3PDProdFlags') - -# Heavy ion D3PDs. -_importFlagsFromModule ('HeavyIonD3PDMaker.HeavyIonD3PDProdFlags', True) - -# Trigger D3PDs. -#_importFlagsFromModule ('TrigBJetD3PDMaker.TrigBJetD3PDProdFlags') - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/GenericTriggerBitsD3PDObject.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/GenericTriggerBitsD3PDObject.py deleted file mode 100644 index ffba607b15a3f1d37f22362b8468ce5a6fe52ddb..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/GenericTriggerBitsD3PDObject.py +++ /dev/null @@ -1,602 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# $Id$ -# -# @file GenericD3PDMaker/python/GenericTriggerBitsD3PDObject.py -# shamelessly copied by Gustaaf Brooijmans from SUSY: -# @author Bjorn H. Samset <b.h.samset@fys.uio.no> -# @date Jan, 2010 -# @brief Define trigger bit blocks for Generic. -# - - - -import D3PDMakerCoreComps -import TriggerD3PDMaker -from TriggerD3PDMaker.defineTriggerBits import defineTriggerBits -from D3PDMakerCoreComps.D3PDObject import make_Void_D3PDObject -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -#from SUSYD3PDMaker.SUSYD3PDFlags import SUSYD3PDFlags - -# Create the object type. -GenericTriggerBitsD3PDObject = make_Void_D3PDObject( "", "GenericTriggerBitsD3PDObject", - "GenericTriggerBitsFiller" ) - -###### -# Define blocks. - -if D3PDMakerFlags.DoTrigger(): - - #-- for R&D NTUP_Generic{SKIM}, put level of detail at 10 - defineTriggerBits (GenericTriggerBitsD3PDObject, 10, - ['EF_.*']) - - ##Tau bits - defineTriggerBits (GenericTriggerBitsD3PDObject, 10, - ['L1_Tau*', - 'EF_Tau*', - 'EF_mu4T*', - 'EF_2mu4T*', - 'EF_mu4Tmu6', - ]) - - ##for TAU group - defineTriggerBits (GenericTriggerBitsD3PDObject, 10, - ['L1_J.*', - 'L1_2J.*', - 'L1_3J.*', - 'L1_4J.*', - 'EF_g.*', - 'EF_2mu10.*', - 'EF_xs.*' - ]) - - - - ##jet MET bits - defineTriggerBits (GenericTriggerBitsD3PDObject, 10, - [#Level1 - 'L1_J10', - 'L1_J10_win6', - 'L1_J15', - 'L1_J20', - 'L1_J30', - 'L1_J50', - 'L1_J75', - 'L1_J175', - 'L1_J250', - 'L1_2J10_J50', - 'L1_2J10_J75', - 'L1_3J10', - 'L1_3J15', - 'L1_3J20', - 'L1_3J50', - 'L1_3J10_J50', - 'L1_4J10', - 'L1_4J15', - 'L1_XE20', - 'L1_XE25', - 'L1_XE30', - 'L1_XE35', - 'L1_XE40', - 'L1_XE50', - 'L1_XE60', - - 'L1_XS15', - 'L1_XS20', - 'L1_XS25', - 'L1_XS30', - 'L1_XS35', - 'L1_XS40', - 'L1_XS45', - 'L1_XS50', - - 'L1_JE100', - 'L1_JE140', - 'L1_JE200', - - 'L1_2J5', - 'L1_2J10', - 'L1_2J10_win6', - 'L1_2J10_J30_JE140', - 'L1_2J15', - 'L1_J15_MV', - 'L1_J15_LV', - 'L1_J15_NL', - - 'L1_J50_XE20', - 'L1_J50_XE25', - -# 'L1_MBTS_A', -# 'L1_MBTS_C', -# 'L1_MBTS_1', -# 'L1_MBTS_2', -# 'L1_MBTS_1_1', -# 'L1_MBTSA0', -# 'L1_MBTSA1', -# 'L1_MBTSA2', -# 'L1_MBTSA3', -# 'L1_MBTSA4', -# 'L1_MBTSA5', -# 'L1_MBTSA6', -# 'L1_MBTSA7', -# 'L1_MBTSA8', -# 'L1_MBTSA9', -# 'L1_MBTSA10', -# 'L1_MBTSA11', -# 'L1_MBTSA12', -# 'L1_MBTSA13', -# 'L1_MBTSA14', -# 'L1_MBTSA15', -# 'L1_MBTSC0', -# 'L1_MBTSC0', -# 'L1_MBTSC1', -# 'L1_MBTSC2', -# 'L1_MBTSC3', -# 'L1_MBTSC4', -# 'L1_MBTSC5', -# 'L1_MBTSC6', -# 'L1_MBTSC7', -# 'L1_MBTSC8', -# 'L1_MBTSC9', -# 'L1_MBTSC10', -# 'L1_MBTSC11', -# 'L1_MBTSC12', -# 'L1_MBTSC13', -# 'L1_MBTSC14', -# 'L1_MBTSC15', - 'L1_TE150', - 'L1_TE360', - 'L1_JE120', - 'L1_JE280', - - #Level 2 - 'L2_j25', - 'L2_j35', - 'L2_j50', - 'L2_j70', - 'L2_j95', - - 'L2_2b10_medium_L1JE100', - 'L2_2b10_medium_L1JE140', - 'L2_2b15_medium_3L1J15', - 'L2_2b20_medium_3L1J20', - 'L2_2b10_medium_4L1J10', - 'L2_2b10_medium_L1_2J10J50', - 'L2_3b10_loose_4L1J10', - 'L2_3b15_loose_4L1J15', - - 'L2_2j25_j70', - 'L2_2j25_j95', - - 'L2_3j25', - 'L2_3j25_j70', - 'L2_3j70', - 'L2_4j25', - 'L2_4j25', - 'L2_5j25', - 'L2_6j25', - - 'L2_xe10_noMu', - - 'L2_xe30_noMu', - 'L2_xe35_noMu', - 'L2_xe40_noMu', - 'L2_xe50_noMu', - 'L2_xe60_noMu', - 'L2_xe70_noMu', - - - 'L2_je255', - - - - 'L2_2j25_j70_anymct100', - - - #Event Filter - 'EF_j10v3', - 'EF_j20v2', - 'EF_j40', - 'EF_j80v2', - 'EF_2j10', - 'EF_2j20', - 'EF_2j40', - 'EF_2j10_deta3_5', - 'EF_2j10_deta5', - 'EF_2j20_deta3_5', - 'EF_2j40_deta3_5', - - 'EF_j10_a4_EFFS', - 'EF_j15_a4_EFFS', - 'EF_j20_a4_EFFS', - 'EF_j30_a4_EFFS', - 'EF_j40_a4_EFFS', - 'EF_j55_a4_EFFS', - 'EF_j75_a4_EFFS', - 'EF_j100_a4_EFFS', - 'EF_j135_a4_EFFS', - 'EF_j180_a4_EFFS', - 'EF_j240_a4_EFFS', - - 'EF_L1J175_NoAlg', - 'EF_L1J250_NoAlg', - - 'EF_3j30_a4_EFFS', - 'EF_3j75_a4_EFFS', - 'EF_4j30_a4_EFFS', - 'EF_5j30_a4_EFFS', - 'EF_6j30_a4_EFFS', - - 'EF_xe*', - 'EF_xs*', - #'EF_xe20_noMu', - #'EF_xe25_noMu', - #'EF_xe30_noMu', - #'EF_xe40_noMu', - #'EF_xe50_noMu', - #'EF_xe60_noMu', - #'EF_xe70_noMu', - #'EF_xe80_noMu', - #'EF_xe90_noMu', - - #'EF_jeXXX', - - 'EF_j120_j55_j40_a4_EFFS', - - 'EF_j75_a4_EFFS_jetNoEF_EFxe20_noMu', - 'EF_j75_a4_EFFS_jetNoEF_EFxe25_noMu', - 'EF_j75_a4_EFFS_xe40_loose_noMu', - 'EF_j75_a4_EFFS_xe45_loose_noMu', - 'EF_j75_a4_EFFS_xe50_loose_noMu', - 'EF_j75_a4_EFFS_xe55_loose_noMu', - 'EF_j75_a4_EFFS_xe60_loose_noMu', - - 'EF_j75_2j30_a4_EFFS_HT350', - 'EF_j75_2j30_a4_EFFS_HT400', - 'EF_j100_a4_EFFS_HT350', - 'EF_j100_a4_EFFS_HT400', - - 'EF_j75_j30_a4_EFFS_L2anymct150', - 'EF_j75_j30_a4_EFFS_L2anymct175', - 'EF_j75_j30_a4_EFFS_anymct150', - 'EF_j75_j30_a4_EFFS_anymct175', - 'EF_j75_j30_a4_EFFS_leadingmct150', - - 'EF_j135_j30_a4_EFFS_dphi04', - 'EF_j180_j30_a4_EFFS_dphi04', - - 'EF_SeededStreamerL1CaloXS', - - # 2010 Items - 'L1_J10', - 'L1_J15', - 'L1_J30', - 'L1_J55', - 'L1_J75', - 'L1_2J10', - 'L1_2J15', - 'L1_3J10', - 'L1_4J10', - - 'L1_J5', - 'L1_J95', - 'L1_J115', - 'L1_2J10_J30', - 'L1_2J10_J55', - 'L1_2J15_J75', - - 'L2_2j25_j45_dphi03', - 'L2_2j25_j70_dphi03', - 'L2_2j30_j90_dphi03', - 'L2_2j25_j45_anymct100', - 'L2_2j25_j45_anymct150', - 'L2_2j25_j45_anymct175', - 'L2_2j30_anymct100', - 'L2_2j30_anymct150', - 'L2_2j30_anymct175', - 'L2_2j25_j70_anymct150', - 'L2_2j25_j70_anymct175', - 'L2_2j25_j45_leadingmct100', - 'L2_2j25_j45_leadingmct150', - 'L2_2j25_j45_leadingmct175', - 'L2_2j30_leadingmct100', - 'L2_2j30_leadingmct175', - 'L2_2j30_leadingmct150', - 'L2_2j25_j70_leadingmct150', - 'L2_2j25_j70_leadingmct175', - - 'EF_j75_jetNoEF_EFxe20_noMu', - 'EF_j75_jetNoEF_EFxe25_noMu', - 'EF_2j35_jetNoEF', - 'EF_j35_jetNoEF', - 'EF_j50_jetNoEF', - 'EF_j75_jetNoEF', - 'EF_j95_jetNoEF', - 'EF_j115_jetNoEF', - 'EF_j135_jetNoEF', - 'EF_3j20', - - 'EF_j30_jetNoCut', - 'EF_j35_jetNoCut', - 'EF_j95_jetNoCut', - 'EF_2j30_jetNoCut', - 'EF_2j50_jetNoCut', - 'EF_2j75_jetNoCut', - 'EF_3j30_jetNoCut', - 'EF_3j35_jetNoCut', - 'EF_3j50_jetNoCut', - 'EF_3j75_jetNoCut', - 'EF_4j30_jetNoCut', - 'EF_4j35_jetNoCut', - 'EF_4j50_jetNoCut', - 'EF_5j30_jetNoCut', - - 'EF_2j30_jetNoEF', - 'EF_2j50_jetNoEF', - 'EF_2j75_jetNoEF', - 'EF_3j30_jetNoEF', - 'EF_3j35_jetNoEF', - 'EF_3j50_jetNoEF', - 'EF_3j75_jetNoEF', - 'EF_4j30_jetNoEF', - 'EF_4j35_jetNoEF', - 'EF_4j50_jetNoEF', - 'EF_5j30_jetNoEF', - - 'EF_xe40', - 'EF_xe25', - 'EF_xe50', - 'EF_xe80', - - ]) - - - ##bjet bits - defineTriggerBits (GenericTriggerBitsD3PDObject, 10, - [# Level 2 - - #Event Filter - 'EF_b*', - 'EF_2b*', - 'EF_3b*', - #'EF_b10_tight_4L1J10', - #'EF_b10_tight_L1JE140', - #'EF_b10_loose_EFxe25_noMu_L1JE140', - #'EF_2b10_medium_4L1J10', - #'EF_2b10_medium_3L1J10', - #'EF_2b10_medium_L1JE140', - #'EF_2b20_medium_3L1J20', - #'EF_2b15_medium_3L1J15', - #'EF_3b10_loose_4L1J10', - #'EF_3b15_loose_4L1J15', - - ]) - - - - ##egamma bits - defineTriggerBits (GenericTriggerBitsD3PDObject, 10, - [#Level 1 - 'L1_EM10', - 'L1_EM12', - 'L1_EM14', - 'L1_EM16', - 'L1_EM30', - - 'L1_2EM3', - 'L1_2EM5', - 'L1_2EM7', - 'L1_2EM10', - 'L1_2EM14', - 'L1_3EM5', - 'L1_2EM3_EM7', - - # Level 2 - 'L2_e10_medium', - 'L2_e15_medium', - 'L2_e15_tight', - 'L2_e20_loose', - 'L2_e20_medium', - - 'L2_2e10_medium', - - 'L2_g10_loose', - 'L2_g11_etcut', - 'L2_g15_loose', - 'L2_g20_etcut', - 'L2_g20_loose', - 'L2_g40_loose', - 'L2_g60_loose', - 'L2_g80_loose', - 'L2_g150_etcut', - - 'L2_2g15_loose', - 'L2_2g20_loose', - - 'L2_2e12_medium', - 'L2_3e10_medium', - 'L2_e60_loose', - 'L2_e22_medium', - 'L2_e20_medium1', - 'L2_mu*', - 'L2_2mu*', - - - - #Event Filter - 'EF_e*', - 'EF_2e*', - 'EF_g*', - 'EF_2g*', - 'EF_2e7T_medium1', - 'EF_e12Tvh_loose1', - 'EF_e12Tvh_medium1', - 'EF_e18vh_medium1', - 'EF_e7T_loose1', - 'EF_2e7T_medium1_L2StarB_mu6', - 'EF_e12Tvh_loose1_vbf_L1TAU11I_EM10VH_FJ15', - 'EF_e12Tvh_loose1_vbf_L1TAU11I_EM10VH_J15CF', - #'EF_e10_loose', - #'EF_e10_medium', - #'EF_e15_medium', - #'EF_e15_tight', - #'EF_e20_loose', - #'EF_e20_medium', - #'EF_e20_medium1', - - #'EF_2e10_medium', - #'EF_2e12_medium', - #'EF_3e10_medium', - - #'EF_g10_loose', - #'EF_g11_etcut', - #'EF_g15_loose', - #'EF_g20_etcut', - #'EF_g20_loose', - #'EF_g40_loose', - #'EF_g40_loose_EFxe40_noMu', - #'EF_g40_tight', - #'EF_g60_loose', - #'EF_g80_loose', - #'EF_g150_etcut', - - #'EF_2g15_loose', - #'EF_2g20_loose', - #'EF_g100_etcut_g50_etcut', - - - - # 2010 Items - 'EF_g17_etcut', - 'EF_2e5_medium', - 'L1_EM13I', - 'L1_EM18', - 'L1_EM18I', - 'L1_EM23I', - 'L1_EM100', - - - - ]) - - ##muon bits - defineTriggerBits (GenericTriggerBitsD3PDObject, 10, - [#Level 1 - 'L1_MU0', - 'L1_MU6', - 'L1_MU10', - 'L1_MU11', - 'L1_MU15', - 'L1_MU20', - - 'L1_2MU0', - 'L1_2MU4', - 'L1_2MU6', - 'L1_2MU10', - - #Level 2 - 'L2_mu10', - 'L2_mu15', - 'L2_mu20', - 'L2_mu20_MSonly', - 'L2_mu20_MSOnlyBarrel', - 'L2_mu20_slow', - 'L2_2mu4', - 'L2_2mu10', - #'L2_2mu13', - 'L2_2mu*', - - 'L2_mu13_MG', - 'L2_mu13_MG', - 'L2_mu22_MG', - 'L2_mu20_MG', - 'L2_mu18_MG', - - - #Event Filter - 'EF_mu*', - 'EF_2mu*', - - - - 'EF_mu4', - 'EF_mu6', - 'EF_mu10', - 'EF_mu10_MSonly' - 'EF_mu13', - 'EF_mu13_MG', - 'EF_mu13_tight', - 'EF_mu15', - 'EF_mu15i', - 'EF_mu15_MG', - 'EF_mu18', - 'EF_mu18_MG', - 'EF_mu20', - 'EF_mu20i', - 'EF_mu20_MG', - 'EF_mu20_MSonly' - 'EF_mu20_slow', - 'EF_mu20i', - 'EF_mu22', - 'EF_mu22_MG', - 'EF_mu40', - 'EF_mu40_MSonly', - 'EF_mu40_MSonly_barrel', - 'EF_mu40_MSonly_tight', - 'EF_mu40_MSonly_tighter', - - 'EF_2mu4', - 'EF_2mu6', - 'EF_2mu10', - 'EF_2mu10_loose', - 'EF_mu15_mu10_EFFS', - #'EF_2mu4T_DiMu_Barrel', - #'EF_2mu4T_DiMu_BarrelOnly', - #'EF_mu4Tmu6_DiMu_Barrel', - #'EF_mu4Tmu6_DiMu_noVtx_noOS', - - 'EF_3mu6', - 'EF_3mu6_MSonly', - - - # 2010 Items - - - ]) - - ##mixed bits - defineTriggerBits (GenericTriggerBitsD3PDObject, 10, - [# Level 1 - 'L1_MU0_J5', - 'L1_MU0_J10', - 'L1_MU0_J40', - 'L1_MU0_J70', - - 'L1_EM10_XE20', - - # Level 2 - 'L2_mu4_j10', - 'L2_mu4_j15', - 'L2_mu4_j10_matched', - 'L2_mu4_j20_matched', - 'L2_mu4_j70_matched', - - 'L2_e15_medium_xe30_noMu', - - 'L2_e10_mu6', - - # Event Filter - 'EF_mu4_j10', - 'EF_mu4_j20', - 'EF_mu4_j10_matched', - 'EF_mu4_j20_matched', - 'EF_mu4_j40_matched', - 'EF_mu4_j70_matched', - - 'EF_2mu6_MSonly_g10_loose', - 'EF_e15_medium_xe30', - - 'EF_e10_mu6', - ]) - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/PhotonCustomMET.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/PhotonCustomMET.py deleted file mode 100644 index 164c6969278c929e38d558c87ae513de67791f2b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/PhotonCustomMET.py +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -from RecExConfig.RecFlags import rec -from AthenaCommon.SystemOfUnits import GeV -from AthenaPython.PyAthena import egammaPID -from MissingET.METRefGetter_plup import make_METRefAlg -from PhotonAnalysisUtils.PhotonNeuralNetworkTool import PhotonNeuralNetworkTool -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence -from PhotonD3PDMaker.PhotonD3PDMakerFlags import PhotonD3PDMakerFlags - -import D3PDMakerCoreComps -import PhotonD3PDMaker - -import AthenaPython.PyAthena as PyAthena -PyAthena.load_library('egammaEnumsDict') - - -def PhotonCustomMET(): - - from AthenaCommon.AppMgr import ToolSvc - topSequence = AlgSequence() - - photongetter = D3PDMakerCoreComps.SGDataVectorGetterTool('photonTight_Getter', - TypeName = 'PhotonContainer', - SGKey = D3PDMakerFlags.PhotonSGKey()) - ToolSvc += photongetter - - electrongetter = D3PDMakerCoreComps.SGDataVectorGetterTool('electronTight_Getter', - TypeName = 'ElectronContainer', - SGKey = D3PDMakerFlags.ElectronSGKey()) - ToolSvc += electrongetter - - # ------------------------------------------------------------------------------------------- - # Filters for NN!!! - # add a filter to select NN tight photons - photonFilterNNTight = PhotonD3PDMaker.PhotonFilter(OutputCollectionName="SelectedPhotonsNNTight", - photonGetter = photongetter, - ptCut = 20000, - etaCut = 2.5, - IsEM = 0, - NNCut = True, - PhotonNNTool = PhotonNeuralNetworkTool()) - topSequence += photonFilterNNTight - - # add a filter to select normal electrons - electrongetter = D3PDMakerCoreComps.SGDataVectorGetterTool('electronNNTight_Getter', - TypeName = 'ElectronContainer', - SGKey = D3PDMakerFlags.ElectronSGKey()) - ToolSvc += electrongetter - - # add a filter that will create both photon and electron containers, with proper overlap removal (OR) - egammaORFilter_NN = PhotonD3PDMaker.EgammaFilter('egammaOR_Filter_NN', - OutputElectronCollectionName="SelectedORElectronsNNTight", - ElectronGetter = electrongetter, - ElectronPtCut = 10000, - ElectronEtaCut = 2.47, - ElectronIsEM = egammaPID.ElectronIDMediumPP, - OutputPhotonCollectionName="SelectedORPhotonsNNTight", - PhotonGetter = photongetter, - PhotonPtCut = 20000, - PhotonEtaCut = 2.37, - PhotonIsEM = 0, - PhotonNNCut = True, - PhotonNNTool = PhotonNeuralNetworkTool()) - topSequence += egammaORFilter_NN - - # add a filter that will create both photon and electron containers, with proper overlap removal (OR) - # but using standard Tight - egammaORFilter_tight = PhotonD3PDMaker.EgammaFilter('egamma_OR_Filter_tight', - OutputElectronCollectionName="SelectedORElectronsTight", - ElectronGetter = electrongetter, - ElectronPtCut = 10000, - ElectronEtaCut = 2.47, - ElectronIsEM = egammaPID.ElectronIDMediumPP, - OutputPhotonCollectionName="SelectedORPhotonsTight", - PhotonGetter = photongetter, - PhotonPtCut = 20000, - PhotonEtaCut = 2.37, - PhotonIsEM = egammaPID.PhotonIDTight, - PhotonNNCut = False, - PhotonNNTool = PhotonNeuralNetworkTool()) - topSequence += egammaORFilter_tight - - # add a filter that will create both photon and electron containers, - # with proper overlap removal (OR) but using standard Loose - egammaORFilter_loose = PhotonD3PDMaker.EgammaFilter('egamma_OR_Filter_loose', - OutputElectronCollectionName="SelectedORElectronsLoose", - ElectronGetter = electrongetter, - ElectronPtCut = 10000, - ElectronEtaCut = 2.47, - ElectronIsEM = egammaPID.ElectronIDMediumPP, - OutputPhotonCollectionName="SelectedORPhotonsLoose", - PhotonGetter = photongetter, - PhotonPtCut = 20000, - PhotonEtaCut = 2.37, - PhotonIsEM = egammaPID.PhotonIDLoose, - PhotonNNCut = False, - PhotonNNTool = PhotonNeuralNetworkTool()) - topSequence += egammaORFilter_loose - - - # Toggle for setting some options that we used to enable for various STVF configurations, - # before the MET configuration changes in 17.2.7.4.1. - - METcollections=[] - - # Loose photons - suffix='_PhotonLoose_Calib_OR_stdvert' - MET_PhotonLoose_Calib_OR_stdvert = make_METRefAlg(_suffix=suffix) - MET_PhotonLoose_Calib_OR_stdvert.photon_doPhotonTool = True - MET_PhotonLoose_Calib_OR_stdvert.gamma_noCut = True - MET_PhotonLoose_Calib_OR_stdvert.gamma_EgammaInputCollectionKey = "SelectedORPhotonsLoose" - MET_PhotonLoose_Calib_OR_stdvert.gamma_EleInputCollectionKey = "SelectedORElectronsLoose" - MET_PhotonLoose_Calib_OR_stdvert.gamma_calibType = "RefCalib" - MET_PhotonLoose_Calib_OR_stdvert.ele_noCut = True - MET_PhotonLoose_Calib_OR_stdvert.ele_EgammaInputCollectionKey = "SelectedORElectronsLoose" - MET_PhotonLoose_Calib_OR_stdvert.ele_calibType = "RefCalib" - MET_PhotonLoose_Calib_OR_stdvert.jet_calibType = 'ExclRefCalib' - MET_PhotonLoose_Calib_OR_stdvert.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" - - MET_PhotonLoose_Calib_OR_stdvert.cellout_PUSuppression_JA = False - MET_PhotonLoose_Calib_OR_stdvert() - METcollections += [suffix] - - # tight photons - suffix='_PhotonTight_Calib_OR_stdvert' - MET_PhotonTight_Calib_OR_stdvert = make_METRefAlg(_suffix=suffix) - MET_PhotonTight_Calib_OR_stdvert.photon_doPhotonTool = True - MET_PhotonTight_Calib_OR_stdvert.gamma_noCut = True - MET_PhotonTight_Calib_OR_stdvert.gamma_EgammaInputCollectionKey = "SelectedORPhotonsTight" - MET_PhotonTight_Calib_OR_stdvert.gamma_EleInputCollectionKey = "SelectedORElectronsTight" - MET_PhotonTight_Calib_OR_stdvert.gamma_calibType = "RefCalib" - MET_PhotonTight_Calib_OR_stdvert.ele_noCut = True - MET_PhotonTight_Calib_OR_stdvert.ele_EgammaInputCollectionKey = "SelectedORElectronsTight" - MET_PhotonTight_Calib_OR_stdvert.ele_calibType = "RefCalib" - MET_PhotonTight_Calib_OR_stdvert.jet_calibType = 'ExclRefCalib' - MET_PhotonTight_Calib_OR_stdvert.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" - MET_PhotonTight_Calib_OR_stdvert.cellout_PUSuppression_JA = False - MET_PhotonTight_Calib_OR_stdvert() - METcollections += [suffix] - - # NNTight photons - suffix = '_NNTight_Calib_OR_stdvert' - MET_NNTight_Calib_OR_stdvert = make_METRefAlg(_suffix=suffix) - MET_NNTight_Calib_OR_stdvert.photon_doPhotonTool = True - MET_NNTight_Calib_OR_stdvert.gamma_noCut = True - MET_NNTight_Calib_OR_stdvert.gamma_EgammaInputCollectionKey = "SelectedORPhotonsNNTight" - MET_NNTight_Calib_OR_stdvert.gamma_EleInputCollectionKey = "SelectedORElectronsNNTight" - MET_NNTight_Calib_OR_stdvert.gamma_calibType = "RefCalib" - MET_NNTight_Calib_OR_stdvert.ele_noCut = True - MET_NNTight_Calib_OR_stdvert.ele_EgammaInputCollectionKey = "SelectedORElectronsNNTight" - MET_NNTight_Calib_OR_stdvert.ele_calibType = "RefCalib" - MET_NNTight_Calib_OR_stdvert.jet_calibType = 'ExclRefCalib' - MET_NNTight_Calib_OR_stdvert.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" - MET_NNTight_Calib_OR_stdvertcellout_PUSuppression_JA = False - MET_NNTight_Calib_OR_stdvert() - METcollections += [suffix] - - - #return METcollections - - - - - - - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/SUSYCustomMET.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/SUSYCustomMET.py deleted file mode 100644 index 2ac1502c2f5a3c34194f0d5c0d0100a5540187ab..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/SUSYCustomMET.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -from MissingETD3PDMaker.MissingETD3PDMakerFlags import MissingETD3PDMakerFlags -from MissingETD3PDMaker.MissingETD3PDObject import MissingETD3PDObject -from MissingETD3PDMaker.MissingETD3PDObject import MissingETCompositionD3PDObject -from MissingETD3PDMaker.MissingETGoodnessD3PDObject import MissingETGoodnessD3PDObject -from SUSYD3PDMaker.SUSYD3PDFlags import SUSYD3PDFlags -#from MissingET.METRefGetter_new import * -from MissingET.METRefGetter_plup import * -from RecExConfig.RecFlags import rec - -############################################################################################################## -############################################################################################################## -############################################################################################################## - -def addSUSYCustomMissingET( topSequence ): - - #-------------------------------------- - # recalculate MET_RefFinal for studies - #-------------------------------------- - - #-- MET_RefFinal with no taus : PU suppressed MET also calculated. - newRefFinal_Egamma10NoTau_alg = make_METRefAlg(_suffix='_Egamma10NoTau') - newRefFinal_Egamma10NoTau_alg.tau_doTauTool = False - newRefFinal_Egamma10NoTau_alg.cellout_calibType = "Eflow" - newRefFinal_Egamma10NoTau_alg.jet_calibType = 'ExclRefCalib' - newRefFinal_Egamma10NoTau_alg.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" - newRefFinal_Egamma10NoTau_alg.cellout_PUSuppression_JA = True - newRefFinal_Egamma10NoTau_alg() - - # below not need anymore - - #if(SUSYD3PDFlags.FixMCTruthBug()): jetSGKey_TopoEM = 'AntiKt4TopoEMJetsAOD' - #else: jetSGKey_TopoEM = 'AntiKt4TopoEMJets' - - #if(SUSYD3PDFlags.do01LepFactoryNtuple() or SUSYD3PDFlags.do23Lep1TauFactoryNtuple() or SUSYD3PDFlags.doRazorFactoryNtuple()): - # simp20_alg = make_METRefAlg(_suffix='_Simplified20') - # simp20_alg.jet_JetInputCollectionKey = jetSGKey_TopoEM - # simp20_alg.jet_JetPtCut = 20.0*GeV - # simp20_alg.ele_EtCut = 20.0*GeV - # simp20_alg.jet_ApplyJetScale = "Yes" - # simp20_alg.jet_UseJetMomentForScale = True - # simp20_alg.jet_JetMomentForScale = "EMJES" - # simp20_alg.jet_RunSoftJetsTool = False - # simp20_alg.jet_SoftJetsPtCut = 7.0*GeV - # simp20_alg.jet_SoftJetsMaxPtCut = 20.0*GeV - # simp20_alg.photon_doPhotonTool = False - # simp20_alg.tau_doTauTool = False - # simp20_alg.jet_SoftJetsCalibType = "EmScale" - # simp20_alg.jet_ApplySoftJetsScale = "No" - # simp20_alg.jet_calibType ='EmScale' - # simp20_alg.ele_calibType ='RefCalib' - # simp20_alg.gamma_calibType ='EmScale' - # simp20_alg.cellout_calibType ='EmScale' - # simp20_alg.tau_calibType ='EmScale' - # simp20_alg.cryo_ApplyCorrection = "Off" - # simp20_alg.muon_container = "StacoMuonCollection" - # simp20_alg.muon_algorithm = "Staco" - # simp20_alg.muon_isolationAlg = "dRJet" - # simp20_alg() - - # exactly the same as Simplified20, only the ele_EtCut is 10 GeV (below) vs 20 GeV (Simplified20) - # simp20Elec10_alg = make_METRefAlg(_suffix='_Simplified20Elec10') - # simp20Elec10_alg.jet_JetInputCollectionKey = jetSGKey_TopoEM - # simp20Elec10_alg.jet_JetPtCut = 20.0*GeV - # simp20Elec10_alg.ele_EtCut = 10.0*GeV # this is default, but writing here to be explicit - # simp20Elec10_alg.jet_ApplyJetScale = "Yes" - # simp20Elec10_alg.jet_UseJetMomentForScale = True - # simp20Elec10_alg.jet_JetMomentForScale = "EMJES" - # simp20Elec10_alg.jet_RunSoftJetsTool = False - # simp20Elec10_alg.jet_SoftJetsPtCut = 7.0*GeV - # simp20Elec10_alg.jet_SoftJetsMaxPtCut = 20.0*GeV - # simp20Elec10_alg.photon_doPhotonTool = False - # simp20Elec10_alg.tau_doTauTool = False - # simp20Elec10_alg.jet_SoftJetsCalibType = "EmScale" - # simp20Elec10_alg.jet_ApplySoftJetsScale = "No" - # simp20Elec10_alg.jet_calibType ='EmScale' - # simp20Elec10_alg.ele_calibType ='RefCalib' - # simp20Elec10_alg.gamma_calibType ='EmScale' - # simp20Elec10_alg.cellout_calibType ='EmScale' - # simp20Elec10_alg.tau_calibType ='EmScale' - # simp20Elec10_alg.cryo_ApplyCorrection = "Off" - # simp20Elec10_alg.muon_container = "StacoMuonCollection" - # simp20Elec10_alg.muon_algorithm = "Staco" - # simp20Elec10_alg.muon_isolationAlg = "dRJet" - # simp20Elec10_alg() - - # exactly the same as Simplified20Elec10, only including Tau's - # simp20Elec10WithTaus_alg = make_METRefAlg(_suffix='_Simplified20Elec10WithTaus') - # simp20Elec10WithTaus_alg.jet_JetInputCollectionKey = jetSGKey_TopoEM - # simp20Elec10WithTaus_alg.jet_JetPtCut = 20.0*GeV - # simp20Elec10WithTaus_alg.ele_EtCut = 10.0*GeV # this is default, but writing here to be explicit - # simp20Elec10WithTaus_alg.jet_ApplyJetScale = "Yes" - # simp20Elec10WithTaus_alg.jet_UseJetMomentForScale = True - # simp20Elec10WithTaus_alg.jet_JetMomentForScale = "EMJES" - # simp20Elec10WithTaus_alg.jet_RunSoftJetsTool = False - # simp20Elec10WithTaus_alg.jet_SoftJetsPtCut = 7.0*GeV - # simp20Elec10WithTaus_alg.jet_SoftJetsMaxPtCut = 20.0*GeV - # simp20Elec10WithTaus_alg.photon_doPhotonTool = False - # simp20Elec10WithTaus_alg.tau_doTauTool = True - # simp20Elec10WithTaus_alg.jet_SoftJetsCalibType = "EmScale" - # simp20Elec10WithTaus_alg.jet_ApplySoftJetsScale = "No" - # simp20Elec10WithTaus_alg.jet_calibType ='EmScale' - # simp20Elec10WithTaus_alg.ele_calibType ='RefCalib' - # simp20Elec10WithTaus_alg.gamma_calibType ='EmScale' - # simp20Elec10WithTaus_alg.cellout_calibType ='EmScale' - # simp20Elec10WithTaus_alg.cryo_ApplyCorrection = "Off" - # simp20Elec10WithTaus_alg.muon_container = "StacoMuonCollection" - # simp20Elec10WithTaus_alg.muon_algorithm = "Staco" - # simp20Elec10WithTaus_alg.muon_isolationAlg = "dRJet" - # simp20Elec10WithTaus_alg() - - #if SUSYD3PDFlags.doLArHoleFix() and False: - # metLArFix_alg = make_METRefAlg(_suffix='_LArFixSimp20') - # metLArFix_alg.jet_JetInputCollectionKey = "AntiKtTopoEMJetsLArFix" - # metLArFix_alg.jet_JetPtCut = 20.0*GeV - # metLArFix_alg.ele_EtCut = 20.0*GeV - # metLArFix_alg.jet_ApplyJetScale = "Yes" - # metLArFix_alg.jet_UseJetMomentForScale = True - # metLArFix_alg.jet_JetMomentForScale = "EMJES" - # metLArFix_alg.jet_RunSoftJetsTool = False - # metLArFix_alg.jet_SoftJetsPtCut = 7.0*GeV - # metLArFix_alg.jet_SoftJetsMaxPtCut = 20.0*GeV - # metLArFix_alg.photon_doPhotonTool = False - # metLArFix_alg.tau_doTauTool = False - # metLArFix_alg.jet_SoftJetsCalibType = "EmScale" - # metLArFix_alg.jet_ApplySoftJetsScale = "No" - # metLArFix_alg.jet_calibType ='EmScale' - # metLArFix_alg.ele_calibType ='RefCalib' - # metLArFix_alg.gamma_calibType ='EmScale' - # metLArFix_alg.cellout_calibType ='EmScale' - # metLArFix_alg.tau_calibType ='EmScale' - # metLArFix_alg.cryo_ApplyCorrection = "Off" - # metLArFix_alg.muon_container = "StacoMuonCollection" - # metLArFix_alg.muon_algorithm = "Staco" - # metLArFix_alg.muon_isolationAlg = "dRJet" - # metLArFix_alg() - # topSequence.METRefAlg_LArFixSimp20.METRefCluster_LArFixSimp20.ClusterInputCollectionKey = 'SUSYClusterCandidate' - - return - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/addJetsInfo.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/addJetsInfo.py deleted file mode 100644 index acc434c31d7a05c28a5c6bfd4f19d0c3cb6c868e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/addJetsInfo.py +++ /dev/null @@ -1,370 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - - -from RecExConfig.RecFlags import rec -from D3PDMakerConfig.CommonD3PDMakerFlags import CommonD3PDMakerFlags -from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys -from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from JetD3PDMaker.JetD3PDObject import JetD3PDObject -from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation -from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation -from D3PDMakerCoreComps.IndexAssociation import IndexAssociation -from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation -from RecExConfig.ObjKeyStore import objKeyStore -from JetTagD3PDMaker.JetTagMSVVtxInJetD3PDObject import getJetTagMSVVtxInfoInJetD3PDObject -from TruthD3PDMaker.TruthJetD3PDObject import TruthJetD3PDObject - -from D3PDMakerConfig.CoreCommonD3PD import ExtendedJetD3PDObject -from JetTagD3PDMaker.JetTagTwoTrackVertexD3PDObject import getJetTagTwoTrackVertexD3PDObject - - -def AddConstitIndex(object, typename='CaloCluster', target='cl_', level=0): - import EventCommonD3PDMaker - import D3PDMakerCoreComps - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = False, - level = level) - ConstitAssoc.defineBlock (0, 'ConstitIndex'+typename, D3PDMakerCoreComps.IndexFillerTool, Target = target) - -def AddConstitTruthIndex(object, typename='CaloCluster', target='cl_', level=0): - import EventCommonD3PDMaker - import D3PDMakerCoreComps - import TruthD3PDMaker - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = False, - level = level) - genPart = SimpleAssociation(ConstitAssoc,TruthD3PDMaker.TruthParticleGenParticleAssociationTool) - trupart2 = IndexAssociation (genPart, TruthD3PDMaker.GenParticleTruthParticleAssociationTool, - target = 'mc_', - Target = 'mc_') - -def AddTrackAssocIndex(obj, level=99): - import JetTagD3PDMaker - JetTrackAssoc = IndexMultiAssociation(obj, JetTagD3PDMaker.JetTagJetTrackAssociationTool, 'trk', - prefix = 'TrackAssoc_',TrackAssocName="TrackAssoc", - blockname='TrackAssocblockindex', - level = level, FillVariables=False) - - -def _args (level, name, kwin, **kw): - kw = kw.copy() - kw['level'] = level - for (k, v) in kwin.items(): - if k.startswith (name + '_'): - kw[k[len(name)+1:]] = v - return kw - - -def addJetsInfo ( alg=None, file = 'physics.root', tuplename = 'physics', tmpFlag=True, **kw): - - if not alg: - from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - alg = MSMgr.NewRootStream(tuplename, file) - - flags=CommonD3PDMakerFlags - - #ExtendedJetD3PDObject = JetD3PDObject.copy() - - # add track index for track jets - if not kw.has_key ('AntiKt4Track_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target'): - kw['AntiKt4Track_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']="trk" - if not kw.has_key ('AntiKt3Track_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target'): - kw['AntiKt3Track_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']="trk" - if not kw.has_key ('AntiKt2Track_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target'): - kw['AntiKt2Track_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']="trk" - if not kw.has_key ('Kt3Track_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target'): - kw['Kt3Track_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']="trk" - if not kw.has_key ('AntiKt4TopoEMJets_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target'): - kw['AntiKt4TopoEMJets_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']="trk" - if not kw.has_key ('AntiKt4LCTopoJets_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target'): - kw['AntiKt4LCTopoJets_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']="trk" - if not kw.has_key ('AntiKt5LCTopo_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target'): - kw['AntiKt5LCTopo_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']="trk" - - - AddConstitIndex(ExtendedJetD3PDObject, typename='CaloCluster', target='cl_lc_', level=99) - AddTrackAssocIndex(ExtendedJetD3PDObject, level=99) - from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags - - # Jet information - jetInclude = flags.smallJetInclude() - jetIncludeTrack = jetInclude[:] - jetIncludeTrack += ['Rec::TrackParticleNavigableConstituentAssociationTool','WIDTH', 'DQMoments'] - jetIncludeTower = jetInclude[:] - jetIncludeTower += ['JVtx','JetVertexFraction'] - jetInclude += ['Samplings', - 'CaloClusterNavigableConstituentAssociationTool', - 'TrackAssocblockindex', - 'TracksMoments','Special','TrackMF','JetClusterMoment'] - jetIncludeLC = jetInclude[:] - jetIncludeLC += ['ConstituentScale'] - jetIncludeALL = jetInclude[:] - - btagging_blocks = [JetTagD3PDKeys.BTagWeightsBlockName(), JetTagD3PDKeys.TruthInfoBlockName(), - JetTagD3PDKeys.IP2DInfoBaseBlockName(), JetTagD3PDKeys.IP2DIPInfoBaseBlockName(), - JetTagD3PDKeys.IP3DInfoBaseBlockName(), JetTagD3PDKeys.IP3DIPInfoBaseBlockName(), JetTagD3PDKeys.JetFitterInfoBaseBlockName(), - JetTagD3PDKeys.JetFitterTagInfoBlockName(), JetTagD3PDKeys.SVInfoPlusBlockName(),JetTagD3PDKeys.JetFitterCombInfoBaseBlockName(), - "JetTag_Gaia", JetTagD3PDKeys.JetFitterCharmInfoBaseBlockName(), JetTagD3PDKeys.JetFitterCharmTagInfoBlockName(), # "JetTag_GaiaNeg",] - JetTagD3PDKeys.JetJFTwoTrackVertexAssocBlockName(), JetTagD3PDKeys.JetFitterVxAssocBlockName(), - JetTagD3PDKeys.SV1InfoBaseBlockName(),JetTagD3PDKeys.SV0InfoPlusBlockName()] - - #jetIncludeALL += btagging_blocks - jetIncludeALL += ['Uncertainties','BeamBackground','JetVertexFraction','CaloQual'] - - jetIncludeALL_LC = jetIncludeALL[:] - jetIncludeALL_LC += ['ConstituentScale'] - - jetExclude = flags.smallJetExclude()[:] - jetExclude += ['JES','JESMoments', 'Layer'] - - alg += ExtendedJetD3PDObject (**_args ( 3, 'AntiKt4TopoEMJets', kw, - #sgkey='AntiKt4TopoEMJetsReTagged', prefix='jet_AntiKt4TopoEM_', - sgkey='AntiKt4TopoEMNewJets', prefix='jet_AntiKt4TopoEM_', - include = jetIncludeALL+['SplitInfo','ConstituentScale']+btagging_blocks, - exclude = jetExclude, - JetVertexFraction_FromUD=True, - JetVertexFraction_FillFullJVF=True, - #AssocTrackCont_target="trk", - JetTag_SoftMuonChi2InfoMuonAssoc_target="mu_staco_", - allowMissing = True)) - - #alg += ExtendedJetD3PDObject (**_args ( 3, 'AntiKt6TopoEMJets', kw, - # sgkey='AntiKt6TopoEMNewJets', prefix='jet_AntiKt6TopoEM_', - # include = jetIncludeALL+['SplitInfo'], - # exclude = jetExclude, - # JetVertexFraction_FromUD=True, - # JetVertexFraction_FillFullJVF=True, - # allowMissing = True)) - - alg += ExtendedJetD3PDObject (**_args ( 3, 'AntiKt4LCTopoJets', kw, - sgkey='AntiKt4LCTopoNewJets', prefix='jet_AntiKt4LCTopo_', - include = jetIncludeALL_LC+['SplitInfo']+btagging_blocks, - exclude = jetExclude, - JetVertexFraction_FromUD=True, - JetVertexFraction_FillFullJVF=True, - JetTag_SoftMuonChi2InfoMuonAssoc_target="mu_staco_", - allowMissing = True)) - - #alg += ExtendedJetD3PDObject (**_args ( 3, 'AntiKt6LCTopoJets', kw, - # sgkey='AntiKt6LCTopoNewJets', prefix='jet_AntiKt6LCTopo_', - # include = jetIncludeALL_LC+['SplitInfo'], - # exclude = jetExclude, - # JetVertexFraction_FromUD=True, - # JetVertexFraction_FillFullJVF=True, - # allowMissing = True)) - - alg += ExtendedJetD3PDObject (**_args (2, 'JetElectronContainer90', kw, - sgkey='JetElectronContainer90', - prefix='eljet_', - include=flags.eljetInclude(), - exclude =['Constituents','ConstituentScale','JetShape', 'WIDTH', 'DQMoments', 'ActiveArea', 'OriginCorrection'], - allowMissing = True)) - - - ### add the MSV block - MSVJetCollections = [] - MSVJetCollections += ['AntiKt4TopoEMNewJets', 'AntiKt4LCTopoNewJets'] #, 'AntiKt6LCTopoNewJets', 'AntiKt6TopoEMNewJets'] - - ### link multisv to tracks - if not kw.has_key ('msvvtxinfo_JetTag_JetMultiSVVtxAssoc_target'): - kw['msvvtxinfo_JetTag_JetMultiSVVtxAssoc_target']= "trk" - #from JetTagD3PDMaker.JetTagMSVVtxInJetD3PDObject import getJetTagMSVVtxInfoInJetD3PDObject - alg += getJetTagMSVVtxInfoInJetD3PDObject(**_args(1,"msvvtxinfo", kw, - jetCollections=MSVJetCollections )) - - # add TwoTrackVertex object - alg += getJetTagTwoTrackVertexD3PDObject( level=0, jetCollections=MSVJetCollections ) - - if rec.doTruth(): - AddConstitTruthIndex(ExtendedJetD3PDObject,typename='TruthParticle', target='mc_', level=99) - -# below all for QCD group - - #TopoJets (EM, GCW) - - # lowPt jets - if flags.doRecJet() and flags.doTopoEMLowPtJet() and objKeyStore.isInInput("CaloClusterContainer","CaloCalTopoCluster"): - alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt4TopoEMLowPt', kw, prefix = 'jet_AntiKt4TopoEMLowPt_', sgkey = 'AntiKt4TopoEMLowPtJets', - include = jetInclude, exclude = jetExclude, JetVertexFraction_FromUD=True, - JetVertexFraction_FillFullJVF=True)) - - #alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt6TopoEMLowPt', kw, prefix = 'jet_AntiKt6TopoEMLowPt_', sgkey = 'AntiKt6TopoEMLowPtJets', - # include = jetInclude, exclude = jetExclude, JetVertexFraction_FromUD=True, - # JetVertexFraction_FillFullJVF=True)) - - # Tower Jets (EM) - if flags.doTowerJet() and rec.readAOD(): - #alg += ExtendedJetD3PDObject (**_args(flags.towerJetLevel(), 'AntiKt6Tower', kw, prefix = 'jet_AntiKt6Tower_', sgkey = 'AntiKt6TowerAODJets', - # include = jetIncludeTower, exclude = jetExclude, JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - pass - - # additional: TowerEM - if not rec.readAOD() and flags.doRecJet() and flags.doTowerEMJet(): - alg += ExtendedJetD3PDObject (**_args(flags.towerJetLevel(), 'AntiKt4TowerEM', kw, prefix = 'jet_AntiKt4TowerEMNew_', sgkey = 'AntiKt4TowerEMNewJets', - include = jetIncludeTower, exclude = jetExclude, JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - #alg += ExtendedJetD3PDObject (**_args(flags.towerJetLevel(), 'AntiKt6TowerEM', kw, prefix = 'jet_AntiKt6TowerEMNew_', sgkey = 'AntiKt6TowerEMNewJets', - # include = jetIncludeTower, exclude = jetExclude, JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - - - # additional: LCTopo addional R-sizes - if flags.doRecJet() and flags.doLCTopoJet() and objKeyStore.isInInput("CaloClusterContainer","CaloCalTopoCluster"): - alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt5LCTopo', kw, prefix = 'jet_AntiKt5LCTopo_', sgkey = 'AntiKt5LCTopoNewJets', - include = btagging_blocks, - exclude = jetExclude+['DQMoments'], JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - #alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt7LCTopo', kw, prefix = 'jet_AntiKt7LCTopo_', sgkey = 'AntiKt7LCTopoNewJets', - # exclude = jetExclude+['DQMoments'], JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt2LCTopo', kw, prefix = 'jet_AntiKt2LCTopo_', sgkey = 'AntiKt2LCTopoNewJets', - exclude = jetExclude+['DQMoments'], JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt3LCTopo', kw, prefix = 'jet_AntiKt3LCTopo_', sgkey = 'AntiKt3LCTopoNewJets', - exclude = jetExclude+['DQMoments'], JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - - # additional: LCTopoLowPt - if flags.doRecJet() and flags.doLCTopoLowPtJet() and objKeyStore.isInInput("CaloClusterContainer","CaloCalTopoCluster"): - alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt4LCTopoLowPt', kw, prefix = 'jet_AntiKt4LCTopoLowPt_', sgkey = 'AntiKt4LCTopoLowPtJets', - include = jetIncludeLC, exclude = jetExclude, JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - - #alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt6LCTopoLowPt', kw, prefix = 'jet_AntiKt6LCTopoLowPt_', sgkey = 'AntiKt6LCTopoLowPtJets', - # include = jetIncludeLC, exclude = jetExclude, JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - - # additional: LCTopo CB - if flags.doRecJet() and flags.doLCTopoCBJet() and objKeyStore.isInInput("CaloClusterContainer","CaloCalTopoCluster"): - alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt4LCTopoCB', kw, prefix = 'jet_AntiKt4LCTopoCB_', sgkey = 'AntiKt4LCTopoCBJets', - include = jetIncludeLC, exclude = jetExclude, JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - - #alg += ExtendedJetD3PDObject (**_args(flags.smallJetLevel(), 'AntiKt6LCTopoCB', kw, prefix = 'jet_AntiKt6LCTopoCB_', sgkey = 'AntiKt6LCTopoCBJets', - # include = jetIncludeLC, exclude = jetExclude, JetVertexFraction_FromUD=True, JetVertexFraction_FillFullJVF=True)) - - - # GhostJets - if ((not flags.doRecJet()) or flags.doRecJetOnlyAdditional()) and rec.readAOD(): - if flags.doGhostJet(): - #alg += ExtendedJetD3PDObject (**_args(0, 'AntiKt6GhostTower', kw, prefix = 'jet_AntiKt6GhostTower_', sgkey = 'AntiKt6GhostTowerAODJets', - # include = jetIncludeTower, exclude = jetExclude)) - pass - else: - if not rec.readAOD() and flags.doRecJet() and flags.doGhostJet(): - alg += ExtendedJetD3PDObject (**_args(0, 'AntiKt4GhostTowerNew', kw, prefix = 'jet_AntiKt4GhostTowerNew_', sgkey = 'AntiKt4GhostTowerNewJets', - include = jetIncludeTower, exclude = jetExclude)) - - #alg += ExtendedJetD3PDObject (**_args(0, 'AntiKt6GhostTowerNew', kw, prefix = 'jet_AntiKt6GhostTowerNew_', sgkey = 'AntiKt6GhostTowerNewJets', - # include = jetIncludeTower, exclude = jetExclude)) - - # TrackJets - - trackjets_btag_include = btagging_blocks - jetExcludeTrack = jetExclude[:] - #jetExcludeTrack += ['JetSamplingsFrac','EMFraction','ActiveArea','JES','JESMoments','EMScale'] - - AddConstitIndex(ExtendedJetD3PDObject, typename='Rec::TrackParticle', target='trk', level=99) - if flags.doRecJet() and flags.doTrackJet(): - alg += ExtendedJetD3PDObject (**_args(0, 'AntiKt4Track', kw, prefix = 'jet_AntiKt4Track_', sgkey = 'AntiKt4TrackJets', - include = jetIncludeTrack+['SplitInfo', 'substructureblocks']+trackjets_btag_include, exclude = jetExcludeTrack, JetVertexFraction_FromUD=False, JetVertexFraction_FillFullJVF=False)) - - #alg += ExtendedJetD3PDObject (**_args(0, 'AntiKt6Track', kw, prefix = 'jet_AntiKt6Track_', sgkey = 'AntiKt6TrackJets', - # include = jetIncludeTrack, exclude = jetExcludeTrack, JetVertexFraction_FromUD=False, JetVertexFraction_FillFullJVF=False)) - - #alg += ExtendedJetD3PDObject (**_args(0, 'AntiKt5Track', kw, prefix = 'jet_AntiKt5Track_', sgkey = 'AntiKt5TrackJets', - # include = jetIncludeTrack, exclude = jetExcludeTrack, JetVertexFraction_FromUD=False, JetVertexFraction_FillFullJVF=False)) - - #alg += ExtendedJetD3PDObject (**_args(0, 'AntiKt7Track', kw, prefix = 'jet_AntiKt7Track_', sgkey = 'AntiKt7TrackJets', - # include = jetIncludeTrack, exclude = jetExcludeTrack, JetVertexFraction_FromUD=False, JetVertexFraction_FillFullJVF=False)) - - alg += ExtendedJetD3PDObject (**_args(0, 'AntiKt2Track', kw, prefix = 'jet_AntiKt2Track_', sgkey = 'AntiKt2TrackJets', - include = jetIncludeTrack+trackjets_btag_include, exclude = jetExcludeTrack, JetVertexFraction_FromUD=False, JetVertexFraction_FillFullJVF=False)) - - alg += ExtendedJetD3PDObject (**_args(0, 'AntiKt3Track', kw, prefix = 'jet_AntiKt3Track_', sgkey = 'AntiKt3TrackJets', - include = jetIncludeTrack+trackjets_btag_include, exclude = jetExcludeTrack, JetVertexFraction_FromUD=False, JetVertexFraction_FillFullJVF=False)) - - alg += ExtendedJetD3PDObject (**_args(0, 'Kt3Track', kw, prefix = 'jet_Kt3Track_', sgkey = 'Kt3TrackJets', - include = jetIncludeTrack+trackjets_btag_include, exclude = jetExcludeTrack, JetVertexFraction_FromUD=False, JetVertexFraction_FillFullJVF=False)) - - - # Truth - if rec.doTruth(): - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - #if ( stdTruthParticleContainer != 'None'): - # alg += TruthParticleD3PDObject (**_args(1, 'TruthParticle', kw, sgkey = stdTruthParticleContainer, prefix='mcQCD_', exclude=['child_TruthParticleChildAssociation','parent_TruthParticleParentAssociation'])) - truthjetInclude = flags.truthJetInclude() - truthjetInclude += ['TruthParticleNavigableConstituentAssociationTool', - 'WIDTH' - ] - - if flags.doTruthJet(): - if flags.doRecTruthJet(): - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt4TruthNew', kw, sgkey='AntiKt4TruthNewJets', prefix='AntiKt4Truth_', - include=truthjetInclude+[JetTagD3PDKeys.TruthInfoBlockName()], exclude=flags.truthJetExclude())) - #alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt6TruthNew', kw, sgkey='AntiKt6TruthNewJets', prefix='AntiKt6Truth_', - # include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt4TruthWithNu', kw, sgkey='AntiKt4TruthWithNuJets', prefix='AntiKt4TruthWithNu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - #alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt6TruthWithNu', kw, sgkey='AntiKt6TruthWithNuJets', prefix='AntiKt6TruthWithNu_', - # include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt4TruthWithMuNu', kw, sgkey='AntiKt4TruthWithMuNuJets', prefix='AntiKt4TruthWithMuNu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - #alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt6TruthWithMuNu', kw, sgkey='AntiKt6TruthWithMuNuJets', prefix='AntiKt6TruthWithMuNu_', - # include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt4TruthWithMu', kw, sgkey='AntiKt4TruthWithMuJets', prefix='AntiKt4TruthWithMu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - #alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt6TruthWithMu', kw, sgkey='AntiKt6TruthWithMuJets', prefix='AntiKt6TruthWithMu_', - # include=truthjetInclude, exclude=flags.truthJetExclude())) - - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt5TruthNew', kw, sgkey='AntiKt5TruthNewJets', prefix='AntiKt5Truth_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - #alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt7TruthNew', kw, sgkey='AntiKt7TruthNewJets', prefix='AntiKt7Truth_', - # include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt5TruthWithNu', kw, sgkey='AntiKt5TruthWithNuJets', prefix='AntiKt5TruthWithNu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - #alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt7TruthWithNu', kw, sgkey='AntiKt7TruthWithNuJets', prefix='AntiKt7TruthWithNu_', - # include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt5TruthWithMuNu', kw, sgkey='AntiKt5TruthWithMuNuJets', prefix='AntiKt5TruthWithMuNu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - #alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt7TruthWithMuNu', kw, sgkey='AntiKt7TruthWithMuNuJets', prefix='AntiKt7TruthWithMuNu_', - # include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt5TruthWithMu', kw, sgkey='AntiKt5TruthWithMuJets', prefix='AntiKt5TruthWithMu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - #alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt7TruthWithMu', kw, sgkey='AntiKt7TruthWithMuJets', prefix='AntiKt7TruthWithMu_', - # include=truthjetInclude, exclude=flags.truthJetExclude())) - - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt2TruthNew', kw, sgkey='AntiKt2TruthNewJets', prefix='AntiKt2Truth_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt3TruthNew', kw, sgkey='AntiKt3TruthNewJets', prefix='AntiKt3Truth_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt2TruthWithNu', kw, sgkey='AntiKt2TruthWithNuJets', prefix='AntiKt2TruthWithNu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt3TruthWithNu', kw, sgkey='AntiKt3TruthWithNuJets', prefix='AntiKt3TruthWithNu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt2TruthWithMuNu', kw, sgkey='AntiKt2TruthWithMuNuJets', prefix='AntiKt2TruthWithMuNu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt3TruthWithMuNu', kw, sgkey='AntiKt3TruthWithMuNuJets', prefix='AntiKt3TruthWithMuNu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt2TruthWithMu', kw, sgkey='AntiKt2TruthWithMuJets', prefix='AntiKt2TruthWithMu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'AntiKt3TruthWithMu', kw, sgkey='AntiKt3TruthWithMuJets', prefix='AntiKt3TruthWithMu_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - - # truth WZ jets - alg += JetD3PDObject (**_args ( 1, 'AK4TruthJetWZ', kw, - sgkey='AntiKt4TruthJets_WZ', prefix='jet_AntiKt4TruthWZ_', - allowMissing = True)) - - if flags.doTruthPileupJet(): - if objKeyStore.isInInput("JetCollection","InTimeAntiKt4TruthJets"): - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'InTimeAntiKt4Truth', kw, sgkey='InTimeAntiKt4TruthJets', prefix='InTimeAntiKt4Truth_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - if objKeyStore.isInInput("JetCollection","OutOfTimeAntiKt4TruthJets"): - alg += ExtendedJetD3PDObject (**_args(flags.truthJetLevel(), 'OutOfTimeAntiKt4Truth', kw, sgkey='OutOfTimeAntiKt4TruthJets', prefix='OutOfTimeAntiKt4Truth_', - include=truthjetInclude, exclude=flags.truthJetExclude())) - pass - - - - return alg diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/addMissingEtInfo.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/addMissingEtInfo.py deleted file mode 100644 index 41754c49df39d8213a81f7418f59fcbff61887b4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/addMissingEtInfo.py +++ /dev/null @@ -1,772 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -# $Id: addMissingEtInfo.py -# by Lei Zhou -# dump MEt info into D3PD stream - -from RecExConfig.RecFlags import rec -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -from MissingETD3PDMaker.MissingETD3PDObject import MissingETD3PDObject -from MissingETD3PDMaker.MissingETD3PDObject import MissingETCompositionD3PDObject -from MissingETD3PDMaker.MissingETD3PDMakerFlags import MissingETD3PDMakerFlags -from D3PDMakerConfig.CommonD3PDMakerFlags import CommonD3PDMakerFlags -from MissingETD3PDMaker.MissingETGoodnessD3PDObject import MissingETGoodnessD3PDObject - -def _args (level, name, kwin, **kw): - kw = kw.copy() - kw['level'] = level - for (k, v) in kwin.items(): - if k.startswith (name + '_'): - kw[k[len(name)+1:]] = v - return kw - - -def addMissingEtInfo ( alg = None, - file = 'NTUP_PHYSICS.root', - tuplename = 'physics', - seq = topSequence, - **kw ): - - if not alg: - from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - alg = MSMgr.NewRootStream(tuplename, file, asAlg=True) - pass - - flag = CommonD3PDMakerFlags - MissingETD3PDMakerFlags.METDefaultJetCollectionSGKey = 'AntiKt4LCTopoNewJets' - MissingETD3PDMakerFlags.METDefaultJetPrefix = "jet_AntiKt4LCTopo_MET_" - - ######################### SMWZ MET part ############################# - ## HSG5 MET - HSG5_customMETs = ['MET_RefFinal', 'MET_RefGamma', 'MET_RefEle', 'MET_RefTau', 'MET_RefJet', - 'MET_CellOut', 'MET_Cryo', 'MET_SoftJets', - 'MET_RefJet_JVF', 'MET_RefJet_JVFCut', - 'MET_CellOut_Eflow_STVF', - #'MET_CellOut_Eflow_JetArea', - 'MET_RefFinal_STVF' ] - for custom in HSG5_customMETs: - alg += MissingETD3PDObject (level=0, sgkey = custom+'_HSG5',prefix='MET_HSG5_'+custom[4:], - exclude = ['MET_Regions','MET_Comps','MET_Phi','MET_Et'], - allowMissing=True) - pass - - alg += MissingETCompositionD3PDObject ( level=4, sgkey = 'MET_RefComposition_HSG5', suffix='HSG5_', allowMissing =True, - exclude=['MET_Track_Weights','MET_Cluster_Weights'], - jetSGKey='AntiKt4TopoEMNewJets', jetPrefix='jet_AntiKt4TopoEMJet_MET_') - - - SMWZ_exclude_list = ['MET_RefFinal_Comps','MET_Calib_Comps', - 'MET_CorrTopo_Comps','MET_Cryo_Comps','MET_CryoCone_Comps', - 'MET_LocHadTopoObj_Comps','MET_Muid_Comps','MET_Muid_Spectro_Comps','MET_Muid_Track_Comps', - 'MET_MuonBoy_Spectro_Comps','MET_MuonBoy_Track_Comps','MET_MuonMuid_Comps', - 'MET_Muon_Comps', # adjusted for SUSY include list - 'MET_Topo_Comps','MET_Comps', - 'MET_Track_Weights','MET_Cluster_Weights'] - - #alg += MissingETD3PDObject (**_args (10, 'MissingET', kw, # moved to SUSY part - # exclude= SMWZ_exclude_list, - # allowMissing=True)) - - alg += MissingETCompositionD3PDObject ( level=4, - sgkey = 'MET_RefComposition_STVF', - suffix='STVF_', - allowMissing=True, - jetSGKey='AntiKt4LCTopoNewJets', - jetPrefix='jet_AntiKt4LCTopo_MET_', - exclude = ['MET_Muid_Weights','MET_Muons_Weights']) - - alg += MissingETCompositionD3PDObject ( level=4, - sgkey = 'MET_RefComposition_STVFMuid', - suffix='STVF_', - allowMissing=True, - jetSGKey='AntiKt4LCTopoNewJets', - jetPrefix='jet_AntiKt4LCTopo_MET_', - exclude = ['MET_Electron_Weights','MET_Photon_Weights', - 'MET_Staco_Weights','MET_Muons_Weights', - 'MET_Tau_Weights','MET_Jet_Weights', - 'MET_Cluster_Weights','MET_Track_Weights']) - - alg += MissingETCompositionD3PDObject ( level=4, - sgkey = 'MET_RefComposition_STVFMuons', - suffix='STVF_', - allowMissing=True, - jetSGKey='AntiKt4LCTopoNewJets', - jetPrefix='jet_AntiKt4LCTopo_MET_', - exclude = ['MET_Electron_Weights','MET_Photon_Weights', - 'MET_Staco_Weights','MET_Muid_Weights', - 'MET_Tau_Weights','MET_Jet_Weights', - 'MET_Cluster_Weights','MET_Track_Weights']) - - # ... DR = 0.15 - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_15", prefix = "hr_roughRecoil_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_15", prefix = "hr_ueCorrection_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_15", prefix = "hr_corrRecoil_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_15", prefix = "hr_MET_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_Eflow_15", prefix = "hr_roughRecoil_Eflow_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_Eflow_15", prefix = "hr_ueCorrection_Eflow_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_Eflow_15", prefix = "hr_corrRecoil_Eflow_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_Eflow_15", prefix = "hr_MET_Eflow_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_track_15", prefix = "hr_roughRecoil_track_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_track_15", prefix = "hr_ueCorrection_track_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_track_15", prefix = "hr_corrRecoil_track_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_track_15", prefix = "hr_MET_track_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - # ... DR = 0.20 - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_20", prefix = "hr_roughRecoil_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_20", prefix = "hr_ueCorrection_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_20", prefix = "hr_corrRecoil_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_20", prefix = "hr_MET_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_track_20", prefix = "hr_roughRecoil_track_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_track_20", prefix = "hr_ueCorrection_track_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_track_20", prefix = "hr_corrRecoil_track_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_track_20", prefix = "hr_MET_track_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_clusNoTrack_20", prefix = "hr_roughRecoil_clusNoTrack_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_clusNoTrack_20", prefix = "hr_ueCorrection_clusNoTrack_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_clusNoTrack_20", prefix = "hr_corrRecoil_clusNoTrack_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_clusNoTrack_20", prefix = "hr_MET_clusNoTrack_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_Eflow_20", prefix = "hr_roughRecoil_Eflow_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_Eflow_20", prefix = "hr_ueCorrection_Eflow_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_Eflow_20", prefix = "hr_corrRecoil_Eflow_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_Eflow_20", prefix = "hr_MET_Eflow_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - # ... DR = 0.25 - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_25", prefix = "hr_roughRecoil_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_25", prefix = "hr_ueCorrection_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_25", prefix = "hr_corrRecoil_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_25", prefix = "hr_MET_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_Eflow_25", prefix = "hr_roughRecoil_Eflow_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_Eflow_25", prefix = "hr_ueCorrection_Eflow_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_Eflow_25", prefix = "hr_corrRecoil_Eflow_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_Eflow_25", prefix = "hr_MET_Eflow_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_track_25", prefix = "hr_roughRecoil_track_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_track_25", prefix = "hr_ueCorrection_track_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_track_25", prefix = "hr_corrRecoil_track_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "MET_HR_track_25", prefix = "hr_MET_track_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - - # HR using truth leptons - if rec.doTruth(): - - ## ... DR = 0.15 - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_15", - prefix = "hr_roughRecoil_trLep_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_15", - prefix = "hr_ueCorrection_trLep_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_15", - prefix = "hr_corrRecoil_trLep_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_15", - prefix = "hr_MET_trLep_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_Eflow_15", - prefix = "hr_roughRecoil_trLep_Eflow_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_Eflow_15", - prefix = "hr_ueCorrection_trLep_Eflow_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_15", - prefix = "hr_corrRecoil_trLep_Eflow_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_15", - prefix = "hr_MET_trLep_Eflow_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_track_15", - prefix = "hr_roughRecoil_trLep_track_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_track_15", - prefix = "hr_ueCorrection_trLep_track_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_15", - prefix = "hr_corrRecoil_trLep_track_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_15", - prefix = "hr_MET_trLep_track_15", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - ## ... DR = 0.20 - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_20", - prefix = "hr_roughRecoil_trLep_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_20", - prefix = "hr_ueCorrection_trLep_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_20", - prefix = "hr_corrRecoil_trLep_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_20", - prefix = "hr_MET_trLep_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_Eflow_20", - prefix = "hr_roughRecoil_trLep_Eflow_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_Eflow_20", - prefix = "hr_ueCorrection_trLep_Eflow_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_20", - prefix = "hr_corrRecoil_trLep_Eflow_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_20", - prefix = "hr_MET_trLep_Eflow_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_track_20", - prefix = "hr_roughRecoil_trLep_track_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_track_20", - prefix = "hr_ueCorrection_trLep_track_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_20", - prefix = "hr_corrRecoil_trLep_track_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_20", - prefix = "hr_MET_trLep_track_20", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - ## ... DR = 0.25 - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_25", - prefix = "hr_roughRecoil_trLep_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_25", - prefix = "hr_ueCorrection_trLep_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_25", - prefix = "hr_corrRecoil_trLep_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_25", - prefix = "hr_MET_trLep_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_Eflow_25", - prefix = "hr_roughRecoil_trLep_Eflow_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_Eflow_25", - prefix = "hr_ueCorrection_trLep_Eflow_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_25", - prefix = "hr_corrRecoil_trLep_Eflow_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_25", - prefix = "hr_MET_trLep_Eflow_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - - alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_track_25", - prefix = "hr_roughRecoil_trLep_track_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_track_25", - prefix = "hr_ueCorrection_trLep_track_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_25", - prefix = "hr_corrRecoil_trLep_track_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_25", - prefix = "hr_MET_trLep_track_25", - exclude=['MET_Regions','MET_Comps','MET_Phi','MET_Et'] ) - pass # end of rec.doTruth() - - - ######################### end SMWZ MET part ############################# - - - ######################### SUSY MET part ############################# - SUSY_METIncludes = ['MET_RefEle_Comps', 'MET_RefJet_Comps', 'MET_RefMuon_Comps', 'MET_SoftJets_Comps', - 'MET_MuonBoy_Comps', 'MET_RefMuon_Staco_Comps', 'MET_RefMuon_Muid_Comps', - 'MET_RefTau_Comps', 'MET_CellOut_Comps', 'MET_CellOut_Eflow_Comps', 'MET_LocHadTopo_Comps', - 'MET_Muon_Isol_Staco_Comps', 'MET_Muon_NonIsol_Staco_Comps','MET_RefGamma_Comps', - 'MET_Muon_Total_Staco_Comps', 'MET_Final_Comps', 'MET_Muon_Isol_Muid_Comps', 'MET_Muon_NonIsol_Muid_Comps', - 'MET_Muon_Total_Muid_Comps', 'MET_Truth_Comps', 'MET_RefMuon_Track_Staco_Comps', - 'MET_RefMuon_Track_Muid_Comps', 'MET_Track_Comps', 'MET_TopoObj_Comps', - 'MET_RefFinal_em_Comps', 'MET_RefJet_em_Comps','MET_RefEle_em_Comps','MET_RefGamma_em_Comps', 'MET_RefTau_em_Comps', - 'MET_RefMuon_Track_em_Comps', 'MET_SoftJets_em_Comps', 'MET_RefMuon_em_Comps','MET_RefMuon_Track_Comps', 'MET_Muon_Isol_Comps', - 'MET_Muon_NonIsol_Comps', 'MET_Muon_Total_Comps','MET_CellOut_em_Comps'] - - #MET Truth - SUSY_METIncludes += [ 'MET_Truth_NonInt', 'MET_Truth_NonInt_SumEt', 'MET_Truth_Int', 'MET_Truth_Int_SumEt','MET_Truth_SumEt'] - - #MET SumET - SUSY_METIncludes += ['MET_RefEle_SumEt', 'MET_RefJet_SumEt','MET_RefMuon_SumEt', 'MET_SoftJets_SumEt', 'MET_MuonBoy_SumEt', - 'MET_RefMuon_Staco_SumEt','MET_RefMuon_Muid_SumEt','MET_RefTau_SumEt', 'MET_CellOut_SumEt', 'MET_CellOut_Eflow_SumEt', - 'MET_LocHadTopo_SumEt', 'MET_Muon_Isol_Staco_SumEt','MET_Muon_NonIsol_Staco_SumEt', 'MET_Muon_Total_Staco_SumEt', - 'MET_Final_SumEt', 'MET_Muon_Isol_Muid_SumEt','MET_Muon_NonIsol_Muid_SumEt', 'MET_Muon_Total_Muid_SumEt', - 'MET_RefMuon_Track_Staco_SumEt','MET_RefMuon_Track_Muid_SumEt', 'MET_Track_SumEt', 'MET_TopoObj_SumEt', 'MET_RefFinal_em_SumEt', - 'MET_RefJet_em_SumEt','MET_RefEle_em_SumEt','MET_RefGamma_em_SumEt', 'MET_RefTau_em_SumEt', 'MET_CellOut_em','MET_RefMuon_Track_em_SumEt', - 'MET_SoftJets_em_SumEt', 'MET_RefMuon_em_SumEt', 'MET_RefMuon_Track_SumEt','MET_Muon_Isol_SumEt', 'MET_Muon_NonIsol_SumEt', - 'MET_Muon_Total_SumEt'] - - #MET STVF - SUSY_METIncludes += ['MET_CellOut_Eflow_STVF','MET_RefJet_JVF','MET_RefJet_JVFCut'] - - #MET Regions - #SUSY_METIncludes += ['MET_RefEle_Regions','MET_RefJet_Regions','MET_RefMuon_Regions','MET_SoftJets_Regions','MET_MuonBoy_Regions', - # 'MET_RefMuon_Staco_Regions','MET_RefMuon_Muid_Regions', 'MET_RefTau_Regions','MET_CellOut_Regions','MET_CellOut_Eflow_Regions', - # 'MET_LocHadTopo_Regions','MET_RefMuon_Track_Staco_Regions','MET_RefMuon_Track_Muid_Regions','MET_Muon_Isol_Staco_Regions', - # 'MET_Muon_NonIsol_Staco_Regions','MET_Muon_Total_Staco_Regions','MET_Final_Regions','MET_Muon_Isol_Muid_Regions', - # 'MET_Muon_NonIsol_Muid_Regions','MET_Muon_Total_Muid_Regions','MET_Track_Regions','MET_TopoObj_Regions','MET_RefMuon_Track_Regions', - # 'MET_Muon_Isol_Regions','MET_Muon_NonIsol_Regions','MET_Muon_Total_Regions','MET_RefGamma_Regions','MET_RefFinal_STVF_Regions', - # 'MET_CellOut_Eflow_STVF_Regions','MET_RefJet_JVF_Regions','MET_RefJet_JVFCut_Regions'] - - MissingETD3PDMakerFlags.doMissingETRegions = True - MissingETD3PDMakerFlags.doCellOutEflow = True - #alg += MissingETD3PDObject(**_args (0, 'MissingEt', kw, allowMissing=True, include = SUSY_METIncludes, exclude = ["MET_Cluster_Weights"])) - - SUSY_custom_parts = ['MET_RefGamma', 'MET_RefFinal', 'MET_RefJet', 'MET_RefEle', 'MET_Muon_Total_Staco', - 'MET_Muon_Isol_Staco', 'MET_Muon_NonIsol_Staco', 'MET_CellOut','MET_CellOut_Eflow', - 'MET_Muon_Isol_Muid', 'MET_Muon_NonIsol_Muid', 'MET_Muon_Total_Muid', 'MET_Track', - 'MET_CellOut_Eflow_STVF','MET_RefJet_JVF','MET_RefJet_JVFCut','MET_RefFinal_STVF', - 'MET_SoftJets','MET_RefMuon','MET_MuonBoy','MET_RefMuon_Staco','MET_RefMuon_Muid','MET_RefMuon_Track', - 'MET_RefMuon_Track_Staco','MET_RefMuon_Track_Muid'] - - SUSY_custom_parts_PU = ['MET_RefGamma', 'MET_RefFinal', 'MET_RefJet', 'MET_RefEle', 'MET_Muon_Total_Staco', - 'MET_Muon_Isol_Staco', 'MET_Muon_NonIsol_Staco', 'MET_CellOut','MET_CellOut_Eflow', - 'MET_Muon_Isol_Muid', 'MET_Muon_NonIsol_Muid', 'MET_Muon_Total_Muid', 'MET_Track', - 'MET_CellOut_Eflow_STVF','MET_RefJet_JVF','MET_RefJet_JVFCut','MET_RefFinal_STVF', - 'MET_SoftJets','MET_RefMuon','MET_MuonBoy','MET_RefMuon_Staco','MET_RefMuon_Muid','MET_RefMuon_Track', - 'MET_RefMuon_Track_Staco','MET_RefMuon_Track_Muid', - 'MET_CellOut_Eflow_JetArea', 'MET_CellOut_Eflow_JetAreaJVF','MET_CellOut_Eflow_JetAreaRhoEta5JVF'] - - #for custom in SUSY_custom_parts_PU: - #alg += MissingETD3PDObject (level=0, sgkey = custom+'_Egamma10NoTau', - # prefix=custom+'_Egamma10NoTau', - # allowMissing=True, exclude=['MET_Regions', 'MET_Phi','MET_Et']) - #pass - - #- MET weights - SUSY_exclusionList = ['MET_Photon_Weights', 'MET_Tau_Weights', 'MET_Cluster_Weights','MET_Track_Weights'] - SUSY_exclusionList_withPhotons = ['MET_Tau_Weights', 'MET_Cluster_Weights','MET_Track_Weights'] - - #alg += MissingETCompositionD3PDObject (level=4, sgkey = 'MET_RefComposition_Egamma10NoTau', suffix='Egamma10NoTau_', - # allowMissing = True, exclude = ['MET_Tau_Weights', 'MET_Cluster_Weights','MET_Track_Weights'], - # jetSGKey = MissingETD3PDMakerFlags.METDefaultJetCollectionSGKey()) # jets default calib for MET_RefFinal - - - ######################### end SUSY MET part ############################# - - ######################### TOP MET part ############################# - #main Top custom MET blocks - TOP_custom_MET = [ "MET_RefEle", "MET_RefJet", "MET_SoftJets", "MET_CellOut", "MET_Muon_Isol_Muid", - "MET_Muon_NonIsol_Muid", "MET_Muon_Total_Muid", "MET_RefGamma", "MET_RefFinal", - "MET_Muon_Isol_Muons", "MET_Muon_NonIsol_Muons", "MET_Muon_Total_Muons" ] - TOP_MEt_exclude=["MET_Regions", "MET_Phi", "MET_Et"] - - for custom in TOP_custom_MET: - #alg += MissingETD3PDObject (**_args (2, custom+'_em_tightpp', kw, - # sgkey = custom+'_em_tightpp', - # prefix = custom+'_em_tightpp', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - - #alg += MissingETD3PDObject (**_args (2, custom+'_em_mediumpp', kw, - # sgkey = custom+'_em_mediumpp', - # prefix = custom+'_em_mediumpp', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - - #alg += MissingETD3PDObject (**_args (2, custom+'_em_loosepp', kw, - # sgkey = custom+'_em_loosepp', - # prefix = custom+'_em_loosepp', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - - alg += MissingETD3PDObject (**_args (2, custom+'_tightpp', kw, - sgkey = custom+'_tightpp', - prefix = custom+'_tightpp', - exclude = TOP_MEt_exclude, - allowMissing = True)) - - alg += MissingETD3PDObject (**_args (2, custom+'_tightpp_AntiKt5LCTopo', kw, - sgkey = custom+'_tightpp_AntiKt5LCTopo', - prefix = custom+'_tightpp_AntiKt5LCTopo', - exclude = TOP_MEt_exclude, - allowMissing = True)) - - alg += MissingETD3PDObject (**_args (2, custom+'_mediumpp', kw, - sgkey = custom+'_mediumpp', - prefix = custom+'_mediumpp', - exclude = TOP_MEt_exclude, - allowMissing = True)) - - alg += MissingETD3PDObject (**_args (2, custom+'_mediumpp_AntiKt5LCTopo', kw, - sgkey = custom+'_mediumpp_AntiKt5LCTopo', - prefix = custom+'_mediumpp_AntiKt5LCTopo', - exclude = TOP_MEt_exclude, - allowMissing = True)) - - #alg += MissingETD3PDObject (**_args (2, custom+'_loosepp', kw, - # sgkey = custom+'_loosepp', - # prefix = custom+'_loosepp', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - - #alg += MissingETD3PDObject (**_args (2, custom+'_tightpp_photonTightAR', kw, - # sgkey = custom+'_tightpp_photonTightAR', - # prefix = custom+'_tightpp_photonTightAR', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - - #alg += MissingETD3PDObject (**_args (2, custom+'_mediumpp_photonTightAR', kw, - # sgkey = custom+'_mediumpp_photonTightAR', - # prefix = custom+'_mediumpp_photonTightAR', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - - #alg += MissingETD3PDObject (**_args (2, custom+'_tightpp_photonLooseAR', kw, - # sgkey = custom+'_tightpp_photonLooseAR', - # prefix = custom+'_tightpp_photonLooseAR', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - pass - - #default MET blocks - #alg += MissingETD3PDObject (**_args (2, 'MET_RefFinal_em', kw, - # sgkey = 'MET_RefFinal_em', - # prefix = 'MET_RefFinal_em', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - - #alg += MissingETD3PDObject (**_args (2, 'MET_RefFinal', kw, - # sgkey = 'MET_RefFinal', - # prefix = 'MET_RefFinal', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - - #default ExclRefCalib MET with tightpp electrons and muid muons - TOP_customMETs_ExclRefCalib = ['MET_RefFinal', 'MET_RefGamma', 'MET_RefEle', 'MET_RefTau', 'MET_RefJet', - 'MET_CellOut', 'MET_Cryo', 'MET_SoftJets', 'MET_RefJet_JVF', 'MET_RefJet_JVFCut', - 'MET_CellOut_Eflow_STVF'] #, 'MET_RefFinal_STVF' ] - for custom in TOP_customMETs_ExclRefCalib: - #alg += MissingETD3PDObject (**_args (2, custom+'_tightpp_ExclRefCalib', kw, - # sgkey = custom+'_tightpp_ExclRefCalib', - # prefix = custom+'_tightpp_ExclRefCalib', - # exclude = TOP_MEt_exclude, - # allowMissing = True)) - pass - - #STVF MET blocks - TOP_customMETs_STVF = ['MET_RefFinal', 'MET_RefGamma', 'MET_RefEle', 'MET_RefTau', 'MET_RefJet', - 'MET_RefMuon' ,'MET_RefMuon_Staco', - 'MET_Muon_Isol_Staco', 'MET_Muon_NonIsol_Staco', 'Muon_Total_Staco', - 'MET_RefMuon_Track', 'MET_RefMuon_Track_Staco','MET_CellOut', 'MET_CellOut_Track', - 'MET_CellOut_TrackPV', 'MET_CellOutCorr', 'MET_Cryo', 'MET_SoftJets'] - for custom in TOP_customMETs_STVF: - for postfix in ['','_top']: - if (custom == 'MET_RefFinal') and (postfix == ''): - continue - alg += MissingETD3PDObject (**_args (2, custom+'STVF'+postfix, kw, sgkey = custom+'_STVF'+postfix, prefix=custom+'_STVF'+postfix, - exclude = TOP_MEt_exclude, allowMissing = True)) - pass - pass - - - TOP_composition_exclude=[ "MET_Cluster_Weights",'MET_Track_Weights','MET_Tau_Weights'] - - #alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_em_tightpp",kw, - # sgkey ='MET_RefComposition_em_tightpp', - # suffix="em_tightpp_", - # exclude = TOP_composition_exclude, - # allowMissing = True, - # jetSGKey="AntiKt4TopoEMNewJets", - # jetPrefix='jet_AntiKt4TopoEM_MET_')) - - #alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_em_mediumpp",kw, - # sgkey ='MET_RefComposition_em_mediumpp', - # suffix="em_mediumpp_", - # exclude = TOP_composition_exclude, - # allowMissing = True, - # jetSGKey="AntiKt4TopoEMNewJets", - # jetPrefix='jet_AntiKt4TopoEM_MET_')) - - #alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_em_loosepp",kw, - # sgkey ='MET_RefComposition_em_loosepp', - # suffix="em_loosepp_", - # exclude = TOP_composition_exclude, - # allowMissing = True, - # jetSGKey="AntiKt4TopoEMNewJets", - # jetPrefix='jet_AntiKt4TopoEM_MET_')) - - alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_tightpp",kw, - sgkey ='MET_RefComposition_tightpp', - suffix="tightpp_", - exclude = TOP_composition_exclude, - allowMissing = True, - jetSGKey="AntiKt4LCTopoNewJets", - jetPrefix='jet_AntiKt4LCTopo_MET_')) - - alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_tightpp_AntiKt5LCTopo",kw, - sgkey ='MET_RefComposition_tightpp_AntiKt5LCTopo', - suffix="tightpp_AntiKt5LCTopo_", - exclude = TOP_composition_exclude, - allowMissing = True, - jetSGKey="AntiKt5LCTopoNewJets", - jetPrefix='jet_AntiKt5LCTopo_MET_')) - - alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_mediumpp",kw, - sgkey ='MET_RefComposition_mediumpp', - suffix="mediumpp_", - exclude = TOP_composition_exclude, - allowMissing = True, - jetSGKey="AntiKt4LCTopoNewJets", - jetPrefix='jet_AntiKt4LCTopo_MET_')) - - alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_mediumpp_AntiKt5LCTopo",kw, - sgkey ='MET_RefComposition_mediumpp_AntiKt5LCTopo', - suffix="mediumpp_AntiKt5LCTopo_", - exclude = TOP_composition_exclude, - allowMissing = True, - jetSGKey="AntiKt5LCTopoNewJets", - jetPrefix='jet_AntiKt5LCTopo_MET_')) - - #alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_loosepp",kw, - # sgkey ='MET_RefComposition_loosepp', - # suffix="loosepp_", - # exclude = TOP_composition_exclude, - # allowMissing = True, - # jetSGKey="AntiKt4LCTopoNewJets", - # jetPrefix='jet_AntiKt4LCTopo_MET_')) - - #alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_tightpp_photonTightAR",kw, - # sgkey ='MET_RefComposition_tightpp_photonTightAR', - # suffix="tightpp_photonTightAR_", - # exclude = TOP_composition_exclude, - # allowMissing = True, - # jetSGKey="AntiKt4LCTopoNewJets", - # jetPrefix='jet_')) - - #alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_mediumpp_photonTightAR",kw, - # sgkey ='MET_RefComposition_mediumpp_photonTightAR', - # suffix="mediumpp_photonTightAR_", - # exclude = TOP_composition_exclude, - # allowMissing = True, - # jetSGKey="AntiKt4LCTopoNewJets", - # jetPrefix='jet_')) - - #alg += MissingETCompositionD3PDObject (**_args (4,"MET_RefComposition_tightpp_photonLooseAR",kw, - # sgkey ='MET_RefComposition_tightpp_photonLooseAR', - # suffix="tightpp_photonLooseAR_", - # exclude = TOP_composition_exclude, - # allowMissing = True, - # jetSGKey="AntiKt4LCTopoNewJets", - # jetPrefix='jet_')) - - - ######################### end TOP MET part ############################# - - ######################### TAU MET part ############################# - TAU_METIncludeList=['MET_MuonBoy', 'MET_Track', 'MET_RefGamma', 'MET_RefEle', 'MET_RefJet', 'MET_RefMuon', - 'MET_RefMuon_Track', 'MET_RefTau', 'MET_RefFinal', 'MET_RefFinal_em', 'MET_SoftJets', - 'MET_SoftJets_em', 'MET_Cryo', 'MET_CellOut', 'MET_CellOut_Eflow', 'MET_Muid', 'MET_Muon', - 'MET_Final', 'MET_Topo', 'MET_Topo_Samplings', 'MET_Topo_Regions', 'MET_LocHadTopo', 'MET_LocHadTopo_Samplings', - 'MET_LocHadTopo_Regions', 'MET_Truth_NonInt', 'METComposition'] - - - alg += MissingETGoodnessD3PDObject (0) - - ######################### end TAU MET part ############################# - - ######################### QCD MET part ############################# - QCD_MET_include = ['MET_Calo_Samplings', - 'MET_Staco', - 'MET_Truth_Int','MET_RefJet','MET_RefGamma','MET_LocHadTopoObj','MET_MuonBoy_Track', - 'MET_MuonBoy_Spectro'] - QCD_MET_include += ['METComposition'] - - ################ Main MET ################# - alg += MissingETD3PDObject (**_args (10, 'MissingET', kw, - exclude= ['MissingET_Phi', 'MissingET_Et'], - include = SUSY_METIncludes + TAU_METIncludeList + QCD_MET_include, - allowMissing=True ) ) - ########################################### - - alg += MissingETCompositionD3PDObject ( level=4, - sgkey = 'MET_RefComposition_noEflow', - suffix='noEflow_', - allowMissing=True, - jetSGKey='AntiKt4LCTopoNewJets', - jetPrefix='jet_AntiKt4LCTopo_MET_', - exclude = ['MET_Muid_Weights','MET_Muons_Weights', - 'MET_Track_Weights','MET_Cluster_Weights']) - alg += MissingETCompositionD3PDObject ( level=4, - sgkey = 'MET_RefComposition_Eflow_PV', - suffix='Eflow_PV_', - allowMissing=True, - jetSGKey='AntiKt4LCTopoNewJets', - jetPrefix='jet_AntiKt4LCTopo_MET_', - exclude = ['MET_Muid_Weights','MET_Muons_Weights', - 'MET_Track_Weights','MET_Cluster_Weights']) - - - QCD_customMETs = ['MET_RefFinal', 'MET_RefGamma', 'MET_RefEle', 'MET_RefTau', 'MET_RefJet', - 'MET_CellOut', 'MET_Cryo', 'MET_SoftJets', 'MET_RefJet_JVF', 'MET_RefJet_JVFCut', - 'MET_CellOut_Eflow_STVF','MET_RefFinal_STVF' ] - QCD_customMETs_Eflow_PV = ['MET_RefFinal', 'MET_RefGamma', 'MET_RefEle', 'MET_RefTau', 'MET_RefJet', - 'MET_CellOut', 'MET_Cryo', 'MET_SoftJets', 'MET_RefJet_JVF', 'MET_RefJet_JVFCut', - 'MET_CellOut_Eflow_STVF','MET_CellOut_Eflow_PV','MET_RefFinal_STVF' ] - QCD_customMETs_PU = ['MET_RefFinal', 'MET_RefGamma', 'MET_RefEle', 'MET_RefTau', 'MET_RefJet', - 'MET_CellOut', 'MET_Cryo', 'MET_SoftJets', 'MET_RefJet_JVF', 'MET_RefJet_JVFCut', - 'MET_CellOut_Eflow_STVF','MET_RefFinal_STVF', - 'MET_CellOut_Eflow_JetArea','MET_CellOut_Eflow_JetAreaJVF','MET_CellOut_Eflow_JetAreaRhoEta5JVF'] - - - customMETs_Staco = ['MET_RefMuon' ,'MET_RefMuon_Staco', - 'MET_Muon_Isol_Staco', 'MET_Muon_NonIsol_Staco', 'MET_Muon_Total_Staco', - 'MET_RefMuon_Track', 'MET_RefMuon_Track_Staco'] - customMETs_Muid = ['MET_RefMuon' ,'MET_RefMuon_Muid', - 'MET_Muon_Isol_Muid', 'MET_Muon_NonIsol_Muid', 'MET_Muon_Total_Muid', - 'MET_RefMuon_Track', 'MET_RefMuon_Track_Muid'] - customMETs_conflistStaco = ['_noEflow'] - customMETs_conflistMuid = ['_LCW_pt20', '_LCW_pt20_EM'] - customMETs_conflistPU = [] - - missEtIncludeNew = ['MET_Calo_Samplings','MET_Topo','MET_LocHadTopo','MET_MuonBoy','MET_RefMuon_Track', - 'MET_Muid','MET_Staco','MET_CellOut','MET_RefEle','MET_RefMuon', - 'MET_Truth_NonInt','MET_Truth_Int','MET_RefJet','MET_RefGamma', - 'MET_LocHadTopoObj','MET_MuonBoy_Track','MET_MuonBoy_Spectro'] - - for conflist in customMETs_conflistStaco: - #for custom in QCD_customMETs: - for custom in (QCD_customMETs + customMETs_Staco): - alg += MissingETD3PDObject (**_args(0, 'MissingET'+conflist, kw, sgkey = custom+conflist, - prefix=custom+conflist, - #exclude=['MET_Phi','MET_Et'], - exclude=['MET_Regions','MET_Phi','MET_Et'], - include=missEtIncludeNew, allowMissing = True)) - pass - #for custom in customMETs_Staco_wo_region: - # alg += MissingETD3PDObject (**_args(0, 'MissingET'+conflist, kw, sgkey = custom+conflist, - # prefix=custom+conflist, - # include=missEtIncludeNew, exclude = ['MET_Regions','MET_Phi','MET_Et'], - # allowMissing = True)) - # pass - pass - - for conflist in customMETs_conflistMuid: - #for custom in QCD_customMETs: - for custom in (QCD_customMETs + customMETs_Muid): - alg += MissingETD3PDObject (**_args(0, 'MissingET'+conflist, kw, sgkey = custom+conflist, - prefix=custom+conflist, - #exclude=['MET_Phi','MET_Et'], - exclude=['MET_Regions','MET_Phi','MET_Et'], - include=missEtIncludeNew, allowMissing = True)) - pass - #for custom in customMETs_Muid_wo_region: - # alg += MissingETD3PDObject (**_args(0, 'MissingET'+conflist, kw, sgkey = custom+conflist, - # prefix=custom+conflist, - # include=missEtIncludeNew, exclude = ['MET_Regions','MET_Phi','MET_Et'], - # allowMissing = True)) - # pass - pass - for conflist in customMETs_conflistPU: - #for custom in QCD_customMETs_PU: - for custom in (QCD_customMETs_PU + customMETs_Staco): - alg += MissingETD3PDObject (**_args(0, 'MissingET'+conflist, kw, sgkey = custom+conflist, - prefix=custom+conflist, - #exclude=['MET_Phi','MET_Et'], - exclude=['MET_Regions','MET_Phi','MET_Et'], - include=missEtIncludeNew, allowMissing = True)) - pass - #for custom in customMETs_Staco_wo_region: - # alg += MissingETD3PDObject (**_args(0, 'MissingET'+conflist, kw, sgkey = custom+conflist, - # prefix=custom+conflist, - # include=missEtIncludeNew, exclude = ['MET_Regions','MET_Phi','MET_Et'], - # allowMissing = True)) - # pass - pass - #Eflow_PV - for custom in QCD_customMETs_Eflow_PV: - alg += MissingETD3PDObject (**_args(0, 'MissingET_Eflow_PV', kw, sgkey = custom+'_Eflow_PV', - prefix=custom+'_Eflow_PV', - #exclude=['MET_Phi','MET_Et'], - exclude=['MET_Regions','MET_Phi','MET_Et'], - include=missEtIncludeNew, allowMissing = True)) - pass - - #alg += MissingETGoodnessD3PDObject(**_args(3, 'MissingETGoodness', kw, allowMissing = True)) - - - ######################### end QCD MET part ############################# - - ######################### Photon MET part ############################# - - METFlavors = ['MET_CellOutCorr','MET_CellOut_Track', - 'MET_CellOut_TrackPV', - 'MET_RefGamma', 'MET_RefFinal', 'MET_RefFinal_STVF', 'MET_RefJet', 'MET_RefJet_JVF', 'MET_RefJet_JVFCut', - 'MET_RefEle', 'MET_Muon_Total_Staco', 'MET_Muon_Isol_Staco', 'MET_Muon_NonIsol_Staco', 'MET_Muon_Isol_Muid', - 'MET_Muon_NonIsol_Muid', 'MET_Muon_Total_Muid', 'MET_Track', 'MET_CellOut', 'MET_CellOut_Eflow', 'MET_CellOut_Eflow_STVF', - 'MET_CellOut_Eflow_JetArea', 'MET_RefTau', 'MET_RefMuon'] - - PhotonCustomMETCollections = [] #'_PhotonLoose_Calib_OR_stdvert', '_PhotonTight_Calib_OR_stdvert', '_NNTight_Calib_OR_stdvert'] - - for coll in PhotonCustomMETCollections: - for flavor in METFlavors: - alg += MissingETD3PDObject (level=0, sgkey =flavor+coll, - prefix=flavor+coll, - #exclude=['MET_Phi','MET_Et'], - exclude=['MET_Regions','MET_Phi','MET_Et'], - allowMissing=True) - pass - - alg += MissingETCompositionD3PDObject (level=4, - sgkey = 'MET_RefComposition'+coll, - suffix=coll[1:]+"_", - jetSGKey='AntiKt4LCTopoNewJets', - exclude=['MET_Track_Weights','MET_Cluster_Weights'], - allowMissing = True) - pass - - - ######################### end Photon MET part ############################# - - - return alg diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/createTrackJets.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/createTrackJets.py deleted file mode 100644 index f88cbb5a85c30e879a40c11a036f7f46590540a3..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/createTrackJets.py +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# -# @file egammaD3PDMaker/python/createTrackJets.py -# @author Mike Flowerdew -# @date Nov, 2010 -# @brief Create track jet collection -# - -from JetRec.JetGetters import * - -def createTrackJets (seq): - - from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool - theEGammaTrackSelectorTool = InDet__InDetDetailedTrackSelectorTool( - name = "egammaTrackJetTrackSelectorTool", - pTMin = 300., - etaMax = 9999., - nHitBLayer = 0, - nHitPix = 0, - nHitBLayerPlusPix = 0, - nHitSct = 0, - nHitSi = 5, - nHitTrt = 0, - IPd0Max = 100., # d0 cut - IPz0Max = 100., # z0*sin(theta) cut - z0Max = 1000., # z0 cut - fitChi2OnNdfMax = 1000, - d0significanceMax = -1., - z0significanceMax = -1., - TrackSummaryTool = None, - OutputLevel = 3) - - from AthenaCommon.AppMgr import ToolSvc - ToolSvc += theEGammaTrackSelectorTool - - # JetFinder (Anti-Kt) - import JetRec.JetFinderConfig as thebtagJetFinder - theEGammaFastJetKt = thebtagJetFinder.getFastKt(jetalgname = "egammaTrackJetFinder", - radius = 0.5, - algorithm = 'anti-kt', - flipvalues = 2) - ToolSvc += theEGammaFastJetKt - - # Setup clustering tool - from JetRecTools.JetRecToolsConf import JetTrackZClusterTool - egammaTrackZClusterTool = JetTrackZClusterTool( - name = "egammaTrackZClusterTool", - TrackJetMinMulti = 2, - TrackJetMinPt = 2000., - UseVtxSeeding = True, - DeltaZRange = 10000.0, - TrackParticleContainerName = "TrackParticleCandidate", - VxContainerName = "VxPrimaryCandidate", - TrackSelector = theEGammaTrackSelectorTool, - JetFinder = theEGammaFastJetKt, - OutputLevel = 3) - - egammaToolList = [ egammaTrackZClusterTool, - JetSorterTool (SortOrder = 'ByEtDown') ] - - make_StandardJetGetter('AntiKt', 0.5, 'Track', seq, - outputCollectionName = 'AntiKtZ5TrackJets', - allTools = egammaToolList) - - return - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/egammaD3PD.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/egammaD3PD.py index 4a8d4618a63840165bac11a55eefefb3b9f04d4a..6e7856d48593c87e243ece79a00b4fad4f185882 100644 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/egammaD3PD.py +++ b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/egammaD3PD.py @@ -1,6 +1,5 @@ -# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -# $Id$ # # @file D3PDMakerConfig/python/egammaD3PD.py # @author scott snyder <snyder@bnl.gov> @@ -9,7 +8,6 @@ # from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from D3PDMakerCoreComps.resolveSGKey import testSGKey from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/makexAOD.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/makexAOD.py index b19fd88eb1477994e7155b724887926ba3c1d439..7f2834584e38666026081f5f26d00b877d967bcc 100644 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/makexAOD.py +++ b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/makexAOD.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # $Id$ # @@ -57,7 +57,7 @@ def convert_trackparticles (seq, xaod_key, key, truth_key, AddTruthLink = have_truth) seq += alg - if trackmap_key != None: + if trackmap_key is not None: from xAODEgammaCnv.xAODEgammaCnvConf import xAODMaker__GSFTrackParticleMapCnvAlg alg = xAODMaker__GSFTrackParticleMapCnvAlg\ (xaod_key + 'ParticleMapCnv', @@ -294,16 +294,16 @@ def makexAOD (seq, xaod_type, xaod_key, key=None, **kw): if testfn (xaod_type, xaod_key): return - if key == None: + if key is None: key = xaod_key tinfo_list = types[xaod_type] - if type(tinfo_list) != type([]): + if isinstance(tinfo_list, list): tinfo_list = [tinfo_list] for tinfo in tinfo_list: if cfgKeyStore.isInInput (tinfo[0], key): - if seq == None: + if seq is None: seq = AlgSequence() tinfo[1] (seq, xaod_key, key, **kw) diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/physicsD3PD.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/physicsD3PD.py deleted file mode 100644 index 61732b8411c9e73506fec253ead0746d4ac8271e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/python/physicsD3PD.py +++ /dev/null @@ -1,265 +0,0 @@ -# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration - -# $Id$ -# -# @file D3PDMakerConfig/python/physicsD3PD.py -# @author maarten boonekamp <maarten.boonekamp@cea.fr> -# @date Sep, 2009 -# @brief Construct a physics D3PD. -# - - -import D3PDMakerCoreComps -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from D3PDMakerCoreComps.resolveSGKey import testSGKey - -from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject -from EventCommonD3PDMaker.LBMetadataConfig import LBMetadataConfig -from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject -from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject - -from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject -from egammaD3PDMaker.GSFElectronD3PDObject import GSFElectronD3PDObject -from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject -from egammaD3PDMaker.egammaTriggerBitsD3PDObject import egammaTriggerBitsD3PDObject - -from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject -from MuonD3PDMaker.MuonSegmentD3PDObject import MuonSegmentD3PDObject -from MuonD3PDMaker.MuonTriggerBitsD3PDObject import MuonTriggerBitsD3PDObject - -from JetD3PDMaker.JetD3PDObject import JetD3PDObject - -from TauD3PDMaker.TauD3PDObject import TauD3PDObject - -from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject -from CaloD3PDMaker.MBTSTimeD3PDObject import MBTSTimeD3PDObject -from CaloD3PDMaker.MBTSTriggerBitsD3PDObject import MBTSTriggerBitsD3PDObject -from CaloD3PDMaker.ZDCTriggerBitsD3PDObject import ZDCTriggerBitsD3PDObject -from CaloD3PDMaker.LArCollisionTimeD3PDObject import LArCollisionTimeD3PDObject -from CaloD3PDMaker.CollisionDecisionD3PDObject import CollisionDecisionD3PDObject -from CaloD3PDMaker.xAODClusterD3PDObject import xAODClusterD3PDObject -from TrackD3PDMaker.xAODTrackD3PDObject import xAODTrackParticleD3PDObject - -from TrackD3PDMaker.xAODVertexD3PDObject import PrimaryxAODVertexD3PDObject - -from MissingETD3PDMaker.MissingETD3PDObject import MissingETD3PDObject -from MissingETD3PDMaker.MissingETGoodnessD3PDObject import MissingETGoodnessD3PDObject -from MissingETD3PDMaker.MissingETD3PDTriggerBitsObject import METD3PDTriggerBitsObject - - -from TrigEgammaD3PDMaker.TrigEgammaD3PD import TrigEgammaD3PDObjects -from RecExConfig.RecFlags import rec - -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - - -def _args (level, name, kwin, **kw): - kw = kw.copy() - kw['level'] = level - for (k, v) in kwin.items(): - if k.startswith (name + '_'): - kw[k[len(name)+1:]] = v - return kw - - -def physicsD3PD (alg = None, - trigalg = None, - file = 'physics.root', - tuplename = 'physics', - **kw): - - # Core algorithm - # By default the user of this function should have created an algorithm already. - # But for backwards compatibility let the function create its own algorithm if - # needed... - if not alg: - from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - alg = MSMgr.NewRootStream( tuplename, file ) - - alg += EventInfoD3PDObject (**_args (10, 'EventInfo', kw)) - - # Segregate trigger decision flags in a separate tree. - if not trigalg: - from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - trigalg = MSMgr.NewRootStream( tuplename + ':' + tuplename + 'TrigDec', - FileName = file, - TreeName = tuplename + 'TrigDec') - trigalg += EventInfoD3PDObject (0) - alg.Stream.trigDecisionTree = trigalg - - # Add bunch structure metadata. - from TriggerD3PDMaker.BunchStructureMetadata \ - import addBunchStructureMetadata - addBunchStructureMetadata (alg) - - # Make track jets, but we can only do this if we have vertices. - if testSGKey ('VxContainer' ,'VxPrimaryCandidate'): - from D3PDMakerConfig.createTrackJets import createTrackJets - createTrackJets (AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName())) - alg += JetD3PDObject (**_args (-1, 'TrackJet', kw, - prefix='trackjet_', - sgkey='AntiKtZ5TrackJets')) - k = 'Electron_EgammaTrackJetSignedIPAndPTRel_target' - if not kw.has_key(k): - kw[k] = 'trackjet_' - - alg += LArCollisionTimeD3PDObject (**_args (10, 'LArCollisionTime', kw)) - - # Electron/Photon blocks - - alg += ElectronD3PDObject (**_args (10, 'Electron', kw, - EgammaJetSignedIPAndPTRel_target='jet_antikt4h1topo_')) - alg += PhotonD3PDObject (**_args (10, 'Photon', kw, - ConversionVertexTrackIndex_target = 'trk')) - if testSGKey ('ElectronContainer', D3PDMakerFlags.GSFElectronSGKey()): - alg += GSFElectronD3PDObject (**_args (level, 'GSFElectron', kw, - sgkey = D3PDMakerFlags.GSFElectronSGKey(), - prefix = 'el_gsf_')) - - # Muon blocks - - alg += MuonD3PDObject (**_args (10, 'MuidMuon', kw, - sgkey='MuidMuonCollection', - prefix='mu_muid_', - allowMissing = True)) - alg += MuonD3PDObject (**_args (10, 'StacoMuon', kw, - sgkey='StacoMuonCollection', - prefix='mu_staco_', - allowMissing = True)) - alg += MuonD3PDObject (**_args (10, 'Muons', kw, - sgkey='Muons', - prefix='mu_', - allowMissing = True)) - - # Tau block - - alg += TauD3PDObject (**_args ( 1, 'Tau', kw)) - - # Jet blocks - - alg += JetD3PDObject (**_args ( 9, 'AK4TopoJet', kw, - sgkey='AntiKt4TopoEMJets,' + - 'AntiKt4TopoJets,' + - 'AntiKt4H1TopoJets', - prefix='jet_antikt4h1topo_', - ConstitIndex_Target='cl_', - exclude = ['Constituents'], - allowMissing = True)) - alg += JetD3PDObject (**_args ( 6, 'AK4TowerJet', kw, - sgkey='AntiKt4TowerAODJets,' + - 'AntiKt4TowerJets,' + - 'AntiKt4H1TowerJets', - prefix='jet_antikt4h1tower_', - exclude = ['Constituents'], - allowMissing = True)) - alg += JetD3PDObject (**_args ( 6, 'AK6TowerJet', kw, - sgkey='AntiKt6TowerAODJets,'+ - 'AntiKt6TowerJets,'+ - 'AntiKt6H1TowerJets', - prefix='jet_antikt6h1tower_', - exclude = ['Constituents'], - allowMissing = True)) - #alg += JetD3PDObject (**_args ( 9, 'AK4TopoJetLC', kw, - # sgkey='AntiKt4LCTopoJets', prefix='jet_antikt4lctopo_')) - #alg += JetD3PDObject (**_args ( 9, 'AK6TopoJetLC', kw, - # sgkey='AntiKt6LCTopoMyJets', prefix='jet_antikt6lctopo_')) - #alg += JetD3PDObject (**_args ( 9, 'AK6TopoJetH1', kw, - # sgkey='AntiKt6H1TopoMyJets', prefix='jet_antikt6h1topo_')) - - # MET blocks - - alg += MissingETD3PDObject (**_args (10, 'MissingET', kw, - allowMissing = True)) - alg += MissingETGoodnessD3PDObject(**_args ( 2, 'METGoodness', kw)) - - # track and cluster blocks - - alg += xAODClusterD3PDObject (**_args ( 1, 'Cluster', kw)) - alg += xAODClusterD3PDObject (**_args ( 2, 'EMCluster', kw, - sgkey=D3PDMakerFlags.EMTopoClusterSGKey(), - prefix='emcl_')) - - # Many of these are just being set to the defaults --- that's because - # they're being changed in TrigEgamma... - alg += xAODTrackParticleD3PDObject (**_args ( - 3, 'TrackParticleCandidate', kw, - trackParametersAtGlobalPerigeeLevelOfDetails = 3, - storeDiagonalCovarianceAsErrors = True)) - - # MBTS - - alg += MBTSD3PDObject (**_args (10, 'MBTS', kw)) - alg += MBTSTimeD3PDObject (**_args (10, 'MBTSTime', kw)) - alg += MBTSTriggerBitsD3PDObject (**_args (10, 'MBTSTriggerBits', kw)) - alg += CollisionDecisionD3PDObject(**_args (10, 'CollisionDecision', kw)) - - # ZDC - alg += ZDCTriggerBitsD3PDObject (**_args (10, 'ZDCTriggerBits', kw)) - - # Primary vertex block - May be missing in single-beam data. - - alg += PrimaryxAODVertexD3PDObject (**_args (1, 'PrimaryVertex', kw, - allowMissing = True, - sgkey = D3PDMakerFlags.VertexSGKey(), - prefix = 'vxp_', - storeVertexTrackAssociation = True, - storeDiagonalCovarianceAsErrors = True)) - - # Truth - - if rec.doTruth(): - from MuonD3PDMaker.TruthMuonD3PDObject import TruthMuonD3PDObject - alg += TruthMuonD3PDObject (**_args ( 2, 'TruthMuon', kw)) - alg += GenEventD3PDObject (**_args ( 1, 'GenEvent', kw)) - alg += TruthParticleD3PDObject(**_args ( 1, 'TruthParticle', kw)) - alg += JetD3PDObject (**_args ( 3, 'AK4TruthJet', kw, - sgkey='AntiKt4TruthJets', - prefix='jet_antikt4truth_', - allowMissing = True)) - #alg += JetD3PDObject (**_args ( 3, 'AK6Ttruth', kw, - # sgkey='AntiKt6TruthJets', - # prefix='jet_antikt6truth_')) - - # Trigger - - if D3PDMakerFlags.DoTrigger(): - from TriggerD3PDMaker.TrigDecisionD3PDObject \ - import TrigDecisionD3PDObject - alg += TrigDecisionD3PDObject (**_args (2, 'TrigDecision', kw)) - TrigEgammaD3PDObjects (alg, **_args (1, 'TrigEgamma', kw)) - - alg += egammaTriggerBitsD3PDObject (**_args ( 2, 'EgammaTriggerBits', kw)) - alg += MuonTriggerBitsD3PDObject (**_args ( 2, 'MuonTriggerBits', kw)) - alg += METD3PDTriggerBitsObject (**_args ( 2, 'METTriggerBits', kw)) - - from TriggerD3PDMaker.EnergySumROID3PDObject import EnergySumROID3PDObject - from TrigMissingETD3PDMaker.TrigMETD3PDObject import TrigMETD3PDObject - - alg += EnergySumROID3PDObject(**_args (2, 'EnergySumROI', kw, - prefix = "trig_L1_esum_", - allowMissing = True)) - - # The LVL2 information: - alg += TrigMETD3PDObject(**_args( 2, 'TrigMETL2', kw, - prefix = "trig_L2_met_", - sgkey = "HLT_T2MissingET" )) - - # The EF information: - alg += TrigMETD3PDObject(**_args ( 2, 'TrigMETEF', kw, - prefix = "trig_EF_met_", - sgkey = "HLT_TrigEFMissingET" )) - - from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject - alg += BGCodeD3PDObject (**_args (2, 'BGCode', kw)) - - -# Event metadata - - alg.MetadataTools += [LBMetadataConfig()] - - if D3PDMakerFlags.FilterCollCand(): - from CaloD3PDMaker.CollisionFilterAlg import CollisionFilterAlg - alg.filterSeq += CollisionFilterAlg (tuplename + '_CollCandFilter') - - return alg diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/aprof.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/aprof.sh deleted file mode 100644 index 253df67ea54f9c9a8f37078ff91e8e7c19e49794..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/aprof.sh +++ /dev/null @@ -1,2 +0,0 @@ - -aprof.py my.athena.data.profile profiling.event_100.data.pdf \ No newline at end of file diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/gathena_data_run.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/gathena_data_run.sh deleted file mode 100644 index 3326152098a89bd748143067f3acfd5ade54fcbe..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/gathena_data_run.sh +++ /dev/null @@ -1,6 +0,0 @@ -rm -f NTUP_COMMON.root - -mypreexec="from@BTagging.BTaggingFlags@import@BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-07';from@RecExConfig.RecAlgsFlags@import@recAlgs;recAlgs.doMissingET.set_Value_and_Lock(False)" -myposexec="from@AthenaCommon.AlgSequence@import@*;dumpSequence(topSequence)" - -gathena --profilerMode eventLoop --profilerInitEvent 21 --profilerOutput my.athena.data.profile --trf "Reco_trf.py preExec=${mypreexec} postExec=${myposexec} autoConfiguration=everything maxEvents=120 inputAODFile=root://eosatlas.cern.ch//eos/atlas/user/l/lezhou/data12_8TeV.00208811.physics_JetTauEtmiss.merge.AOD.r4042_p1263_tid01016451_00/AOD.01016451._000059.pool.root --ignoreerrors=True outputNTUP_COMMONFile=NTUP_COMMON.root" \ No newline at end of file diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/gathena_mc_run.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/gathena_mc_run.sh deleted file mode 100644 index 70340f4b59ba35dec86ee7464162a412cb4412b5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/gathena_mc_run.sh +++ /dev/null @@ -1,6 +0,0 @@ -rm -f NTUP_COMMON.mc.root - -mypreexec="from@BTagging.BTaggingFlags@import@BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-07';from@RecExConfig.RecAlgsFlags@import@recAlgs;recAlgs.doMissingET.set_Value_and_Lock(False)" - -gathena --profilerMode eventLoop --profilerInitEvent 21 --profilerOutput my.athena.data.profile --trf "Reco_trf.py preExec=${mypreexec} autoConfiguration=everything maxEvents=120 inputAODFile=root://eosatlas.cern.ch//eos/atlas/user/l/lezhou/mc12_8TeV.110002.McAtNloJimmy_AUET2CT10_ttbar_170GeV_dilepton.merge.AOD.e1576_a159_a171_r3549_tid01023276_00/AOD.01023276._000537.pool.root.1 --ignoreerrors=True outputNTUP_COMMONFile=NTUP_COMMON.mc.root" - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/mc_run_allhad_ttbar.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/mc_run_allhad_ttbar.sh deleted file mode 100644 index f2777cf26a767818b177b7c08abdcb32df097e51..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/mc_run_allhad_ttbar.sh +++ /dev/null @@ -1,10 +0,0 @@ -rm -f NTUP_COMMON.mc.root - - -Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-07';from RecExConfig.RecAlgsFlags import recAlgs;recAlgs.doMissingET.set_Value_and_Lock(False)" inputAODFile=root://eosatlas.cern.ch//eos/atlas/user/l/lezhou/mc12_8TeV.105204.McAtNloJimmy_AUET2CT10_ttbar_allhad.merge.AOD.e1576_s1499_s1504_r3658_r3549_tid01012790_00/AOD.01012790._000023.pool.root autoConfiguration=everything maxEvents=100 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.mc.root postExec='print "dump sequence";from AthenaCommon.AlgSequence import *;dumpSequence(topSequence); print "ssssssssssssss D3PDMakerFlags.TruthWriteHadrons = ", D3PDMakerFlags.TruthWriteHadrons' - - -#rec.doApplyAODFix.set_Value_and_Lock(False); - -#Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-02'" inputAODFile=AOD.01203354._000045.pool.root.1 autoConfiguration=everything maxEvents=100 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.mc.root - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/mc_run_dipletonic_ttbar.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/mc_run_dipletonic_ttbar.sh deleted file mode 100644 index fbad92bded6ac77c88b44caccdb2635fd4322562..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/mc_run_dipletonic_ttbar.sh +++ /dev/null @@ -1,10 +0,0 @@ -rm -f NTUP_COMMON.mc.root - - -Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-08';from RecExConfig.RecAlgsFlags import recAlgs;recAlgs.doMissingET.set_Value_and_Lock(False)" inputAODFile=root://eosatlas.cern.ch//eos/atlas/user/l/lezhou/mc12_8TeV.110002.McAtNloJimmy_AUET2CT10_ttbar_170GeV_dilepton.merge.AOD.e1576_a159_a171_r3549_tid01023276_00/AOD.01023276._000537.pool.root.1 autoConfiguration=everything maxEvents=3 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.mc.root postExec='print "dump sequence";from AthenaCommon.AlgSequence import *;dumpSequence(topSequence); print "ssssssssssssss D3PDMakerFlags.TruthWriteHadrons = ", D3PDMakerFlags.TruthWriteHadrons' - - -#rec.doApplyAODFix.set_Value_and_Lock(False); - -#Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-02'" inputAODFile=AOD.01203354._000045.pool.root.1 autoConfiguration=everything maxEvents=100 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.mc.root - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/mc_run_dipletonic_ttbar_FullSim.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/mc_run_dipletonic_ttbar_FullSim.sh deleted file mode 100644 index b4314a9784e7dfb00ac4e9d3995b752e1743decf..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/mc_run_dipletonic_ttbar_FullSim.sh +++ /dev/null @@ -1,10 +0,0 @@ -rm -f NTUP_COMMON.mc.root - - -Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-07';from RecExConfig.RecAlgsFlags import recAlgs;recAlgs.doMissingET.set_Value_and_Lock(False)" inputAODFile=/afs/cern.ch/work/l/lezhou/D3PD_making/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.merge.AOD.e1513_s1499_s1504_r3658_r3549_tid01012783_00/AOD.01012783._001768.pool.root.1 autoConfiguration=everything maxEvents=100 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.mc.root postExec='print "dump sequence";from AthenaCommon.AlgSequence import *;dumpSequence(topSequence); print "ssssssssssssss D3PDMakerFlags.TruthWriteHadrons = ", D3PDMakerFlags.TruthWriteHadrons' - - -#rec.doApplyAODFix.set_Value_and_Lock(False); - -#Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-02'" inputAODFile=AOD.01203354._000045.pool.root.1 autoConfiguration=everything maxEvents=100 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.mc.root - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/run.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/run.sh deleted file mode 100644 index 960ac353f572de941137a8469d077e458f777183..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/run.sh +++ /dev/null @@ -1,10 +0,0 @@ -rm -f NTUP_COMMON.root - - -Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-07';from RecExConfig.RecAlgsFlags import recAlgs;recAlgs.doMissingET.set_Value_and_Lock(False)" inputAODFile=root://eosatlas.cern.ch//eos/atlas/user/l/lezhou/data12_8TeV.00208811.physics_JetTauEtmiss.merge.AOD.r4042_p1263_tid01016451_00/AOD.01016451._000059.pool.root autoConfiguration=everything maxEvents=100 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.root postExec='print "dump sequence";from AthenaCommon.AlgSequence import *;dumpSequence(topSequence); print "ssssssssssssss D3PDMakerFlags.TruthWriteHadrons = ", D3PDMakerFlags.TruthWriteHadrons' - - -#rec.doApplyAODFix.set_Value_and_Lock(False); - -#Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-02'" inputAODFile=AOD.01203354._000045.pool.root.1 autoConfiguration=everything maxEvents=100 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.mc.root - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/run_rtt.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/run_rtt.sh deleted file mode 100644 index 96b59cb7fd21108e3a3af87d9b554618931b38cb..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/run/run_rtt.sh +++ /dev/null @@ -1,10 +0,0 @@ -rm -f NTUP_COMMON.rtt.root - - -Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-05';from RecExConfig.RecAlgsFlags import recAlgs;recAlgs.doMissingET.set_Value_and_Lock(False)" inputAODFile=root://eosatlas.cern.ch//eos/atlas/user/g/gbrooijm/dpd-rtt/data12_8TeV.00206299.physics_Egamma.merge.AOD.f450_m1170._lb0069._0001.1 autoConfiguration=everything maxEvents=100 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.rtt.root postExec='print "dump sequence";from AthenaCommon.AlgSequence import *;dumpSequence(topSequence); print "ssssssssssssss D3PDMakerFlags.TruthWriteHadrons = ", D3PDMakerFlags.TruthWriteHadrons' - - -#rec.doApplyAODFix.set_Value_and_Lock(False); - -#Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-02'" inputAODFile=AOD.01203354._000045.pool.root.1 autoConfiguration=everything maxEvents=100 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.mc.root - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/scripts/br_gmake.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/scripts/br_gmake.sh deleted file mode 100755 index 8c690d9b4d3829c39303e1a9a913c934b2cb7d85..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/scripts/br_gmake.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -curdir=`pwd` -cd $TestArea - -${curdir}/mySetupWorkArea.py -cd WorkArea/cmt -cmt br cmt config -cmt br source setup.sh -cmt br gmake -j 4 quiet=1 -cd ${curdir} diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/scripts/installer.sh b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/scripts/installer.sh deleted file mode 100755 index 6eab06ad7ce0360264017b5b358414baf6c4c9a5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/scripts/installer.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -curdir=`pwd` -cd $TestArea - -#D3PDMakers -#cmt co PhysicsAnalysis/D3PDMaker/JetD3PDMaker -#cmt co PhysicsAnalysis/D3PDMaker/MissingETD3PDMaker -#cmt co -r MissingETD3PDMaker-00-10-18 PhysicsAnalysis/D3PDMaker/MissingETD3PDMaker # -#cmt co -r JetD3PDAnalysis-00-01-06 PhysicsAnalysis/D3PDMaker/JetD3PDAnalysis -#cmt co -r D3PDMakerTest-00-07-42-20 PhysicsAnalysis/D3PDMaker/D3PDMakerTest - -#Jet -#cmt co -r JetRec-01-02-68-05 Reconstruction/Jet/JetRec # -#cmt co -r JetRec-01-02-68-branch Reconstruction/Jet/JetRec # -#cmt co -r JetMomentTools-00-00-97-09 Reconstruction/Jet/JetMomentTools # -#cmt co -r JetUtils-01-01-64 Reconstruction/Jet/JetUtils -#cmt co -r JetInterface-00-00-13 Reconstruction/Jet/JetInterface - -#MisingET -#cmt co -r MissingET-03-03-55 Reconstruction/MissingET # -#cmt co Reconstruction/MissingET # -#cmt co -r MissingETEvent-00-04-23 Reconstruction/MissingETEvent # - -${curdir}/mySetupWorkArea.py -cd WorkArea/cmt -cmt br cmt config -cmt br source setup.sh -cmt br gmake -j 4 quiet=1 -cd ${curdir} diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/AODToEgammaD3PD.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/AODToEgammaD3PD.py deleted file mode 100644 index 3a7512fb4bf6feff19ec760965674ea376b81519..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/AODToEgammaD3PD.py +++ /dev/null @@ -1,82 +0,0 @@ -# $Id$ -# -# @file D3PDMakerConfig/share/AODToEgammaD3PD.py -# @author scott snyder <snyder@bnl.gov> -# @date Aug, 2009 -# @brief Example for building an egamma D3PD from an AOD. -# - - -###################################################################3 -# Define the input file here. -# - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput= ["AOD.pool.root"] - - -###################################################################3 -# Define the output file here. -# - -if not globals().get('tupleFileOutput'): - tupleFileOutput = 'egamma.root' - -from D3PDMakerConfig.D3PDProdFlags import prodFlags -prodFlags.WriteEgammaD3PD = True -prodFlags.WriteEgammaD3PD.FileName = tupleFileOutput -prodFlags.WriteEgammaD3PD.lock() - -###################################################################3 -# Define other job options here. -# - -athenaCommonFlags.EvtMax = -1 - -# Example of changing D3PD maker flags. -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -#D3PDMakerFlags.DoTrigger = False - - -################################################################### -# Configure RecExCommon. -# - -from RecExConfig.RecFlags import rec -rec.DPDMakerScripts.append( "D3PDMakerConfig/EgammaD3PD_prodJobOFragment.py" ) -rec.doDPD.set_Value_and_Lock( True ) -rec.doCBNT.set_Value_and_Lock( False ) -rec.doWriteTAG.set_Value_and_Lock( False ) -rec.doWritexAOD.set_Value_and_Lock( False ) -rec.doTau.set_Value_and_Lock( False ) -rec.doCaloRinger.set_Value_and_Lock( False ) -from MuonRecExample.MuonRecFlags import muonRecFlags -muonRecFlags.doMSVertex.set_Value_and_Lock( False ) - -#from xAODJetCnv import ParticleJetCompatibility - -# Block loading conditions folders we won't need. -blocked_folders = [ - '/CALO/Identifier/CaloTTOnAttrIdMapAtlas', - '/CALO/Identifier/CaloTTOnOffIdMapAtlas', - '/CALO/Identifier/CaloTTPpmRxIdMapAtlas', - '/LAR/ElecCalibMC/HVScaleCorr', - '/LAR/ElecCalibMC/Pedestal', - '/LAR/Identifier/FebRodAtlas', - '/LAR/Identifier/LArTTCellMapAtlas', - '/LAR/Identifier/OnOffIdAtlas', - '/MDT/DCS/DROPPEDCH', - '/MDT/DCS/PSLVCHSTATE', - '/TILE/OFL02/NOISE/AUTOCR', - '/TILE/OFL02/PULSESHAPE/PHY', - '/TILE/ONL01/FILTER/OF2/PHY', - '/TILE/ONL01/NOISE/OFNI', - '/CALO/H1Weights/H1WeightsKt4Topo', - ] -from IOVDbSvc.CondDB import conddb -for f in blocked_folders: - conddb.blockFolder (f) - - -include( "RecExCommon/RecExCommon_topOptions.py" ) - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/AODToPhysicsD3PD.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/AODToPhysicsD3PD.py deleted file mode 100644 index d9b77bfd74852f28e6b403c05187f80c1b3e93e6..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/AODToPhysicsD3PD.py +++ /dev/null @@ -1,87 +0,0 @@ -# $Id$ -# -# @file D3PDMakerConfig/share/AODToPhysicsD3PD.py -# @author scott snyder <snyder@bnl.gov> -# @date Aug, 2009 -# @brief Example for building a physics D3PD from an AOD. -# - - -#################################################################### -# Define the input file here. -# - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput= ["AOD.pool.root"] - -#################################################################### -# Define the output file here. -# - -if not globals().get('tupleFileOutput'): - tupleFileOutput = 'physics.root' - -from D3PDMakerConfig.D3PDProdFlags import prodFlags -prodFlags.WritePhysicsD3PD = True -prodFlags.WritePhysicsD3PD.FileName = tupleFileOutput -prodFlags.WritePhysicsD3PD.lock() - -#################################################################### -# Define other job options here. -# - -athenaCommonFlags.EvtMax = -1 - -# Example of changing D3PD maker flags. -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -#D3PDMakerFlags.DoTrigger = False - - -#################################################################### -# Configure RecExCommon. -# - -from RecExConfig.RecFlags import rec -rec.DPDMakerScripts.append( "D3PDMakerConfig/PhysicsD3PD_prodJobOFragment.py" ) -rec.doCBNT.set_Value_and_Lock( False ) -rec.doAOD.set_Value_and_Lock( False ) -rec.doWriteTAG.set_Value_and_Lock( False ) -rec.doWriteAOD.set_Value_and_Lock( False ) - -# Block loading conditions folders we won't need. -blocked_folders = [ - '/CALO/Identifier/CaloTTOnAttrIdMapAtlas', - '/CALO/Identifier/CaloTTOnOffIdMapAtlas', - '/CALO/Identifier/CaloTTPpmRxIdMapAtlas', - '/LAR/BadChannels/BadChannels', - '/LAR/BadChannels/MissingFEBs', - '/LAR/ElecCalibMC/AutoCorr', - '/LAR/ElecCalibMC/DAC2uA', - '/LAR/ElecCalibMC/HVScaleCorr', - '/LAR/ElecCalibMC/MinBias', - '/LAR/ElecCalibMC/MinBiasAverage', - '/LAR/ElecCalibMC/MphysOverMcal', - '/LAR/ElecCalibMC/Noise', - '/LAR/ElecCalibMC/Pedestal', - '/LAR/ElecCalibMC/Ramp', - '/LAR/ElecCalibMC/Shape', - '/LAR/ElecCalibMC/fSampl', - '/LAR/ElecCalibMC/uA2MeV', - '/LAR/Identifier/FebRodAtlas', - '/LAR/Identifier/LArTTCellMapAtlas', - '/LAR/Identifier/OnOffIdAtlas', - '/MDT/DCS/DROPPEDCH', - '/MDT/DCS/PSLVCHSTATE', - '/PIXEL/PixdEdx', - '/TILE/OFL02/NOISE/AUTOCR', - '/TILE/OFL02/PULSESHAPE/PHY', - '/TILE/ONL01/FILTER/OF2/PHY', - '/TILE/ONL01/NOISE/OFNI', - '/TRT/Cond/Status', - '/TRT/Cond/StatusPermanent', - ] -from IOVDbSvc.CondDB import conddb -for f in blocked_folders: - conddb.blockFolder (f) - -include ("RecExCommon/RecExCommon_topOptions.py") diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/CommonD3PD_VetoBranches.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/CommonD3PD_VetoBranches.py deleted file mode 100644 index b5f47f985e9103db27983d9afcf79c4377101a56..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/CommonD3PD_VetoBranches.py +++ /dev/null @@ -1,1820 +0,0 @@ - -CommonD3PD_VetoBranches = [ "^"+branch+"$" for branch in [ -"mcevt_event_scale", -"mcevt_alphaQCD", -"mcevt_alphaQED", -"mcevt_pileUpType", -"mc_children", -"mc_parents", -"trk_d0_wrtBS", -"trk_z0_wrtBS", -"trk_phi_wrtBS", -"trk_z0_wrtBL", -"trk_phi_wrtBL", -"trk_z0_err_wrtBL", -"trk_phi_err_wrtBL", -"trk_theta_err_wrtBL", -"trk_qoverp_err_wrtBL", -"trk_d0_z0_err_wrtBL", -"trk_d0_phi_err_wrtBL", -"trk_d0_theta_err_wrtBL", -"trk_d0_qoverp_err_wrtBL", -"trk_z0_phi_err_wrtBL", -"trk_z0_theta_err_wrtBL", -"trk_z0_qoverp_err_wrtBL", -"trk_phi_theta_err_wrtBL", -"trk_phi_qoverp_err_wrtBL", -"trk_theta_qoverp_err_wrtBL", -"trk_nTRTXenonHits", -"trk_nBLSharedHits", -"trk_nPixSharedHits", -"trk_nSCTSharedHits", -"trk_nBLayerSplitHits", -"trk_nPixSplitHits", -"trk_nMDTHits", -"trk_nCSCEtaHits", -"trk_nCSCPhiHits", -"trk_nRPCEtaHits", -"trk_nRPCPhiHits", -"trk_nTGCEtaHits", -"trk_nTGCPhiHits", -"trk_nHits", -"trk_nHoles", -"trk_hitPattern", -"trk_TRTHighTHitsRatio", -"trk_TRTHighTOutliersRatio", -"trk_fitter", -"trk_patternReco1", -"trk_patternReco2", -"trk_trackProperties", -"trk_particleHypothesis", -"trkpt4_eta_atCalo", -"trkpt4_phi_atCalo", -"trkpt4_eta_atCalo2ndLayer", -"trkpt4_phi_atCalo2ndLayer", -"trkpt4_fitter", -"trkpt4_patternReco1", -"trkpt4_patternReco2", -"trkpt4_trackProperties", -"trkpt4_particleHypothesis", -"trk10_d0_wrtBS", -"trk10_z0_wrtBS", -"trk10_phi_wrtBS", -"trk10_d0_wrtBL", -"trk10_z0_wrtBL", -"trk10_phi_wrtBL", -"trk10_d0_err_wrtBL", -"trk10_z0_err_wrtBL", -"trk10_phi_err_wrtBL", -"trk10_theta_err_wrtBL", -"trk10_qoverp_err_wrtBL", -"trk10_d0_z0_err_wrtBL", -"trk10_d0_phi_err_wrtBL", -"trk10_d0_theta_err_wrtBL", -"trk10_d0_qoverp_err_wrtBL", -"trk10_z0_phi_err_wrtBL", -"trk10_z0_theta_err_wrtBL", -"trk10_z0_qoverp_err_wrtBL", -"trk10_phi_theta_err_wrtBL", -"trk10_phi_qoverp_err_wrtBL", -"trk10_theta_qoverp_err_wrtBL", -"trk10_chi2", -"trk10_ndof", -"trk10_nBLHits", -"trk10_nPixHits", -"trk10_nSCTHits", -"trk10_nTRTHits", -"trk10_nTRTHighTHits", -"trk10_nTRTXenonHits", -"trk10_nPixHoles", -"trk10_nSCTHoles", -"trk10_nTRTHoles", -"trk10_nPixelDeadSensors", -"trk10_nSCTDeadSensors", -"trk10_nBLSharedHits", -"trk10_nPixSharedHits", -"trk10_nSCTSharedHits", -"trk10_nBLayerSplitHits", -"trk10_nPixSplitHits", -"trk10_expectBLayerHit", -"trk10_nMDTHits", -"trk10_nCSCEtaHits", -"trk10_nCSCPhiHits", -"trk10_nRPCEtaHits", -"trk10_nRPCPhiHits", -"trk10_nTGCEtaHits", -"trk10_nTGCPhiHits", -"trk10_nHits", -"trk10_nHoles", -"trk10_hitPattern", -"trk10_TRTHighTHitsRatio", -"trk10_TRTHighTOutliersRatio", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Tau1", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Tau2", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Tau3", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_SPLIT12", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_SPLIT23", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_SPLIT34", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_ZCUT12", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_ZCUT23", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_ZCUT34", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_DipExcl12", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_PlanarFlow", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_QW", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_PullMag", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_PullPhi", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Pull_C00", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Pull_C01", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Pull_C10", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Pull_C11", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Tau1", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Tau2", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Tau3", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_SPLIT12", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_SPLIT23", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_SPLIT34", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_ZCUT12", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_ZCUT23", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_ZCUT34", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_DipExcl12", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_PlanarFlow", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_ActiveArea", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_ActiveArea_px", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_ActiveArea_py", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_ActiveArea_pz", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_ActiveArea_e", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_VoronoiArea", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_QW", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_PullMag", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_PullPhi", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Pull_C00", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Pull_C01", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Pull_C10", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Pull_C11", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Tau1", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Tau2", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Tau3", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_SPLIT12", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_SPLIT23", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_SPLIT34", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_ZCUT12", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_ZCUT23", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_ZCUT34", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_DipExcl12", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_PlanarFlow", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_ActiveArea", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_ActiveArea_px", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_ActiveArea_py", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_ActiveArea_pz", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_ActiveArea_e", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_VoronoiArea", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_QW", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_PullMag", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_PullPhi", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Pull_C00", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Pull_C01", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Pull_C10", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Pull_C11", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Tau1", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Tau2", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Tau3", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_SPLIT12", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_SPLIT23", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_SPLIT34", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_ZCUT12", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_ZCUT23", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_ZCUT34", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_DipExcl12", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_PlanarFlow", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_px", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_py", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_pz", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_e", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_VoronoiArea", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_QW", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_PullMag", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_PullPhi", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Pull_C00", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Pull_C01", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Pull_C10", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Pull_C11", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Tau1", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Tau2", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Tau3", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_SPLIT12", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_SPLIT23", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_SPLIT34", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_ZCUT12", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_ZCUT23", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_ZCUT34", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_DipExcl12", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_PlanarFlow", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_QW", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_PullMag", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_PullPhi", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Pull_C00", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Pull_C01", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Pull_C10", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Pull_C11", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Tau1", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Tau2", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Tau3", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_SPLIT12", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_SPLIT23", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_SPLIT34", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_ZCUT12", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_ZCUT23", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_ZCUT34", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Dip12", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_DipExcl12", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_PlanarFlow", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_px", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_py", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_pz", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_e", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_VoronoiArea", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_QW", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_PullMag", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_PullPhi", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Pull_C00", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Pull_C01", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Pull_C10", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Pull_C11", - -# for 1st production -"tau_cell_E", -"tau_cell_eta", -"tau_cell_phi", -"tau_cell_eta_atTJVA", -"tau_cell_phi_atTJVA", -"tau_cell_n", -"tau_cell_nEffCells", -"tau_cell_nEffStripCells", -"tau_cell_samplingID", -"el_corr_cl_time", -"el_corr_cl_time_err", -"el_corr_cl_time_flags", -"el_raw_cl_time", -"ph_corr_cl_time", -"ph_corr_cl_time_err", -"ph_corr_cl_time_flags", -"ph_raw_cl_time", -"mu_calo_EFCB_index", -"mu_calo_EFMG_index", -"mu_calo_EFME_index", -"mu_calo_L2CB_index", -"mu_calo_ptcone20_trk500MeV", -"mu_calo_ptcone30_trk500MeV", -"mu_calo_ptcone40_trk500MeV", -"mu_calo_nucone20_trk500MeV", -"mu_calo_nucone30_trk500MeV", -"mu_calo_nucone40_trk500MeV", -"mu_calo_ptcone20_trkelstyle", -"mu_calo_ptcone30_trkelstyle", -"mu_calo_ptcone40_trkelstyle", -"mu_calo_nucone20_trkelstyle", -"mu_calo_nucone30_trkelstyle", -"mu_calo_nucone40_trkelstyle", -"jet_AntiKt6TopoEM_truthAssoc_index", -"jet_AntiKt6LCTopo_SmearingFactor", -"eljet_muAssoc_index", -"eljet_elAssoc_index", -"eljet_tauAssoc_index", -"eljet_truthAssoc_index", -"jet_AntiKt4TruthALL_truthAssoc_index", -"jet_AntiKt6TruthALL_truthAssoc_index", -"jet_AntiKt4TruthWZ_truthAssoc_index", -"jet_AntiKt6TruthWZ_truthAssoc_index", -"jet_AntiKt6Truth_truthAssoc_index", -"jet_AntiKt5LCTopo_truthAssoc_index", -"jet_AntiKt6GhostTower_truthAssoc_index", -"jet_AntiKt4TrackZ_truthAssoc_index", -"jet_AntiKt6TrackZ_truthAssoc_index", -"jet_AntiKt5TrackZ_truthAssoc_index", -"AntiKt4Truth_truthAssoc_index", -"AntiKt5Truth_truthAssoc_index", -"AntiKt6Truth_truthAssoc_index", -"hr_el_cl_time", -"hr_mu_MI10_max40_ptsum", -"hr_mu_MI10_max40_nTrks", -"hr_mu_MI10_max30_ptsum", -"hr_mu_MI10_max30_nTrks", -"hr_mu_MI15_max40_ptsum", -"hr_mu_MI15_max40_nTrks", -"hr_mu_MI15_max30_ptsum", -"hr_mu_MI15_max30_nTrks", -"hr_mu_truthAssoc_index", -"trig_L2_emcl_rawEnergy", -"trig_L2_emcl_rawEta", -"trig_L2_emcl_rawPhi", -"trig_L2_emcl_RoIWord", -"trig_L2_emcl_nCells", -"trig_L2_emcl_energyInSample", -"trig_L2_trk_idscan_eGamma_hitPattern", -"trig_L2_trk_idscan_eGamma_nStraw", -"trig_L2_trk_idscan_eGamma_nStrawTime", -"trig_L2_trk_idscan_eGamma_param_covariance", -"trig_L2_trk_idscan_eGamma_param_surfaceType", -"trig_L2_trk_idscan_eGamma_param_surfaceCoordinate", -"trig_L2_trk_idscan_eGamma_endParam_a0", -"trig_L2_trk_idscan_eGamma_endParam_z0", -"trig_L2_trk_idscan_eGamma_endParam_phi0", -"trig_L2_trk_idscan_eGamma_endParam_eta", -"trig_L2_trk_idscan_eGamma_endParam_pt", -"trig_L2_trk_idscan_eGamma_endParam_covariance", -"trig_L2_trk_idscan_eGamma_endParam_surfaceType", -"trig_L2_trk_idscan_eGamma_endParam_surfaceCoordinate", -"trig_L2_trk_sitrack_eGamma_hitPattern", -"trig_L2_trk_sitrack_eGamma_nStraw", -"trig_L2_trk_sitrack_eGamma_nStrawTime", -"trig_L2_trk_sitrack_eGamma_param_covariance", -"trig_L2_trk_sitrack_eGamma_param_surfaceType", -"trig_L2_trk_sitrack_eGamma_param_surfaceCoordinate", -"trig_L2_trk_sitrack_eGamma_endParam_a0", -"trig_L2_trk_sitrack_eGamma_endParam_z0", -"trig_L2_trk_sitrack_eGamma_endParam_phi0", -"trig_L2_trk_sitrack_eGamma_endParam_eta", -"trig_L2_trk_sitrack_eGamma_endParam_pt", -"trig_L2_trk_sitrack_eGamma_endParam_covariance", -"trig_L2_trk_sitrack_eGamma_endParam_surfaceType", -"trig_L2_trk_sitrack_eGamma_endParam_surfaceCoordinate", -"trig_L2_el_err_trkPt", -"trig_L2_el_err_eta", -"trig_L2_el_err_phi", -"trig_L2_el_errz", -"trig_L2_el_F0", -"trig_L2_el_F2", -"trig_L2_el_F3", -"trig_L2_ph_Fside", -"trig_L2_ph_Weta2", -"trig_L2_ph_F0", -"trig_L2_ph_F2", -"trig_L2_ph_F3", -"trig_EF_emcl_E_PreSamplerB", -"trig_EF_emcl_E_EMB1", -"trig_EF_emcl_E_EMB2", -"trig_EF_emcl_E_EMB3", -"trig_EF_emcl_E_PreSamplerE", -"trig_EF_emcl_E_EME1", -"trig_EF_emcl_E_EME2", -"trig_EF_emcl_E_EME3", -"trig_EF_emcl_E_HEC0", -"trig_EF_emcl_E_HEC1", -"trig_EF_emcl_E_HEC2", -"trig_EF_emcl_E_HEC3", -"trig_EF_emcl_E_TileBar0", -"trig_EF_emcl_E_TileBar1", -"trig_EF_emcl_E_TileBar2", -"trig_EF_emcl_E_TileGap1", -"trig_EF_emcl_E_TileGap2", -"trig_EF_emcl_E_TileGap3", -"trig_EF_emcl_E_TileExt0", -"trig_EF_emcl_E_TileExt1", -"trig_EF_emcl_E_TileExt2", -"trig_EF_emcl_E_FCAL0", -"trig_EF_emcl_E_FCAL1", -"trig_EF_emcl_E_FCAL2", -"trig_EF_emcl_eta_PreSamplerB", -"trig_EF_emcl_phi_PreSamplerB", -"trig_EF_emcl_eta_EMB1", -"trig_EF_emcl_phi_EMB1", -"trig_EF_emcl_eta_EMB2", -"trig_EF_emcl_phi_EMB2", -"trig_EF_emcl_eta_EMB3", -"trig_EF_emcl_phi_EMB3", -"trig_EF_emcl_eta_PreSamplerE", -"trig_EF_emcl_phi_PreSamplerE", -"trig_EF_emcl_eta_EME1", -"trig_EF_emcl_phi_EME1", -"trig_EF_emcl_eta_EME2", -"trig_EF_emcl_phi_EME2", -"trig_EF_emcl_eta_EME3", -"trig_EF_emcl_phi_EME3", -"trig_EF_emcl_eta_HEC0", -"trig_EF_emcl_phi_HEC0", -"trig_EF_emcl_eta_HEC1", -"trig_EF_emcl_phi_HEC1", -"trig_EF_emcl_eta_HEC2", -"trig_EF_emcl_phi_HEC2", -"trig_EF_emcl_eta_HEC3", -"trig_EF_emcl_phi_HEC3", -"trig_EF_emcl_eta_TileBar0", -"trig_EF_emcl_phi_TileBar0", -"trig_EF_emcl_eta_TileBar1", -"trig_EF_emcl_phi_TileBar1", -"trig_EF_emcl_eta_TileBar2", -"trig_EF_emcl_phi_TileBar2", -"trig_EF_emcl_eta_TileGap1", -"trig_EF_emcl_phi_TileGap1", -"trig_EF_emcl_eta_TileGap2", -"trig_EF_emcl_phi_TileGap2", -"trig_EF_emcl_eta_TileGap3", -"trig_EF_emcl_phi_TileGap3", -"trig_EF_emcl_eta_TileExt0", -"trig_EF_emcl_phi_TileExt0", -"trig_EF_emcl_eta_TileExt1", -"trig_EF_emcl_phi_TileExt1", -"trig_EF_emcl_eta_TileExt2", -"trig_EF_emcl_phi_TileExt2", -"trig_EF_emcl_eta_FCAL0", -"trig_EF_emcl_phi_FCAL0", -"trig_EF_emcl_eta_FCAL1", -"trig_EF_emcl_phi_FCAL1", -"trig_EF_emcl_eta_FCAL2", -"trig_EF_emcl_phi_FCAL2", -"trig_EF_emcl_cell_n", -"trig_EF_emcl_cell_E", -"trig_EF_emcl_cell_pt", -"trig_EF_emcl_cell_eta", -"trig_EF_emcl_cell_phi", -"trig_EF_emcl_cell_QCells", -"trig_EF_emcl_cell_GainCells", -"trig_EF_emcl_cell_DetCells", -"trig_EF_emcl_cell_TimeCells", -"trig_EF_emcl_cell_xCells", -"trig_EF_emcl_cell_yCells", -"trig_EF_emcl_cell_zCells", -"trig_EF_emcl_cell_BadCells", -"trig_EF_emcl_cell_IdCells", -"trig_EF_emcl_slw_E_PreSamplerB", -"trig_EF_emcl_slw_E_EMB1", -"trig_EF_emcl_slw_E_EMB2", -"trig_EF_emcl_slw_E_EMB3", -"trig_EF_emcl_slw_E_PreSamplerE", -"trig_EF_emcl_slw_E_EME1", -"trig_EF_emcl_slw_E_EME2", -"trig_EF_emcl_slw_E_EME3", -"trig_EF_emcl_slw_E_HEC0", -"trig_EF_emcl_slw_E_HEC1", -"trig_EF_emcl_slw_E_HEC2", -"trig_EF_emcl_slw_E_HEC3", -"trig_EF_emcl_slw_E_TileBar0", -"trig_EF_emcl_slw_E_TileBar1", -"trig_EF_emcl_slw_E_TileBar2", -"trig_EF_emcl_slw_E_TileGap1", -"trig_EF_emcl_slw_E_TileGap2", -"trig_EF_emcl_slw_E_TileGap3", -"trig_EF_emcl_slw_E_TileExt0", -"trig_EF_emcl_slw_E_TileExt1", -"trig_EF_emcl_slw_E_TileExt2", -"trig_EF_emcl_slw_E_FCAL0", -"trig_EF_emcl_slw_E_FCAL1", -"trig_EF_emcl_slw_E_FCAL2", -"trig_EF_emcl_slw_eta_PreSamplerB", -"trig_EF_emcl_slw_phi_PreSamplerB", -"trig_EF_emcl_slw_eta_EMB1", -"trig_EF_emcl_slw_phi_EMB1", -"trig_EF_emcl_slw_eta_EMB2", -"trig_EF_emcl_slw_phi_EMB2", -"trig_EF_emcl_slw_eta_EMB3", -"trig_EF_emcl_slw_phi_EMB3", -"trig_EF_emcl_slw_eta_PreSamplerE", -"trig_EF_emcl_slw_phi_PreSamplerE", -"trig_EF_emcl_slw_eta_EME1", -"trig_EF_emcl_slw_phi_EME1", -"trig_EF_emcl_slw_eta_EME2", -"trig_EF_emcl_slw_phi_EME2", -"trig_EF_emcl_slw_eta_EME3", -"trig_EF_emcl_slw_phi_EME3", -"trig_EF_emcl_slw_eta_HEC0", -"trig_EF_emcl_slw_phi_HEC0", -"trig_EF_emcl_slw_eta_HEC1", -"trig_EF_emcl_slw_phi_HEC1", -"trig_EF_emcl_slw_eta_HEC2", -"trig_EF_emcl_slw_phi_HEC2", -"trig_EF_emcl_slw_eta_HEC3", -"trig_EF_emcl_slw_phi_HEC3", -"trig_EF_emcl_slw_eta_TileBar0", -"trig_EF_emcl_slw_phi_TileBar0", -"trig_EF_emcl_slw_eta_TileBar1", -"trig_EF_emcl_slw_phi_TileBar1", -"trig_EF_emcl_slw_eta_TileBar2", -"trig_EF_emcl_slw_phi_TileBar2", -"trig_EF_emcl_slw_eta_TileGap1", -"trig_EF_emcl_slw_phi_TileGap1", -"trig_EF_emcl_slw_eta_TileGap2", -"trig_EF_emcl_slw_phi_TileGap2", -"trig_EF_emcl_slw_eta_TileGap3", -"trig_EF_emcl_slw_phi_TileGap3", -"trig_EF_emcl_slw_eta_TileExt0", -"trig_EF_emcl_slw_phi_TileExt0", -"trig_EF_emcl_slw_eta_TileExt1", -"trig_EF_emcl_slw_phi_TileExt1", -"trig_EF_emcl_slw_eta_TileExt2", -"trig_EF_emcl_slw_phi_TileExt2", -"trig_EF_emcl_slw_eta_FCAL0", -"trig_EF_emcl_slw_phi_FCAL0", -"trig_EF_emcl_slw_eta_FCAL1", -"trig_EF_emcl_slw_phi_FCAL1", -"trig_EF_emcl_slw_eta_FCAL2", -"trig_EF_emcl_slw_phi_FCAL2", -"trig_EF_emcl_slw_cell_n", -"trig_EF_emcl_slw_cell_E", -"trig_EF_emcl_slw_cell_pt", -"trig_EF_emcl_slw_cell_eta", -"trig_EF_emcl_slw_cell_phi", -"trig_EF_emcl_slw_cell_QCells", -"trig_EF_emcl_slw_cell_GainCells", -"trig_EF_emcl_slw_cell_DetCells", -"trig_EF_emcl_slw_cell_TimeCells", -"trig_EF_emcl_slw_cell_xCells", -"trig_EF_emcl_slw_cell_yCells", -"trig_EF_emcl_slw_cell_zCells", -"trig_EF_emcl_slw_cell_BadCells", -"trig_EF_emcl_slw_cell_IdCells", -"trig_EF_el_EtringnoisedR03sig2", -"trig_EF_el_EtringnoisedR03sig3", -"trig_EF_el_EtringnoisedR03sig4", -"trig_EF_el_isolationlikelihoodjets", -"trig_EF_el_isolationlikelihoodhqelectrons", -"trig_EF_el_electronweight", -"trig_EF_el_electronbgweight", -"trig_EF_el_softeweight", -"trig_EF_el_softebgweight", -"trig_EF_el_neuralnet", -"trig_EF_el_Hmatrix", -"trig_EF_el_Hmatrix5", -"trig_EF_el_adaboost", -"trig_EF_el_softeneuralnet", -"trig_EF_el_zvertex", -"trig_EF_el_errz", -"trig_EF_el_etap", -"trig_EF_el_depth", -"trig_EF_el_Es0", -"trig_EF_el_etas0", -"trig_EF_el_phis0", -"trig_EF_el_Es1", -"trig_EF_el_etas1", -"trig_EF_el_phis1", -"trig_EF_el_Es2", -"trig_EF_el_etas2", -"trig_EF_el_phis2", -"trig_EF_el_Es3", -"trig_EF_el_etas3", -"trig_EF_el_phis3", -"trig_EF_el_refittedtrackcovd0", -"trig_EF_el_refittedtrackcovz0", -"trig_EF_el_refittedtrackcovphi", -"trig_EF_el_refittedtrackcovtheta", -"trig_EF_el_refittedtrackcovqoverp", -"trig_EF_el_refittedtrackcovd0z0", -"trig_EF_el_refittedtrackcovz0phi", -"trig_EF_el_refittedtrackcovz0theta", -"trig_EF_el_refittedtrackcovz0qoverp", -"trig_EF_el_refittedtrackcovd0phi", -"trig_EF_el_refittedtrackcovd0theta", -"trig_EF_el_refittedtrackcovd0qoverp", -"trig_EF_el_refittedtrackcovphitheta", -"trig_EF_el_refittedtrackcovphiqoverp", -"trig_EF_el_refittedtrackcovthetaqoverp", -"trig_EF_el_trackcov_d0", -"trig_EF_el_trackcov_z0", -"trig_EF_el_trackcov_phi", -"trig_EF_el_trackcov_theta", -"trig_EF_el_trackcov_qoverp", -"trig_EF_el_trackcov_d0_z0", -"trig_EF_el_trackcov_d0_phi", -"trig_EF_el_trackcov_d0_theta", -"trig_EF_el_trackcov_d0_qoverp", -"trig_EF_el_trackcov_z0_phi", -"trig_EF_el_trackcov_z0_theta", -"trig_EF_el_trackcov_z0_qoverp", -"trig_EF_el_trackcov_phi_theta", -"trig_EF_el_trackcov_phi_qoverp", -"trig_EF_el_trackcov_theta_qoverp", -"trig_EF_el_trackfitchi2", -"trig_EF_el_trackfitndof", -"trig_EF_el_vertx", -"trig_EF_el_verty", -"trig_EF_el_vertz", -"trig_EF_ph_EtringnoisedR03sig2", -"trig_EF_ph_EtringnoisedR03sig3", -"trig_EF_ph_EtringnoisedR03sig4", -"trig_EF_ph_isolationlikelihoodjets", -"trig_EF_ph_isolationlikelihoodhqelectrons", -"trig_EF_ph_loglikelihood", -"trig_EF_ph_photonweight", -"trig_EF_ph_photonbgweight", -"trig_EF_ph_neuralnet", -"trig_EF_ph_Hmatrix", -"trig_EF_ph_Hmatrix5", -"trig_EF_ph_adaboost", -"trig_EF_ph_zvertex", -"trig_EF_ph_errz", -"trig_EF_ph_etap", -"trig_EF_ph_depth", -"trig_EF_ph_Es0", -"trig_EF_ph_etas0", -"trig_EF_ph_phis0", -"trig_EF_ph_Es1", -"trig_EF_ph_etas1", -"trig_EF_ph_phis1", -"trig_EF_ph_Es2", -"trig_EF_ph_etas2", -"trig_EF_ph_phis2", -"trig_EF_ph_Es3", -"trig_EF_ph_etas3", -"trig_EF_ph_phis3", -"trig_L1_mu_RoIWord", -"trig_L2_muonfeature_dq_var1", -"trig_L2_muonfeature_dq_var2", -"trig_L2_muonfeaturedetails_id", -"trig_L2_muonfeaturedetails_te_id", -"trig_L2_muonfeaturedetails_error", -"trig_L2_muonfeaturedetails_lvl1_id", -"trig_L2_muonfeaturedetails_lumi_block", -"trig_L2_muonfeaturedetails_muondetmask", -"trig_L2_muonfeaturedetails_RoIID", -"trig_L2_muonfeaturedetails_RoISystem", -"trig_L2_muonfeaturedetails_RoISubsystem", -"trig_L2_muonfeaturedetails_RoISector", -"trig_L2_muonfeaturedetails_RoINumber", -"trig_L2_muonfeaturedetails_RoIThreshold", -"trig_L2_muonfeaturedetails_RoIEta", -"trig_L2_muonfeaturedetails_RoIPhi", -"trig_L2_muonfeaturedetails_rpc_pad_error", -"trig_L2_muonfeaturedetails_tgc_rdo_error", -"trig_L2_muonfeaturedetails_rpc1_x", -"trig_L2_muonfeaturedetails_rpc1_y", -"trig_L2_muonfeaturedetails_rpc1_z", -"trig_L2_muonfeaturedetails_rpc2_x", -"trig_L2_muonfeaturedetails_rpc2_y", -"trig_L2_muonfeaturedetails_rpc2_z", -"trig_L2_muonfeaturedetails_rpc3_x", -"trig_L2_muonfeaturedetails_rpc3_y", -"trig_L2_muonfeaturedetails_rpc3_z", -"trig_L2_muonfeaturedetails_tgc_Mid1_eta", -"trig_L2_muonfeaturedetails_tgc_Mid1_phi", -"trig_L2_muonfeaturedetails_tgc_Mid1_r", -"trig_L2_muonfeaturedetails_tgc_Mid1_z", -"trig_L2_muonfeaturedetails_tgc_Mid2_eta", -"trig_L2_muonfeaturedetails_tgc_Mid2_phi", -"trig_L2_muonfeaturedetails_tgc_Mid2_r", -"trig_L2_muonfeaturedetails_tgc_Mid2_z", -"trig_L2_muonfeaturedetails_tgc_Mid_rho_chi2", -"trig_L2_muonfeaturedetails_tgc_Mid_rho_N", -"trig_L2_muonfeaturedetails_tgc_Mid_phi_chi2", -"trig_L2_muonfeaturedetails_tgc_Mid_phi_N", -"trig_L2_muonfeaturedetails_tgc_Inn_eta", -"trig_L2_muonfeaturedetails_tgc_Inn_phi", -"trig_L2_muonfeaturedetails_tgc_Inn_r", -"trig_L2_muonfeaturedetails_tgc_Inn_z", -"trig_L2_muonfeaturedetails_tgc_Inn_rho_std", -"trig_L2_muonfeaturedetails_tgc_Inn_rho_N", -"trig_L2_muonfeaturedetails_tgc_Inn_phi_std", -"trig_L2_muonfeaturedetails_tgc_Inn_phi_N", -"trig_L2_muonfeaturedetails_tgc_PT", -"trig_L2_muonfeaturedetails_mdt_Inner_slope", -"trig_L2_muonfeaturedetails_mdt_Inner_intercept", -"trig_L2_muonfeaturedetails_mdt_Inner_Z", -"trig_L2_muonfeaturedetails_mdt_Inner_R", -"trig_L2_muonfeaturedetails_mdt_Inner_fit_chi", -"trig_L2_muonfeaturedetails_mdt_Middle_slope", -"trig_L2_muonfeaturedetails_mdt_Middle_intercept", -"trig_L2_muonfeaturedetails_mdt_Middle_Z", -"trig_L2_muonfeaturedetails_mdt_Middle_R", -"trig_L2_muonfeaturedetails_mdt_Middle_fit_chi", -"trig_L2_muonfeaturedetails_mdt_Outer_slope", -"trig_L2_muonfeaturedetails_mdt_Outer_intercept", -"trig_L2_muonfeaturedetails_mdt_Outer_Z", -"trig_L2_muonfeaturedetails_mdt_Outer_R", -"trig_L2_muonfeaturedetails_mdt_Outer_fit_chi", -"trig_L2_muonfeaturedetails_Address", -"trig_L2_muonfeaturedetails_Sagitta", -"trig_L2_muonfeaturedetails_Radius", -"trig_L2_muonfeaturedetails_Slope", -"trig_L2_muonfeaturedetails_Intercept", -"trig_L2_muonfeaturedetails_Alpha", -"trig_L2_muonfeaturedetails_Beta", -"trig_L2_muonfeaturedetails_DeltaR", -"trig_L2_muonfeaturedetails_Speed_over_c", -"trig_L2_muonfeaturedetails_Eta", -"trig_L2_muonfeaturedetails_PhiMap", -"trig_L2_muonfeaturedetails_Phi", -"trig_L2_muonfeaturedetails_PhiDir", -"trig_L2_muonfeaturedetails_Pt", -"trig_L2_muonfeaturedetails_Charge", -"trig_L2_muonfeaturedetails_type", -"trig_L2_muonfeaturedetails_t_x_center", -"trig_L2_muonfeaturedetails_t_y_center", -"trig_L2_muonfeaturedetails_t_radius", -"trig_L2_muonfeaturedetails_t_ap", -"trig_L2_muonfeaturedetails_t_aphi", -"trig_L2_muonfeaturedetails_t_phi", -"trig_L2_muonfeaturedetails_extrInnerEta", -"trig_L2_muonfeaturedetails_extrInnerPhi", -"trig_L2_muonfeaturedetails_tr_chamber_type_1", -"trig_L2_muonfeaturedetails_tr_chamber_type_2", -"trig_L2_muonfeaturedetails_tr_pos", -"trig_L2_muonfeaturedetails_tr_aw", -"trig_L2_muonfeaturedetails_tr_bw", -"trig_L2_muonfeaturedetails_tr_zetaMin", -"trig_L2_muonfeaturedetails_tr_zetaMax", -"trig_L2_muonfeaturedetails_tr_radMin", -"trig_L2_muonfeaturedetails_tr_radMax", -"trig_L2_muonfeaturedetails_tr_etaMin", -"trig_L2_muonfeaturedetails_tr_etaMax", -"trig_L2_muonfeaturedetails_tr_st_phi", -"trig_L2_muonfeaturedetails_tr_st_roads", -"trig_L2_muonfeaturedetails_ov_chamber_type_1", -"trig_L2_muonfeaturedetails_ov_chamber_type_2", -"trig_L2_muonfeaturedetails_ov_pos", -"trig_L2_muonfeaturedetails_ov_aw", -"trig_L2_muonfeaturedetails_ov_bw", -"trig_L2_muonfeaturedetails_ov_zetaMin", -"trig_L2_muonfeaturedetails_ov_zetaMax", -"trig_L2_muonfeaturedetails_ov_radMin", -"trig_L2_muonfeaturedetails_ov_radMax", -"trig_L2_muonfeaturedetails_ov_etaMin", -"trig_L2_muonfeaturedetails_ov_etaMax", -"trig_L2_muonfeaturedetails_ov_st_phi", -"trig_L2_muonfeaturedetails_ov_st_roads", -"trig_L2_muonfeaturedetails_extension0", -"trig_L2_muonfeaturedetails_extension1", -"trig_L2_muonfeaturedetails_extension2", -"trig_L2_muonfeaturedetails_extension3", -"trig_L2_muonfeaturedetails_extension4", -"trig_L2_muonfeaturedetails_extension5", -"trig_L2_muonfeaturedetails_extension6", -"trig_L2_muonfeaturedetails_extension7", -"trig_L2_muonfeaturedetails_extension8", -"trig_L2_muonfeaturedetails_extension9", -"trig_L2_muonfeaturedetails_lvl1_emulation", -"trig_L2_muonfeaturedetails_rob_id", -"trig_L2_muonfeaturedetails_csm_id", -"trig_L2_muonfeaturedetails_csm_size", -"trig_L2_muonfeaturedetails_csm_error", -"trig_L2_muonfeaturedetails_removed_rob_id", -"trig_L2_muonfeaturedetails_removed_csm_id", -"trig_L2_muonfeaturedetails_pad_hit_onlineId", -"trig_L2_muonfeaturedetails_pad_hit_code", -"trig_L2_muonfeaturedetails_pad_hit_x", -"trig_L2_muonfeaturedetails_pad_hit_y", -"trig_L2_muonfeaturedetails_pad_hit_z", -"trig_L2_muonfeaturedetails_pad_hit_r", -"trig_L2_muonfeaturedetails_pad_hit_p", -"trig_L2_muonfeaturedetails_tgc_Inn_rho_hit_phi", -"trig_L2_muonfeaturedetails_tgc_Inn_rho_hit_r", -"trig_L2_muonfeaturedetails_tgc_Inn_rho_hit_z", -"trig_L2_muonfeaturedetails_tgc_Inn_rho_hit_width", -"trig_L2_muonfeaturedetails_tgc_Inn_rho_hit_in_seg", -"trig_L2_muonfeaturedetails_tgc_Inn_phi_hit_phi", -"trig_L2_muonfeaturedetails_tgc_Inn_phi_hit_r", -"trig_L2_muonfeaturedetails_tgc_Inn_phi_hit_z", -"trig_L2_muonfeaturedetails_tgc_Inn_phi_hit_width", -"trig_L2_muonfeaturedetails_tgc_Inn_phi_hit_in_seg", -"trig_L2_muonfeaturedetails_tgc_Mid_rho_hit_phi", -"trig_L2_muonfeaturedetails_tgc_Mid_rho_hit_r", -"trig_L2_muonfeaturedetails_tgc_Mid_rho_hit_z", -"trig_L2_muonfeaturedetails_tgc_Mid_rho_hit_width", -"trig_L2_muonfeaturedetails_tgc_Mid_rho_hit_in_seg", -"trig_L2_muonfeaturedetails_tgc_Mid_phi_hit_phi", -"trig_L2_muonfeaturedetails_tgc_Mid_phi_hit_r", -"trig_L2_muonfeaturedetails_tgc_Mid_phi_hit_z", -"trig_L2_muonfeaturedetails_tgc_Mid_phi_hit_width", -"trig_L2_muonfeaturedetails_tgc_Mid_phi_hit_in_seg", -"trig_L2_muonfeaturedetails_mdt_onlineId", -"trig_L2_muonfeaturedetails_mdt_offlineId", -"trig_L2_muonfeaturedetails_mdt_tube_r", -"trig_L2_muonfeaturedetails_mdt_tube_z", -"trig_L2_muonfeaturedetails_mdt_tube_residual", -"trig_L2_muonfeaturedetails_mdt_tube_time", -"trig_L2_muonfeaturedetails_mdt_tube_space", -"trig_L2_muonfeaturedetails_mdt_tube_sigma", -"trig_L2_combmuonfeature_idtrk_hitPattern", -"trig_L2_combmuonfeature_idtrk_nStraw", -"trig_L2_combmuonfeature_idtrk_nStrawTime", -"trig_L2_combmuonfeature_idtrk_idtrkfitpar_covariance", -"trig_L2_combmuonfeature_idtrk_idtrkfitpar_surfaceType", -"trig_L2_combmuonfeature_idtrk_idtrkfitpar_surfaceCoordinate", -"trig_L2_tiletrackmufeature_tilemu_eta", -"trig_L2_tiletrackmufeature_tilemu_phi", -"trig_L2_tiletrackmufeature_tilemu_enedep", -"trig_L2_tiletrackmufeature_tilemu_quality", -"trig_L2_tiletrackmufeature_tilemu_hastilemu", -"trig_L2_tiletrackmufeature_idtrk_hitPattern", -"trig_L2_tiletrackmufeature_idtrk_nStraw", -"trig_L2_tiletrackmufeature_idtrk_nStrawTime", -"trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_covariance", -"trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_surfaceType", -"trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_surfaceCoordinate", -"trig_EF_trigmuonef_RoINum", -"trig_EF_trigmuonef_NSegments", -"trig_EF_trigmuonef_NMdtHits", -"trig_EF_trigmuonef_NRpcHits", -"trig_EF_trigmuonef_NTgcHits", -"trig_EF_trigmuonef_NCscHits", -"trig_EF_trigmuonef_EtaPreviousLevel", -"trig_EF_trigmuonef_PhiPreviousLevel", -"trig_EF_trigmuonef_track_MS_NRpcHitsPhi", -"trig_EF_trigmuonef_track_MS_NTgcHitsPhi", -"trig_EF_trigmuonef_track_MS_NCscHitsPhi", -"trig_EF_trigmuonef_track_MS_NRpcHitsEta", -"trig_EF_trigmuonef_track_MS_NTgcHitsEta", -"trig_EF_trigmuonef_track_MS_NCscHitsEta", -"trig_EF_trigmuonef_track_MS_NMdtHits", -"trig_EF_trigmuonef_track_CB_NIdSctHits", -"trig_EF_trigmuonef_track_CB_NIdPixelHits", -"trig_EF_trigmuonef_track_CB_NTrtHits", -"trig_EF_trigmugirl_effs15", -"trig_EF_trigmugirl_effs18", -"trig_EF_trigmugirl_effs24", -"trig_EF_trigmugirl_RoINum", -"trig_EF_trigmugirl_NSegments", -"trig_EF_trigmugirl_NMdtHits", -"trig_EF_trigmugirl_NRpcHits", -"trig_EF_trigmugirl_NTgcHits", -"trig_EF_trigmugirl_NCscHits", -"trig_EF_trigmugirl_EtaPreviousLevel", -"trig_EF_trigmugirl_PhiPreviousLevel", -"trig_EF_trigmugirl_track_MS_NRpcHitsPhi", -"trig_EF_trigmugirl_track_MS_NTgcHitsPhi", -"trig_EF_trigmugirl_track_MS_NCscHitsPhi", -"trig_EF_trigmugirl_track_MS_NRpcHitsEta", -"trig_EF_trigmugirl_track_MS_NTgcHitsEta", -"trig_EF_trigmugirl_track_MS_NCscHitsEta", -"trig_EF_trigmugirl_track_MS_NMdtHits", -"trig_EF_trigmugirl_track_CB_NIdSctHits", -"trig_EF_trigmugirl_track_CB_NIdPixelHits", -"trig_EF_trigmugirl_track_CB_NTrtHits", -"trig_L2_sitrack_muon_hitPattern", -"trig_L2_sitrack_muon_nStraw", -"trig_L2_sitrack_muon_nStrawTime", -"trig_L2_sitrack_muon_param_covariance", -"trig_L2_sitrack_muon_param_surfaceType", -"trig_L2_sitrack_muon_param_surfaceCoordinate", -"trig_L2_sitrack_muon_endParam_a0", -"trig_L2_sitrack_muon_endParam_z0", -"trig_L2_sitrack_muon_endParam_phi0", -"trig_L2_sitrack_muon_endParam_eta", -"trig_L2_sitrack_muon_endParam_pt", -"trig_L2_sitrack_muon_endParam_covariance", -"trig_L2_sitrack_muon_endParam_surfaceType", -"trig_L2_sitrack_muon_endParam_surfaceCoordinate", -"trig_L2_idscan_muon_hitPattern", -"trig_L2_idscan_muon_nStraw", -"trig_L2_idscan_muon_nStrawTime", -"trig_L2_idscan_muon_param_covariance", -"trig_L2_idscan_muon_param_surfaceType", -"trig_L2_idscan_muon_param_surfaceCoordinate", -"trig_L2_idscan_muon_endParam_a0", -"trig_L2_idscan_muon_endParam_z0", -"trig_L2_idscan_muon_endParam_phi0", -"trig_L2_idscan_muon_endParam_eta", -"trig_L2_idscan_muon_endParam_pt", -"trig_L2_idscan_muon_endParam_covariance", -"trig_L2_idscan_muon_endParam_surfaceType", -"trig_L2_idscan_muon_endParam_surfaceCoordinate", -"trig_L2_sitrackfinder_muon_hitPattern", -"trig_L2_sitrackfinder_muon_nStraw", -"trig_L2_sitrackfinder_muon_nStrawTime", -"trig_L2_sitrackfinder_muon_param_covariance", -"trig_L2_sitrackfinder_muon_param_surfaceType", -"trig_L2_sitrackfinder_muon_param_surfaceCoordinate", -"trig_L2_sitrackfinder_muon_endParam_a0", -"trig_L2_sitrackfinder_muon_endParam_z0", -"trig_L2_sitrackfinder_muon_endParam_phi0", -"trig_L2_sitrackfinder_muon_endParam_eta", -"trig_L2_sitrackfinder_muon_endParam_pt", -"trig_L2_sitrackfinder_muon_endParam_covariance", -"trig_L2_sitrackfinder_muon_endParam_surfaceType", -"trig_L2_sitrackfinder_muon_endParam_surfaceCoordinate", -"trig_L2_sitrack_isomuon_hitPattern", -"trig_L2_sitrack_isomuon_nStraw", -"trig_L2_sitrack_isomuon_nStrawTime", -"trig_L2_sitrack_isomuon_param_covariance", -"trig_L2_sitrack_isomuon_param_surfaceType", -"trig_L2_sitrack_isomuon_param_surfaceCoordinate", -"trig_L2_sitrack_isomuon_endParam_a0", -"trig_L2_sitrack_isomuon_endParam_z0", -"trig_L2_sitrack_isomuon_endParam_phi0", -"trig_L2_sitrack_isomuon_endParam_eta", -"trig_L2_sitrack_isomuon_endParam_pt", -"trig_L2_sitrack_isomuon_endParam_covariance", -"trig_L2_sitrack_isomuon_endParam_surfaceType", -"trig_L2_sitrack_isomuon_endParam_surfaceCoordinate", -"trig_L2_idscan_isomuon_hitPattern", -"trig_L2_idscan_isomuon_nStraw", -"trig_L2_idscan_isomuon_nStrawTime", -"trig_L2_idscan_isomuon_param_covariance", -"trig_L2_idscan_isomuon_param_surfaceType", -"trig_L2_idscan_isomuon_param_surfaceCoordinate", -"trig_L2_idscan_isomuon_endParam_a0", -"trig_L2_idscan_isomuon_endParam_z0", -"trig_L2_idscan_isomuon_endParam_phi0", -"trig_L2_idscan_isomuon_endParam_eta", -"trig_L2_idscan_isomuon_endParam_pt", -"trig_L2_idscan_isomuon_endParam_covariance", -"trig_L2_idscan_isomuon_endParam_surfaceType", -"trig_L2_idscan_isomuon_endParam_surfaceCoordinate", -"trig_L2_sitrackfinder_isomuon_hitPattern", -"trig_L2_sitrackfinder_isomuon_nStraw", -"trig_L2_sitrackfinder_isomuon_nStrawTime", -"trig_L2_sitrackfinder_isomuon_param_covariance", -"trig_L2_sitrackfinder_isomuon_param_surfaceType", -"trig_L2_sitrackfinder_isomuon_param_surfaceCoordinate", -"trig_L2_sitrackfinder_isomuon_endParam_a0", -"trig_L2_sitrackfinder_isomuon_endParam_z0", -"trig_L2_sitrackfinder_isomuon_endParam_phi0", -"trig_L2_sitrackfinder_isomuon_endParam_eta", -"trig_L2_sitrackfinder_isomuon_endParam_pt", -"trig_L2_sitrackfinder_isomuon_endParam_covariance", -"trig_L2_sitrackfinder_isomuon_endParam_surfaceType", -"trig_L2_sitrackfinder_isomuon_endParam_surfaceCoordinate", -"trig_roidescriptor_forID_RoIId", -"trig_roidescriptor_forID_l1Id", -"trig_roidescriptor_forID_RoIWord", -"jet_AntiKt10Truth_jvtxf", -"jet_AntiKt10Truth_jvtxfFull", -"jet_AntiKt10Truth_jvtx_x", -"jet_AntiKt10Truth_jvtx_y", -"jet_AntiKt10Truth_jvtx_z", -"jet_AntiKt10Truth_TruthMFindex", -"jet_AntiKt10Truth_TruthMF", -"jet_AntiKt10LCTopo_constit_weight", -"jet_CamKt12Truth_jvtxf", -"jet_CamKt12Truth_jvtxfFull", -"jet_CamKt12Truth_jvtx_x", -"jet_CamKt12Truth_jvtx_y", -"jet_CamKt12Truth_jvtx_z", -"jet_CamKt12Truth_TruthMFindex", -"jet_CamKt12Truth_TruthMF", -"jet_CamKt12Truth_Trimmed_index", -"jet_CamKt12Truth_KtSubjets_n", -"jet_CamKt12Truth_KtSubjets_index", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_Y", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_Z", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_MINIISO", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_MINIISO10", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_DR", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_X_Prime", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_Y_Prime", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_Z_Prime", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_DR_Prime", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_contained", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_n", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Lepton_index", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_CORE_RBB", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_CORE_RFILT", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_QW", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_PullMag", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_PullPhi", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Pull_C00", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Pull_C01", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Pull_C10", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Pull_C11", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_config_NSubjets", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_config_ktycut2", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_config_massFraction", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_config_minRfilt", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_config_minSplitR", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_X", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_Y", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_Z", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_MINIISO", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_MINIISO10", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_DR", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_X_Prime", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_Y_Prime", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_Z_Prime", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_DR_Prime", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_contained", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_n", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Lepton_index", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_QW", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_PullMag", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_PullPhi", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Pull_C00", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Pull_C01", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Pull_C10", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Pull_C11", -"jet_CamKt12TrackZ_constit_weight", -"jet_CamKt12TrackZ_KtSubjets_n", -"jet_CamKt12TrackZ_KtSubjets_index", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_constit_weight", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_X", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_Y", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_Z", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_MINIISO", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_MINIISO10", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_DR", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_X_Prime", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_Y_Prime", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_Z_Prime", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_DR_Prime", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_contained", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_n", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Electron_index", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_X", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_Y", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_Z", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_MINIISO", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_MINIISO10", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_DR", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_X_Prime", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_Y_Prime", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_Z_Prime", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_DR_Prime", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_contained", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_n", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Muon_index", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_CORE_RBB", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_CORE_RFILT", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_QW", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_PullMag", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_PullPhi", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Pull_C00", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Pull_C01", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Pull_C10", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Pull_C11", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_config_NSubjets", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_config_ktycut2", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_config_massFraction", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_config_minRfilt", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_config_minSplitR", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_constit_weight", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_X", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_Y", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_Z", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_MINIISO", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_MINIISO10", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_DR", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_X_Prime", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_Y_Prime", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_Z_Prime", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_DR_Prime", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_contained", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_n", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Electron_index", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_X", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_Y", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_Z", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_MINIISO", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_MINIISO10", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_DR", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_X_Prime", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_Y_Prime", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_Z_Prime", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_DR_Prime", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_contained", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_n", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Muon_index", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_QW", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_PullMag", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_PullPhi", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Pull_C00", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Pull_C01", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Pull_C10", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Pull_C11", -"jet_CamKt12LCTopo_Trimmed_n", -"jet_CamKt12LCTopo_Trimmed_index", -"jet_CamKt12LCTopo_KtSubjets_n", -"jet_CamKt12LCTopo_KtSubjets_index", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_constit_weight", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_X", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_Y", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_Z", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_MINIISO", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_MINIISO10", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_DR", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_X_Prime", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_Y_Prime", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_Z_Prime", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_DR_Prime", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_contained", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_n", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Electron_index", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_X", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_Y", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_Z", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_MINIISO", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_MINIISO10", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_DR", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_X_Prime", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_Y_Prime", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_Z_Prime", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_DR_Prime", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_contained", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_n", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Muon_index", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_CORE_RBB", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_CORE_RFILT", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_QW", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_PullMag", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_PullPhi", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Pull_C00", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Pull_C01", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Pull_C10", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Pull_C11", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_config_NSubjets", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_config_ktycut2", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_config_massFraction", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_config_minRfilt", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_config_minSplitR", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_X", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_Y", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_Z", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_MINIISO", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_MINIISO10", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_DR", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_X_Prime", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_Y_Prime", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_Z_Prime", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_DR_Prime", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_contained", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_n", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Electron_index", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_X", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_Y", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_Z", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_MINIISO", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_MINIISO10", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_DR", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_X_Prime", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_Y_Prime", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_Z_Prime", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_DR_Prime", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_contained", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_n", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Muon_index", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_QW", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_PullMag", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_PullPhi", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Pull_C00", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Pull_C01", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Pull_C10", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Pull_C11", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_CORE_RBB", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_CORE_RFILT", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_LCJES", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_LCJES_EtaCorr", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_LCJES_MassCorr", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_Muon_contained", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_Muon_index", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_Parent_n", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_TrimmedSubjetsPtFrac5SmallR30_flavor_weight_MV2", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_config_NSub", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_config_NSubjets", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_config_PtFrac", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_config_SmallR", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_config_ktycut2", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_config_massFraction", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_config_minRfilt", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_config_minSplitR", -"jet_AntiKt10LCTopoTrimmedPtFrac5SmallR30_constit_weight", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Angularity", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_CORE_RBB", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_CORE_RFILT", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Dip12", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Dip13", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Dip23", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_LCJES", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_LCJES_EtaCorr", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_LCJES_MassCorr", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Muon_contained", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Muon_index", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_Parent_n", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_config_NSubjets", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_config_ktycut2", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_config_massFraction", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_config_minRfilt", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_config_minSplitR", -"jet_AntiKt10LCTopoTrimmedSubjetsPtFrac5SmallR30_constit_weight", -"jet_AntiKt10LCTopo_LCJES", -"jet_AntiKt10LCTopo_LCJES_EtaCorr", -"jet_AntiKt10LCTopo_LCJES_MassCorr", -"jet_AntiKt10LCTopo_Muon_contained", -"jet_AntiKt10LCTopo_Muon_index", -"jet_AntiKt10LCTopo_TrackAssoc_index", -"jet_AntiKt10LCTopo_TrackAssoc_n", -"jet_AntiKt10LCTopo_TrimmedPtFrac5SmallR30_n", -"jet_AntiKt10LCTopo_TruthJets_n", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_ActiveArea", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_ActiveArea_e", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_ActiveArea_px", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_ActiveArea_py", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_ActiveArea_pz", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_Angularity", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_CORE_RBB", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_CORE_RFILT", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_Electron_contained", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_Muon_index", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_Parent_n", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_VoronoiArea", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_config_NSubjets", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_config_ktycut2", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_config_massFraction", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_config_minRfilt", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_config_minSplitR", -"jet_AntiKt10TrackZTrimmedPtFrac5SmallR30_constit_weight", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea_e", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea_px", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea_py", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea_pz", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Angularity", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_CORE_RBB", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_CORE_RFILT", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Dip12", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Dip13", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Dip23", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Electron_contained", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Muon_index", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_Parent_n", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_VoronoiArea", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_config_NSubjets", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_config_ktycut2", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_config_massFraction", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_config_minRfilt", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_config_minSplitR", -"jet_AntiKt10TrackZTrimmedSubjetsPtFrac5SmallR30_constit_weight", -"jet_AntiKt10TrackZ_ActiveArea", -"jet_AntiKt10TrackZ_ActiveArea_e", -"jet_AntiKt10TrackZ_ActiveArea_px", -"jet_AntiKt10TrackZ_ActiveArea_py", -"jet_AntiKt10TrackZ_ActiveArea_pz", -"jet_AntiKt10TrackZ_Angularity", -"jet_AntiKt10TrackZ_Electron_contained", -"jet_AntiKt10TrackZ_Muon_index", -"jet_AntiKt10TrackZ_TrimmedPtFrac5SmallR30_n", -"jet_AntiKt10TrackZ_TruthMF", -"jet_AntiKt10TrackZ_TruthMFindex", -"jet_AntiKt10TrackZ_VoronoiArea", -"jet_AntiKt10TrackZ_jvtxf", -"jet_AntiKt10TrackZ_jvtxfFull", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_Angularity", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_CORE_RBB", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_CORE_RFILT", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_Parent_n", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_config_NSub", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_config_NSubjets", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_config_PtFrac", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_config_SmallR", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_config_ktycut2", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_config_massFraction", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_config_minRfilt", -"jet_AntiKt10TruthTrimmedPtFrac5SmallR30_config_minSplitR", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Angularity", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_CORE_RBB", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_CORE_RFILT", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Dip12", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Dip13", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Dip23", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_Parent_n", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_config_NSubjets", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_config_ktycut2", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_config_massFraction", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_config_minRfilt", -"jet_AntiKt10TruthTrimmedSubjetsPtFrac5SmallR30_config_minSplitR", -"jet_AntiKt10Truth_TrimmedPtFrac5SmallR30_n", -"jet_AntiKt2LCTopo_BAD_CELLS_CORR_E", -"jet_AntiKt2LCTopo_ENG_BAD_CELLS", -"jet_AntiKt2LCTopo_N_BAD_CELLS", -"jet_AntiKt2LCTopo_N_BAD_CELLS_CORR", -"jet_AntiKt2LCTopo_NumTowers", -"jet_AntiKt2LCTopo_n90", -"jet_AntiKt2LCTopo_ootFracCells10", -"jet_AntiKt2LCTopo_ootFracCells5", -"jet_AntiKt3LCTopo_BAD_CELLS_CORR_E", -"jet_AntiKt3LCTopo_ENG_BAD_CELLS", -"jet_AntiKt3LCTopo_N_BAD_CELLS", -"jet_AntiKt3LCTopo_N_BAD_CELLS_CORR", -"jet_AntiKt3LCTopo_NumTowers", -"jet_AntiKt3LCTopo_n90", -"jet_AntiKt3LCTopo_ootFracCells10", -"jet_AntiKt3LCTopo_ootFracCells5", -"jet_AntiKt4LCTopo_MET_Egamma10LooseTau_statusWord", -"jet_AntiKt4LCTopo_MET_Egamma10LooseTau_wet", -"jet_AntiKt4LCTopo_MET_Egamma10LooseTau_wpx", -"jet_AntiKt4LCTopo_MET_Egamma10LooseTau_wpy", -"jet_AntiKt4LCTopo_MET_STVF_statusWord", -"jet_AntiKt4LCTopo_MET_STVF_wet", -"jet_AntiKt4LCTopo_MET_STVF_wpx", -"jet_AntiKt4LCTopo_MET_STVF_wpy", -"jet_AntiKt4LCTopo_SmearingFactor", -"jet_AntiKt4LCTopo_n90", -"jet_AntiKt4TopoEM_LowEtConstituentsFrac", -"jet_AntiKt4TopoEM_SmearingFactor", -"jet_AntiKt5LCTopo_n90", -"jet_AntiKt5LCTopo_ootFracCells10", -"jet_AntiKt5LCTopo_ootFracCells5", -"jet_AntiKt6LCTopo_n90", -"jet_AntiKt6TopoEM_LowEtConstituentsFrac", -"jet_AntiKt6TopoEM_SmearingFactor", -"jet_AntiKt6TopoEM_n90", -"jet_AntiKt6TopoNew_LowEtConstituentsFrac", -"jet_AntiKt6TopoNew_n90", -"jet_AntiKt6TopoNew_ootFracCells10", -"jet_AntiKt6TopoNew_ootFracCells5", -"jet_AntiKt7LCTopo_BAD_CELLS_CORR_E", -"jet_AntiKt7LCTopo_NumTowers", -"jet_AntiKt7LCTopo_n90", -"jet_AntiKt7LCTopo_ootFracCells10", -"jet_AntiKt7LCTopo_ootFracCells5", -"jet_AntiKt8LCTopo_BAD_CELLS_CORR_E", -"jet_AntiKt8LCTopo_ENG_BAD_CELLS", -"jet_AntiKt8LCTopo_LikeLihood_0", -"jet_AntiKt8LCTopo_N_BAD_CELLS", -"jet_AntiKt8LCTopo_N_BAD_CELLS_CORR", -"jet_AntiKt8LCTopo_NumTowers", -"jet_AntiKt8LCTopo_n90", -"jet_AntiKt8LCTopo_ootFracCells10", -"jet_AntiKt8LCTopo_ootFracCells5", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Angularity", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_CORE_RBB", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_CORE_RFILT", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Dip13", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Dip23", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_LCJES", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_LCJES_EtaCorr", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_LCJES_MassCorr", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Muon_contained", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Muon_index", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_Parent_n", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_TrackAssoc_index", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_TrackAssoc_n", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_config_NSubjets", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_config_ktycut2", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_config_massFraction", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_config_minRfilt", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_config_minSplitR", -"jet_CamKt12LCTopoSplitFiltSubjetsmassFraction67minSplitR0_constit_weight", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_LCJES", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_LCJES_EtaCorr", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_LCJES_MassCorr", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_Parent_n", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_TrackAssoc_index", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_TrackAssoc_n", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_config_minSplitR", -"jet_CamKt12LCTopoSplitFilteredmassFraction67minSplitR0_constit_weight", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_LCJES", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_LCJES_EtaCorr", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_LCJES_MassCorr", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_Parent_n", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_TrackAssoc_index", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_TrackAssoc_n", -"jet_CamKt12LCTopoTrimmedPtFrac5SmallR30_TrimmedSubjetsPtFrac5SmallR30_flavor_weight_MV2", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_Angularity", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_CORE_RBB", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_CORE_RFILT", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_Dip12", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_Dip13", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_Dip23", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_LCJES", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_LCJES_EtaCorr", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_LCJES_MassCorr", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_Muon_contained", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_Muon_index", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_Parent_n", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_TrackAssoc_index", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_TrackAssoc_n", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_config_NSubjets", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_config_ktycut2", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_config_massFraction", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_config_minRfilt", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_config_minSplitR", -"jet_CamKt12LCTopoTrimmedSubjetsPtFrac5SmallR30_constit_weight", -"jet_CamKt12LCTopo_LCJES", -"jet_CamKt12LCTopo_LCJES_EtaCorr", -"jet_CamKt12LCTopo_LCJES_MassCorr", -"jet_CamKt12LCTopo_Muon_contained", -"jet_CamKt12LCTopo_Muon_index", -"jet_CamKt12LCTopo_TrackAssoc_index", -"jet_CamKt12LCTopo_TrackAssoc_n", -"jet_CamKt12LCTopo_TrimmedPtFrac5SmallR30_n", -"jet_CamKt12LCTopo_TruthJets_n", -"jet_CamKt12LCTopo_constit_weight", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_e", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_px", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_py", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_ActiveArea_pz", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Angularity", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_CORE_RBB", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_CORE_RFILT", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Dip12", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Dip13", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Dip23", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Electron_contained", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Muon_index", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_Parent_n", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_VoronoiArea", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_config_NSubjets", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_config_ktycut2", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_config_massFraction", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_config_minRfilt", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_config_minSplitR", -"jet_CamKt12TrackZSplitFiltSubjetsmassFraction67minSplitR0_constit_weight", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_ActiveArea", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_ActiveArea_e", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_ActiveArea_px", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_ActiveArea_py", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_ActiveArea_pz", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Angularity", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_Parent_n", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_VoronoiArea", -"jet_CamKt12TrackZSplitFilteredmassFraction67minSplitR0_config_minSplitR", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_ActiveArea", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_ActiveArea_e", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_ActiveArea_px", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_ActiveArea_py", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_ActiveArea_pz", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_Parent_n", -"jet_CamKt12TrackZTrimmedPtFrac5SmallR30_VoronoiArea", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea_e", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea_px", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea_py", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_ActiveArea_pz", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_Angularity", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_CORE_RBB", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_CORE_RFILT", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_Dip12", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_Dip13", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_Dip23", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_Electron_contained", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_Muon_index", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_Parent_n", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_VoronoiArea", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_config_NSubjets", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_config_ktycut2", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_config_massFraction", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_config_minRfilt", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_config_minSplitR", -"jet_CamKt12TrackZTrimmedSubjetsPtFrac5SmallR30_constit_weight", -"jet_CamKt12TrackZ_ActiveArea", -"jet_CamKt12TrackZ_ActiveArea_e", -"jet_CamKt12TrackZ_ActiveArea_px", -"jet_CamKt12TrackZ_ActiveArea_py", -"jet_CamKt12TrackZ_ActiveArea_pz", -"jet_CamKt12TrackZ_Electron_contained", -"jet_CamKt12TrackZ_Muon_index", -"jet_CamKt12TrackZ_TrimmedPtFrac5SmallR30_n", -"jet_CamKt12TrackZ_TruthMF", -"jet_CamKt12TrackZ_TruthMFindex", -"jet_CamKt12TrackZ_VoronoiArea", -"jet_CamKt12TrackZ_jvtxf", -"jet_CamKt12TrackZ_jvtxfFull", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Angularity", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_CORE_RBB", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_CORE_RFILT", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Dip12", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Dip13", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Dip23", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_Parent_n", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_config_NSubjets", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_config_ktycut2", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_config_massFraction", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_config_minRfilt", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_config_minSplitR", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_flavor_component_assoctrk_index", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_flavor_component_assoctrk_n", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_flavor_component_ipplus_trk_index", -"jet_CamKt12TruthSplitFiltSubjetsmassFraction67minSplitR0_flavor_component_ipplus_trk_n", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Angularity", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_Parent_n", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_config_NSubjets", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_config_ktycut2", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_config_massFraction", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_config_minRfilt", -"jet_CamKt12TruthSplitFilteredmassFraction67minSplitR0_config_minSplitR", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_Parent_n", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_config_NSub", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_config_PtFrac", -"jet_CamKt12TruthTrimmedPtFrac5SmallR30_config_SmallR", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_Angularity", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_CORE_RBB", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_CORE_RFILT", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_Dip12", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_Dip13", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_Dip23", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_Parent_n", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_config_NSubjets", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_config_ktycut2", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_config_massFraction", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_config_minRfilt", -"jet_CamKt12TruthTrimmedSubjetsPtFrac5SmallR30_config_minSplitR", -"jet_CamKt12Truth_TrimmedPtFrac5SmallR30_n", -"MET_Base0_nCell_EMB", -"MET_Base0_nCell_EME", -"MET_Base0_nCell_FCAL", -"MET_Base0_nCell_HEC", -"MET_Base0_nCell_PEMB", -"MET_Base0_nCell_PEMEC", -"MET_Base0_nCell_TILE", -"MET_Base_SUMET_EMFrac", -"MET_Base_et", -"MET_Base_etx", -"MET_Base_etx_EMB", -"MET_Base_etx_EME", -"MET_Base_etx_FCAL", -"MET_Base_etx_HEC", -"MET_Base_etx_PEMB", -"MET_Base_etx_PEMEC", -"MET_Base_etx_TILE", -"MET_Base_ety", -"MET_Base_ety_EMB", -"MET_Base_ety_EME", -"MET_Base_ety_FCAL", -"MET_Base_ety_HEC", -"MET_Base_ety_PEMB", -"MET_Base_ety_PEMEC", -"MET_Base_ety_TILE", -"MET_Base_nCell_EMB", -"MET_Base_nCell_EME", -"MET_Base_nCell_FCAL", -"MET_Base_nCell_HEC", -"MET_Base_nCell_PEMB", -"MET_Base_nCell_PEMEC", -"MET_Base_nCell_TILE", -"MET_Base_phi", -"MET_Base_phi_EMB", -"MET_Base_phi_EME", -"MET_Base_phi_FCAL", -"MET_Base_phi_HEC", -"MET_Base_phi_PEMB", -"MET_Base_phi_PEMEC", -"MET_Base_phi_TILE", -"MET_Base_sumet", -"MET_Base_sumet_EMB", -"MET_Base_sumet_EME", -"MET_Base_sumet_FCAL", -"MET_Base_sumet_HEC", -"MET_Base_sumet_PEMB", -"MET_Base_sumet_PEMEC", -"MET_Base_sumet_TILE", -"MET_Calib_SUMET_EMFrac", -"MET_Calib_et", -"MET_Calib_etx", -"MET_Calib_etx_EMB", -"MET_Calib_etx_EME", -"MET_Calib_etx_FCAL", -"MET_Calib_etx_HEC", -"MET_Calib_etx_PEMB", -"MET_Calib_etx_PEMEC", -"MET_Calib_etx_TILE", -"MET_Calib_ety", -"MET_Calib_ety_EMB", -"MET_Calib_ety_EME", -"MET_Calib_ety_FCAL", -"MET_Calib_ety_HEC", -"MET_Calib_ety_PEMB", -"MET_Calib_ety_PEMEC", -"MET_Calib_ety_TILE", -"MET_Calib_nCell_EMB", -"MET_Calib_nCell_EME", -"MET_Calib_nCell_FCAL", -"MET_Calib_nCell_HEC", -"MET_Calib_nCell_PEMB", -"MET_Calib_nCell_PEMEC", -"MET_Calib_nCell_TILE", -"MET_Calib_phi", -"MET_Calib_phi_EMB", -"MET_Calib_phi_EME", -"MET_Calib_phi_FCAL", -"MET_Calib_phi_HEC", -"MET_Calib_phi_PEMB", -"MET_Calib_phi_PEMEC", -"MET_Calib_phi_TILE", -"MET_Calib_sumet", -"MET_Calib_sumet_EMB", -"MET_Calib_sumet_EME", -"MET_Calib_sumet_FCAL", -"MET_Calib_sumet_HEC", -"MET_Calib_sumet_PEMB", -"MET_Calib_sumet_PEMEC", -"MET_Calib_sumet_TILE", -"MET_CellOutCorr_NNTight_Calib_OR_stdvert_ety", -"MET_CellOutCorr_NNTight_Calib_OR_stdvert_sumet", -"MET_CellOutCorr_PhotonLoose_Calib_OR_stdvert_etx", -"MET_CellOutCorr_PhotonLoose_Calib_OR_stdvert_ety", -"MET_CellOutCorr_PhotonLoose_Calib_OR_stdvert_sumet", -"MET_CellOutCorr_PhotonTight_Calib_OR_stdvert_etx", -"MET_CellOutCorr_PhotonTight_Calib_OR_stdvert_ety", -"MET_CellOutCorr_PhotonTight_Calib_OR_stdvert_sumet", -"MET_CellOutCorr_STVF_etx", -"MET_CellOutCorr_STVF_ety", -"MET_CellOutCorr_STVF_sumet", -"MET_CellOutCorr_STVF_top_etx", -"MET_CellOutCorr_STVF_top_ety", -"MET_CellOutCorr_STVF_top_sumet", -"MET_CellOut_Eflow_Egamma10NoTau_etx", -"MET_CellOut_Eflow_Egamma10NoTau_ety", -"MET_CellOut_Eflow_Egamma10NoTau_sumet", -"MET_CellOut_MiniJet_et", -"MET_CellOut_MiniJet_etx", -"MET_CellOut_MiniJet_ety", -"MET_CellOut_MiniJet_phi", -"MET_CellOut_MiniJet_sumet", -"MET_CellOut_STVF_etx", -"MET_CellOut_STVF_ety", -"MET_CellOut_STVF_sumet", -"MET_CellOut_TrackPV_NNTight_Calib_OR_stdvert_etx", -"MET_CellOut_TrackPV_NNTight_Calib_OR_stdvert_ety", -"MET_CellOut_TrackPV_NNTight_Calib_OR_stdvert_sumet", -"MET_CellOut_TrackPV_PhotonLoose_Calib_OR_stdvert_etx", -"MET_CellOut_TrackPV_PhotonLoose_Calib_OR_stdvert_ety", -"MET_CellOut_TrackPV_PhotonLoose_Calib_OR_stdvert_sumet", -"MET_CellOut_TrackPV_PhotonTight_Calib_OR_stdvert_etx", -"MET_CellOut_TrackPV_PhotonTight_Calib_OR_stdvert_ety", -"MET_CellOut_TrackPV_PhotonTight_Calib_OR_stdvert_sumet", -"MET_CellOut_TrackPV_STVF_etx", -"MET_CellOut_TrackPV_STVF_ety", -"MET_CellOut_TrackPV_STVF_sumet", -"MET_CellOut_TrackPV_STVF_top_etx", -"MET_CellOut_TrackPV_STVF_top_ety", -"MET_CellOut_TrackPV_STVF_top_sumet", -"MET_CellOut_Track_NNTight_Calib_OR_stdvert_etx", -"MET_CellOut_Track_NNTight_Calib_OR_stdvert_ety", -"MET_CellOut_Track_NNTight_Calib_OR_stdvert_sumet", -"MET_CellOut_Track_PhotonLoose_Calib_OR_stdvert_etx", -"MET_CellOut_Track_PhotonLoose_Calib_OR_stdvert_ety", -"MET_CellOut_Track_PhotonLoose_Calib_OR_stdvert_sumet", -"MET_CellOut_Track_PhotonTight_Calib_OR_stdvert_etx", -"MET_CellOut_Track_PhotonTight_Calib_OR_stdvert_ety", -"MET_CellOut_Track_PhotonTight_Calib_OR_stdvert_sumet", -"MET_CellOut_Track_STVF_etx", -"MET_CellOut_Track_STVF_ety", -"MET_CellOut_Track_STVF_sumet", -"MET_CellOut_Track_STVF_top_etx", -"MET_CellOut_Track_STVF_top_ety", -"MET_CellOut_Track_STVF_top_sumet", -"MET_CellOut_et", -"MET_CellOut_etx", -"MET_CellOut_ety", -"MET_CellOut_phi", -"MET_CellOut_sumet", -"MET_CorrTopo_SUMET_EMFrac", -"MET_CorrTopo_et", -"MET_CorrTopo_etx", -"MET_CorrTopo_etx_EMB", -"MET_CorrTopo_etx_EME", -"MET_CorrTopo_etx_FCAL", -"MET_CorrTopo_etx_HEC", -"MET_CorrTopo_etx_PEMB", -"MET_CorrTopo_etx_PEMEC", -"MET_CorrTopo_etx_TILE", -"MET_CorrTopo_ety", -"MET_CorrTopo_ety_EMB", -"MET_CorrTopo_ety_EME", -"MET_CorrTopo_ety_FCAL", -"MET_CorrTopo_ety_HEC", -"MET_CorrTopo_ety_PEMB", -"MET_CorrTopo_ety_PEMEC", -"MET_CorrTopo_ety_TILE", -"MET_CorrTopo_nCell_EMB", -"MET_CorrTopo_nCell_EME", -"MET_CorrTopo_nCell_FCAL", -"MET_CorrTopo_nCell_HEC", -"MET_CorrTopo_nCell_PEMB", -"MET_CorrTopo_nCell_PEMEC", -"MET_CorrTopo_nCell_TILE", -"MET_CorrTopo_phi", -"MET_CorrTopo_phi_EMB", -"MET_CorrTopo_phi_EME", -"MET_CorrTopo_phi_FCAL", -"MET_CorrTopo_phi_HEC", -"MET_CorrTopo_phi_PEMB", -"MET_CorrTopo_phi_PEMEC", -"MET_CorrTopo_phi_TILE", -"MET_CorrTopo_sumet", -"MET_CorrTopo_sumet_EMB", -"MET_CorrTopo_sumet_EME", -"MET_CorrTopo_sumet_FCAL", -"MET_CorrTopo_sumet_HEC", -"MET_CorrTopo_sumet_PEMB", -"MET_CorrTopo_sumet_PEMEC", -"MET_CorrTopo_sumet_TILE", -"MET_CryoCone_et", -"MET_CryoCone_etx", -"MET_CryoCone_ety", -"MET_CryoCone_phi", -"MET_CryoCone_sumet", -"MET_Cryo_STVF_etx", -"MET_Cryo_STVF_ety", -"MET_Cryo_STVF_sumet", -"MET_DM_All_et", -"MET_DM_All_etx", -"MET_DM_All_ety", -"MET_DM_All_phi", -"MET_DM_All_sumet", -"MET_DM_Crack1_et", -"MET_DM_Crack1_etx", -"MET_DM_Crack1_ety", -"MET_DM_Crack1_phi", -"MET_DM_Crack1_sumet", -"MET_DM_Crack2_et", -"MET_DM_Crack2_etx", -"MET_DM_Crack2_ety", -"MET_DM_Crack2_phi", -"MET_DM_Crack2_sumet", -"MET_DM_Cryo_et", -"MET_DM_Cryo_etx", -"MET_DM_Cryo_ety", -"MET_DM_Cryo_phi", -"MET_DM_Cryo_sumet", -"MET_Final_et", -"MET_Final_etx", -"MET_Final_ety", -"MET_Final_phi", -"MET_Final_sumet", -"MET_HSG5_RefGamma_etx", -"MET_HSG5_RefGamma_ety", -"MET_HSG5_RefGamma_sumet", -"MET_HSG5_RefTau_etx", -"MET_HSG5_RefTau_ety", -"MET_HSG5_RefTau_sumet", -"MET_HSG5_SoftJets_etx", -"MET_HSG5_SoftJets_ety", -"MET_HSG5_SoftJets_sumet", -"MET_LocHadTopoObj_et", -"MET_LocHadTopoObj_etx", -"MET_LocHadTopoObj_ety", -"MET_LocHadTopoObj_phi", -"MET_LocHadTopoObj_sumet", -"MET_MuonBoy_Egamma10NoTau_etx", -"MET_MuonBoy_Egamma10NoTau_ety", -"MET_MuonBoy_Egamma10NoTau_sumet", -"MET_Muon_Isol_Muid_Egamma10NoTau_etx", -"MET_Muon_Isol_Muid_Egamma10NoTau_ety", -"MET_Muon_Isol_Muid_Egamma10NoTau_sumet", -"MET_Muon_Isol_Staco_STVF_etx", -"MET_Muon_Isol_Staco_STVF_ety", -"MET_Muon_Isol_Staco_STVF_sumet", -"MET_Muon_Isol_Staco_STVF_top_etx", -"MET_Muon_Isol_Staco_STVF_top_ety", -"MET_Muon_Isol_Staco_STVF_top_sumet", -"MET_Muon_NonIsol_Muid_Egamma10NoTau_etx", -"MET_Muon_NonIsol_Muid_Egamma10NoTau_ety", -"MET_Muon_NonIsol_Muid_Egamma10NoTau_sumet", -"MET_Muon_NonIsol_Staco_STVF_etx", -"MET_Muon_NonIsol_Staco_STVF_ety", -"MET_Muon_NonIsol_Staco_STVF_sumet", -"MET_Muon_NonIsol_Staco_STVF_top_etx", -"MET_Muon_NonIsol_Staco_STVF_top_ety", -"MET_Muon_NonIsol_Staco_STVF_top_sumet", -"MET_Muon_Total_Muid_Egamma10NoTau_etx", -"MET_Muon_Total_Muid_Egamma10NoTau_ety", -"MET_Muon_Total_Muid_Egamma10NoTau_sumet", -"MET_RefEle_STVF_etx", -"MET_RefEle_STVF_ety", -"MET_RefEle_STVF_sumet", -"MET_RefGamma_STVF_etx", -"MET_RefGamma_STVF_ety", -"MET_RefGamma_STVF_sumet", -"MET_RefGamma_STVF_top_etx", -"MET_RefGamma_STVF_top_ety", -"MET_RefGamma_STVF_top_sumet", -"MET_RefJet_STVF_etx", -"MET_RefJet_STVF_ety", -"MET_RefJet_STVF_sumet", -"MET_RefMuon_Egamma10NoTau_etx", -"MET_RefMuon_Egamma10NoTau_ety", -"MET_RefMuon_Egamma10NoTau_sumet", -"MET_RefMuon_LCW_NI_eflow6_etx", -"MET_RefMuon_LCW_NI_eflow6_ety", -"MET_RefMuon_LCW_NI_eflow6_sumet", -"MET_RefMuon_LCW_pt20_etx", -"MET_RefMuon_LCW_pt20_ety", -"MET_RefMuon_LCW_pt20_sumet", -"MET_RefMuon_Muid_Egamma10NoTau_etx", -"MET_RefMuon_Muid_Egamma10NoTau_ety", -"MET_RefMuon_Muid_Egamma10NoTau_sumet", -"MET_RefMuon_Muid_LCW_pt20_etx", -"MET_RefMuon_Muid_LCW_pt20_ety", -"MET_RefMuon_Muid_LCW_pt20_sumet", -"MET_RefMuon_STVF_etx", -"MET_RefMuon_STVF_ety", -"MET_RefMuon_STVF_sumet", -"MET_RefMuon_STVF_top_etx", -"MET_RefMuon_STVF_top_ety", -"MET_RefMuon_STVF_top_sumet", -"MET_RefMuon_Staco_BDTMedium_etx", -"MET_RefMuon_Staco_BDTMedium_ety", -"MET_RefMuon_Staco_BDTMedium_sumet", -"MET_RefMuon_Staco_Egamma10NoTau_etx", -"MET_RefMuon_Staco_Egamma10NoTau_ety", -"MET_RefMuon_Staco_Egamma10NoTau_sumet", -"MET_RefMuon_Staco_LCW_NI_eflow6_etx", -"MET_RefMuon_Staco_LCW_NI_eflow6_ety", -"MET_RefMuon_Staco_LCW_NI_eflow6_sumet", -"MET_RefMuon_Staco_STVF_etx", -"MET_RefMuon_Staco_STVF_ety", -"MET_RefMuon_Staco_STVF_sumet", -"MET_RefMuon_Staco_STVF_top_etx", -"MET_RefMuon_Staco_STVF_top_ety", -"MET_RefMuon_Staco_STVF_top_sumet", -"MET_RefMuon_Staco_Trimmed_etx", -"MET_RefMuon_Staco_Trimmed_ety", -"MET_RefMuon_Staco_Trimmed_sumet", -"MET_RefMuon_Staco_et", -"MET_RefMuon_Staco_etx", -"MET_RefMuon_Staco_ety", -"MET_RefMuon_Staco_noEflow_etx", -"MET_RefMuon_Staco_noEflow_ety", -"MET_RefMuon_Staco_noEflow_sumet", -"MET_RefMuon_Staco_phi", -"MET_RefMuon_Staco_sumet", -] ] diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/CommonJVFFix.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/CommonJVFFix.py deleted file mode 100644 index 14bf131943343d90ae2c460de2bdefa7f06666b8..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/CommonJVFFix.py +++ /dev/null @@ -1,29 +0,0 @@ -from RecExConfig.RecFlags import rec -from JetRec.JetMomentGetter import make_JetMomentGetter -from JetMomentTools.SetupJetMomentTools import getJetVertexAssociationTool -jvatool = getJetVertexAssociationTool('AntiKt', 0.4, 'Topo') -jvatool.StoreQualityVariables = True -# jvatool.JVFMomentName = "JVF2" -make_JetMomentGetter( 'AntiKt4TopoEMNewJets' , [jvatool] ) -#make_JetMomentGetter( 'AntiKt6TopoEMNewJets' , [jvatool] ) -#make_JetMomentGetter( 'AntiKt4TopoJets' , [jvatool] ) -#make_JetMomentGetter( 'AntiKt6TopoJets' , [jvatool] ) -make_JetMomentGetter( 'AntiKt4LCTopoJets' , [jvatool] ) -#make_JetMomentGetter( 'AntiKt6LCTopoJets' , [jvatool] ) -#make_JetMomentGetter( 'AntiKt4TowerJets' , [jvatool] ) -#make_JetMomentGetter( 'AntiKt6TowerJets' , [jvatool] ) - - -from D3PDMakerConfig.CommonD3PDMakerFlags import CommonD3PDMakerFlags -if CommonD3PDMakerFlags.doRecJet(): - make_JetMomentGetter( 'AntiKt4TopoEMNewJets' , [jvatool] ) - #make_JetMomentGetter( 'AntiKt6TopoEMNewJets' , [jvatool] ) - #make_JetMomentGetter( 'AntiKt4TopoNewJets' , [jvatool] ) - #make_JetMomentGetter( 'AntiKt6TopoNewJets' , [jvatool] ) - make_JetMomentGetter( 'AntiKt4LCTopoNewJets' , [jvatool] ) - #make_JetMomentGetter( 'AntiKt6LCTopoNewJets' , [jvatool] ) - if not rec.readAOD(): - make_JetMomentGetter( 'AntiKt4TowerEMNewJets' , [jvatool] ) - #make_JetMomentGetter( 'AntiKt6TowerEMNewJets' , [jvatool] ) - make_JetMomentGetter( 'AntiKt4TowerNewJets' , [jvatool] ) - #make_JetMomentGetter( 'AntiKt6TowerNewJets' , [jvatool] ) diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/CommonJetTrackZClusterTool_jobOptions.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/CommonJetTrackZClusterTool_jobOptions.py deleted file mode 100644 index d81613e82e4cf03d9c6b936e1af908e214f95d9a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/CommonJetTrackZClusterTool_jobOptions.py +++ /dev/null @@ -1,246 +0,0 @@ -############################################################### -# -# JetTrackZClusterTool jobOptions file -# -# updated May 2011, with recommendations from: -# TopInputsD3PDMaker/share/ PrepareTrackJets.py -# https://twiki.cern.ch/twiki/bin/view/AtlasProtected/TrackJetsInAthena -# https://svnweb.cern.ch/trac/atlasgrp/browser/Institutes/SLAC/JetCaloValidation/trunk/share/Configs/Configure7TeVTrackJets.py -#============================================================== - -from JetRec.JetGetters import make_StandardJetGetter -try: - from JetRec.TrackSelectionForJets import getStandardTrackJetFinderTool - TrackJetAlg1=make_StandardJetGetter('AntiKt', 0.4, 'TrackZ', outputCollectionName='AntiKt4TrackJets', doCalib=False, jetMoments=[] , minPt=5*GeV).jetAlgorithmHandle() - #TrackJetAlg2=make_StandardJetGetter('AntiKt', 0.6, 'TrackZ', outputCollectionName='AntiKt6TrackJets', doCalib=False, jetMoments=[] , minPt=5*GeV).jetAlgorithmHandle() - #TrackJetAlg3=make_StandardJetGetter('AntiKt', 0.5, 'TrackZ', outputCollectionName='AntiKt5TrackJets', doCalib=False, jetMoments=[] , minPt=5*GeV).jetAlgorithmHandle() - #TrackJetAlg4=make_StandardJetGetter('AntiKt', 0.7, 'TrackZ', outputCollectionName='AntiKt7TrackJets', doCalib=False, jetMoments=[] , minPt=5*GeV).jetAlgorithmHandle() - TrackJetAlg5=make_StandardJetGetter('AntiKt', 0.2, 'TrackZ', outputCollectionName='AntiKt2TrackJets', doCalib=False, jetMoments=[] , minPt=5*GeV).jetAlgorithmHandle() - TrackJetAlg6=make_StandardJetGetter('AntiKt', 0.3, 'TrackZ', outputCollectionName='AntiKt3TrackJets', doCalib=False, jetMoments=[] , minPt=5*GeV).jetAlgorithmHandle() - #TrackJetAlg7=make_StandardJetGetter('AntiKt', 0.8, 'TrackZ', outputCollectionName='AntiKt8TrackJets', doCalib=False, jetMoments=[] , minPt=5*GeV).jetAlgorithmHandle() - TrackJetAlg8=make_StandardJetGetter('Kt', 0.3, 'TrackZ', outputCollectionName='Kt3TrackJets', doCalib=False, jetMoments=[] , minPt=5*GeV).jetAlgorithmHandle() -except: - #-------------------------------------------------------------- - # JetTrackZClusterTool Options - #-------------------------------------------------------------- - - # Import configurable for tool - from JetRecTools.JetRecToolsConf import JetTrackZClusterTool - - # Setup tool so that it can be used - MyJetTrackZClusterTool1 = JetTrackZClusterTool( "IAmATool1" ) - MyJetTrackZClusterTool1.TrackJetMinMulti = 2 # min num tracks to create track jet - MyJetTrackZClusterTool1.TrackJetMinPt = 5000 # MeV, min pt to create a track jet - MyJetTrackZClusterTool1.UseVtxSeeding = True # seed using primary vertices? - MyJetTrackZClusterTool1.DeltaZRange = 10000.0 # z-clustering window - MyJetTrackZClusterTool1.TrackParticleContainerName = "TrackParticleCandidate" - MyJetTrackZClusterTool1.VxContainerName = "VxPrimaryCandidate" - MyJetTrackZClusterTool1.OutputLevel = INFO - - #MyJetTrackZClusterTool2 = JetTrackZClusterTool( "IAmATool2" ) - #MyJetTrackZClusterTool2.TrackJetMinMulti = 2 - #MyJetTrackZClusterTool2.TrackJetMinPt = 5000 - #MyJetTrackZClusterTool2.UseVtxSeeding = True - #MyJetTrackZClusterTool2.DeltaZRange = 10000.0 - #MyJetTrackZClusterTool2.TrackParticleContainerName = "TrackParticleCandidate" - #MyJetTrackZClusterTool2.VxContainerName = "VxPrimaryCandidate" - #MyJetTrackZClusterTool2.OutputLevel = INFO - - #MyJetTrackZClusterTool3 = JetTrackZClusterTool( "IAmATool3" ) - #MyJetTrackZClusterTool3.TrackJetMinMulti = 2 - #MyJetTrackZClusterTool3.TrackJetMinPt = 5000 - #MyJetTrackZClusterTool3.UseVtxSeeding = True - #MyJetTrackZClusterTool3.DeltaZRange = 10000.0 - #MyJetTrackZClusterTool3.TrackParticleContainerName = "TrackParticleCandidate" - #MyJetTrackZClusterTool3.VxContainerName = "VxPrimaryCandidate" - #MyJetTrackZClusterTool3.OutputLevel = INFO - - #MyJetTrackZClusterTool4 = JetTrackZClusterTool( "IAmATool4" ) - #MyJetTrackZClusterTool4.TrackJetMinMulti = 2 - #MyJetTrackZClusterTool4.TrackJetMinPt = 5000 - #MyJetTrackZClusterTool4.UseVtxSeeding = True - #MyJetTrackZClusterTool4.DeltaZRange = 10000.0 - #MyJetTrackZClusterTool4.TrackParticleContainerName = "TrackParticleCandidate" - #MyJetTrackZClusterTool4.VxContainerName = "VxPrimaryCandidate" - #MyJetTrackZClusterTool4.OutputLevel = INFO - - MyJetTrackZClusterTool5 = JetTrackZClusterTool( "IAmATool5" ) - MyJetTrackZClusterTool5.TrackJetMinMulti = 2 - MyJetTrackZClusterTool5.TrackJetMinPt = 5000 - MyJetTrackZClusterTool5.UseVtxSeeding = True - MyJetTrackZClusterTool5.DeltaZRange = 10000.0 - MyJetTrackZClusterTool5.TrackParticleContainerName = "TrackParticleCandidate" - MyJetTrackZClusterTool5.VxContainerName = "VxPrimaryCandidate" - MyJetTrackZClusterTool5.OutputLevel = INFO - - MyJetTrackZClusterTool6 = JetTrackZClusterTool( "IAmATool6" ) - MyJetTrackZClusterTool6.TrackJetMinMulti = 2 - MyJetTrackZClusterTool6.TrackJetMinPt = 5000 - MyJetTrackZClusterTool6.UseVtxSeeding = True - MyJetTrackZClusterTool6.DeltaZRange = 10000.0 - MyJetTrackZClusterTool6.TrackParticleContainerName = "TrackParticleCandidate" - MyJetTrackZClusterTool6.VxContainerName = "VxPrimaryCandidate" - MyJetTrackZClusterTool6.OutputLevel = INFO - - #MyJetTrackZClusterTool7 = JetTrackZClusterTool( "IAmATool7" ) - #MyJetTrackZClusterTool7.TrackJetMinMulti = 2 - #MyJetTrackZClusterTool7.TrackJetMinPt = 5000 - #MyJetTrackZClusterTool7.UseVtxSeeding = True - #MyJetTrackZClusterTool7.DeltaZRange = 10000.0 - #MyJetTrackZClusterTool7.TrackParticleContainerName = "TrackParticleCandidate" - #MyJetTrackZClusterTool7.VxContainerName = "VxPrimaryCandidate" - #MyJetTrackZClusterTool7.OutputLevel = INFO - - MyJetTrackZClusterTool8 = JetTrackZClusterTool( "IAmATool8" ) - MyJetTrackZClusterTool8.TrackJetMinMulti = 2 - MyJetTrackZClusterTool8.TrackJetMinPt = 5000 - MyJetTrackZClusterTool8.UseVtxSeeding = True - MyJetTrackZClusterTool8.DeltaZRange = 10000.0 - MyJetTrackZClusterTool8.TrackParticleContainerName = "TrackParticleCandidate" - MyJetTrackZClusterTool8.VxContainerName = "VxPrimaryCandidate" - MyJetTrackZClusterTool8.OutputLevel = INFO - - from D3PDMakerConfig.CommonTrackJetSeletorTool import GetCachedTrackSelectorTool - if not hasattr(ToolSvc, "CachedTrackSelectorTool"): - GetCachedTrackSelectorTool() - MyJetTrackZClusterTool1.TrackSelector = ToolSvc.CachedTrackSelectorTool - #MyJetTrackZClusterTool2.TrackSelector = ToolSvc.CachedTrackSelectorTool - #MyJetTrackZClusterTool3.TrackSelector = ToolSvc.CachedTrackSelectorTool - #MyJetTrackZClusterTool4.TrackSelector = ToolSvc.CachedTrackSelectorTool - MyJetTrackZClusterTool5.TrackSelector = ToolSvc.CachedTrackSelectorTool - MyJetTrackZClusterTool6.TrackSelector = ToolSvc.CachedTrackSelectorTool - #MyJetTrackZClusterTool7.TrackSelector = ToolSvc.CachedTrackSelectorTool - MyJetTrackZClusterTool8.TrackSelector = ToolSvc.CachedTrackSelectorTool - - #-------------------------------------------------------------- - # JetFinder Tool Options (Anti-Kt) - #-------------------------------------------------------------- - - from JetRec.JetRecConf import JetFastJetFinderTool - - fastfinder1 = JetFastJetFinderTool("fastfinder1") - fastfinder1.Algorithm = "anti-kt" - fastfinder1.Radius = 0.4 - fastfinder1.RecombScheme = "E" - fastfinder1.Strategy = "Best" - fastfinder1.FailIfMisconfigured = True - fastfinder1.Inclusive = True - fastfinder1.CalculateJetArea = False - fastfinder1.StoreNFlipValues = 2 - ToolSvc += fastfinder1 - - #fastfinder2 = JetFastJetFinderTool("fastfinder2") - #fastfinder2.Algorithm = "anti-kt" - #fastfinder2.Radius = 0.6 - #fastfinder2.RecombScheme = "E" - #fastfinder2.Strategy = "Best" - #fastfinder2.FailIfMisconfigured = True - #fastfinder2.Inclusive = True - #fastfinder2.CalculateJetArea = False - #fastfinder2.StoreNFlipValues = 2 - #ToolSvc += fastfinder2 - - #fastfinder3 = JetFastJetFinderTool("fastfinder3") - #fastfinder3.Algorithm = "anti-kt" - #fastfinder3.Radius = 0.5 - #fastfinder3.RecombScheme = "E" - #fastfinder3.Strategy = "Best" - #fastfinder3.FailIfMisconfigured = True - #fastfinder3.Inclusive = True - #fastfinder3.CalculateJetArea = False - #fastfinder3.StoreNFlipValues = 2 - #ToolSvc += fastfinder3 - - #fastfinder4 = JetFastJetFinderTool("fastfinder4") - #fastfinder4.Algorithm = "anti-kt" - #fastfinder4.Radius = 0.7 - #fastfinder4.RecombScheme = "E" - #fastfinder4.Strategy = "Best" - #fastfinder4.FailIfMisconfigured = True - #fastfinder4.Inclusive = True - #fastfinder4.CalculateJetArea = False - #fastfinder4.StoreNFlipValues = 2 - #ToolSvc += fastfinder4 - - fastfinder5 = JetFastJetFinderTool("fastfinder5") - fastfinder5.Algorithm = "anti-kt" - fastfinder5.Radius = 0.2 - fastfinder5.RecombScheme = "E" - fastfinder5.Strategy = "Best" - fastfinder5.FailIfMisconfigured = True - fastfinder5.Inclusive = True - fastfinder5.CalculateJetArea = False - fastfinder5.StoreNFlipValues = 2 - ToolSvc += fastfinder5 - - fastfinder6 = JetFastJetFinderTool("fastfinder6") - fastfinder6.Algorithm = "anti-kt" - fastfinder6.Radius = 0.3 - fastfinder6.RecombScheme = "E" - fastfinder6.Strategy = "Best" - fastfinder6.FailIfMisconfigured = True - fastfinder6.Inclusive = True - fastfinder6.CalculateJetArea = False - fastfinder6.StoreNFlipValues = 2 - ToolSvc += fastfinder6 - - #fastfinder7 = JetFastJetFinderTool("fastfinder7") - #fastfinder7.Algorithm = "anti-kt" - #fastfinder7.Radius = 0.8 - #fastfinder7.RecombScheme = "E" - #fastfinder7.Strategy = "Best" - #fastfinder7.FailIfMisconfigured = True - #fastfinder7.Inclusive = True - #fastfinder7.CalculateJetArea = False - #fastfinder7.StoreNFlipValues = 2 - #ToolSvc += fastfinder7 - - fastfinder8 = JetFastJetFinderTool("fastfinder8") - fastfinder8.Algorithm = "kt" - fastfinder8.Radius = 0.3 - fastfinder8.RecombScheme = "E" - fastfinder8.Strategy = "Best" - fastfinder8.FailIfMisconfigured = True - fastfinder8.Inclusive = True - fastfinder8.CalculateJetArea = False - fastfinder8.StoreNFlipValues = 2 - ToolSvc += fastfinder8 - - # Tell "TrackZClusterTool" to use this tool - MyJetTrackZClusterTool1.JetFinder = fastfinder1 - #MyJetTrackZClusterTool2.JetFinder = fastfinder2 - #MyJetTrackZClusterTool3.JetFinder = fastfinder3 - #MyJetTrackZClusterTool4.JetFinder = fastfinder4 - MyJetTrackZClusterTool5.JetFinder = fastfinder5 - MyJetTrackZClusterTool6.JetFinder = fastfinder6 - #MyJetTrackZClusterTool7.JetFinder = fastfinder7 - MyJetTrackZClusterTool8.JetFinder = fastfinder8 - - from JetRec.JetGetters import * - TrackJetAlg1=make_StandardJetGetter('AntiKt', 0.4, 'Track', outputCollectionName='AntiKt4TrackJets', allTools=[MyJetTrackZClusterTool1,JetSorterTool()] ).jetAlgorithmHandle() - #TrackJetAlg2=make_StandardJetGetter('AntiKt', 0.6, 'Track', outputCollectionName='AntiKt6TrackJets', allTools=[MyJetTrackZClusterTool2,JetSorterTool()] ).jetAlgorithmHandle() - #TrackJetAlg3=make_StandardJetGetter('AntiKt', 0.5, 'Track', outputCollectionName='AntiKt5TrackJets', allTools=[MyJetTrackZClusterTool3,JetSorterTool()] ).jetAlgorithmHandle() - #TrackJetAlg4=make_StandardJetGetter('AntiKt', 0.7, 'Track', outputCollectionName='AntiKt7TrackJets', allTools=[MyJetTrackZClusterTool4,JetSorterTool()] ).jetAlgorithmHandle() - TrackJetAlg5=make_StandardJetGetter('AntiKt', 0.2, 'Track', outputCollectionName='AntiKt2TrackJets', allTools=[MyJetTrackZClusterTool5,JetSorterTool()] ).jetAlgorithmHandle() - TrackJetAlg6=make_StandardJetGetter('AntiKt', 0.3, 'Track', outputCollectionName='AntiKt3TrackJets', allTools=[MyJetTrackZClusterTool6,JetSorterTool()] ).jetAlgorithmHandle() - #TrackJetAlg7=make_StandardJetGetter('AntiKt', 0.8, 'Track', outputCollectionName='AntiKt8TrackJets', allTools=[MyJetTrackZClusterTool7,JetSorterTool()] ).jetAlgorithmHandle() - TrackJetAlg8=make_StandardJetGetter('Kt', 0.3, 'Track', outputCollectionName='Kt3TrackJets', allTools=[MyJetTrackZClusterTool8,JetSorterTool()] ).jetAlgorithmHandle() - - from JetRec.JetMomentGetter import add_jetMoments_to_JetAlg - from JetMomentTools.JetMomentToolsConf import JetWidthTool - widthtool = JetWidthTool('JS_JetWidthTool') - add_jetMoments_to_JetAlg(TrackJetAlg1, [widthtool]) - #add_jetMoments_to_JetAlg(TrackJetAlg2, [widthtool]) - #add_jetMoments_to_JetAlg(TrackJetAlg3, [widthtool]) - #add_jetMoments_to_JetAlg(TrackJetAlg4, [widthtool]) - add_jetMoments_to_JetAlg(TrackJetAlg5, [widthtool]) - add_jetMoments_to_JetAlg(TrackJetAlg6, [widthtool]) - #add_jetMoments_to_JetAlg(TrackJetAlg7, [widthtool]) - add_jetMoments_to_JetAlg(TrackJetAlg8, [widthtool]) - - - #============================================================== - # - # End of job options file - # - ############################################################### diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/ESDToPhysicsD3PD.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/ESDToPhysicsD3PD.py deleted file mode 100644 index b6e7398ef3373a51c99bc0d70170a0142686ca06..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/ESDToPhysicsD3PD.py +++ /dev/null @@ -1,95 +0,0 @@ -# $Id$ -# -# @file D3PDMakerConfig/share/ESDToPhysicsD3PD.py -# @author scott snyder <snyder@bnl.gov> -# @date Aug, 2009 -# @brief Example for building a physics D3PD from an ESD. -# - - -#################################################################### -# Define the input file here. -# - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput= ["ESD.pool.root"] - -#################################################################### -# Define the output file here. -# - -if not globals().get('inputFileType'): - inputFileType = 'ESD' - -if not globals().get('tupleFileOutput'): - tupleFileOutput = 'physics.root' - -from D3PDMakerConfig.D3PDProdFlags import prodFlags -prodFlags.WritePhysicsD3PD = True -prodFlags.WritePhysicsD3PD.FileName = tupleFileOutput -prodFlags.WritePhysicsD3PD.lock() - -#################################################################### -# Define other job options here. -# - -athenaCommonFlags.EvtMax = -1 - -# Example of changing D3PD maker flags. -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -#D3PDMakerFlags.DoTrigger = False - - -#################################################################### -# Configure RecExCommon. -# - -from RecExConfig.RecFlags import rec -rec.DPDMakerScripts.append( "D3PDMakerConfig/PhysicsD3PD_prodJobOFragment.py" ) -rec.doCBNT.set_Value_and_Lock( False ) -rec.doAOD.set_Value_and_Lock( False ) -rec.doWriteTAG.set_Value_and_Lock( False ) -rec.doWriteAOD.set_Value_and_Lock( False ) -rec.doWritexAOD.set_Value_and_Lock( False ) -rec.doMuonCombined.set_Value_and_Lock (False) - -if not globals().has_key ('block_override'): - block_override = [] -# Block loading conditions folders we won't need. -blocked_folders = [ - '/CALO/Identifier/CaloTTOnAttrIdMapAtlas', - '/CALO/Identifier/CaloTTOnOffIdMapAtlas', - '/CALO/Identifier/CaloTTPpmRxIdMapAtlas', - '/LAR/BadChannels/BadChannels', - '/LAR/BadChannels/MissingFEBs', - '/LAR/ElecCalibMC/AutoCorr', - '/LAR/ElecCalibMC/DAC2uA', - '/LAR/ElecCalibMC/HVScaleCorr', - '/LAR/ElecCalibMC/MinBias', - '/LAR/ElecCalibMC/MinBiasAverage', - '/LAR/ElecCalibMC/MphysOverMcal', - '/LAR/ElecCalibMC/Noise', - '/LAR/ElecCalibMC/Pedestal', - '/LAR/ElecCalibMC/Ramp', - '/LAR/ElecCalibMC/Shape', - '/LAR/ElecCalibMC/fSampl', - '/LAR/ElecCalibMC/uA2MeV', - '/LAR/Identifier/FebRodAtlas', - '/LAR/Identifier/LArTTCellMapAtlas', - '/LAR/Identifier/OnOffIdAtlas', - '/MDT/DCS/DROPPEDCH', - '/MDT/DCS/PSLVCHSTATE', - '/PIXEL/PixdEdx', - '/TILE/OFL02/NOISE/AUTOCR', - '/TILE/OFL02/PULSESHAPE/PHY', - '/TILE/ONL01/FILTER/OF2/PHY', - '/TILE/ONL01/NOISE/OFNI', - '/TRT/Cond/Status', - '/TRT/Cond/StatusPermanent', - ] -from IOVDbSvc.CondDB import conddb -for f in blocked_folders: - if f not in block_override: - conddb.blockFolder (f) - -include ("RecExCommon/RecExCommon_topOptions.py") diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/MyJetMake.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/MyJetMake.py deleted file mode 100644 index d94e83449dac2f05a18dd80912aaf19b946a5354..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/MyJetMake.py +++ /dev/null @@ -1,23 +0,0 @@ -# Call as UserAlgs -# Run on ESD so that we can fully re-construct Jets from Towers - -# Imports -from JetRec.JetRecConf import * -from JetRecTools.JetRecToolsConf import * -from JetRec.JetGetters import * -from JetRec.JetRecConf import * -from JetCalibTools.JetCalibToolsConf import * -from AthenaCommon.SystemOfUnits import GeV -from RecExConfig.RecFlags import rec - -from JetRec.JetRecFlags import jetFlags -jetFlags.inputFileType = inputFileType - -make_StandardJetGetter('AntiKt', 0.6, 'H1Topo', outputCollectionName='AntiKt6H1TopoMyJets') -make_StandardJetGetter('AntiKt', 0.4, 'LCTopo') -make_StandardJetGetter('AntiKt', 0.6, 'LCTopo', outputCollectionName='AntiKt6LCTopoMyJets') - - -if rec.doTruth(): - make_StandardJetGetter('AntiKt', 0.6, 'Truth') - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/PhysicsD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/PhysicsD3PD_prodJobOFragment.py deleted file mode 100644 index 7b071b8a3066424d5c3223365ea8d0908b8b1fad..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/PhysicsD3PD_prodJobOFragment.py +++ /dev/null @@ -1,43 +0,0 @@ -# $Id: PhysicsD3PD_prodJobOFragment.py 505516 2012-06-14 14:15:12Z ssnyder $ -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to -# create the "Physics D3PD cart". - -# This jobO should not be included more than once: -include.block( "D3PDMakerConfig/PhysicsD3PD_prodJobOFragment.py" ) - -# Common import(s): -from D3PDMakerConfig import D3PDProdFlags -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -PhysicsD3PDStream_msg = logging.getLogger( 'PhysicsD3PD_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WritePhysicsD3PD.isVirtual: - PhysicsD3PDStream_msg.error( "The Physics D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "Physics D3PD set to be a virtual stream" ) - pass - -# Construct the stream and file names for the SUSY D3PD: -streamName = prodFlags.WritePhysicsD3PD.StreamName -fileName = buildFileName( prodFlags.WritePhysicsD3PD ) -PhysicsD3PDStream_msg.info( "Configuring PhysicsD3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -PhysicsD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics", asAlg=True ) -PhysicsTriggerD3PDStream = MSMgr.NewRootStream( streamName + ":" + streamName + - "TrigDec", fileName, - "physicsTrigDec", - asAlg=True ) - -# Now add all the content to this stream: -from D3PDMakerConfig.physicsD3PD import physicsD3PD -physicsD3PD_args = globals().get('physicsD3PD_args', {}) -physicsD3PD( PhysicsD3PDStream, PhysicsTriggerD3PDStream, **physicsD3PD_args ) diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/PrepareCommonD3PD.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/PrepareCommonD3PD.py deleted file mode 100755 index 6e3e2966b17a0913f158bf072c5922355e79cfdb..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/PrepareCommonD3PD.py +++ /dev/null @@ -1,134 +0,0 @@ - -# This jobO should not be included more than once: - -include.block( "D3PDMakerConfig/PrepareCommonD3PD.py") - -from InDetRecExample.InDetJobProperties import InDetFlags -InDetFlags.doV0Finder.set_Value_and_Lock(True) -InDetFlags.doSimpleV0Finder.set_Value_and_Lock(True) -from InDetRecExample.InDetKeys import InDetKeys - -#Run correct TauDiscriminant -from TauDiscriminant.TauDiscriGetter import TauDiscriGetter -TauDiscriGetter(do_upstream_algs=True) - - -from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags - - -# for missing Et info -from MissingETD3PDMaker.MissingETD3PDMakerFlags import * -MissingETD3PDMakerFlags.doMissingETRegions=True -MissingETD3PDMakerFlags.doCellOutEflow=True -MissingETD3PDMakerFlags.doCellOutMiniJet=True - - -# Enable saving the object metadata for D3PDReader code -# generation: -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -D3PDMakerFlags.SaveObjectMetadata = True -D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) -D3PDMakerFlags.MakeEgammaUserData.set_Value_and_Lock(True) -D3PDMakerFlags.FilterCollCand = False -D3PDMakerFlags.DoTrigger = True -D3PDMakerFlags.RerunTauID = True -D3PDMakerFlags.DoTJVA = True -D3PDMakerFlags.RerunTauRec = True - -from RecExConfig.RecFlags import rec -from AthenaCommon.AlgSequence import AlgSequence - -topSequence = AlgSequence() - - - -# if including track jets need to call in configuration setup file from share/ -from TopInputsD3PDMaker.TopD3PDFlags import TopD3PDFlags - - -# #Make Additional MEt Containers -# include("D3PDMakerConfig/extraMissingEt.py") - -#Configure TrackIsolation Tool -include("SUSYD3PDMaker/TrackIsolationTool_jobOptions.py") - -if rec.doTruth(): - from egammaD3PDAnalysis.egammaUserDataConfig import egammaUserDataConfig - from TopTruthSelection.TopTruthSelectionConf import TopTruthInputsSelector - - # Add TruthParticle containers for top decay products. - truthTopInputs = TopTruthInputsSelector("truthTopInputs") - truthTopInputs.InputContainerName = "SpclMC" - truthTopInputs.TopVertexContainerName = "TruthTopVertexContainer" - truthTopInputs.WVertexContainerName = "TruthWVertexContainer" - truthTopInputs.ZVertexContainerName = "TruthZVertexContainer" - truthTopInputs.TopDecayContainerName = "TruthTopDecayContainer" - truthTopInputs.WDecayContainerName = "TruthWDecayContainer" - truthTopInputs.ZDecayContainerName = "TruthZDecayContainer" - truthTopInputs.WTauContainerName = "TruthWTauContainer" - truthTopInputs.ZTauContainerName = "TruthZTauContainer" - topSequence += truthTopInputs - - - - -from PrimaryDPDMaker.PrimaryDPDFlags import primDPD -from RecExConfig.RecAlgsFlags import recAlgs -from AthenaCommon.AppMgr import ServiceMgr as svcMgr -from AthenaCommon.Logging import logging -from RecExConfig.ObjKeyStore import objKeyStore - -#Suppressing output for warning (especially for jet tools) -svcMgr.MessageSvc.warningLimit=10 - -#no skimming -primDPD.ApplySkimming=False - -#not make DESD for default -primDPD.MakePrimaryDPD=False - -rec.oldFlagTopSteering.set_Value_and_Lock(True) - -jetFlags.noStandardConfig=True - - -# to apply the new JES in Aug 2012 -from DBReplicaSvc.DBReplicaSvcConf import DBReplicaSvc -DBReplicaSvc = DBReplicaSvc(UseCOOLSQLite=False) -svcMgr += DBReplicaSvc -svcMgr.PoolSvc.SortReplicas=True -from JetRec.JetRecFlags import jetFlags -jetFlags.CalibrationDBSuffix.set_Value_and_Lock("-Aug-2012") # new calibration - - -if (CommonD3PDMakerFlags.doRecJet() or CommonD3PDMakerFlags.doRecTruthJet()) \ - and objKeyStore.isInInput("CaloClusterContainer","CaloCalTopoCluster"): - - include("D3PDMakerConfig/makeCommonD3PDJets.py") - #BTaggingFlags.Jets += BTaggingFlags.RetagJets - include("BTagging/BTagging_jobOptions.py") # moved from CommonD3PD_prodJobOFragment.py - -#JetTruthLabel -#from JetRec.JetMomentGetter import make_JetMomentGetter -#from JetMomentTools.SetupJetMomentTools import * -#jTLtool = getJetTruthLabelTool() -#make_JetMomentGetter( 'AntiKt4TopoEMNewJets' , [jTLtool] ) -#make_JetMomentGetter( 'AntiKt6TopoEMNewJets' , [jTLtool] ) -#make_JetMomentGetter( 'AntiKt4LCTopoNewJets' , [jTLtool] ) -#make_JetMomentGetter( 'AntiKt6LCTopoNewJets' , [jTLtool] ) - -# Make Additional MEt Containers -include("D3PDMakerConfig/extraMissingEt.py") - -# not needed anymore -#include ("PhysicsD3PDMaker/MyJetMake.py") - -#jet re-calibration -if CommonD3PDMakerFlags.doRecalibJet(): - include("D3PDMakerConfig/JetReCalib.py") - -#fix JVF -if CommonD3PDMakerFlags.doJVFFix(): - include("D3PDMakerConfig/CommonJVFFix.py") - - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/extraMissingEt.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/extraMissingEt.py deleted file mode 100644 index 45c4bc9bc3a37dc4e21368a6d2fdc21277e98e88..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/extraMissingEt.py +++ /dev/null @@ -1,611 +0,0 @@ -#-----------------------------------------# -# Script for extra MissingEt calculations # -#-----------------------------------------# - - -import AthenaPython.PyAthena as PyAthena -PyAthena.load_library('egammaEnumsDict') - -import MissingET.METRefGetter_plup - -#from MissingET.METRefGetter_plup import * - -# MissingEt with tight++ electrons and EMJES AntiKt4 jets - -#TightPPMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_em_tightpp") -#TightPPMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -#TightPPMissingEtAlg.ele_noCut = False -#TightPPMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDTightPP -#TightPPMissingEtAlg.ele_calibType = "RefCalib" -#TightPPMissingEtAlg.photon_doPhotonTool = False -#TightPPMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTight -#TightPPMissingEtAlg.gamma_calibType = "EmScale" -#TightPPMissingEtAlg.tau_doTauTool = False -#TightPPMissingEtAlg.tau_calibType = "EmScale" -#TightPPMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4TopoEMNewJets" -#TightPPMissingEtAlg.jet_JetPtCut = 20.0*GeV -#TightPPMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -#TightPPMissingEtAlg.jet_ApplyJetScale = "Yes" -#TightPPMissingEtAlg.jet_UseJetMomentForScale = True -#TightPPMissingEtAlg.jet_JetMomentForScale = "JES" -#TightPPMissingEtAlg.jet_calibType = "EmScale" -#TightPPMissingEtAlg.jet_RunSoftJetsTool = True -#TightPPMissingEtAlg.jet_SoftJetsCalibType = "EmScale" -#TightPPMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -#TightPPMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -#TightPPMissingEtAlg.jet_ApplySoftJetsScale = "No" -#TightPPMissingEtAlg.cellout_calibType = "EmScale" -#TightPPMissingEtAlg.cellout_PUSuppression_JA = False -#TightPPMissingEtAlg.cryo_ApplyCorrection = "Off" -#TightPPMissingEtAlg.muon_container = "MuidMuonCollection" -#TightPPMissingEtAlg.muon_algorithm = "Muid" -#TightPPMissingEtAlg.muon_isolationAlg = "dRJet" -#TightPPMissingEtAlg() - - -# MissingEt with medium++ electrons and EMJES AntiKt4 jets -#MediumPPMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_em_mediumpp") -#MediumPPMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -#MediumPPMissingEtAlg.ele_noCut = False -#MediumPPMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDMediumPP -#MediumPPMissingEtAlg.ele_calibType = "RefCalib" -#MediumPPMissingEtAlg.photon_doPhotonTool = False -#MediumPPMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTight -#MediumPPMissingEtAlg.gamma_calibType = "EmScale" -#MediumPPMissingEtAlg.tau_doTauTool = False -#MediumPPMissingEtAlg.tau_calibType = "EmScale" -#MediumPPMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4TopoEMNewJets" -#MediumPPMissingEtAlg.jet_JetPtCut = 20.0*GeV -#MediumPPMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -#MediumPPMissingEtAlg.jet_ApplyJetScale = "Yes" -#MediumPPMissingEtAlg.jet_UseJetMomentForScale = True -#MediumPPMissingEtAlg.jet_JetMomentForScale = "JES" -#MediumPPMissingEtAlg.jet_calibType = "EmScale" -#MediumPPMissingEtAlg.jet_RunSoftJetsTool = True -#MediumPPMissingEtAlg.jet_SoftJetsCalibType = "EmScale" -#MediumPPMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -#MediumPPMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -#MediumPPMissingEtAlg.jet_ApplySoftJetsScale = "No" -#MediumPPMissingEtAlg.cellout_calibType = "EmScale" -#MediumPPMissingEtAlg.cellout_PUSuppression_JA = False -#MediumPPMissingEtAlg.cryo_ApplyCorrection = "Off" -#MediumPPMissingEtAlg.muon_container = "MuidMuonCollection" -#MediumPPMissingEtAlg.muon_algorithm = "Muid" -#MediumPPMissingEtAlg.muon_isolationAlg = "dRJet" -#MediumPPMissingEtAlg() - - -# MissingEt with loose++ electrons and EMJES AntiKt4 jets - -#LoosePPMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_em_loosepp") -#LoosePPMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -#LoosePPMissingEtAlg.ele_noCut = False -#LoosePPMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDLoosePP -#LoosePPMissingEtAlg.ele_calibType = "RefCalib" -#LoosePPMissingEtAlg.photon_doPhotonTool = False -#LoosePPMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTight -#LoosePPMissingEtAlg.gamma_calibType = "EmScale" -#LoosePPMissingEtAlg.tau_doTauTool = False -#LoosePPMissingEtAlg.tau_calibType = "EmScale" -#LoosePPMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4TopoEMNewJets" -#LoosePPMissingEtAlg.jet_JetPtCut = 20.0*GeV -#LoosePPMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -#LoosePPMissingEtAlg.jet_ApplyJetScale = "Yes" -#LoosePPMissingEtAlg.jet_UseJetMomentForScale = True -#LoosePPMissingEtAlg.jet_JetMomentForScale = "JES" -#LoosePPMissingEtAlg.jet_calibType = "EmScale" -#LoosePPMissingEtAlg.jet_RunSoftJetsTool = True -#LoosePPMissingEtAlg.jet_SoftJetsCalibType = "EmScale" -#LoosePPMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -#LoosePPMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -#LoosePPMissingEtAlg.jet_ApplySoftJetsScale = "No" -#LoosePPMissingEtAlg.cellout_calibType = "EmScale" -#LoosePPMissingEtAlg.cellout_PUSuppression_JA = False -#LoosePPMissingEtAlg.cryo_ApplyCorrection = "Off" -#LoosePPMissingEtAlg.muon_container = "MuidMuonCollection" -#LoosePPMissingEtAlg.muon_algorithm = "Muid" -#LoosePPMissingEtAlg.muon_isolationAlg = "dRJet" -#LoosePPMissingEtAlg() - -# MissingEt with tight++ electrons and AntiKt4LCTopoNewJets jets -LCJetTightPPMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_tightpp") -LCJetTightPPMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -LCJetTightPPMissingEtAlg.ele_noCut = False -LCJetTightPPMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDTightPP -LCJetTightPPMissingEtAlg.ele_calibType = "RefCalib" -LCJetTightPPMissingEtAlg.photon_doPhotonTool = False -LCJetTightPPMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTight -LCJetTightPPMissingEtAlg.gamma_calibType = "EmScale" -LCJetTightPPMissingEtAlg.tau_doTauTool = False -LCJetTightPPMissingEtAlg.tau_calibType = "EmScale" -LCJetTightPPMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" -LCJetTightPPMissingEtAlg.jet_JetPtCut = 20.0*GeV -LCJetTightPPMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -LCJetTightPPMissingEtAlg.jet_ApplyJetScale = "Yes" -LCJetTightPPMissingEtAlg.jet_UseJetMomentForScale = True -LCJetTightPPMissingEtAlg.jet_JetMomentForScale = "JES" -LCJetTightPPMissingEtAlg.jet_calibType = "LocHad" -LCJetTightPPMissingEtAlg.jet_RunSoftJetsTool = True -LCJetTightPPMissingEtAlg.jet_SoftJetsCalibType = "LocHad" -LCJetTightPPMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -LCJetTightPPMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -LCJetTightPPMissingEtAlg.jet_ApplySoftJetsScale = "No" -LCJetTightPPMissingEtAlg.cellout_PUSuppression_JA = False -LCJetTightPPMissingEtAlg.cryo_ApplyCorrection = "Off" -LCJetTightPPMissingEtAlg.muon_container = "MuidMuonCollection" -LCJetTightPPMissingEtAlg.muon_algorithm = "Muid" -LCJetTightPPMissingEtAlg.muon_isolationAlg = "dRJet" -LCJetTightPPMissingEtAlg() - -# MissingEt with tight++ electrons and AntiKt4LCTopoNewJets jets -LC5JetTightPPMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_tightpp_AntiKt5LCTopo") -LC5JetTightPPMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -LC5JetTightPPMissingEtAlg.ele_noCut = False -LC5JetTightPPMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDTightPP -LC5JetTightPPMissingEtAlg.ele_calibType = "RefCalib" -LC5JetTightPPMissingEtAlg.photon_doPhotonTool = False -LC5JetTightPPMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTight -LC5JetTightPPMissingEtAlg.gamma_calibType = "EmScale" -LC5JetTightPPMissingEtAlg.tau_doTauTool = False -LC5JetTightPPMissingEtAlg.tau_calibType = "EmScale" -LC5JetTightPPMissingEtAlg.jet_JetInputCollectionKey = "AntiKt5LCTopoNewJets" -LC5JetTightPPMissingEtAlg.jet_JetPtCut = 20.0*GeV -LC5JetTightPPMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -LC5JetTightPPMissingEtAlg.jet_ApplyJetScale = "Yes" -LC5JetTightPPMissingEtAlg.jet_UseJetMomentForScale = True -#LC5JetTightPPMissingEtAlg.jet_JetMomentForScale = "JES" -LC5JetTightPPMissingEtAlg.jet_calibType = "LocHad" -LC5JetTightPPMissingEtAlg.jet_RunSoftJetsTool = True -LC5JetTightPPMissingEtAlg.jet_SoftJetsCalibType = "LocHad" -LC5JetTightPPMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -LC5JetTightPPMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -LC5JetTightPPMissingEtAlg.jet_ApplySoftJetsScale = "No" -LC5JetTightPPMissingEtAlg.cellout_PUSuppression_JA = False -LC5JetTightPPMissingEtAlg.cryo_ApplyCorrection = "Off" -LC5JetTightPPMissingEtAlg.muon_container = "MuidMuonCollection" -LC5JetTightPPMissingEtAlg.muon_algorithm = "Muid" -LC5JetTightPPMissingEtAlg.muon_isolationAlg = "dRJet" -LC5JetTightPPMissingEtAlg() - - -# MissingEt with medium++ electrons and AntiKt4LCTopoNewJets jets -LCJetMediumPPMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_mediumpp") -LCJetMediumPPMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -LCJetMediumPPMissingEtAlg.ele_noCut = False -LCJetMediumPPMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDMediumPP -LCJetMediumPPMissingEtAlg.ele_calibType = "RefCalib" -LCJetMediumPPMissingEtAlg.photon_doPhotonTool = False -LCJetMediumPPMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTight -LCJetMediumPPMissingEtAlg.gamma_calibType = "EmScale" -LCJetMediumPPMissingEtAlg.tau_doTauTool = False -LCJetMediumPPMissingEtAlg.tau_calibType = "EmScale" -LCJetMediumPPMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" -LCJetMediumPPMissingEtAlg.jet_JetPtCut = 20.0*GeV -LCJetMediumPPMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -LCJetMediumPPMissingEtAlg.jet_ApplyJetScale = "Yes" -LCJetMediumPPMissingEtAlg.jet_UseJetMomentForScale = True -LCJetMediumPPMissingEtAlg.jet_JetMomentForScale = "JES" -LCJetMediumPPMissingEtAlg.jet_calibType = "LocHad" -LCJetMediumPPMissingEtAlg.jet_RunSoftJetsTool = True -LCJetMediumPPMissingEtAlg.jet_SoftJetsCalibType = "LocHad" -LCJetMediumPPMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -LCJetMediumPPMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -LCJetMediumPPMissingEtAlg.jet_ApplySoftJetsScale = "No" -LCJetMediumPPMissingEtAlg.cellout_PUSuppression_JA = False -LCJetMediumPPMissingEtAlg.cryo_ApplyCorrection = "Off" -LCJetMediumPPMissingEtAlg.muon_container = "MuidMuonCollection" -LCJetMediumPPMissingEtAlg.muon_algorithm = "Muid" -LCJetMediumPPMissingEtAlg.muon_isolationAlg = "dRJet" -LCJetMediumPPMissingEtAlg() - -# MissingEt with medium++ electrons and AntiKt5LCTopoNewJets jets -LC5JetMediumPPMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_mediumpp_AntiKt5LCTopo") -LC5JetMediumPPMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -LC5JetMediumPPMissingEtAlg.ele_noCut = False -LC5JetMediumPPMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDMediumPP -LC5JetMediumPPMissingEtAlg.ele_calibType = "RefCalib" -LC5JetMediumPPMissingEtAlg.photon_doPhotonTool = False -LC5JetMediumPPMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTight -LC5JetMediumPPMissingEtAlg.gamma_calibType = "EmScale" -LC5JetMediumPPMissingEtAlg.tau_doTauTool = False -LC5JetMediumPPMissingEtAlg.tau_calibType = "EmScale" -LC5JetMediumPPMissingEtAlg.jet_JetInputCollectionKey = "AntiKt5LCTopoNewJets" -LC5JetMediumPPMissingEtAlg.jet_JetPtCut = 20.0*GeV -LC5JetMediumPPMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -LC5JetMediumPPMissingEtAlg.jet_ApplyJetScale = "Yes" -LC5JetMediumPPMissingEtAlg.jet_UseJetMomentForScale = True -#LC5JetMediumPPMissingEtAlg.jet_JetMomentForScale = "JES" -LC5JetMediumPPMissingEtAlg.jet_calibType = "LocHad" -LC5JetMediumPPMissingEtAlg.jet_RunSoftJetsTool = True -LC5JetMediumPPMissingEtAlg.jet_SoftJetsCalibType = "LocHad" -LC5JetMediumPPMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -LC5JetMediumPPMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -LC5JetMediumPPMissingEtAlg.jet_ApplySoftJetsScale = "No" -LC5JetMediumPPMissingEtAlg.cellout_PUSuppression_JA = False -LC5JetMediumPPMissingEtAlg.cryo_ApplyCorrection = "Off" -LC5JetMediumPPMissingEtAlg.muon_container = "MuidMuonCollection" -LC5JetMediumPPMissingEtAlg.muon_algorithm = "Muid" -LC5JetMediumPPMissingEtAlg.muon_isolationAlg = "dRJet" -LC5JetMediumPPMissingEtAlg() - - -# MissingEt with loose++ electrons and AntiKt4LCTopoNewJets jets -#LCJetLoosePPMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_loosepp") -#LCJetLoosePPMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -#LCJetLoosePPMissingEtAlg.ele_noCut = False -#LCJetLoosePPMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDLoosePP -#LCJetLoosePPMissingEtAlg.ele_calibType = "RefCalib" -#LCJetLoosePPMissingEtAlg.photon_doPhotonTool = False -#LCJetLoosePPMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTight -#LCJetLoosePPMissingEtAlg.gamma_calibType = "EmScale" -#LCJetLoosePPMissingEtAlg.tau_doTauTool = False -#LCJetLoosePPMissingEtAlg.tau_calibType = "EmScale" -#LCJetLoosePPMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" -#LCJetLoosePPMissingEtAlg.jet_JetPtCut = 20.0*GeV -#LCJetLoosePPMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -#LCJetLoosePPMissingEtAlg.jet_ApplyJetScale = "Yes" -#LCJetLoosePPMissingEtAlg.jet_UseJetMomentForScale = True -#LCJetLoosePPMissingEtAlg.jet_JetMomentForScale = "JES" -#LCJetLoosePPMissingEtAlg.jet_calibType = "LocHad" -#LCJetLoosePPMissingEtAlg.jet_RunSoftJetsTool = True -#LCJetLoosePPMissingEtAlg.jet_SoftJetsCalibType = "LocHad" -#LCJetLoosePPMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -#LCJetLoosePPMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -#LCJetLoosePPMissingEtAlg.jet_ApplySoftJetsScale = "No" -#LCJetLoosePPMissingEtAlg.cellout_PUSuppression_JA = False -#LCJetLoosePPMissingEtAlg.cryo_ApplyCorrection = "Off" -#LCJetLoosePPMissingEtAlg.muon_container = "MuidMuonCollection" -#LCJetLoosePPMissingEtAlg.muon_algorithm = "Muid" -#LCJetLoosePPMissingEtAlg.muon_isolationAlg = "dRJet" -#LCJetLoosePPMissingEtAlg() - -# MissingEt with tight++ electrons, tight photons and AntiKt4LCTopoNewJets jets - -#LCJetTightPPPhotonTightMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_tightpp_photonTightAR") - -#LCJetTightPPPhotonTightMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -#LCJetTightPPPhotonTightMissingEtAlg.ele_noCut = False -#LCJetTightPPPhotonTightMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDTightPP -#LCJetTightPPPhotonTightMissingEtAlg.ele_calibType = "RefCalib" -#LCJetTightPPPhotonTightMissingEtAlg.photon_doPhotonTool = True -#LCJetTightPPPhotonTightMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTightAR -#LCJetTightPPPhotonTightMissingEtAlg.gamma_calibType = "EmScale" -#LCJetTightPPPhotonTightMissingEtAlg.tau_doTauTool = False -#LCJetTightPPPhotonTightMissingEtAlg.tau_calibType = "EmScale" -#LCJetTightPPPhotonTightMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" -#LCJetTightPPPhotonTightMissingEtAlg.jet_JetPtCut = 20.0*GeV -#LCJetTightPPPhotonTightMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -#LCJetTightPPPhotonTightMissingEtAlg.jet_ApplyJetScale = "Yes" -#LCJetTightPPPhotonTightMissingEtAlg.jet_UseJetMomentForScale = True -#LCJetTightPPPhotonTightMissingEtAlg.jet_JetMomentForScale = "JES" -#LCJetTightPPPhotonTightMissingEtAlg.jet_calibType = "LocHad" -#LCJetTightPPPhotonTightMissingEtAlg.jet_RunSoftJetsTool = True -#LCJetTightPPPhotonTightMissingEtAlg.jet_SoftJetsCalibType = "LocHad" -#LCJetTightPPPhotonTightMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -#LCJetTightPPPhotonTightMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -#LCJetTightPPPhotonTightMissingEtAlg.jet_ApplySoftJetsScale = "No" -#LCJetTightPPPhotonTightMissingEtAlg.cellout_PUSuppression_JA = False -#LCJetTightPPPhotonTightMissingEtAlg.cryo_ApplyCorrection = "Off" -#LCJetTightPPPhotonTightMissingEtAlg.muon_container = "MuidMuonCollection" -#LCJetTightPPPhotonTightMissingEtAlg.muon_algorithm = "Muid" -#LCJetTightPPPhotonTightMissingEtAlg.muon_isolationAlg = "dRJet" -#LCJetTightPPPhotonTightMissingEtAlg() - -# MissingEt with medium++ electrons, tight photons and AntiKt4LCTopoNewJets jets - -#LCJetMediumPPPhotonTightMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_mediumpp_photonTightAR") -#LCJetMediumPPPhotonTightMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -#LCJetMediumPPPhotonTightMissingEtAlg.ele_noCut = False -#LCJetMediumPPPhotonTightMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDMediumPP -#LCJetMediumPPPhotonTightMissingEtAlg.ele_calibType = "RefCalib" -#LCJetMediumPPPhotonTightMissingEtAlg.photon_doPhotonTool = True -#LCJetMediumPPPhotonTightMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDTightAR -#LCJetMediumPPPhotonTightMissingEtAlg.gamma_calibType = "EmScale" -#LCJetMediumPPPhotonTightMissingEtAlg.tau_doTauTool = False -#LCJetMediumPPPhotonTightMissingEtAlg.tau_calibType = "EmScale" -#LCJetMediumPPPhotonTightMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" -#LCJetMediumPPPhotonTightMissingEtAlg.jet_JetPtCut = 20.0*GeV -#LCJetMediumPPPhotonTightMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -#LCJetMediumPPPhotonTightMissingEtAlg.jet_ApplyJetScale = "Yes" -#LCJetMediumPPPhotonTightMissingEtAlg.jet_UseJetMomentForScale = True -#LCJetMediumPPPhotonTightMissingEtAlg.jet_JetMomentForScale = "JES" -#LCJetMediumPPPhotonTightMissingEtAlg.jet_calibType = "LocHad" -#LCJetMediumPPPhotonTightMissingEtAlg.jet_RunSoftJetsTool = True -#LCJetMediumPPPhotonTightMissingEtAlg.jet_SoftJetsCalibType = "LocHad" -#LCJetMediumPPPhotonTightMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -#LCJetMediumPPPhotonTightMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -#LCJetMediumPPPhotonTightMissingEtAlg.jet_ApplySoftJetsScale = "No" -#LCJetMediumPPPhotonTightMissingEtAlg.cellout_PUSuppression_JA = False -#LCJetMediumPPPhotonTightMissingEtAlg.cryo_ApplyCorrection = "Off" -#LCJetMediumPPPhotonTightMissingEtAlg.muon_container = "MuidMuonCollection" -#LCJetMediumPPPhotonTightMissingEtAlg.muon_algorithm = "Muid" -#LCJetMediumPPPhotonTightMissingEtAlg.muon_isolationAlg = "dRJet" -#LCJetMediumPPPhotonTightMissingEtAlg() - -# MissingEt with tight++ electrons, loose photons and AntiKt4LCTopoNewJets jets - -#LCJetTightPPPhotonLooseMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_tightpp_photonLooseAR") -#LCJetTightPPPhotonLooseMissingEtAlg.ele_EleInputCollectionKey = "ElectronAODCollection" -#LCJetTightPPPhotonLooseMissingEtAlg.ele_noCut = False -#LCJetTightPPPhotonLooseMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDTightPP -#LCJetTightPPPhotonLooseMissingEtAlg.ele_calibType = "RefCalib" -#LCJetTightPPPhotonLooseMissingEtAlg.photon_doPhotonTool = True -#LCJetTightPPPhotonLooseMissingEtAlg.gamma_isEM = PyAthena.egammaPID.PhotonIDLooseAR -#LCJetTightPPPhotonLooseMissingEtAlg.gamma_calibType = "EmScale" -#LCJetTightPPPhotonLooseMissingEtAlg.tau_doTauTool = False -#LCJetTightPPPhotonLooseMissingEtAlg.tau_calibType = "EmScale" -#LCJetTightPPPhotonLooseMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" -#LCJetTightPPPhotonLooseMissingEtAlg.jet_JetPtCut = 20.0*GeV -#LCJetTightPPPhotonLooseMissingEtAlg.jet_JetMaxPtCut = 1000000.0*GeV -#LCJetTightPPPhotonLooseMissingEtAlg.jet_ApplyJetScale = "Yes" -#LCJetTightPPPhotonLooseMissingEtAlg.jet_UseJetMomentForScale = True -#LCJetTightPPPhotonLooseMissingEtAlg.jet_JetMomentForScale = "JES" -#LCJetTightPPPhotonLooseMissingEtAlg.jet_calibType = "LocHad" -#LCJetTightPPPhotonLooseMissingEtAlg.jet_RunSoftJetsTool = True -#LCJetTightPPPhotonLooseMissingEtAlg.jet_SoftJetsCalibType = "LocHad" -#LCJetTightPPPhotonLooseMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -#LCJetTightPPPhotonLooseMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -#LCJetTightPPPhotonLooseMissingEtAlg.jet_ApplySoftJetsScale = "No" -#LCJetTightPPPhotonLooseMissingEtAlg.cellout_PUSuppression_JA = False -#LCJetTightPPPhotonLooseMissingEtAlg.cryo_ApplyCorrection = "Off" -#LCJetTightPPPhotonLooseMissingEtAlg.muon_container = "MuidMuonCollection" -#LCJetTightPPPhotonLooseMissingEtAlg.muon_algorithm = "Muid" -#LCJetTightPPPhotonLooseMissingEtAlg.muon_isolationAlg = "dRJet" -#LCJetTightPPPhotonLooseMissingEtAlg() - -#calculate new MissEt Final for JetElectron (same configuration as tight met in topinputs, but different Jet settings!!!) - -#from QCDTemplateTool.QCDTemplateToolConf import JetElectronSelector -#from AthenaCommon.AlgSequence import AlgSequence -#topSequence = AlgSequence() -#topSequence += JetElectronSelector( "JetElectronSelectorInstance90" ) -#topSequence.JetElectronSelectorInstance90.OutputLevel=5 #otherwise we get INFO: Execute() each for each event -#topSequence.JetElectronSelectorInstance90.InputJetContainer="AntiKt4TopoEMNewJets" -#topSequence.JetElectronSelectorInstance90.OutputJetElectronContainer="JetElectronContainer90" -#topSequence.JetElectronSelectorInstance90.OutputJetMETContainer="JetMETContainer90" -#topSequence.JetElectronSelectorInstance90.OutputJetContainer="JetMinusJetElectronContainer90" -#topSequence.JetElectronSelectorInstance90.ExcludeCrackRegion=True -#topSequence.JetElectronSelectorInstance90.CalibrationFactor=0.90 - -#TightPPMissingEtAlg_jetele = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_em_jetelepp") - -#TightPPMissingEtAlg_jetele.ele_EleInputCollectionKey = "ElectronAODCollection" -#TightPPMissingEtAlg_jetele.ele_noCut = False -#TightPPMissingEtAlg_jetele.ele_isEM = PyAthena.egammaPID.ElectronIDTightPP -#TightPPMissingEtAlg_jetele.ele_calibType = "RefCalib" -#TightPPMissingEtAlg_jetele.photon_doPhotonTool = False -#TightPPMissingEtAlg_jetele.gamma_isEM = PyAthena.egammaPID.PhotonIDTight -#TightPPMissingEtAlg_jetele.gamma_calibType = "EmScale" -#TightPPMissingEtAlg_jetele.tau_doTauTool = False -#TightPPMissingEtAlg_jetele.tau_calibType = "EmScale" -#TightPPMissingEtAlg_jetele.jet_JetInputCollectionKey = "JetMETContainer90" -#TightPPMissingEtAlg_jetele.jet_JetPtCut = 20.0*GeV -#TightPPMissingEtAlg_jetele.jet_JetMaxPtCut = 1000000.0*GeV -#TightPPMissingEtAlg_jetele.jet_ApplyJetScale = "Yes" -#TightPPMissingEtAlg_jetele.jet_UseJetMomentForScale = True -#TightPPMissingEtAlg_jetele.jet_JetMomentForScale = "JetElectronCalibration" -#TightPPMissingEtAlg_jetele.jet_calibType = "EmScale" -#TightPPMissingEtAlg_jetele.jet_RunSoftJetsTool = True -#TightPPMissingEtAlg_jetele.jet_SoftJetsCalibType = "EmScale" -#TightPPMissingEtAlg_jetele.jet_SoftJetsPtCut = 10.0*GeV -#TightPPMissingEtAlg_jetele.jet_SoftJetsMaxPtCut = 20.0*GeV -#TightPPMissingEtAlg_jetele.jet_ApplySoftJetsScale = "No" -#TightPPMissingEtAlg_jetele.cellout_calibType = "EmScale" -#TightPPMissingEtAlg_jetele.cellout_PUSuppression_JA = False -#TightPPMissingEtAlg_jetele.cryo_ApplyCorrection = "Off" -#TightPPMissingEtAlg_jetele.muon_container = "MuidMuonCollection" -#TightPPMissingEtAlg_jetele.muon_algorithm = "Muid" -#TightPPMissingEtAlg_jetele.muon_isolationAlg = "dRJet" -#TightPPMissingEtAlg_jetele() - -# default STVF MET with tightpp electrons and muid muons -recAlgs.doMissingET.set_Value_and_Lock(True) -import MissingET.METRefGetter_plup -#STVFMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_STVF_top") -#STVFMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDTightPP -#STVFMissingEtAlg.jet_JetInputCollectionKey = "AntiKt4LCTopoNewJets" -#STVFMissingEtAlg.photon_doPhotonTool = False -#STVFMissingEtAlg.tau_doTauTool = False -#STVFMissingEtAlg.jet_ApplyJetJVF = "Yes" -#STVFMissingEtAlg.jet_RunSoftJetsTool = False -#STVFMissingEtAlg.jet_calibType = "ExclRefCalib" -#STVFMissingEtAlg.muon_container = "MuidMuonCollection" -#STVFMissingEtAlg.muon_algorithm = "Muid" -#STVFMissingEtAlg.plupSuppCorr = 'STVF' -#STVFMissingEtAlg.celloutCorrection = 'STVF' -#STVFMissingEtAlg.cellout_PUSuppression_JA = False -#STVFMissingEtAlg() - -# default MissingEt with tight++ electrons, muid muons, and ExclRefCalib jet calibration - -#LCJetTightPPERCMissingEtAlg = MissingET.METRefGetter_plup.make_METRefAlg(_suffix = "_tightpp_ExclRefCalib") -#LCJetTightPPERCMissingEtAlg.jet_JetInputCollectionKey ='AntiKt4LCTopoNewJets' -#LCJetTightPPERCMissingEtAlg.jet_JetPtCut = 20.0*GeV -#LCJetTightPPERCMissingEtAlg.jet_ApplyJetScale = "Yes" -#LCJetTightPPERCMissingEtAlg.jet_UseJetMomentForScale = True -#LCJetTightPPERCMissingEtAlg.jet_JetMomentForScale = "JES" -#LCJetTightPPERCMissingEtAlg.jet_RunSoftJetsTool = False -#LCJetTightPPERCMissingEtAlg.jet_SoftJetsPtCut = 10.0*GeV -#LCJetTightPPERCMissingEtAlg.jet_SoftJetsMaxPtCut = 20.0*GeV -#LCJetTightPPERCMissingEtAlg.jet_ApplySoftJetsScale = "No" -#LCJetTightPPERCMissingEtAlg.jet_calibType ='LocHad' -#LCJetTightPPERCMissingEtAlg.ele_isEM = PyAthena.egammaPID.ElectronIDTightPP -#LCJetTightPPERCMissingEtAlg.ele_calibType ='RefCalib' -#LCJetTightPPERCMissingEtAlg.gamma_calibType ='EmScale' -#LCJetTightPPERCMissingEtAlg.cellout_calibType ='Eflow' -#LCJetTightPPERCMissingEtAlg.cellout_PUSuppression_JA = False -#LCJetTightPPERCMissingEtAlg.tau_calibType ='ExclRefCalib' -#LCJetTightPPERCMissingEtAlg.cryo_ApplyCorrection = "Off" -#LCJetTightPPERCMissingEtAlg.muon_container = "MuidMuonCollection" -#LCJetTightPPERCMissingEtAlg.muon_algorithm = "Muid" -#LCJetTightPPERCMissingEtAlg.muon_isolationAlg = "dRJet" -#LCJetTightPPERCMissingEtAlg() - -my_alg1 = MissingET.METRefGetter_plup.make_METRefAlg(_suffix='_noEflow') -my_alg1.ele_calibType ='ExclRefCalib' -my_alg1.gamma_calibType ='EmScale' -my_alg1.tau_calibType ='ExclRefCalib' -my_alg1.jet_JetInputCollectionKey ='AntiKt4LCTopoNewJets' -my_alg1.jet_JetPtCut = 20.0*GeV -my_alg1.jet_calibType ='ExclRefCalib' -my_alg1.jet_UseWeights = True -my_alg1.jet_RunSoftJetsTool = False -my_alg1.cellout_calibType ='LocHad' -my_alg1.muon_algorithm = "Staco" -my_alg1.muon_isolationAlg = "dRJet" -my_alg1.cellout_PUSuppression_JA = False -my_alg1() - -my_alg2 = MissingET.METRefGetter_plup.make_METRefAlg(_suffix='_LCW_pt20') -my_alg2.ele_isEM = PyAthena.egammaPID.ElectronTight -my_alg2.ele_calibType ='ExclRefCalib' -my_alg2.gamma_calibType ='ExclRefCalib' -my_alg2.jet_JetInputCollectionKey ='AntiKt4LCTopoNewJets' -my_alg2.jet_JetPtCut = 20.0*GeV -my_alg2.jet_ApplyJetScale = "No" -my_alg2.jet_RunSoftJetsTool = False -my_alg2.jet_calibType ='LocHad' -my_alg2.cellout_calibType ='LocHad' -my_alg2.cellout_PUSuppression_JA = False -my_alg2.tau_doTauTool = False -my_alg2.cryo_ApplyCorrection = "Off" -my_alg2.muon_algorithm = "Muid" -my_alg2.muon_isolationAlg = "dRJet" -my_alg2() - -#my_alg4 = MissingET.METRefGetter_plup.make_METRefAlg(_suffix='_LCW_NI_eflow6') -#my_alg4.ele_calibType ='ExclRefCalib' -#my_alg4.gamma_calibType ='EmScale' -#my_alg4.tau_calibType ='ExclRefCalib' -#my_alg4.jet_JetInputCollectionKey ='AntiKt6LCTopoNewJets' -#my_alg4.jet_JetPtCut = 20.0*GeV -#my_alg4.jet_calibType ='ExclRefCalib' -#my_alg4.jet_UseWeights = True -#my_alg4.jet_RunSoftJetsTool = False -#my_alg4.cellout_calibType ='Eflow' -#my_alg4.muon_algorithm = "Staco" -#my_alg4.muon_isolationAlg = "dRJet" -#my_alg4.cellout_PUSuppression_JA = False -#my_alg4() - - -my_alg6 = MissingET.METRefGetter_plup.make_METRefAlg(_suffix='_Eflow_PV') -my_alg6.ele_calibType ='ExclRefCalib' -my_alg6.gamma_calibType ='EmScale' -my_alg6.tau_calibType ='ExclRefCalib' -my_alg6.jet_JetInputCollectionKey ='AntiKt4LCTopoNewJets' -my_alg6.jet_JetPtCut = 20.0*GeV -my_alg6.jet_calibType ='ExclRefCalib' -my_alg6.jet_UseWeights = True -my_alg6.jet_RunSoftJetsTool = False -my_alg6.cellout_calibType ='Eflow' -my_alg6.cellout_EFlow_PV = True -my_alg6.muon_algorithm = "Staco" -my_alg6.muon_isolationAlg = "dRJet" -my_alg6.cellout_PUSuppression_JA = False -my_alg6() - -my_alg7 = MissingET.METRefGetter_plup.make_METRefAlg(_suffix='_LCW_pt20_EM') -my_alg7.ele_isEM = PyAthena.egammaPID.ElectronTight -my_alg7.ele_calibType ='ExclRefCalib' -my_alg7.gamma_calibType ='ExclRefCalib' -my_alg7.jet_JetInputCollectionKey ='AntiKt4TopoEMNewJets' -my_alg7.jet_JetPtCut = 20.0*GeV -my_alg7.jet_ApplyJetScale = "No" -my_alg7.jet_RunSoftJetsTool = False -my_alg7.jet_calibType ='EmScale' -my_alg7.cellout_calibType ='EmScale' -my_alg7.cellout_PUSuppression_JA = False -my_alg7.tau_doTauTool = False -my_alg7.cryo_ApplyCorrection = "Off" -my_alg7.muon_algorithm = "Muid" -my_alg7.muon_isolationAlg = "dRJet" -my_alg7() - - -# MEt for SUSY group -## defined in python/SUSYCustomMET.py -# end MEt for SUSY group - -# MEt for SMWZ group -METRefAlg_STVFMuid = MissingET.METRefGetter_plup.make_METRefAlg(_suffix='_STVFMuid') -#METRefAlg_STVFMuid.sequence = AlgSequence( D3PDMakerFlags.PreD3PDAlgSeqName() ) -METRefAlg_STVFMuid.jet_JetInputCollectionKey ='AntiKt4LCTopoNewJets' -METRefAlg_STVFMuid.jet_JetPtCut = 20.0*GeV -METRefAlg_STVFMuid.jet_ApplyJetScale = "Yes" -METRefAlg_STVFMuid.jet_UseJetMomentForScale = True -METRefAlg_STVFMuid.jet_JetMomentForScale = "JES" -METRefAlg_STVFMuid.jet_ApplyJetJVF = "Yes" -METRefAlg_STVFMuid.jet_RunSoftJetsTool = False -METRefAlg_STVFMuid.jet_calibType ='LocHad' -METRefAlg_STVFMuid.ele_calibType ='RefCalib' -METRefAlg_STVFMuid.gamma_calibType ='EmScale' -METRefAlg_STVFMuid.plupSuppCorr ='STVF' -METRefAlg_STVFMuid.celloutCorrection ='STVF' -METRefAlg_STVFMuid.cellout_PUSuppression_JA = False -METRefAlg_STVFMuid.cellout_calibType ='Eflow' -METRefAlg_STVFMuid.tau_calibType ='ExclRefCalib' -METRefAlg_STVFMuid.cryo_ApplyCorrection = "Off" -METRefAlg_STVFMuid.muon_container = "MuidMuonCollection" -METRefAlg_STVFMuid.muon_algorithm = "Muid" -METRefAlg_STVFMuid.muon_isolationAlg = "dRJet" -METRefAlg_STVFMuid() - -METRefAlg_STVFMuons = MissingET.METRefGetter_plup.make_METRefAlg(_suffix='_STVFMuons') -#METRefAlg_STVFMuons.sequence = AlgSequence( D3PDMakerFlags.PreD3PDAlgSeqName() ) -METRefAlg_STVFMuons.jet_JetInputCollectionKey ='AntiKt4LCTopoNewJets' -METRefAlg_STVFMuons.jet_JetPtCut = 20.0*GeV -METRefAlg_STVFMuons.jet_ApplyJetScale = "Yes" -METRefAlg_STVFMuons.jet_UseJetMomentForScale = True -METRefAlg_STVFMuons.jet_JetMomentForScale = "JES" -METRefAlg_STVFMuons.jet_ApplyJetJVF = "Yes" -METRefAlg_STVFMuons.jet_RunSoftJetsTool = False -METRefAlg_STVFMuons.jet_calibType ='LocHad' -METRefAlg_STVFMuons.ele_calibType ='RefCalib' -METRefAlg_STVFMuons.gamma_calibType ='EmScale' -METRefAlg_STVFMuons.plupSuppCorr ='STVF' -METRefAlg_STVFMuons.celloutCorrection ='STVF' -METRefAlg_STVFMuons.cellout_PUSuppression_JA = False -METRefAlg_STVFMuons.cellout_calibType ='Eflow' -METRefAlg_STVFMuons.tau_calibType ='ExclRefCalib' -METRefAlg_STVFMuons.cryo_ApplyCorrection = "Off" -METRefAlg_STVFMuons.muon_container = "Muons" -METRefAlg_STVFMuons.muon_algorithm = "Muons" -METRefAlg_STVFMuons.muon_isolationAlg = "dRJet" -METRefAlg_STVFMuons() - - -### adding HSG5 MET -METRefAlg_HSG5 = MissingET.METRefGetter_plup.make_METRefAlg(_suffix='_HSG5') -METRefAlg_HSG5.sequence = AlgSequence( D3PDMakerFlags.PreD3PDAlgSeqName() ) -METRefAlg_HSG5.jet_JetInputCollectionKey = "AntiKt4TopoEMNewJets" -METRefAlg_HSG5.jet_JetPtCut = 20.0*GeV -METRefAlg_HSG5.jet_ApplyJetScale = "No" -METRefAlg_HSG5.jet_UseJetMomentForScale = True -METRefAlg_HSG5.jet_JetMomentForScale = "JES" -METRefAlg_HSG5.jet_RunSoftJetsTool = False -METRefAlg_HSG5.jet_SoftJetsPtCut = 7.0*GeV -METRefAlg_HSG5.jet_SoftJetsMaxPtCut = 20.0*GeV -METRefAlg_HSG5.photon_doPhotonTool = False -METRefAlg_HSG5.tau_doTauTool = False -METRefAlg_HSG5.jet_SoftJetsCalibType = "EmScale" -METRefAlg_HSG5.jet_ApplySoftJetsScale = "No" -METRefAlg_HSG5.jet_calibType = "ExclRefCalib" -METRefAlg_HSG5.ele_calibType = "RefCalib" -METRefAlg_HSG5.gamma_calibType = "EmScale" -METRefAlg_HSG5.cellout_calibType = "Eflow" -METRefAlg_HSG5.cellout_PUSuppression_JA = False -METRefAlg_HSG5.tau_calibType = "EmScale" -METRefAlg_HSG5.cryo_ApplyCorrection = "Off" -METRefAlg_HSG5.muon_container = "MuidMuonCollection" -METRefAlg_HSG5.muon_algorithm = "Muid" -METRefAlg_HSG5.muon_isolationAlg = "dRJet" -print METRefAlg_HSG5 -METRefAlg_HSG5() - - -# end MEt for SMWZ group - -# MEt for TAU group - -# end MEt for TAU group diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/makeCommonD3PDJets.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/makeCommonD3PDJets.py deleted file mode 100644 index 29cb2de0a600b2acf76ad3fc241459f281799073..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/share/makeCommonD3PDJets.py +++ /dev/null @@ -1,221 +0,0 @@ -# Imports -from JetRec.JetGetters import * -from JetRec.JetRecConf import * -from JetRec.JetRecFlags import jetFlags -from JetRec.JetRec_defaults import * -from JetCalibTools.JetCalibToolsConf import * -from JetCalibTools.MakeCalibSequences import * -from JetCalibTools.SetupJetCalibrators import doJetOriginCorrection - -from JetSubstructureD3PDMaker.JSjets import createJSJets -from JetSubstructureD3PDMaker.JSD3PD import JSD3PD - -from CaloRec.CaloTowerCmbGetter import CaloTowerCmbGetter -from AthenaCommon.SystemOfUnits import GeV -from RecExConfig.RecFlags import rec -from RecExConfig.InputFilePeeker import inputFileSummary -from PrimaryDPDMaker.PrimaryDPDFlags import primDPD -from D3PDMakerConfig.CommonD3PDMakerFlags import CommonD3PDMakerFlags -from AthenaCommon.AppMgr import ServiceMgr as svcMgr -from IOVDbSvc.CondDB import conddb - -#--- -# Jet Width -WidthT = JetWidthTool("JetWidth") -#--- - -from JetMomentTools.JetMomentToolsConf import LowEtConstituentsFracTool -ConstMomTool = LowEtConstituentsFracTool("LowEtConstituentsFrac") - -#set inputFileType -if rec.readAOD(): - jetFlags.inputFileType = 'AOD' - -# ---------------------------------- -# Rho variables needed for Area offset substraction -from EventShapeRec.EventEtDensityConfig import calculateSimpleEventDensity -calculateSimpleEventDensity(Radius=0.4, SignalState="UNCALIBRATED") -calculateSimpleEventDensity(Radius=0.4, SignalState="CALIBRATED") -calculateSimpleEventDensity(Radius=0.6, SignalState="UNCALIBRATED") -calculateSimpleEventDensity(Radius=0.6, SignalState="CALIBRATED") -# ---------------------------------- - -# ---------------------------------- -# import latest calibration tools -from ApplyJetCalibration.SetupAthenaCalibration import doApplyJES -# ---------------------------------- - -# ---------------------------------- -# Schedule jets grooming here, after rho variables. -from D3PDMakerConfig.CommonJSjets import createJSJets, getGroomingTools - -from D3PDMakerConfig.CommonGroomedJetsConfig import getGroomedJetsConfig -dictsConfig = getGroomedJetsConfig() - -groomedJetKeys = [] - -for dC in dictsConfig: - xx = createJSJets(dC[0], dC[1]) - groomedJetKeys += [xx] -# ---------------------------------- - -#Truth -if rec.doTruth() and CommonD3PDMakerFlags.doRecTruthJet(): - make_StandardJetGetter('AntiKt',0.4,'Truth', doEMCut=False, minPt=4*GeV, addJetQualityMoments=False, outputCollectionName='AntiKt4TruthNewJets') - #make_StandardJetGetter('AntiKt',0.6,'Truth', doEMCut=False, minPt=4*GeV, addJetQualityMoments=False, outputCollectionName='AntiKt6TruthNewJets') - make_StandardJetGetter('AntiKt',0.4,'Truth', doEMCut=False, minPt=4*GeV, addJetQualityMoments=False,includeMuons=False,useInteractingOnly=False, outputCollectionName='AntiKt4TruthWithNuJets') - #make_StandardJetGetter('AntiKt',0.6,'Truth', doEMCut=False, minPt=4*GeV, addJetQualityMoments=False,includeMuons=False,useInteractingOnly=False, outputCollectionName='AntiKt6TruthWithNuJets') - make_StandardJetGetter('AntiKt',0.4,'Truth', doEMCut=False, minPt=4*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=False, outputCollectionName='AntiKt4TruthWithMuNuJets') - #make_StandardJetGetter('AntiKt',0.6,'Truth', doEMCut=False, minPt=4*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=False, outputCollectionName='AntiKt6TruthWithMuNuJets') - make_StandardJetGetter('AntiKt',0.4,'Truth', doEMCut=False, minPt=4*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=True, outputCollectionName='AntiKt4TruthWithMuJets') - #make_StandardJetGetter('AntiKt',0.6,'Truth', doEMCut=False, minPt=4*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=True, outputCollectionName='AntiKt6TruthWithMuJets') - - make_StandardJetGetter('AntiKt',0.5,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False, outputCollectionName='AntiKt5TruthNewJets') - #make_StandardJetGetter('AntiKt',0.7,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False, outputCollectionName='AntiKt7TruthNewJets') - make_StandardJetGetter('AntiKt',0.5,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=False,useInteractingOnly=False, outputCollectionName='AntiKt5TruthWithNuJets') - #make_StandardJetGetter('AntiKt',0.7,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=False,useInteractingOnly=False, outputCollectionName='AntiKt7TruthWithNuJets') - make_StandardJetGetter('AntiKt',0.5,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=False, outputCollectionName='AntiKt5TruthWithMuNuJets') - #make_StandardJetGetter('AntiKt',0.7,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=False, outputCollectionName='AntiKt7TruthWithMuNuJets') - make_StandardJetGetter('AntiKt',0.5,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=True, outputCollectionName='AntiKt5TruthWithMuJets') - #make_StandardJetGetter('AntiKt',0.7,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=True, outputCollectionName='AntiKt7TruthWithMuJets') - - - make_StandardJetGetter('AntiKt',0.2,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False, outputCollectionName='AntiKt2TruthNewJets') - make_StandardJetGetter('AntiKt',0.3,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False, outputCollectionName='AntiKt3TruthNewJets') - make_StandardJetGetter('AntiKt',0.2,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=False,useInteractingOnly=False, outputCollectionName='AntiKt2TruthWithNuJets') - make_StandardJetGetter('AntiKt',0.3,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=False,useInteractingOnly=False, outputCollectionName='AntiKt3TruthWithNuJets') - make_StandardJetGetter('AntiKt',0.2,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=False, outputCollectionName='AntiKt2TruthWithMuNuJets') - make_StandardJetGetter('AntiKt',0.3,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=False, outputCollectionName='AntiKt3TruthWithMuNuJets') - make_StandardJetGetter('AntiKt',0.2,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=True, outputCollectionName='AntiKt2TruthWithMuJets') - make_StandardJetGetter('AntiKt',0.3,'Truth', doEMCut=False, minPt=10*GeV, addJetQualityMoments=False,includeMuons=True,useInteractingOnly=True, outputCollectionName='AntiKt3TruthWithMuJets') - - # truth WZ jets - from TruthD3PDMaker.TruthJetFilterConfig import TruthJetFilterConfig - TruthJetFilterConfig (topSequence, writePartons = False, writeHadrons = True, excludeWZdecays = True, photonCone=0.1) - from ParticleBuilderOptions.AODFlags import AODFlags - AODFlags.MissingEtTruth = True - AODFlags.TruthParticleJet = True - AODFlags.McEventKey="GEN_EVENT" - antikt4truthAlgWZ = make_StandardJetGetter('AntiKt',0.4,'Truth',disable=False, - inputCollectionNames=['FilteredD3PDTruth'], - outputCollectionName='AntiKt4TruthJets_WZ', - useInteractingOnly=False, - includeMuons=True - ).jetAlgorithmHandle() - - -#Truth pile-up jets -if rec.doTruth() and CommonD3PDMakerFlags.doTruthPileupJet(): - pass - - -if CommonD3PDMakerFlags.doRecJet(): - #TrackJets - if CommonD3PDMakerFlags.doTrackJet(): - include("D3PDMakerConfig/CommonJetTrackZClusterTool_jobOptions.py") - - if CommonD3PDMakerFlags.doTopoEMJet(): - #TopoJets (EM+JES) - make_StandardJetGetter('AntiKt',0.4,'Topo', doEMCut=False, minPt=4*GeV, doCalib=True, calibName='EM:ApplyAreaOffsetJES', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt4TopoEMNewJets') - #make_StandardJetGetter('AntiKt',0.6,'Topo', doEMCut=False, minPt=4*GeV, doCalib=True, calibName='EM:ApplyAreaOffset', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt6TopoEMNewJets') - - if CommonD3PDMakerFlags.doTopoEMLowPtJet(): # low pT jets, currently off - make_StandardJetGetter('AntiKt',0.4,'Topo', doEMCut=False, minPt=4*GeV, maxPt=10*GeV, doCalib=True, calibName='EM:OFFSET_ORIGIN_ETAJES', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt4TopoEMLowPtJets') - #make_StandardJetGetter('AntiKt',0.6,'Topo', doEMCut=False, minPt=4*GeV, maxPt=10*GeV, doCalib=True, calibName='EM:OFFSET_ORIGIN_ETAJES', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt6TopoEMLowPtJets') - - if not rec.readAOD(): - if CommonD3PDMakerFlags.doTowerEMJet(): # not default - #TopoTowerJets (EM+JES) - make_StandardJetGetter('AntiKt',0.4,'TopoTower', doEMCut=False, minPt=4*GeV, doCalib=False, addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt4TowerEMNewJets') - #make_StandardJetGetter('AntiKt',0.6,'TopoTower', doEMCut=False, minPt=4*GeV, doCalib=False, addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt6TowerEMNewJets') - - if CommonD3PDMakerFlags.doGhostJet(): # not default - #GhostJets - make_StandardJetGetter('AntiKt',0.4, 'Tower', doEMCut=False, doCalib=False, outputCollectionName='AntiKt4GhostTowerNewJets', addJetQualityMoments=True, replaceNegEnergy=True) - #make_StandardJetGetter('AntiKt',0.6, 'Tower', doEMCut=False, doCalib=False, outputCollectionName='AntiKt6GhostTowerNewJets', addJetQualityMoments=True, replaceNegEnergy=True) - - if CommonD3PDMakerFlags.doLCTopoLowPtJet(): - make_StandardJetGetter('AntiKt',0.4,'LCTopo', doEMCut=False, minPt=4*GeV, maxPt=10*GeV, doCalib=True, calibName='LC:ApplyAreaOffset', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt4LCTopoLowPtJets') - #make_StandardJetGetter('AntiKt',0.6,'LCTopo', doEMCut=False, minPt=4*GeV, maxPt=10*GeV, doCalib=True, calibName='LC:ApplyAreaOffset', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt6LCTopoLowPtJets') - - if CommonD3PDMakerFlags.doLCTopoJet(): - make_StandardJetGetter('AntiKt',0.2,'LCTopo', doEMCut=False, minPt=10*GeV, doCalib=True, calibName='LC:ApplyAreaOffset', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt2LCTopoNewJets') - make_StandardJetGetter('AntiKt',0.3,'LCTopo', doEMCut=False, minPt=10*GeV, doCalib=True, calibName='LC:ApplyAreaOffset', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt3LCTopoNewJets') - make_StandardJetGetter('AntiKt',0.4,'LCTopo', doEMCut=False, minPt=4*GeV, doCalib=True, calibName='LC:ApplyAreaOffsetJES', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt4LCTopoNewJets') - make_StandardJetGetter('AntiKt',0.5,'LCTopo', doEMCut=False, minPt=10*GeV, doCalib=True, calibName='LC:ApplyAreaOffset', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt5LCTopoNewJets') - #make_StandardJetGetter('AntiKt',0.6,'LCTopo', doEMCut=False, minPt=6*GeV, doCalib=True, calibName='LC:ApplyAreaOffset', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt6LCTopoNewJets') - #make_StandardJetGetter('AntiKt',0.7,'LCTopo', doEMCut=False, minPt=10*GeV, doCalib=True, calibName='LC:ApplyAreaOffset', addJetQualityMoments=True, writeMoments=True, outputCollectionName='AntiKt7LCTopoNewJets') - - if CommonD3PDMakerFlags.doLCTopoCBJet(): # not default - make_StandardJetGetter('AntiKt', 0.4, 'LCTopo',precalibTools=[ConstMomTool],doEMCut=False,minPt=4*GeV,doCalib=True,calibName="LC:CONST",addJetQualityMoments=True, writeMoments=True,outputCollectionName='AntiKt4LCTopoCBJets') - #make_StandardJetGetter('AntiKt', 0.6, 'LCTopo',precalibTools=[ConstMomTool],doEMCut=False,minPt=4*GeV,doCalib=True,calibName="LC:CONST",addJetQualityMoments=True, writeMoments=True,outputCollectionName='AntiKt6LCTopoCBJets') - - - -from QCDTemplateTool.QCDTemplateToolConf import JetElectronSelector -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() -topSequence += JetElectronSelector( "JetElectronSelectorInstance90" ) -topSequence.JetElectronSelectorInstance90.OutputLevel=5 #otherwise we get INFO: Execute() each for each event -topSequence.JetElectronSelectorInstance90.InputJetContainer="AntiKt4TopoEMNewJets" -topSequence.JetElectronSelectorInstance90.OutputJetElectronContainer="JetElectronContainer90" -topSequence.JetElectronSelectorInstance90.OutputJetMETContainer="JetMETContainer90" -topSequence.JetElectronSelectorInstance90.OutputJetContainer="JetMinusJetElectronContainer90" -topSequence.JetElectronSelectorInstance90.ExcludeCrackRegion=True -topSequence.JetElectronSelectorInstance90.CalibrationFactor=0.90 - - -#copy cell based moments - - -from JetMomentTools.JetCopyMomentsAlg import JetCopyMomentsAlg -topSequence+= JetCopyMomentsAlg('AntiKt4TopoEMJetsCoypMomAlg', JetCollectionSrc = 'AntiKt4TopoEMJets',JetCollectionDest = 'AntiKt4TopoEMNewJets', - Moments= [ 'BCH_CORR_CELL', 'BCH_CORR_JET', 'BCH_CORR_DOTX', - 'LArQuality','HECQuality', - 'isBadLooseMinus','isBadLoose','isBadMedium','isBadTight', - #'GSCFactorF','WidthFraction', - 'N_BAD_CELLS', 'ENG_BAD_CELLS', 'n90', 'NumTowers', 'ootFracCells5', 'ootFracCells10']) -#topSequence+= JetCopyMomentsAlg('AntiKt6TopoEMJetsCoypMomAlg', JetCollectionSrc = 'AntiKt6TopoEMJets',JetCollectionDest = 'AntiKt6TopoEMNewJets', -# Moments= [ 'BCH_CORR_CELL', 'BCH_CORR_JET', 'BCH_CORR_DOTX', -# 'LArQuality','HECQuality', -# 'isBadLooseMinus','isBadLoose','isBadMedium','isBadTight', -# #'GSCFactorF','WidthFraction', -# 'N_BAD_CELLS', 'ENG_BAD_CELLS', 'n90', 'NumTowers', 'ootFracCells5', 'ootFracCells10']) -topSequence+= JetCopyMomentsAlg('AntiKt4LCTopoJetsCoypMomAlg', JetCollectionSrc = 'AntiKt4LCTopoJets',JetCollectionDest = 'AntiKt4LCTopoNewJets', - Moments= [ 'BCH_CORR_CELL', 'BCH_CORR_JET', 'BCH_CORR_DOTX', - 'LArQuality','HECQuality', - 'isBadLooseMinus','isBadLoose','isBadMedium','isBadTight', - 'N_BAD_CELLS', 'ENG_BAD_CELLS', 'n90', 'NumTowers', 'ootFracCells5', 'ootFracCells10']) -#topSequence+= JetCopyMomentsAlg('AntiKt6LCTopoJetsCoypMomAlg',JetCollectionSrc = 'AntiKt6LCTopoJets',JetCollectionDest = 'AntiKt6LCTopoNewJets', -# Moments= [ 'BCH_CORR_CELL', 'BCH_CORR_JET', 'BCH_CORR_DOTX', -# 'LArQuality','HECQuality', -# 'isBadLooseMinus','isBadLoose','isBadMedium','isBadTight', -# 'N_BAD_CELLS', 'ENG_BAD_CELLS', 'n90', 'NumTowers', 'ootFracCells5', 'ootFracCells10']) -topSequence+= JetCopyMomentsAlg('AntiKt5LCTopoJetsCoypMomAlg',JetCollectionSrc = 'AntiKt4LCTopoJets',JetCollectionDest = 'AntiKt5LCTopoNewJets', - Moments= [ 'BCH_CORR_CELL', 'BCH_CORR_JET', 'BCH_CORR_DOTX', - 'LArQuality','HECQuality', - 'isBadLooseMinus','isBadLoose','isBadMedium','isBadTight', - 'N_BAD_CELLS', 'ENG_BAD_CELLS', 'n90', 'NumTowers', 'ootFracCells5', 'ootFracCells10']) - - -#switch off in jet alg Btagging for selected jet collection. -# Btagging for these algs will be made by a dedicated alg with more taggers -def removeBTagger(alg): - del(alg.AlgTools['JetBTagger']) -removeBTagger(topSequence.AntiKt4TopoEMNewJets) -#removeBTagger(topSequence.AntiKt6TopoEMNewJets) -removeBTagger(topSequence.AntiKt4LCTopoNewJets) -#removeBTagger(topSequence.AntiKt6LCTopoNewJets) - -# add origin recalculator for largeR jets -from JetMomentTools.JetMomentsConfigHelpers import specialMoment -specialMoment("AntiKt10LCTopoJets", ["origin"]) -specialMoment("CamKt12LCTopoJets", ["origin"]) - -try: - include( "MissingET/MissingET_jobOptions.py" ) -except Exception: - treatException("Could not set up MissingET. Switched off. makeCommonD3PD.jets !") - recAlgs.doMissingET=False - - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/test/D3PDMakerConfig_TestConfiguration.xml b/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/test/D3PDMakerConfig_TestConfiguration.xml deleted file mode 100644 index 4aea9c43e87a11ca24622ba316ca03105178f29a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerConfig/test/D3PDMakerConfig_TestConfiguration.xml +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> - -<unifiedTestConfiguration> - - <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt"> - - <rttContactPerson>Lei Zhou</rttContactPerson> - <mailto>leizhou@nevis.columbia.edu</mailto> - - <jobList> - <classification> - <displayClass>OfflineValidation</displayClass> - <displayProcess>Reco</displayProcess> - <displayComponent>Athena-Core</displayComponent> - </classification> - -<jobTransform userJobId="COMMON-Egamma-AOD-DCube-test"> - <doc>COMMON-Egamma-AOD-DCube-test</doc> - <jobTransformJobName>COMMON-Egamma-AOD-DCube-test</jobTransformJobName> - <jobTransformCmd> - Reco_trf.py preExec="from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.CalibrationTag='BTagCalibALL-07-05';from RecExConfig.RecAlgsFlags import recAlgs;recAlgs.doMissingET.set_Value_and_Lock(False)" inputAODFile=root://eosatlas.cern.ch//eos/atlas/user/g/gbrooijm/dpd-rtt/data12_8TeV.00206299.physics_Egamma.merge.AOD.f450_m1170._lb0069._0001.1 autoConfiguration=everything maxEvents=50 --ignoreerrors=False outputNTUP_COMMONFile=NTUP_COMMON.root - </jobTransformCmd> - <group>DPDvalid</group> - <queue>medium</queue> - - <test position="1"> - <modulename>RttLibraryTools</modulename> - <testname>DCubeRunner</testname> - <arg> - <argname>DCubeCfg</argname> - <argvalue>CONFIGNAME.Egamma.xml</argvalue> - </arg> - <arg> - <argname>DCubeRef</argname> - <argvalue>NTUP_COMMON.Egamma.reference.root</argvalue> - </arg> - <arg> - <argname>DCubeMon</argname> - <argvalue>COMMON-Egamma-DCube-check.root</argvalue> - </arg> - </test> - -</jobTransform> - -</jobList> - -</rtt> - -</unifiedTestConfiguration> diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerReader/share/CodeGenerator_jobOptions.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerReader/share/CodeGenerator_jobOptions.py index 6458e4ddd4a2370765ce00198be71c0f9f388ba7..8b3aa04e62a9c4a4afab0aef63716e7b4fa387c3 100644 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerReader/share/CodeGenerator_jobOptions.py +++ b/PhysicsAnalysis/D3PDMaker/D3PDMakerReader/share/CodeGenerator_jobOptions.py @@ -1,4 +1,3 @@ -# $Id: CodeGenerator_jobOptions.py 348546 2011-03-01 15:09:56Z krasznaa $ # # Define an input file. To know which variables the D3PDObject-s would've @@ -53,9 +52,6 @@ d3pdalg = D3PDMakerReader.MultiReaderAlg( "ReaderAlg", Directory = "../test", from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject d3pdalg += EventInfoD3PDObject( 10 ) -from TrigMuonD3PDMaker.TrigMuonD3PD import TrigMuonD3PDObjects -TrigMuonD3PDObjects( d3pdalg, addNaviInfo = False ) - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags D3PDMakerFlags.DoTrigger = False diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-15_jo.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-15_jo.py deleted file mode 100644 index 802efb62a867fa3100a7afeb098b19f677f4848f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-15_jo.py +++ /dev/null @@ -1,8 +0,0 @@ -# Test reading a v15 file. - -infile = 'aod/AOD-15.6.4/AOD-15.6.4-full.pool.root' -reffile = 'egamma-aod-d3pd-15.ref' -tupleFileOutput = 'egamma-15.root' -jo = 'D3PDMakerConfig/AODToEgammaD3PD.py' -include ('D3PDMakerTest/run-d3pd-test.py') - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-16_0_jo.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-16_0_jo.py deleted file mode 100644 index b58e7943ce7f2d42b5682b4210a69cdc182edf3c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-16_0_jo.py +++ /dev/null @@ -1,13 +0,0 @@ -# Test reading a v16.0 file. - -infile = 'aod/AOD-16.0.2.3/AOD-16.0.2.3-full.pool.root' -reffile = 'egamma-aod-d3pd-16_0.ref' -tupleFileOutput = 'egamma-16_0.root' -jo = 'D3PDMakerConfig/AODToEgammaD3PD.py' - -# Force AODFix off, to get repeatible results across releases. -from RecExConfig.RecFlags import rec -rec.doApplyAODFix.set_Value_and_Lock(False) - -include ('D3PDMakerTest/run-d3pd-test.py') - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-16_6_jo.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-16_6_jo.py deleted file mode 100644 index a3b28957f17e4d7fb224b3216a9e800f6c3c19bc..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-16_6_jo.py +++ /dev/null @@ -1,13 +0,0 @@ -# Test reading a v16.6 file. - -infile = 'aod/AOD-16.6.2.1/AOD-16.6.2.1-full.pool.root' -reffile = 'egamma-aod-d3pd-16_6.ref' -tupleFileOutput = 'egamma-16_6.root' -jo = 'D3PDMakerConfig/AODToEgammaD3PD.py' - -# Force AODFix off, to get repeatible results across releases. -from RecExConfig.RecFlags import rec -rec.doApplyAODFix.set_Value_and_Lock(False) - -include ('D3PDMakerTest/run-d3pd-test.py') - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-17_0_jo.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-17_0_jo.py deleted file mode 100644 index c2059c9d58cea6dcc8ac2ee070cff8eb674096f0..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD-17_0_jo.py +++ /dev/null @@ -1,27 +0,0 @@ -# Test reading a v17.0 file. - -import os -testdata = os.environ.get ('D3PDTESTDATA', - '/afs/cern.ch/atlas/maxidisk/d33/referencefiles') - -# Testing changing trigger menu. -infile1 = 'aod/AOD-17.0.2/AOD-17.0.2-munged.pool.root' -#infile1 = os.path.join (testdata, infile1) -#infile1a = 'AOD-17.0.2-munged.pool.root' -infile2 = 'aod/AOD-17.0.4/AOD-17.0.4-full.pool.root' - -#os.system ('python -m D3PDMakerTest.changerun 123456 %s %s' % -# (infile1, infile1a)) - -infile = [infile1, infile2] - -reffile = 'egamma-aod-d3pd-17_0.ref' -tupleFileOutput = 'egamma-17_0.root' -jo = 'D3PDMakerConfig/AODToEgammaD3PD.py' - -# Force AODFix off, to get repeatible results across releases. -from RecExConfig.RecFlags import rec -rec.doApplyAODFix.set_Value_and_Lock(False) - -include ('D3PDMakerTest/run-d3pd-test.py') - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD_jo.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD_jo.py deleted file mode 100644 index c52aaa1a1c0515fcc321b325951daf366e6d83dc..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestEgammaAOD_jo.py +++ /dev/null @@ -1,184 +0,0 @@ -infile = 'aod/AOD-17.2.0.2/AOD-17.2.0.2-full.pool.root' -reffile = 'egamma-aod-d3pd.ref' -jo = 'D3PDMakerConfig/AODToEgammaD3PD.py' - -from RecExConfig.RecFlags import rec -import RecExConfig.RecAlgsFlags - - -# Force AODFix off, to get repeatible results across releases. -from RecExConfig.RecFlags import rec -rec.doApplyAODFix.set_Value_and_Lock(False) - -#from AthenaCommon.JobProperties import jobproperties -#jobproperties.Global.DetDescrVersion = 'ATLAS-GEO-16-00-00' -##import AtlasGeoModel.GeoModelInit -#import AtlasGeoModel.SetGeometryVersion -from AthenaCommon.GlobalFlags import globalflags -globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-18-00-00') - -include ('D3PDMakerTest/run-d3pd-test.py') - -svcMgr.GeoModelSvc.IgnoreTagDifference = True - -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -alg = MSMgr.GetStream('StreamNTUP_EGAMMA') - -# Test adding another electron with a different container type. -from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject -#alg += ElectronD3PDObject (10, -# sgkey = 'HLT_egamma', -# typeName = 'egammaContainer', -# exclude = ['EFInfo', 'L2Info', 'L1Info', -# 'EFIndex', 'L2Index', 'L1Index'], -# prefix = 'ef_el_') - -# Try doing some filtering... -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from D3PDMakerCoreComps.resolveSGKey import resolveSGKey -from AthenaCommon.AlgSequence import AlgSequence -from D3PDMakerCoreComps.D3PDObject import D3PDObject -import EventCommonD3PDMaker -import D3PDMakerCoreComps -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) -from AnalysisUtils.AnalysisUtilsConf import IParticleSelector -#preseq += IParticleSelector \ -# ('elesel', -# PtMin = 15*GeV, -# InputKey = resolveSGKey ('ElectronContainer', -# D3PDMakerFlags.ElectronSGKey()), -# OutSelectedParticlesKey = 'elesel', -# OutParticleLinksKey = 'elelinks') -#alg += ElectronD3PDObject (10, -# sgkey = D3PDMakerFlags.ElectronSGKey(), -# getterFilter = 'elesel', -# prefix = 'elfilt_') - -#def make_Ele2D3PDObject (name, prefix, object_name): -# getter = EventCommonD3PDMaker.IParticleLinksCollectionGetterTool \ -# (SGKey = 'elelinks') -# return D3PDMakerCoreComps.VectorFillerTool (name, -# Prefix = prefix, -# Getter = getter) -#Ele2D3PDObject = D3PDObject (make_Ele2D3PDObject, 'elfilt2_') -#Ele2D3PDObject.defineBlock (0, 'Kinematics', -# EventCommonD3PDMaker.FourMomFillerTool) -#alg += Ele2D3PDObject (10) - -# Test egtruth -from egammaD3PDMaker.egammaTruthD3PDObject import egammaTruthD3PDObject -alg += egammaTruthD3PDObject (10) - -# Test CorrectionCluster -from egammaD3PDMaker.CorrectionClusterD3PDObject import CorrectionClusterD3PDObject -alg += CorrectionClusterD3PDObject(10, prefix='cocl_') - -# Test filtering. -import AthenaPython.PyAthena as PyAthena -from AthenaPython.PyAthena import StatusCode -class MyFilter (PyAthena.Alg): - def __init__ (self, name = 'myfilter', exclude=1, **kw): - super (MyFilter, self).__init__ (name = name, **kw) - self.count = 0 - self.exclude = exclude - return - def execute (self): - self.setFilterPassed ( self.count != self.exclude ) - self.count += 1 - return StatusCode.Success - -# Adding a filter the old way. -alg.filterSeq += MyFilter ('myfilter1', exclude=1) - -# Adding a filter the new way. -topSequence += MyFilter('myfilter2', exclude=5) -alg.AddRequireAlgs (MyFilter('myfilter2').getName()) - - -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -#preseq += D2PDElectronSelector \ -# ('elesel2', -# ptMin = 15*GeV, -# inputCollection = resolveSGKey ('ElectronContainer', -# D3PDMakerFlags.ElectronSGKey()), -# outputCollection = 'elesel2', -# outputLinkCollection = 'elelink2') -#alg += ElectronD3PDObject (0, -# sgkey = 'elelink2', -# #typeName = 'INav4MomLinkContainer', -# getterClass = -# EventCommonD3PDMaker.INav4MomLinkContainerGetterTool, -# prefix = 'elfilt3_') -#alg += ElectronD3PDObject (0, -# prefix = 'elfilt4_', -# SelectionFlags_FlagNames = ['selected@INav4MomLinkContainer/elelink2:Test selection'], -# ) - - -# Test composite particles... -#from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -#preseq += D2PDParticleCombiner\ -# ('emucombiner', -# outputCollection = 'emuCombined', -# inputCollection1 = 'ElectronAODCollection', -# inputCollection2 = 'StacoMuonCollection') - -# from D3PDMakerCoreComps.D3PDObject import make_SGDataVector_D3PDObject -# from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation -# import EventCommonD3PDMaker -# MyCompositeD3PDObject = \ -# make_SGDataVector_D3PDObject ('CompositeParticleContainer', -# 'emuCombined', -# 'emu_') -# MyCompositeD3PDObject.defineBlock (0, 'Kinematics', -# EventCommonD3PDMaker.FourMomFillerTool) -# IndexMultiAssociation (MyCompositeD3PDObject, -# EventCommonD3PDMaker.CompositeParticleAssociationTool, -# ['el_', 'mu_'], -# containerIndexName = 'cont', -# nrowName = '') - -# alg += MyCompositeD3PDObject (10) - - - - -# Test non-existent egamma. -alg += ElectronD3PDObject (0, - sgkey = 'xxx', - prefix = 'el_xxx_', - allowMissing = True) - -from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject -alg += PhotonD3PDObject (0, - sgkey = 'xxx', - prefix = 'ph_xxx_', - allowMissing = True) - -from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject -alg += MuonD3PDObject (0, - sgkey = 'xxx', - prefix = 'mu_xxx_', - allowMissing = True) - -from JetD3PDMaker.JetD3PDObject import JetD3PDObject -alg += JetD3PDObject (0, - sgkey = 'xxx', - prefix = 'jet_xxx_', - allowMissing = True) - -from egammaD3PDMaker.GSFElectronD3PDObject import GSFElectronD3PDObject -alg += GSFElectronD3PDObject (0, - sgkey = 'xxx', - prefix = 'el_gxx_', - allowMissing = True) - -# Test fix in D3PDMakerCoreComps-00-01-79 that was leading to crosstalk -# between TriggerBitFiller objects from different trees. -from D3PDMakerCoreComps.MakerAlg import MakerAlg -from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject -trigtest_alg = MakerAlg ('trigtest', file = tupleFileOutput) -trigtest_alg += EventInfoD3PDObject (0) -trigtest_alg += ElectronD3PDObject (0, - exclude=['D3PD__GenParticleTruthParticleAssociationTool']) - diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestPhysicsESD_jo.py b/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestPhysicsESD_jo.py deleted file mode 100644 index c47f7b420b11fac4405b70ec25c46c4535736ba2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerTest/share/D3PDTestPhysicsESD_jo.py +++ /dev/null @@ -1,86 +0,0 @@ -infile = 'esd/ESD-17.2.0.2.pool.root' -reffile = 'physics-esd-d3pd.ref' -jo = 'D3PDMakerConfig/ESDToPhysicsD3PD.py' - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -D3PDMakerFlags.FilterCollCand = True - -physicsD3PD_args = { - 'AK4TowerJet_JetVertexFraction_FillFullJVF' : True, - 'AK6TowerJet_JetVertexFraction_FromUD' : True, - } - - -# Force AODFix off, to get repeatible results across releases. -from RecExConfig.RecFlags import rec -rec.doApplyAODFix.set_Value_and_Lock(False) - -# Needed for calo d3pd. -block_override = [ - '/LAR/BadChannels/BadChannels', - '/LAR/BadChannels/MissingFEBs', - '/LAR/Identifier/FebRodAtlas', - '/LAR/Identifier/OnOffIdAtlas', - ] - -include ('D3PDMakerTest/run-d3pd-test.py') - - -# Make a track d3pd tree too! -from InDetD3PDMaker.TrackD3PD import TrackD3PD -alg = TrackD3PD (tupleFileOutput, - Track_trackParametersAtGlobalPerigeeLevelOfDetails = 3, - Track_storeDiagonalCovarianceAsErrors = True, - PrimaryVertex_storeDiagonalCovarianceAsErrors = True) - -# And a calorimeter tree! -from CaloSysD3PDMaker.CaloD3PD import CaloD3PD -alg = CaloD3PD (file = tupleFileOutput) - -# Make supercells into a separate file, if available. -from LArL1Sim import LArL1SimConf -if hasattr (LArL1SimConf, 'LArSCSimpleMaker'): - from AthenaCommon.AlgSequence import AlgSequence - topSequence = AlgSequence() - topSequence += LArL1SimConf.LArSCSimpleMaker ('LArSCSimpleMaker', - CellContainer = 'AllCalo', - SCellContainer = 'SCells') - - from D3PDMakerCoreComps.MakerAlg import MakerAlg - from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject - from CaloD3PDMaker.CaloCellD3PDObject import AllCaloCellD3PDObject - from CaloD3PDMaker.CaloCellD3PDObject import SelCaloCellD3PDObject - scell_alg = MakerAlg ('scells', file = 'scells.root') - scell_alg += EventInfoD3PDObject (0) - scell_alg += AllCaloCellD3PDObject (2, sgkey = 'SCells', prefix = 'sc_', - include = ['RawPosition']) - - d3pd_tests += [('scells.root', 'scells.ref')] - - -# Test LeadingPtAssociationTool. -from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation -from D3PDMakerCoreComps.D3PDObject import make_SGDataVector_D3PDObject -import EventCommonD3PDMaker -TestJetD3PDObject = make_SGDataVector_D3PDObject ('JetCollection', - 'AntiKt4TopoEMJets,' + - 'AntiKt4TopoJets,' + - 'AntiKt4H1TopoJets', - 'testjet_', 'testjet') -TestJetD3PDObject.defineBlock (0, 'Kin', EventCommonD3PDMaker.FourMomFillerTool) -LeadingConstitAssoc = SimpleAssociation \ - (TestJetD3PDObject, - EventCommonD3PDMaker.LeadingPtAssociationTool, - level = 0, - prefix = 'lconstit_', - blockname = 'LeadingConstitAssoc', - MultiAssocTool = EventCommonD3PDMaker.NavigableConstituentAssociationTool - ('LeadingConstitMAssoc', TypeName = 'CaloCluster')) -LeadingConstitAssoc.defineBlock (0, 'LeadKin', - EventCommonD3PDMaker.FourMomFillerTool) - - -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -alg = MSMgr.GetStream('StreamNTUP_PHYSICS') -alg += TestJetD3PDObject(10) - diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/CMakeLists.txt b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/CMakeLists.txt deleted file mode 100644 index 23ac26b20f201dbbc43f80258869109c7b8dec4c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -################################################################################ -# Package: HiggsD3PDMaker -################################################################################ - -# Declare the package name: -atlas_subdir( HiggsD3PDMaker ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Control/AthenaKernel - GaudiKernel - PhysicsAnalysis/AnalysisCommon/ParticleEvent - PhysicsAnalysis/D3PDMaker/D3PDMakerUtils - PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event - Tracking/TrkEvent/VxVertex ) - -# Component(s) in the package: -atlas_add_component( HiggsD3PDMaker - src/*.cxx - src/components/*.cxx - LINK_LIBRARIES AthenaKernel GaudiKernel ParticleEvent D3PDMakerUtils HSG2Event VxVertex ) - -# Install files from the package: -atlas_install_python_modules( python/*.py ) - diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/python/HSG2QuadrupletD3PDObject.py b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/python/HSG2QuadrupletD3PDObject.py deleted file mode 100644 index 4f379a7dd061ba34d190045e18ba946e08fdf16b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/python/HSG2QuadrupletD3PDObject.py +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# $Id: HSG2QuadrupletD3PDObject.py 520030 2012-10-03 10:11:57Z krasznaa $ - -# D3PDMaker import(s): -from D3PDMakerCoreComps.D3PDObject import make_SGDataVector_D3PDObject -from D3PDMakerCoreComps.IndexAssociation import IndexAssociation -from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation -from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation -import HiggsD3PDMaker -import EventCommonD3PDMaker - -# Hook setting up the vertex reconstruction in the pre-sequence: -def __vertexReco( c, **kw ): - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - from AthenaCommon.AlgSequence import AlgSequence - from HSG2VertexCreation.HSG2VertexReconstruction import HSG2VertexReconstruction - HSG2VertexReconstruction( "HSG2VertexReconstruction", - AlgSequence( D3PDMakerFlags.PreD3PDAlgSeqName() ) ) - return - -# Create the D3PDObject: -HSG2QuadrupletD3PDObject = make_SGDataVector_D3PDObject( "QuadrupletContainer", - "QuadrupletCandidates", - "quad_", - "HSG2QuadrupletD3PDObject" ) - -# Define the vertex reconstruction hook: -HSG2QuadrupletD3PDObject.defineHook( __vertexReco ) - -# The basic information: -HSG2QuadrupletD3PDObject.defineBlock( 0, "BaseInfo", - HiggsD3PDMaker.QuadrupletFillerTool ) - -# Associate the reconstructed vertices: -VtxAssoc = IndexAssociation( HSG2QuadrupletD3PDObject, - HiggsD3PDMaker.QuadrupletVertexAssociationTool, - target = "quad_vertex_", - blockname = "VertexIndex", - prefix = "vtx_", - level = 1 ) - -# Associate the CombinedParticles: -CombAssoc = SimpleAssociation( HSG2QuadrupletD3PDObject, - HiggsD3PDMaker.QuadrupletCompositeParticleAssociationTool, - blockname = "CombPartMatch", - prefix = "cbpart_", - level = 1 ) - -# Save the 4-momentum of the combined particles: -CombAssoc.defineBlock( 1, "ComPart4Mom", - EventCommonD3PDMaker.FourMomFillerTool ) - -# Save the indices of all the electrons that took part in the combination: -ElAssoc = IndexMultiAssociation( CombAssoc, - EventCommonD3PDMaker.CompositeParticleAssociationTool, - target = "el_", - blockname = "ElectronIndex", - prefix = "el_", - level = 2 ) - -# Save the indices of all the MuID muons that took part in the combination: -MuidAssoc = IndexMultiAssociation( CombAssoc, - EventCommonD3PDMaker.CompositeParticleAssociationTool, - target = "mu_muid_", - blockname = "MuonMuidIndex", - prefix = "mu_muid_", - level = 2 ) - -# Save the indices of all the Staco muons that took part in the combination: -StacoAssoc = IndexMultiAssociation( CombAssoc, - EventCommonD3PDMaker.CompositeParticleAssociationTool, - target = "mu_staco_", - blockname = "MuonStacoIndex", - prefix = "mu_staco_", - level = 2 ) - -# Save the indices of all the Calo muons that took part in the combination: -CaloAssoc = IndexMultiAssociation( CombAssoc, - EventCommonD3PDMaker.CompositeParticleAssociationTool, - target = "mu_calo_", - blockname = "MuonCaloIndex", - prefix = "mu_calo_", - level = 2 ) - -# Save the indices of all the third chain muons that took part in the combination: -MuonAssoc = IndexMultiAssociation( CombAssoc, - EventCommonD3PDMaker.CompositeParticleAssociationTool, - target = "mu_muon_", - blockname = "MuonIndex", - prefix = "mu_muon_", - level = 2 ) diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/python/HSG2VertexReconstruction.py b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/python/HSG2VertexReconstruction.py deleted file mode 100644 index 0ee55ddb65e7869bb8f8207b63ef613b1c500307..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/python/HSG2VertexReconstruction.py +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration - -# $Id: HSG2VertexReconstruction.py 520030 2012-10-03 10:11:57Z krasznaa $ -# -# The function is this module adds all the information to a D3PD stream -# about the lepton quadruplets and vertices reconstructed while making -# the HSG2 D3PDs. -# - -## -# @short Function adding information about re-fitted 4-lepton vertices -# -# @param d3pdalg The D3PDMaker algorithm/stream to add the info to -# @param quadruplet_key The SG key of the reconstructed lepton quadruplets -# @param vertex_key The SG key of the re-fitted 4-lepton vertices -# @param electron_target Prefix of electrons taking part in the lepton combinations -# @param muid_target Prefix of the MuID muons taking part in the lepton combinations -# @param staco_target Prefix of the Staco muons taking part in the lepton combinations -# @param calo_target Prefix of the Calo muons taking part in the lepton combinations -def addHSG2VertexReconstruction( d3pdalg, - quadruplet_key = "QuadrupletCandidates", - vertex_key = "QuadrupletVertexCandidates", - electron_target = "el_", - muid_target = "mu_muid_", - staco_target = "mu_staco_", - calo_target = "mu_calo_", - muon_target = "mu_muon_" ): - - # Add information about the vertices separately: - from TrackD3PDMaker.xAODVertexD3PDObject import PrimaryxAODVertexD3PDObject - d3pdalg += PrimaryxAODVertexD3PDObject( 1, sgkey = vertex_key, - prefix = "quad_vertex_" ) - - # Add the information about the quadruplets: - from HiggsD3PDMaker.HSG2QuadrupletD3PDObject import HSG2QuadrupletD3PDObject - d3pdalg += HSG2QuadrupletD3PDObject( 10, sgkey = quadruplet_key, - prefix = "quad_", - VertexIndex_target = "quad_vertex_", - ElectronIndex_target = electron_target, - MuonMuidIndex_target = muid_target, - MuonStacoIndex_target = staco_target, - MuonCaloIndex_target = calo_target, - MuonIndex_target = muon_target ) - - return diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/python/__init__.py b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/python/__init__.py deleted file mode 100644 index 59ef0d52ee62d35b4964ab4ab06433ac2c484193..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/python/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# $Id: __init__.py 485019 2012-02-24 16:16:04Z krasznaa $ -# -# @file HiggsD3PDMaker/python/__init__.py -# @author scott snyder <snyder@bnl.gov> -# @date Sep, 2009 -# @brief Define shortcuts for referencing configurables in this package. -# -# With this, instead of writing -# -# HiggsD3PDMaker.HiggsD3PDMakerConf.D3PD__QuadrupletFillerTool -# -# we can write -# -# HiggsD3PDMaker.QuadrupletFillerTool -# - -import HiggsD3PDMakerConf -for k, v in HiggsD3PDMakerConf.__dict__.items(): - if k.startswith ('D3PD__'): - globals()[k[6:]] = v diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletCompositeParticleAssociationTool.cxx b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletCompositeParticleAssociationTool.cxx deleted file mode 100644 index 876c00852dd99cb15f64bb3bc9ddaacee0c93520..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletCompositeParticleAssociationTool.cxx +++ /dev/null @@ -1,24 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: QuadrupletCompositeParticleAssociationTool.cxx 485019 2012-02-24 16:16:04Z krasznaa $ - -// Local include(s): -#include "QuadrupletCompositeParticleAssociationTool.h" - -namespace D3PD { - - QuadrupletCompositeParticleAssociationTool::QuadrupletCompositeParticleAssociationTool( const std::string& type, - const std::string& name, - const IInterface* parent ) - : SingleAssociationTool< HSG2::Quadruplet, CompositeParticle >( type, name, parent ) { - - } - - const CompositeParticle* QuadrupletCompositeParticleAssociationTool::get( const HSG2::Quadruplet& q ) { - - return *( q.particle() ); - } - -} // namespace D3PD diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletCompositeParticleAssociationTool.h b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletCompositeParticleAssociationTool.h deleted file mode 100644 index b3c7581e31fa2224b80464a3741094e2ae9fc272..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletCompositeParticleAssociationTool.h +++ /dev/null @@ -1,45 +0,0 @@ -// Dear emacs, this is -*- c++ -*- - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: QuadrupletCompositeParticleAssociationTool.h 485019 2012-02-24 16:16:04Z krasznaa $ -#ifndef HIGGSD3PDMAKER_QuadrupletCompositeParticleAssociationTool_H -#define HIGGSD3PDMAKER_QuadrupletCompositeParticleAssociationTool_H - -// EDM include(s): -#include "HSG2Event/Quadruplet.h" -#include "ParticleEvent/CompositeParticle.h" - -// D3PD include(s): -#include "D3PDMakerUtils/SingleAssociationTool.h" - -namespace D3PD { - - /** - * @short Tool "associating" Quadruplet objects to a VxCandiadte - * - * - * @author Kirill.Prokofiev@cern.ch - * - * $Revision: 485019 $ - * $Date: 2012-02-24 17:16:04 +0100 (Fri, 24 Feb 2012) $ - */ - class QuadrupletCompositeParticleAssociationTool : - public SingleAssociationTool< HSG2::Quadruplet, CompositeParticle > { - - public: - /// Regular AlgTool constructor - QuadrupletCompositeParticleAssociationTool( const std::string& type, - const std::string& name, - const IInterface* parent ); - - /// Function performing the association - virtual const CompositeParticle* get( const HSG2::Quadruplet& q ); - - }; // class QuadrupletCompositeParticleAssociationTool - -} // namespace D3PD - -#endif // HIGGSD3PDMAKER_QuadrupletCompositeParticleAssociationTool_H diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletFillerTool.cxx b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletFillerTool.cxx deleted file mode 100644 index 91f7fed5af69b86e7bc3208f377ffe5172396c60..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletFillerTool.cxx +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: QuadrupletFillerTool.cxx 500852 2012-05-15 15:01:24Z ssnyder $ - -// Athena/Gaudi include(s): -#include "AthenaKernel/errorcheck.h" - -// Local include(s): -#include "QuadrupletFillerTool.h" - -namespace D3PD { - - QuadrupletFillerTool::QuadrupletFillerTool( const std::string& type, - const std::string& name, - const IInterface* parent ) - : BlockFillerTool< HSG2::Quadruplet >( type, name, parent ) - { - book().ignore(); // Avoid coverity warnings. - } - - StatusCode QuadrupletFillerTool::book() { - - CHECK( addVariable( "finalState", m_fs, "Final state type (0: 4 muon; " - "1: 4 electron; 2: 2e2mu)" ) ); - - return StatusCode::SUCCESS; - } - - StatusCode QuadrupletFillerTool::fill( const HSG2::Quadruplet& q ) { - - *m_fs = static_cast< unsigned int >( q.finalState() ); - - return StatusCode::SUCCESS; - } - -} // namespace D3PD diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletFillerTool.h b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletFillerTool.h deleted file mode 100644 index 9af466bf6080b8eb227e261cd739d316d7bad1f3..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletFillerTool.h +++ /dev/null @@ -1,57 +0,0 @@ -// This file's extension implies that it's C, but it's really -*- C++ -*-. - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: QuadrupletFillerTool.h 485019 2012-02-24 16:16:04Z krasznaa $ -/** - * @file HiggsD3PDMaker/src/HiggsQuadrupletFillerTool.h - * @author Kirill Prokofiev <Kirill.Prokofiev@cern.ch> - * @author Attila Krasznahorkay <Attila.Krasznahorkay@cern.ch> - * @date Aug, 2009 - * @brief Block filler tool for a four-momentum. - */ -#ifndef HIGGSD3PDMAKER_QuadrupletFillerTool_H -#define HIGGSD3PDMAKER_QuadrupletFillerTool_H - -// EDM include(s): -#include "HSG2Event/Quadruplet.h" - -// D3PDMaker include(s): -#include "D3PDMakerUtils/BlockFillerTool.h" - -namespace D3PD { - - /** - * @brief Block filler for the Higgs quadruplet - * - * Block filler tool for the information stored directly in - * HSG2::Quadruplet objects. - * - * @author Kirill Prokofiev <Kirll.Prokofiev@cern.ch> - * @author Attila Krasznahorkay <Attila.Krasznahorkay@cern.ch> - * - * $Revision: 485019 $ - * $Date: 2012-02-24 17:16:04 +0100 (Fri, 24 Feb 2012) $ - */ - class QuadrupletFillerTool : public BlockFillerTool< HSG2::Quadruplet > { - - public: - /// Standard Gaudi tool constructor - QuadrupletFillerTool( const std::string& type, const std::string& name, - const IInterface* parent ); - - /// Book variables for this block. - virtual StatusCode book(); - /// Fill the variables of this block - virtual StatusCode fill( const HSG2::Quadruplet& q ); - - private: - unsigned int* m_fs; ///< Quadruplet final state type - - }; // class QuadrupletFillerTool - -} // namespace D3PD - -#endif // HIGGSD3PDMAKER_QuadrupletFillerTool_H diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletVertexAssociationTool.cxx b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletVertexAssociationTool.cxx deleted file mode 100644 index e807fe133c30c56a3c8160aa76e83bf78e85eb00..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletVertexAssociationTool.cxx +++ /dev/null @@ -1,24 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: QuadrupletVertexAssociationTool.cxx 485019 2012-02-24 16:16:04Z krasznaa $ - -// Local include(s): -#include "QuadrupletVertexAssociationTool.h" - -namespace D3PD { - - QuadrupletVertexAssociationTool::QuadrupletVertexAssociationTool( const std::string& type, - const std::string& name, - const IInterface* parent ) - : SingleAssociationTool< HSG2::Quadruplet, Trk::VxCandidate >( type, name, parent ) { - - } - - const Trk::VxCandidate* QuadrupletVertexAssociationTool::get( const HSG2::Quadruplet& q ) { - - return *( q.vertex() ); - } - -} // namespace D3PD diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletVertexAssociationTool.h b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletVertexAssociationTool.h deleted file mode 100644 index 8de48c06cd5218443af3ed3c8463caa6c310a67b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/QuadrupletVertexAssociationTool.h +++ /dev/null @@ -1,45 +0,0 @@ -// Dear emacs, this is -*- c++ -*- - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: QuadrupletVertexAssociationTool.h 485019 2012-02-24 16:16:04Z krasznaa $ -#ifndef HIGGSD3PDMAKER_QuadrupletVertexAssociationTool_H -#define HIGGSD3PDMAKER_QuadrupletVertexAssociationTool_H - -// EDM include(s): -#include "HSG2Event/Quadruplet.h" -#include "VxVertex/VxCandidate.h" - -// D3PD include(s): -#include "D3PDMakerUtils/SingleAssociationTool.h" - -namespace D3PD { - - /** - * @short Tool "associating" Quadruplet objects to a VxCandiadte - * - * - * @author Kirill.Prokofiev@cern.ch - * - * $Revision: 485019 $ - * $Date: 2012-02-24 17:16:04 +0100 (Fri, 24 Feb 2012) $ - */ - class QuadrupletVertexAssociationTool : - public SingleAssociationTool< HSG2::Quadruplet, Trk::VxCandidate > { - - public: - /// Regular AlgTool constructor - QuadrupletVertexAssociationTool( const std::string& type, - const std::string& name, - const IInterface* parent ); - - /// Function performing the association - virtual const Trk::VxCandidate* get( const HSG2::Quadruplet& q ); - - }; // class QuadrupletVertexAssociationTool - -} // namespace D3PD - -#endif // HIGGSD3PDMAKER_QuadrupletVertexAssociationTool_H diff --git a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/components/HiggsD3PDMaker_entries.cxx b/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/components/HiggsD3PDMaker_entries.cxx deleted file mode 100644 index 9f7045593815e1b0db80e0a13027dc5abdfe805e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/HiggsD3PDMaker/src/components/HiggsD3PDMaker_entries.cxx +++ /dev/null @@ -1,8 +0,0 @@ -#include "../QuadrupletFillerTool.h" -#include "../QuadrupletVertexAssociationTool.h" -#include "../QuadrupletCompositeParticleAssociationTool.h" - -DECLARE_COMPONENT( D3PD::QuadrupletFillerTool ) -DECLARE_COMPONENT( D3PD::QuadrupletVertexAssociationTool ) -DECLARE_COMPONENT( D3PD::QuadrupletCompositeParticleAssociationTool ) - diff --git a/PhysicsAnalysis/D3PDMaker/JetTagD3PDMaker/python/JetTagJSMaker.py b/PhysicsAnalysis/D3PDMaker/JetTagD3PDMaker/python/JetTagJSMaker.py deleted file mode 100644 index 6c67b681d58a0163cf3be3d7afb863a767d2a684..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/JetTagD3PDMaker/python/JetTagJSMaker.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -from JetRec.JetGetters import * -from JetRec.JetRecFlags import jetFlags -from JetRecTools.JetRecToolsConf import * -from AthenaCommon.AlgSequence import AlgSequence -from JetRec.JetMomentGetter import add_jetMoments_to_JetAlg, make_JetMomentGetter -from JetRec.JetRecConf import JetSorterTool -import JetSubStructure - -from HSG5DPDUtils.JSjets import * - -### overload function from HSG5DPDUtils.JSjets to be able tag truth jets - -def jtsetupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq): - if rec.doTruth(): - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3) - -### tagging truth subjets - subjets_names = [x for x in catNames if "Subjets" in x] - btag_tool = [] - if subjets_names != '': - from JetRec.JetGetters import getStandardBTaggerTool - from JetRec.JetRecFlags import jetFlags - jetFlags.doBTagging = True - _btag_tool = getStandardBTaggerTool('AntiKt', 0.4, 'Truth') - if len(_btag_tool) > 0: - btag_tool += [ JetSubStructure.JetAlgToolWrapper(name = 'JetBTagger_' + ''.join(subjets_names) - , JetAlgTool = _btag_tool[0], - GroomedjetsAuthor = subjets_names ) ] - jetFlags.doBTagging = False - - - assoc_tool_truth = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTruth', - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = [sortertool]+btag_tool, OutputLevel = 3 - ) - - myjetgetter_truth = make_StandardJetGetter(myjetfinder, - myjetdr, 'Truth', - seq = theseq, doCalib=False , - addDefaultMoment=False) - - truthcontname = myjetgetter_truth.outputKey() - - make_JetMomentGetter(truthcontname , [assoc_tool_truth], theseq ) - - return [ truthcontname, catNames ] - else: - return [ None, None ] - - -def jtcreateJSJets( ParentDict, GroomedDicts, theseq = AlgSequence()) : - - if type(ParentDict) != dict: - raise TypeError("ParentDict must be a dict!") - - if type(GroomedDicts) != list: - raise TypeError("GroomedDicts must be a list!") - - myjetfinder = ParentDict["JetFinder"] - myjetdr = ParentDict["JetdR"] - myjetinput = ParentDict["JetInput"] - - if myjetinput == 'Truth': - return jtsetupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq) - elif myjetinput == 'Track': - return setupTrackJets(myjetfinder, myjetdr, GroomedDicts, theseq) - else : - return setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq) diff --git a/PhysicsAnalysis/D3PDMaker/JetTagD3PDMaker/share/JetTagD3PD_configFatJets.py b/PhysicsAnalysis/D3PDMaker/JetTagD3PDMaker/share/JetTagD3PD_configFatJets.py deleted file mode 100644 index 6b7f3986df884cd2b4eaea7562d43ee75164aac3..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/JetTagD3PDMaker/share/JetTagD3PD_configFatJets.py +++ /dev/null @@ -1,24 +0,0 @@ -include.block("JetTagD3PDMaker/JetTagD3PD_configFatJets.py") - -from JetRec.JetRecFlags import jetFlags -jetFlags.doBTagging = False - -### -from HSG5DPDUtils.JSjets import getGroomingTools - -from HSG5DPDUtils.GroomedJetsConfig import getGroomedJetsConfig -dictsConfig = getGroomedJetsConfig() - -sj_n = [] -for dC in dictsConfig: - myjetfinder = dC[0]["JetFinder"] - myjetdr = dC[0]["JetdR"] - myjetinput = dC[0]["JetInput"] - myGroomingTools, catNames = getGroomingTools(dC[1]) - sj_n += [(myjetfinder+"%d"%(myjetdr*10) + myjetinput+x) for x in catNames if "Subjets" in x] - -from BTagging.BTaggingFlags import BTaggingFlags -for sj in sj_n: - BTaggingFlags.Jets += [sj] - BTaggingFlags.JetsWithInfoPlus += [sj] - BTaggingFlags.CalibrationChannelAliases += [sj+"->AntiKt4LCTopo" ] diff --git a/PhysicsAnalysis/D3PDMaker/MuonD3PDMaker/python/MuonD3PDObject.py b/PhysicsAnalysis/D3PDMaker/MuonD3PDMaker/python/MuonD3PDObject.py index d5846675be352b8bc17b4f5a300d12d814708a13..5dd4489e20c1c1c89a0ddfe7437eabc396efb61f 100644 --- a/PhysicsAnalysis/D3PDMaker/MuonD3PDMaker/python/MuonD3PDObject.py +++ b/PhysicsAnalysis/D3PDMaker/MuonD3PDMaker/python/MuonD3PDObject.py @@ -13,7 +13,6 @@ from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation from D3PDMakerCoreComps.IndexAssociation import IndexAssociation from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation -#import TrigMuonD3PDMaker import TruthD3PDMaker from RecExConfig.RecFlags import rec @@ -334,266 +333,3 @@ if rec.doTruth(): Target = 'mc_') -# ############################################################################ -# # Trigger matching -# ############################################################################ - -# ############################# Event Filter ################################# -# if D3PDMakerFlags.DoTrigger(): - -# defineTriggerBits (MuonD3PDObject, 0, -# ['L1_MU0', -# 'EF_L1ItemStreamer_L1_MU0', -# 'EF_mu4', -# 'L2_mu4', -# 'L2_mu4_MSonly', -# 'EF_mu4_MSonly', -# 'EF_mu6', -# 'L2_mu6', -# 'L1_MU6', -# 'L2_mu6_MSonly', -# 'EF_mu6_MSonly', -# 'EF_mu10', -# 'L2_mu10', -# 'L1_MU10', -# 'EF_mu10i_loose', -# 'L2_mu10i_loose', -# 'EF_mu13', -# 'L2_mu13', -# 'EF_mu20', -# 'EF_mu20_MSonly', -# 'L2_mu20', -# 'L2_mu20_MSonly', -# 'L1_MU20', -# 'EF_2mu4', -# 'L2_2mu4', -# 'L1_2MU4', -# 'EF_mu6', -# 'EF_mu4', -# 'EF_2mu10', -# ]) -# defineTriggerBits (MuonD3PDObject, 1, -# D3PDMakerFlags.MuonL1TrigPattern()) -# defineTriggerBits (MuonD3PDObject, 1, -# D3PDMakerFlags.MuonL2TrigPattern()) -# defineTriggerBits (MuonD3PDObject, 1, -# D3PDMakerFlags.MuonEFTrigPattern()) - -# ################################################################################### -# # Event filter. Associations to combined muons (EF_muXX / muid type trigger muons) -# ################################################################################### -# efcbpattern = 'EF_mu[0-9]*$|EF_mu[0-9]*_tight$' -# efmepattern = 'EF_mu[0-9]*_MSonly$|EF_mu[0-9]*_MSonly_tight$' -# efmgpattern = 'EF_mu[0-9]*_MG$|EF_mu[0-9]*_MG_tight$' - -# MuonEFCBIndexAssoc = IndexAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonEFInfoTriggerObjectAssociationTool, -# target = 'trig_EF_trigmuonef_', -# prefix = 'EFCB_', -# level = 11, -# blockname = 'EFCBInfoIndex', -# EFTrigMatchType = "CB", -# # matched = 'matched', -# WriteDR = False, -# ChainPattern = efcbpattern) - - -# MuonEFCBAssoc = SimpleAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonEFInfoTriggerObjectAssociationTool, -# EFTrigMatchType = "CB", -# matched = 'matched', -# blockname = 'EFCBInfo', -# level = 1, -# prefix = 'EFCB_', -# ChainPattern = efcbpattern) - -# CBInfoTrackAssoc = \ -# ContainedVectorMultiAssociation( MuonEFCBAssoc, -# TrigMuonD3PDMaker.TrigMuonEFInfoTrackAssociationTool, -# prefix = "", blockname = "EFCBInfoTrackAssoc" ) -# CBInfoTrackAssoc.defineBlock( 0, "CBTrackDetails", -# TrigMuonD3PDMaker.TrigMuonEFInfoTrackFillerTool ) -# CombinedTrackAssoc = \ -# SimpleAssociation( CBInfoTrackAssoc, -# TrigMuonD3PDMaker.TrigMuonEFInfoTrackCombinedTrackAssociationTool, -# matched = "hasCB", blockname = "CombinedTrackAssoc", prefix = "" ) -# CombinedTrackAssoc.defineBlock( 1, "CombinedTrackBasics", -# EventCommonD3PDMaker.FourMomFillerTool, -# WriteM = False ) -# CombinedTrackAssoc.defineBlock( 12, "CombinedTrackFitResults1", -# TrigMuonD3PDMaker.TrigMuonEFTrackFillerTool, -# SaveFitResults = True ) -# CombinedTrackAssoc.defineBlock( 13, "CombinedTrackFitResults2", -# TrigMuonD3PDMaker.TrigMuonEFCbTrackFillerTool, -# SaveFitResults = True ) -# CombinedTrackAssoc.defineBlock( 13, "CombinedTrackFitDetails1", -# TrigMuonD3PDMaker.TrigMuonEFTrackFillerTool, -# SaveHitInfo = True ) -# CombinedTrackAssoc.defineBlock( 13, "CombinedTrackFitDetails2", -# TrigMuonD3PDMaker.TrigMuonEFCbTrackFillerTool, -# SaveHitInfo = True ) - - -# ################################################################################### -# # Event filter. Associations to MuGirl muons (EF_muXX_MG type trigger muons) -# ################################################################################### -# MuonEFMGIndexAssoc = IndexAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonEFInfoTriggerObjectAssociationTool, -# target = 'trig_EF_trigmugirl_', -# prefix = 'EFMG_', -# level = 11, -# blockname = 'EFMGInfoIndex', -# EFTrigMatchType = "MG", -# # matched = 'matched', -# WriteDR = False, -# ChainPattern = efmgpattern) # D3PDMakerFlags.MuonEFTrigPattern()) - -# MuonEFMGAssoc = SimpleAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonEFInfoTriggerObjectAssociationTool, -# EFTrigMatchType = "MG", -# matched = 'matched', -# blockname = 'EFMGInfo', -# level = 1, -# prefix = 'EFMG_', -# ChainPattern = efmgpattern) #D3PDMakerFlags.MuonEFTrigPattern()) - -# MGInfoTrackAssoc = \ -# ContainedVectorMultiAssociation( MuonEFMGAssoc, -# TrigMuonD3PDMaker.TrigMuonEFInfoTrackAssociationTool, -# prefix = "", blockname = "EFMGInfoTrackAssoc" ) -# MGInfoTrackAssoc.defineBlock( 0, "MGTrackDetails", -# TrigMuonD3PDMaker.TrigMuonEFInfoTrackFillerTool ) -# # Associate combined TrigMuonEFCbTrack objects to the TrigMuonEFInfoTrack objects: -# MuGirlTrackAssoc = \ -# SimpleAssociation( MGInfoTrackAssoc, -# TrigMuonD3PDMaker.TrigMuonEFInfoTrackCombinedTrackAssociationTool, -# matched = "hasMG", blockname = "MuGirlTrackAssoc", prefix = "" ) -# MuGirlTrackAssoc.defineBlock( 1, "MuGirlTrackBasics", -# EventCommonD3PDMaker.FourMomFillerTool, -# WriteM = False ) -# MuGirlTrackAssoc.defineBlock( 12, "MuGirlTrackFitResults1", -# TrigMuonD3PDMaker.TrigMuonEFTrackFillerTool, -# SaveFitResults = True ) -# MuGirlTrackAssoc.defineBlock( 13, "MuGirlTrackFitResults2", -# TrigMuonD3PDMaker.TrigMuonEFCbTrackFillerTool, -# SaveFitResults = True ) -# MuGirlTrackAssoc.defineBlock( 13, "MuGirlTrackFitDetails1", -# TrigMuonD3PDMaker.TrigMuonEFTrackFillerTool, -# SaveHitInfo = True ) -# MuGirlTrackAssoc.defineBlock( 13, "MuGirlTrackFitDetails2", -# TrigMuonD3PDMaker.TrigMuonEFCbTrackFillerTool, -# SaveHitInfo = True ) - -# ################################################################################### -# # Event filter. Associations to MSonly muons (EF_muXX_MSonly type trigger muons) -# ################################################################################### -# MuonEFMEIndexAssoc = IndexAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonEFInfoTriggerObjectAssociationTool, -# target = 'trig_EF_trigmuonef_', -# prefix = 'EFME_', -# level = 11, -# blockname = 'EFMEInfoIndex', -# EFTrigMatchType = "ME", -# # matched = 'matched', -# WriteDR = False, -# ChainPattern = efmepattern) #D3PDMakerFlags.MuonEFTrigPattern()) - -# MuonEFMEAssoc = SimpleAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonEFInfoTriggerObjectAssociationTool, -# EFTrigMatchType = "ME", -# matched = 'matched', -# blockname = 'EFMEInfo', -# level = 1, -# prefix = 'EFME_', -# ChainPattern = efmepattern) #D3PDMakerFlags.MuonEFTrigPattern()) - -# MEInfoTrackAssoc = \ -# ContainedVectorMultiAssociation( MuonEFMEAssoc, -# TrigMuonD3PDMaker.TrigMuonEFInfoTrackAssociationTool, -# prefix = "", blockname = "EFMEInfoTrackAssoc" ) -# MEInfoTrackAssoc.defineBlock( 0, "METrackDetails", -# TrigMuonD3PDMaker.TrigMuonEFInfoTrackFillerTool ) -# # Associate spectrometer-extrapolated TrigMuonEFTrack objects to the TrigMuonEFInfoTrack objects: -# ExtrapolatedTrackAssoc = \ -# SimpleAssociation( MEInfoTrackAssoc, -# TrigMuonD3PDMaker.TrigMuonEFInfoTrackExtrapolatedTrackAssociationTool, -# matched = "hasME", blockname = "ExtrapolatedTrackAssoc", prefix = "" ) -# ExtrapolatedTrackAssoc.defineBlock( 1, "ExtrapolatedTrackBasics", -# EventCommonD3PDMaker.FourMomFillerTool, -# WriteM = False ) -# ExtrapolatedTrackAssoc.defineBlock( 12, "ExtrapolatedTrackFitResults", -# TrigMuonD3PDMaker.TrigMuonEFTrackFillerTool, -# SaveFitResults = True) -# ExtrapolatedTrackAssoc.defineBlock( 13, "ExtrapolatedTrackDetails", -# TrigMuonD3PDMaker.TrigMuonEFTrackFillerTool, -# SaveHitInfo = True ) - - -# ############################# Level Two ###################################### -# MuonL2IndexAssoc = IndexAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonL2TriggerObjectAssociationTool, -# target = 'trig_L2_combmuonfeature_', -# prefix = 'L2CB_', -# level = 11, -# blockname = 'L2CBInfoIndex', -# WriteDR = False, -# ChainPattern = D3PDMakerFlags.MuonL2TrigPattern()) - -# MuonL2Assoc = SimpleAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonL2TriggerObjectAssociationTool, -# level = 1, -# matched = 'matched', -# blockname = 'L2CBInfo', -# prefix = 'L2CB_', -# ChainPattern = D3PDMakerFlags.MuonL2TrigPattern()) -# MuonL2Assoc.defineBlock (1, 'L2CBKinematics', -# EventCommonD3PDMaker.FourMomFillerTool, -# WriteM = False) -# MuonL2Assoc.defineBlock (1, 'L2CBDetail1', -# MuonD3PDMaker.L2MuonCB1FillerTool) -# MuonL2Assoc.defineBlock (2, 'L2CBDetail2', -# MuonD3PDMaker.L2MuonCB2FillerTool) - -# ############################# Level One ###################################### -# MuonL1IndexAssoc = IndexAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonL1TriggerObjectAssociationTool, -# target = 'trig_L1_mu_', -# prefix = 'L1_', -# level = 11, -# MaxDR = 0.5, -# blockname = 'L1InfoIndex', -# WriteDR = False, -# ChainPattern = D3PDMakerFlags.MuonL1TrigPattern()) - -# MuonL1Assoc = SimpleAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonL1TriggerObjectAssociationTool, -# level = 1, -# matched = 'matched', -# blockname = 'L1Info', -# MaxDR = 0.5, -# prefix = 'L1_', -# ChainPattern = D3PDMakerFlags.MuonL1TrigPattern()) -# MuonL1Assoc.defineBlock (1, 'L1Kinematics', -# EventCommonD3PDMaker.FourMomFillerTool, -# WriteM = False) -# MuonL1Assoc.defineBlock (2, 'L1Detail2', -# TriggerD3PDMaker.Muon_ROIFillerTool, -# WriteDecodedInfo = True) - - -# MuonIDOrPTPAssoc = SimpleAssociation \ -# (MuonD3PDObject, -# MuonD3PDMaker.MuonTrackParticleAssociationTool, -# blockname = 'TrkInfoInDetOrPrimary', -# Type = 'InDetOrPrimary') - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/CMakeLists.txt b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/CMakeLists.txt deleted file mode 100644 index 765c4682d030a5effa7c56227397d6bf52aec525..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -################################################################################ -# Package: PhysicsD3PDMaker -################################################################################ - -# Declare the package name: -atlas_subdir( PhysicsD3PDMaker ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Control/AthenaBaseComps - Event/xAOD/xAODEgamma - Event/xAOD/xAODMuon - GaudiKernel ) - -# Component(s) in the package: -atlas_add_component( PhysicsD3PDMaker - src/*.cxx - src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps xAODEgamma xAODMuon GaudiKernel ) - -# Install files from the package: -atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/GroomedJetsConfig.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/GroomedJetsConfig.py deleted file mode 100644 index 54837ab4f15765bae231db79e574b25428d144db..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/GroomedJetsConfig.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -import copy - -def getGroomedJetsConfig(): - - dictsConf = [] - - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'LCTopo', - } - - GroomedDicts = [ - #{ 'Type' : 'BDRSFiltering', 'args' : { 'SaveSubjets' : True } } #, - { 'Type' : 'BDRSFiltering', 'args' : { 'SaveSubjets' : True , 'minSplitR' :0.} } - ] - - - dictsConf += [ [ParentDict, GroomedDicts] ] - - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'Truth', - } - - dictsConf += [ [ParentDict, GroomedDicts] ] - - - return dictsConf diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSD3PD.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSD3PD.py deleted file mode 100644 index bc16fe8fc7182318509cd09b745ee5ddcc423a21..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSD3PD.py +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -from __future__ import print_function - -from JetD3PDMaker.JetD3PDObject import getJetD3PDObject -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from RecExConfig.RecFlags import rec -from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation -from D3PDMakerCoreComps.IndexAssociation import IndexAssociation -from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation -from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation -import JetSubstructureD3PDMaker -from D3PDMakerCoreComps.D3PDObject import make_SG_D3PDObject -import EventCommonD3PDMaker -#from JetTagD3PDMaker.AddBTagD3PDInfo import addBTagInfoToJetObject -from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys -from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags -import JetTagD3PDMaker - - -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -def getJetCollectionD3PDObject(objectname = 'JetCollectionD3PDObject', prefix = 'jet_'): - return make_SG_D3PDObject('JetCollection','','jet_', objectname) - - -def AddUniqueMoments(obj, momlist, theblockname = 'ConfigParams', level = 0): - obj.defineBlock(level, theblockname, JetSubstructureD3PDMaker.JetMomentUniqueFillerTool, Moments = momlist, OutputLevel=3) - - -def AddHadronicInfo(obj, additionalMoments = [], theblockname = 'SubjetMomentsHadronic', level=0): - - from JetD3PDMaker import JetMomentFillerTool - obj.defineBlock(level, theblockname, JetMomentFillerTool,Moments= [] + additionalMoments) - -def AddAssocJetsIndex(obj, jetassocname, jettarget, intermediate_names = [], level=0): - - JetAssocTrack = IndexMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,jettarget,level = level, - prefix=jetassocname+'_', - blockname=jetassocname+'blockindex', AssociationName = jetassocname , IntermediateAssociationNames=intermediate_names, OutputLevel=3 ) - -def AddConstitIndex(object, typename='CaloCluster', target='cl_', level=0): - - import EventCommonD3PDMaker - import D3PDMakerCoreComps - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = True, - level = level) - - ConstitAssoc.defineBlock (0, 'ConstitIndex'+typename, D3PDMakerCoreComps.IndexFillerTool, Target = target) - -def AddConstitTruthIndex(object, typename='TruthParticle', target='mc_', level=0): - - import EventCommonD3PDMaker - import D3PDMakerCoreComps - import TruthD3PDMaker - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = False, - level = level) - - genPart = SimpleAssociation(ConstitAssoc,TruthD3PDMaker.TruthParticleGenParticleAssociationTool) - trupart2 = IndexAssociation (genPart, TruthD3PDMaker.GenParticleTruthParticleAssociationTool, - target = 'mc_', - Target = 'mc_') - - - -def AddBTaggingInfo(obj, level = 0, block_prefix = "my"): - - obj.defineBlock(level,block_prefix+JetTagD3PDKeys.BTagWeightsBlockName(), - JetTagD3PDMaker.JetTagBTagWeightsFillerTool, - prefix=JetTagD3PDKeys.BTagWeightsPrefix(), - TaggerNames=JetTagD3PDFlags.Taggers()) - #addBTagInfoToJetObject(obj,0) - -def AddBTaggingInfoFromSubjets(obj, sj_assoc_name = 'SplitFiltSubjets', sj_prefix = "subjets", level=0): - t = ContainedVectorMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,level = level, prefix= sj_prefix+"_", - blockname='blockbtag'+sj_assoc_name, nrowName = 'nsj', OutputLevel=3, AssociationName=sj_assoc_name, IntermediateAssociationNames=['Parent']) - - #t.defineBlock(0, 'myKinematics', EventCommonD3PDMaker.FourMomFillerTool, WriteE = True) - - AddBTaggingInfo(t, 0, "my"+sj_assoc_name) - -myJSD3PD = [] - -def JSD3PD(jetsToWrite, alg): - - global myJSD3PD - - if not alg: - raise TypeError("alg should be specified!") - - jsD3PD=None - for val in myJSD3PD: - if val[0]==jetsToWrite: - print ("using existing JSD3PD") - jsD3PD=val[1] - break - - if jsD3PD==None: - jsD3PD = JSD3PD_Tool(jetsToWrite) - myJSD3PD += [ (jetsToWrite, jsD3PD) ] - - jsD3PD.addToAlg(alg) - -class JSD3PD_Tool(object): - - def __init__(self,jetsToWrite): - - self.commonExcludeList = ['El02Match','Mu02Match','L1Info','L2Info','EFInfo'] - self.commonIncludeList = [] - - MyJetD3PDObject = getJetD3PDObject(objectname='MyJetD3PDObject') - MyGroomedJetD3PDObject = getJetD3PDObject(objectname='MyGroomedJetD3PDObject') - - import re - JetAlgPattern = re.compile(r'^(\D+)(\d{1,2})(\D+)Jets') #assuming standard notation - ars = JetAlgPattern.match(jetsToWrite[0]).groups() - - self.parentJets = ''.join(ars) #remove the 'Jets' at the end - - self.groomedJetsList = jetsToWrite[1] - - if 'Track' in self.parentJets: - AddConstitIndex(MyGroomedJetD3PDObject, typename='Rec::TrackParticle', target='trk') - AddConstitIndex(MyJetD3PDObject, typename='Rec::TrackParticle', target='trk') - elif 'LCTopo' in self.parentJets: - AddConstitIndex(MyGroomedJetD3PDObject) - AddConstitIndex(MyJetD3PDObject) - elif 'Truth' in self.parentJets: - AddConstitTruthIndex(MyJetD3PDObject) - AddConstitTruthIndex(MyGroomedJetD3PDObject) - - #if 'Track' not in self.parentJets and 'Truth' not in self.parentJets: - # AddAssocJetsIndex(MyJetD3PDObject, 'TrackJets', 'jet_' + ars[0] + ars[1] + 'TrackZ_') - # if rec.doTruth(): - # AddAssocJetsIndex(MyJetD3PDObject, 'TruthJets', 'jet_' + ars[0] + ars[1] + 'Truth_') - - self.JetQualInclude = [] - - if 'Topo' in self.parentJets or 'LCTopo' in self.parentJets: - self.commonIncludeList += ['ConstituentScale', 'EMScale'] - AddHadronicInfo(MyJetD3PDObject, ['OriginIndex','nTrk','sumPtTrk','EtaOrigin' , 'PhiOrigin' , 'MOrigin'], theblockname = 'OriginIndexBlock') - AddHadronicInfo(MyGroomedJetD3PDObject, ['EtaOrigin' , 'PhiOrigin' , 'MOrigin' ], theblockname = 'OriginIndexBlock') - - - if (self.parentJets == 'AntiKt10LCTopo') or (self.parentJets == 'CamKt12LCTopo'): - AddHadronicInfo(MyJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock') - AddHadronicInfo(MyGroomedJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock') - - self.VtxInclude = [] - - if 'Topo' in self.parentJets: - self.VtxInclude += ['JVtx','JetVertexFraction'] - - AddAssocJetsIndex(MyGroomedJetD3PDObject, 'Parent', 'jet_' + self.parentJets + '_') - for gr in self.groomedJetsList: - AddAssocJetsIndex(MyJetD3PDObject, gr, 'jet_' + self.parentJets + gr + '_') - - MyGroomedJetCollectionD3PDObject = getJetCollectionD3PDObject(objectname = "MyGroomedJetCollectionD3PDObject") - AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['SmallR','PtFrac', 'NSub'], theblockname = 'TrimConfigMoments', level=99) - AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['NSubjets','ktycut2','massFraction','minRfilt','minSplitR'], theblockname = 'FiltConfigMoments', level = 99) - - AddHadronicInfo(MyGroomedJetD3PDObject, ['CORE_RBB','CORE_RFILT'], theblockname = 'FiltMoments', level=99) - - ## in groomedJetsList, subjets name should follow the name of the 'full/composite' jet. - for idx,gr in enumerate(self.groomedJetsList): - ## names are unique - if 'Subjets' in gr and idx != 0 and 'Subjets' not in self.groomedJetsList[idx-1]: - AddBTaggingInfoFromSubjets(MyGroomedJetD3PDObject, sj_assoc_name = gr, sj_prefix = gr, level = 99) - AddAssocJetsIndex(MyGroomedJetD3PDObject, gr, 'jet_' + self.parentJets + gr + '_', intermediate_names = ['Parent'], level=99) - elif 'Subjets' in gr: - raise ValueError("Subjets without full composite jet ?") ## not suppose to happen - - self.MyJetD3PDObject = MyJetD3PDObject - self.MyGroomedJetD3PDObject = MyGroomedJetD3PDObject - self.MyGroomedJetCollectionD3PDObject = MyGroomedJetCollectionD3PDObject - - - - def addToAlg(self,alg): - - alg += self.MyJetD3PDObject(0, prefix='jet_' + self.parentJets + '_', sgkey=self.parentJets+'Jets', exclude=self.commonExcludeList, include = self.commonIncludeList + self.VtxInclude + self.JetQualInclude) - - for idx,gr in enumerate(self.groomedJetsList): - - kw = {} - includelist = [] - includelist_unique = [] - - if 'Trim' in gr: - includelist_unique += ['TrimConfigMoments'] - - elif 'Filt' in gr and 'Subjets' not in gr: - includelist += ['FiltMoments'] - includelist_unique += ['FiltConfigMoments'] - if len(self.groomedJetsList) > idx+1 and 'Subjets' in self.groomedJetsList[idx+1]: - includelist += ['blockbtag'+self.groomedJetsList[idx+1], self.groomedJetsList[idx+1]+'blockindex'] - - elif 'Subjets' in gr: - includelist += [JetTagD3PDKeys.BTagWeightsBlockName()] - includelist += [JetTagD3PDKeys.JetTrackAssocBlockName()] - includelist += [JetTagD3PDKeys.JetTrackBlockName()] - includelist += [JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()] - includelist += [JetTagD3PDKeys.IPInfoPlusTrackBlockName()] - - kw[JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']= "trk" - kw[JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target']= "trk" - - alg += self.MyGroomedJetD3PDObject(0, prefix='jet_' + self.parentJets + gr + '_', sgkey=self.parentJets + gr +'Jets', include = includelist + self.commonIncludeList,exclude=self.commonExcludeList,**kw) - - alg += self.MyGroomedJetCollectionD3PDObject( 0, prefix='jet_' + self.parentJets + gr + '_config_', sgkey=self.parentJets + gr +'Jets', include = includelist_unique) - - return diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSjets.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSjets.py deleted file mode 100644 index a1d79d7f5526be7d5532fef3dc3fa8ee2acea6a2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSjets.py +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -#####Jet Reco ############ - -# Before adding your algorithms to topSequence -from JetRec.JetGetters import * -from JetRec.JetRecFlags import jetFlags -from JetRecTools.JetRecToolsConf import * -from AthenaCommon.AlgSequence import AlgSequence -from JetRec.JetMomentGetter import add_jetMoments_to_JetAlg, make_JetMomentGetter -from JetRec.JetRecConf import JetSorterTool -#from JetMomentTools.JetMomentToolsConf import JetWidthTool - -import JetSubStructure - -_GroomingTool = { - 'Trimming' : JetSubStructure.SimpleTrimmingTool, - 'BDRSFiltering' : JetSubStructure.BDRSFilteringTool, -} - -def buildName(GroomedDict): - - if type(GroomedDict) != dict: - raise TypeError("GroomedDicts must contain dicts!") - - if GroomedDict['Type'] in _GroomingTool: - strconfig = "" - theArgs = GroomedDict['args'] - for k in theArgs.keys(): - if type(theArgs[k]) == int: - strconfig += k + '%d' % theArgs[k] - elif type(theArgs[k]) == float: - strconfig += k + '%d' % (theArgs[k]*100) - - toolname = strconfig - - return toolname - else: - raise KeyError("Couldn't find grooming tool %s" % GroomedDict['Type']) - - -def getGroomingTools(GroomedDicts): - - myGroomingTools = [] - catNames = [] - for gr in GroomedDicts: - toolname = buildName(gr) - defname = _GroomingTool[gr['Type']].__slots__['Name'] ## safe hack ? - - defsubjetsname = '' - if "SubjetsName" in _GroomingTool[gr['Type']].__slots__.keys(): - defsubjetsname = _GroomingTool[gr['Type']].__slots__['SubjetsName'] - - kw = gr['args'].copy() - if 'Name' not in kw.keys(): - kw['Name'] = defname - kw['Name'] += toolname - - if 'SubjetsName' not in kw.keys() and defsubjetsname != '': - kw['SubjetsName'] = defsubjetsname - kw['SubjetsName'] += toolname - - myGroomingTools += [_GroomingTool[gr['Type']](gr['Type']+toolname, StoreConfigParam = True, **kw)] - - catNames += [ kw['Name'] ] - - ## are we requesting subjets ? - if "SaveSubjets" in kw.keys(): - if kw["SaveSubjets"] == True: - catNames += [ kw['SubjetsName'] ] - - return myGroomingTools, catNames - - -###################### -## Truth Jets ## -###################### - -def setupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq): - if rec.doTruth(): - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3) - - assoc_tool_truth = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTruth', - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = [sortertool], OutputLevel = 3 - ) - - myjetgetter_truth = make_StandardJetGetter(myjetfinder, myjetdr, 'Truth', seq = theseq, doCalib=False ,addDefaultMoment=False) - truthcontname = myjetgetter_truth.outputKey() - - make_JetMomentGetter(truthcontname , [assoc_tool_truth], theseq ) - - return [ truthcontname, catNames ] - else: - return [ None, None ] - -###################### -## Track Jets ## -###################### - -def setupTrackJets(myjetfinder, myjetdr, GroomedDicts, theseq): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - - assoc_tool_track = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTrack', - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = [sortertool], OutputLevel = 3 - ) - - - #---- TrackJet ---- - - from JetSubStructure.JSTrackJets import createJSTrackJets - mygetter = createJSTrackJets(theseq, myjetfinder,myjetdr) - - trackjetcontname = mygetter.outputKey() - - #---- End TrackJet ---- - - make_JetMomentGetter(trackjetcontname , [assoc_tool_track], theseq ) - - return [ trackjetcontname, catNames ] - - -###################### -## Calo Jets ## -###################### - -def setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - - grjets_calib = [] - - ## Origin correction / Eta-Mass-JES hack - - from JetSubStructure.mySetupJetCalibrators import doEtaMassJESCorrection - from JetCalibTools.MakeCalibSequences import calibTags - calibTags['ETAMASSJES'] = doEtaMassJESCorrection - - mydoCalib = False - mycalibName = '' - - if 'LCTopo' in myjetinput: - mydoCalib = True - if (myjetfinder + '%d'%(myjetdr*10) == 'AntiKt10') or (myjetfinder + '%d'%(myjetdr*10) == 'CamKt12'): - mycalibName = 'LC:ORIGIN_ETAMASSJES' - else: - mycalibName = 'LC:ORIGIN' - - stdcaliblist = [] - allowedcalib = ['AntiKt10LCTopoTrimmedJets', 'AntiKt10LCTopoTrimmedPtFrac3SmallR30Jets','AntiKt10LCTopoTrimmedPtFrac5SmallR30Jets','CamKt12LCTopoTrimmedPtFrac5SmallR30Jets'] - for x in catNames: - author = myjetfinder + '%d'%(myjetdr*10) + myjetinput + x + 'Jets' - if author in allowedcalib : - grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin_etamassjes_'+x, - JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput+x, doCalib=True, calibName='LC:ORIGIN_ETAMASSJES')[0], - GroomedjetsAuthor = [x] )] - else: - stdcaliblist += [x] - - if stdcaliblist != [] : - grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin', - JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='LC:ORIGIN')[0], - GroomedjetsAuthor = stdcaliblist )] - elif 'Topo' in myjetinput: - mydoCalib = True - mycalibName = 'EM:ORIGIN' - grjets_calib += getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='EM:ORIGIN') - - assoc_tools = [] - if rec.doTruth(): - truthcontname = myjetfinder + '%dTruthJets' % (myjetdr*10) - if hasattr(theseq, truthcontname): - truthj_assoc = JetSubStructure.JetJetAssociatorTool("Truth_JetJetAssociatorTool", ContainerName = truthcontname, AssociationName = "TruthJets", MatchOrigin = False) - - trackjetcontname = myjetfinder + '%dTrackZJets' % (myjetdr*10) - if hasattr(theseq, trackjetcontname): - trkj_assoc = JetSubStructure.JetJetAssociatorTool("Trk_JetJetAssociatorTool", ContainerName = trackjetcontname, AssociationName = "TrackJets", MatchOrigin = True) - - - ## batgging ## - subjets_names = [x for x in catNames if "Subjets" in x] - btag_tool = [] - if subjets_names != '': - from JetRec.JetGetters import getStandardBTaggerTool - from JetRec.JetRecFlags import jetFlags - jetFlags.doBTagging = True - _btag_tool = getStandardBTaggerTool('AntiKt', 0.4, 'LCTopo') - if len(_btag_tool) > 0: - btag_tool += [ JetSubStructure.JetAlgToolWrapper(name = 'JetBTagger_' + ''.join(subjets_names), JetAlgTool = _btag_tool[0], - GroomedjetsAuthor = subjets_names ) ] - jetFlags.doBTagging = False - - ## btagging end ## - - assoc_tool = JetSubStructure.JetAssociationTool( - name = 'JetAssocTool', - AssociatorTools = assoc_tools, - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = grjets_calib + [sortertool] + btag_tool, OutputLevel = 3 - ) - - - myjetgetter = make_StandardJetGetter(myjetfinder, myjetdr, myjetinput, seq = theseq, doCalib=mydoCalib, calibName=mycalibName,addDefaultMoment=False) - contname = myjetgetter.outputKey() - - - # ------------------------------------------------ - # Associate a vertex and set the JVF moment. Must be placed AFTER vertex correction - # ------------------------------------------------ - from AthenaCommon.DetFlags import DetFlags - from AthenaCommon.AppMgr import ToolSvc - noVertex = jobproperties.Beam.beamType == 'cosmics' or jobproperties.Beam.beamType == 'singlebeam' - if DetFlags.detdescr.ID_on() and jetFlags.doJVF() and 'Truth' not in myjetinput and not noVertex: - from JetSubStructure.mySetupJetMomentTools import mygetJetVertexAssociationTool - myjvatool = mygetJetVertexAssociationTool(myjetfinder, myjetdr,myjetinput,'Custom%d'%(myjetdr*10)) - add_jetMoments_to_JetAlg(myjetgetter, [myjvatool]) - - make_JetMomentGetter(contname , [assoc_tool], theseq ) - - return [ contname, catNames ] - - -def createJSJets( ParentDict, GroomedDicts, theseq = AlgSequence()) : - - if type(ParentDict) != dict: - raise TypeError("ParentDict must be a dict!") - - if type(GroomedDicts) != list: - raise TypeError("GroomedDicts must be a list!") - - myjetfinder = ParentDict["JetFinder"] - myjetdr = ParentDict["JetdR"] - myjetinput = ParentDict["JetInput"] - - if myjetinput == 'Truth': - return setupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq) - elif myjetinput == 'Track': - return setupTrackJets(myjetfinder, myjetdr, GroomedDicts, theseq) - else : - return setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq) - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/METRefGetter_newplup.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/METRefGetter_newplup.py deleted file mode 100644 index b664d47afbf4172f4697030065c54fb738b1960c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/METRefGetter_newplup.py +++ /dev/null @@ -1,874 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -############################################################################################## -# -# Reconstruction Getters for MissingET.METRefAlg -# -# Author : S. Resconi -# Date : March 2009 -# -############################################################################################## - -from __future__ import print_function - -from AthenaCommon.SystemOfUnits import * # loads MeV etc... -from AthenaCommon.Constants import * # Loads DEBUG INFO etc.. -from AthenaCommon.Logging import logging # loads logger -import traceback # to allow printout of trace back -from AthenaCommon.AlgSequence import AlgSequence - -from RecExConfig.Configured import Configured # import base class - -from AthenaCommon.Include import include -include ("MuonCombinedSelectorTools/METMuonSelectorToolConfig.py") - -from CaloClusterCorrection.StandardCellWeightCalib import getCellWeightTool - -from MissingETTools.Weights import * - -from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault -theCaloNoiseTool=CaloNoiseToolDefault() -from AthenaCommon.AppMgr import ToolSvc -ToolSvc+=theCaloNoiseTool - -import AthenaPython.PyAthena as PyAthena -PyAthena.load_library('egammaEnumsDict') - -from JetMomentTools.SetupJetMomentTools import getJetVertexAssociationTool -jvatool = getJetVertexAssociationTool ('AntiKt', 0.4, 'Topo') -ToolSvc += jvatool - -#------------------------------------------------------------------------------------------------ -# Helper Function to retrieve H1 calibration Tool (similar to JetGetters.py) -def getStandardCalibTool(doAtlfastII=False): - - # define here name of H1 calib tool - #finder = "Cone" - finder = "AntiKt" - mainparam = 0.4 - input = "Topo" - - #def getCellWeightTool(finder="Cone",mainparam=0.4,input="Topo") - cellcalibtool = getCellWeightTool(finder,mainparam,input,True) - - return cellcalibtool - -#------------------------------------------------------------------------------------------------ - -from MissingET.MissingETConf import METRefinedAlgorithm - -class METRefGetter_newplup ( Configured ): - - suffix = '' # suffix used to differentiate instances of tools and containers - sequence = AlgSequence() - - ele_EgammaInputCollectionKey= "ElectronAODCollection" - ele_noCut = False - ele_isEM = PyAthena.egammaPID.ElectronIDMediumPP - ele_EtCut = 10.0*GeV - ele_calibType = "RefCalib" - - gamma_EleInputCollectionKey = "ElectronAODCollection" - gamma_EgammaInputCollectionKey= "PhotonAODCollection" - gamma_EtCut = 10.0*GeV - gamma_noCut = False # True = apply no selection - gamma_isEM = PyAthena.egammaPID.PhotonIDTight - gamma_calibType = "EmScale" - gamma_isEMMatch = PyAthena.egammaPID.ElectronIDMediumPP - gamma_ElectronEtCutMatch = 10.0*GeV - - tau_doTauTool = True - tau_TauInputCollectionKey = "TauRecContainer" - tau_calibType = "ExclRefCalib" - tau_isTau = "BDTMedium_EleBDTMedium_MuonVeto" - tau_TauSignalConeSize = 0.3 - tau_TauPtCut = 20.*GeV - tau_RemoveResiduals = True - tau_MinimumMETContribution = 0.5 - - jet_JetInputCollectionKey = "AntiKt4LCTopoJets" - jet_vxcontainerkey = "VxPrimaryCandidate" - jet_UseCustomVxContainer = False - jet_JetPtCut = 20.0*GeV - jet_JetMaxPtCut = 1000000.0*GeV - jet_ApplyJetScale = "Yes" - jet_UseJetMomentForScale = True - jet_JetMomentForScale = "LCJES" - jet_ApplyJetJVF = "No" - jet_JetMomentForJVF = "JVF" - jet_calibType = "LocHad" - jet_RemoveResiduals = True - jet_MinimumMETContribution = 0.5 - - jet_RunSoftJetsTool = True - jet_SoftJetsInputCollectionKey = jet_JetInputCollectionKey - jet_SoftJetsCalibType = "LocHad" - jet_SoftJetsPtCut = 5.0*GeV - jet_SoftJetsMaxPtCut = 20.0*GeV - jet_ApplySoftJetsScale = "No" - jet_SoftJetsUseJetMomentForScale = False - jet_SoftJetsJetMomentForScale = "LCJES" - jet_SoftJetsRemoveResiduals = True - jet_SoftJetsMinimumMETContribution= 0.5 - - cellout_vxcontainerkey = "VxPrimaryCandidate" - cellout_calibType = "Eflow" #Eflow, Tracks - cellout_trackType = "STTrack" #STTrack, STTrackPV, STTrackCone - cellout_calibType2 = "Tracks" - cellout_trackType2 = "STTrack" - cellout_calibType3 = "Tracks" - cellout_trackType3 = "STTrackPV" - - cellout_pttrack = 150. - cellout_JetInputCollectionKey = jet_JetInputCollectionKey - photon_doPhotonTool = True - - cryo_ApplyCorrection = "Off" - muon_container = "StacoMuonCollection" - muon_algorithm = "Staco" # or Muid - muon_isolationAlg = "dRJet" # or TrkIso - - plupSuppCorr = "Off" #Off, STVF - celloutCorrection = "Off" #Off, STVF - - def suffix(self): - return self.suffix - - def jet_JetInputCollectionKey(self): - return self.jet_JetInputCollectionKey - - def jet_JetPtCut(self): - return self.jet_JetPtCut - - def jet_ApplyJetScale(self): - return self.jet_ApplyJetScale - - def muon_Container(self): - return self.muon_container - - def muon_trackMethod(self): - if self.muon_algorithm == "Staco": - return "CutVariable" - if self.muon_algorithm == "Muid": - return "CombinedPt" - if self.muon_algorithm == "Muons": - return "CombinedPt" - - def configure(self): - mlog = logging.getLogger ('METRefGetter_newplup::configure:') - mlog.info ('entering') - - # now configure the algorithm - try: - from MissingET.MissingETConf import METRefinedAlgorithm - theMETRefAlg=METRefinedAlgorithm("METRefAlg"+self.suffix) - theMETRefAlgMu=METRefinedAlgorithm("METRefAlgMu"+self.suffix) - - from RecExConfig.RecFlags import rec - theMETRefAlg.CompositionMapKey = "MET_RefComposition"+self.suffix - - if rec.readAOD(): - theMETRefAlg.UseCells = False - theMETRefAlgMu.UseCells = False - else: - theMETRefAlg.UseCells = True - theMETRefAlgMu.UseCells = True - except: - mlog.error("could not import MissingET.METRefAlg") - mlog.error (traceback.format_exc()) - return False - #------------------------------------------------------------------------------------------------ - # configure the tools: METRefinedEleTool => calibrator Tool for ATLFASTII - - try: - from MissingET.MissingETConf import METRefinedEleTool - theMETRefinedEleTool = METRefinedEleTool("METRefEle"+self.suffix) - # refEleTool = theMETRefinedEleTool.getHandle() - theMETRefinedEleTool.EgammaInputCollectionKey = self.ele_EgammaInputCollectionKey - theMETRefinedEleTool.noCut = self.ele_noCut - theMETRefinedEleTool.isEM = self.ele_isEM - theMETRefinedEleTool.ElectronEtCut = self.ele_EtCut - theMETRefinedEleTool.CalibType = self.ele_calibType # H1 or EmScale or KFact or RefCalib - # if doFastCaloSim set calibrator tool for ATLFAST2 - from CaloRec.CaloCellFlags import jobproperties - if jobproperties.CaloCellFlags.doFastCaloSim: - doAtlfastII=True - else: - doAtlfastII=False - - cellcalibtool = getStandardCalibTool(doAtlfastII) - calibtool_name = cellcalibtool.name() - theMETRefinedEleTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name - theMETRefinedEleTool.BackNavigationTo = "Cell" # to "Cell" - theMETRefinedEleTool.MissingETOutKey = "MET_RefEle"+self.suffix - print ("******************* key = "+theMETRefinedEleTool.MissingETOutKey) - print ("******************* key2 = "+theMETRefinedEleTool.MissingETOutKey) - #----------------- - from MissingET.MissingETConf import METClusterResolverTool - theMETEleResolver = METClusterResolverTool("EleResolve"+self.suffix) - theMETEleResolver.ReferenceClusterContainer = "CaloCalTopoCluster" - theMETRefinedEleTool.ClusterResolverTool = theMETEleResolver.getFullName() - - #------------------------------------------------------------------------------------ - if self.photon_doPhotonTool: - theMETRefinedGammaTool = METRefinedEleTool("METRefGamma"+self.suffix) - theMETRefinedGammaTool.EgammaInputCollectionKey = self.gamma_EgammaInputCollectionKey - theMETRefinedGammaTool.EleInputCollectionKey = self.gamma_EleInputCollectionKey - theMETRefinedGammaTool.isEM = self.gamma_isEM - theMETRefinedGammaTool.noCut = self.gamma_noCut - theMETRefinedGammaTool.ElectronEtCut = self.gamma_EtCut - theMETRefinedGammaTool.CalibType = self.gamma_calibType # H1 or EmScale or KFact or RefCalib - theMETRefinedGammaTool.isEMMatch = self.gamma_isEMMatch - theMETRefinedGammaTool.ElectronEtCutMatch = self.gamma_ElectronEtCutMatch - from CaloRec.CaloCellFlags import jobproperties - if jobproperties.CaloCellFlags.doFastCaloSim: - doAtlfastII=True - else: - doAtlfastII=False - cellcalibtool = getStandardCalibTool(doAtlfastII) - calibtool_name = cellcalibtool.name() - theMETRefinedGammaTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name - - theMETRefinedGammaTool.BackNavigationTo = "Cell" # to "Cell" - theMETRefinedGammaTool.MissingETOutKey = "MET_RefGamma"+self.suffix - #----------------- - theMETGammaResolver = METClusterResolverTool("GammaResolve"+self.suffix) - theMETGammaResolver.ReferenceClusterContainer = "CaloCalTopoCluster" - theMETRefinedGammaTool.ClusterResolverTool = theMETGammaResolver.getFullName() - - except: - mlog.error("could not get handle to METRefinedEleTool Quit") - mlog.error (traceback.format_exc()) - return False - - # add cellcalibtool - theMETRefinedEleTool += cellcalibtool - theMETRefinedEleTool += theMETEleResolver - if self.photon_doPhotonTool: - theMETRefinedGammaTool += cellcalibtool - theMETRefinedGammaTool += theMETGammaResolver - - # add the METRefinedEleTool to list of tools - theMETRefAlg.AlgTools+= [ theMETRefinedEleTool.getFullName() ] - if self.photon_doPhotonTool: - theMETRefAlg.AlgTools+= [ theMETRefinedGammaTool.getFullName() ] - - # add tools to alg - theMETRefAlg += theMETRefinedEleTool - if self.photon_doPhotonTool: - theMETRefAlg += theMETRefinedGammaTool - #theMETRefAlg.OutputLevel = DEBUG - - #------------------------------------------------------------------------------------------------ - # configure tools: METRefinedTauTool => calibrator Tool for ATLFASTII - if self.tau_doTauTool: - try: - from MissingET.MissingETConf import METRefinedTauTool - theMETRefinedTauTool = METRefinedTauTool("METRefTau"+self.suffix); - - theMETRefinedTauTool.TauInputCollectionKey = self.tau_TauInputCollectionKey # or Tau1P3PContainer - theMETRefinedTauTool.isTau = self.tau_isTau #"Tight" # Tight, Medium, Loose, Old - theMETRefinedTauTool.CalibType = self.tau_calibType # H1 or LocHad - theMETRefinedTauTool.TauSignalConeSize = self.tau_TauSignalConeSize - theMETRefinedTauTool.TauPtCut = self.tau_TauPtCut - theMETRefinedTauTool.RemoveResiduals = self.tau_RemoveResiduals - theMETRefinedTauTool.MinimumMETContribution= self.tau_MinimumMETContribution - - # if doFastCaloSim set calibrator tool for ATLFAST2 - from CaloRec.CaloCellFlags import jobproperties - if jobproperties.CaloCellFlags.doFastCaloSim: - doAtlfastII=True - else: - doAtlfastII=False - - cellcalibtool = getStandardCalibTool(doAtlfastII); - calibtool_name = cellcalibtool.name(); - theMETRefinedTauTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name - - theMETRefinedTauTool.BackNavigationTo = "Topo" - theMETRefinedTauTool.Cell2ClusterMapKey = "CaloCell2TopoCluster" - theMETRefinedTauTool.MissingETOutKey = "MET_RefTau"+self.suffix - - except: - mlog.error("could not get handle to METRefinedTauTool Quit") - mlog.error (traceback.format_exc()) - return False - - # add cellcalibtool - theMETRefinedTauTool += cellcalibtool - - # add METRefinedTauTool to list of tools - theMETRefAlg.AlgTools+= [ theMETRefinedTauTool.getFullName() ] - - # add tools to alg - theMETRefAlg += theMETRefinedTauTool - - - - #------------------------------------------------------------------------------------------------ - # configure tools: METRefinedJetTool => calibrator Tool for ATLFASTII - try: - from MissingET.MissingETConf import METRefinedJetTool - theMETRefinedJetTool = METRefinedJetTool("METRefJet"+self.suffix); - if rec.readAOD(): - theMETRefinedJetTool.JetInputCollectionKey = self.jet_JetInputCollectionKey - theMETRefinedJetTool.VxContainerKey = self.jet_vxcontainerkey - theMETRefinedJetTool.JVFTool = jvatool - theMETRefinedJetTool.UseCustomVxContainer = self.jet_UseCustomVxContainer - theMETRefinedJetTool.JetPtCut = self.jet_JetPtCut # cut on jet pt - #theMETRefinedJetTool.JetMaxPtCut = self.jet_JetMaxPtCut # cut on jet pt - theMETRefinedJetTool.CalibType = self.jet_calibType # H1 or LocHad - theMETRefinedJetTool.ApplyJetScale = self.jet_ApplyJetScale - theMETRefinedJetTool.UseJetMomentForScale = self.jet_UseJetMomentForScale - theMETRefinedJetTool.JetMomentForScale = self.jet_JetMomentForScale - theMETRefinedJetTool.ApplyJetJVF = self.jet_ApplyJetJVF - theMETRefinedJetTool.UseJetMomentForScale = self.jet_UseJetMomentForScale - theMETRefinedJetTool.MissingETOutKey = "MET_RefJet"+self.suffix - theMETRefinedJetTool.RemoveResiduals = self.jet_RemoveResiduals - theMETRefinedJetTool.MinimumMETContribution= self.jet_MinimumMETContribution - else: - theMETRefinedJetTool.JetInputCollectionKey = self.jet_JetInputCollectionKey - theMETRefinedJetTool.VxContainerKey = self.jet_vxcontainerkey - theMETRefinedJetTool.JVFTool = jvatool - theMETRefinedJetTool.UseCustomVxContainer = self.jet_UseCustomVxContainer - theMETRefinedJetTool.JetPtCut = self.jet_JetPtCut - theMETRefinedJetTool.JetMaxPtCut = self.jet_JetMaxPtCut # cut on jet pt - theMETRefinedJetTool.CalibType = self.jet_calibType # H1 or LocHad - theMETRefinedJetTool.ApplyJetScale = self.jet_ApplyJetScale - theMETRefinedJetTool.UseJetMomentForScale = self.jet_UseJetMomentForScale - theMETRefinedJetTool.JetMomentForScale = self.jet_JetMomentForScale - theMETRefinedJetTool.ApplyJetJVF = self.jet_ApplyJetJVF - theMETRefinedJetTool.UseJetMomentForScale = self.jet_UseJetMomentForScale - theMETRefinedJetTool.BackNavigationTo = "Topo" # to "Topo" or to "Cell" - theMETRefinedJetTool.MissingETOutKey = "MET_RefJet"+self.suffix - theMETRefinedJetTool.RemoveResiduals = True - theMETRefinedJetTool.MinimumMETContribution= 0.5 - - # if doFastCaloSim set calibrator tool for ATLFAST2 - from CaloRec.CaloCellFlags import jobproperties - if jobproperties.CaloCellFlags.doFastCaloSim: - doAtlfastII=True - else: - doAtlfastII=False - cellcalibtool = getStandardCalibTool(doAtlfastII); - calibtool_name = cellcalibtool.name(); - theMETRefinedJetTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name - except: - mlog.error("could not get handle to METRefinedJetTool Quit") - mlog.error (traceback.format_exc()) - return False - - # add cellcalibtool - theMETRefinedJetTool += cellcalibtool - - # add METRefinedJetTool to list of tools - theMETRefAlg.AlgTools+= [ theMETRefinedJetTool.getFullName() ] - - # add tools to alg - theMETRefAlg += theMETRefinedJetTool - #------------------------------------------------------------------------------------------------ - # configure tools: METSoftJetsTool - if self.jet_RunSoftJetsTool: - try: - from MissingET.MissingETConf import METRefinedJetTool - theMETSoftJetsTool = METRefinedJetTool("METSoftJets"+self.suffix); - if rec.readAOD(): - theMETSoftJetsTool.JetInputCollectionKey = self.jet_JetInputCollectionKey - theMETSoftJetsTool.JVFTool = jvatool - theMETSoftJetsTool.UseCustomVxContainer = False - theMETSoftJetsTool.JetPtCut = self.jet_SoftJetsPtCut # cut on jet pt - theMETSoftJetsTool.JetMaxPtCut = self.jet_SoftJetsMaxPtCut # cut on jet pt - theMETSoftJetsTool.CalibType = self.jet_SoftJetsCalibType - theMETSoftJetsTool.ApplyJetScale = self.jet_ApplySoftJetsScale - theMETSoftJetsTool.UseJetMomentForScale = self.jet_UseJetMomentForScale - theMETSoftJetsTool.JetMomentForScale = self.jet_JetMomentForScale - theMETSoftJetsTool.MissingETOutKey = "MET_SoftJets"+self.suffix - theMETSoftJetsTool.RemoveResiduals = self.jet_SoftJetsRemoveResiduals - theMETSoftJetsTool.MinimumMETContribution= self.jet_SoftJetsMinimumMETContribution - else: - theMETSoftJetsTool.JetInputCollectionKey = self.jet_JetInputCollectionKey - theMETSoftJetsTool.JVFTool = jvatool - theMETSoftJetsTool.UseCustomVxContainer = False - theMETSoftJetsTool.JetPtCut = self.jet_SoftJetsPtCut - theMETSoftJetsTool.JetMaxPtCut = self.jet_SoftJetsMaxPtCut - theMETSoftJetsTool.CalibType = self.jet_SoftJetsCalibType - theMETSoftJetsTool.ApplyJetScale = self.jet_ApplySoftJetsScale - theMETSoftJetsTool.UseJetMomentForScale = self.jet_UseJetMomentForScale - theMETSoftJetsTool.JetMomentForScale = self.jet_JetMomentForScale - theMETSoftJetsTool.BackNavigationTo = "Topo" # to "Topo" or to "Cell" - theMETSoftJetsTool.MissingETOutKey = "MET_SoftJets"+self.suffix - theMETSoftJetsTool.RemoveResiduals = True - theMETSoftJetsTool.MinimumMETContribution= 0.5 - - # if doFastCaloSim set calibrator tool for ATLFAST2 - from CaloRec.CaloCellFlags import jobproperties - if jobproperties.CaloCellFlags.doFastCaloSim: - doAtlfastII=True - else: - doAtlfastII=False - cellcalibtool = getStandardCalibTool(doAtlfastII); - calibtool_name = cellcalibtool.name(); - theMETSoftJetsTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name - except: - mlog.error("could not get handle to METSoftJetsTool Quit") - mlog.error (traceback.format_exc()) - return False - - # add cellcalibtool - theMETSoftJetsTool += cellcalibtool - - # add METSoftJetsTool to list of tools - theMETRefAlg.AlgTools+= [ theMETSoftJetsTool.getFullName() ] - - # add tools to alg - theMETRefAlg += theMETSoftJetsTool - - #------------------------------------------------------------------------------------------------ - # configure tools: METRefinedMuonTool - if not rec.readAOD(): - try: - from AthenaCommon.DetFlags import DetFlags - if DetFlags.detdescr.Muon_on(): - try: - from MissingET.MissingETConf import METRefinedMuonTool - theMETRefMuonTrackTool = METRefinedMuonTool("METRefMuonTrack"+self.suffix, - MuonContainer = self.muon_Container(), - outKey = "MET_RefMuon_Track_"+self.muon_algorithm+self.suffix, - cut1Chi2OverDoF = -1000., # or 0. if Muid - cut2Chi2OverDoF = 1000., # or 10. if Muid - CaloMuonCollection = "CaloMuonCollection", - MuTagCollection = self.muon_Container(), - JetContainerName = self.jet_JetInputCollectionKey,#theMETRefinedJetTool.JetInputCollectionKey, - Muon_Selected_Type = "Isol", # Isol = use muon tracks - Muon_Add_Crack = "On", # add muon tracks from cracks - IsolDefinition = self.muon_isolationAlg, - fillComposition = False - ) - theMETRefMuonSpectroTool = METRefinedMuonTool("METRefMuonSpectro"+self.suffix, - MuonContainer = self.muon_Container(), # or "MuidMuonCollection" - outKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, - cut1Chi2OverDoF = -1000., # or 0. if Muid - cut2Chi2OverDoF = 1000., # or 10. if Muid - CaloMuonCollection = "CaloMuonCollection", - MuTagCollection = self.muon_Container(), - JetContainerName = self.jet_JetInputCollectionKey,#theMETRefinedJetTool.JetInputCollectionKey, - Muon_Selected_Type = "NonIsol", # NonIsol = use spectro muons - IsolDefinition = self.muon_isolationAlg, - Muon_Add_Crack = "Off" - ) - # add theMETRefMuonTool to list of tools - theMETRefAlg.AlgTools+= [ theMETRefMuonTrackTool.getFullName() ] - theMETRefAlg.AlgTools+= [ theMETRefMuonSpectroTool.getFullName() ] - # add tool to alg - theMETRefAlg += theMETRefMuonTrackTool - theMETRefAlg += theMETRefMuonSpectroTool - except: - mlog.error("could not get handle to METRefinedMuonTool Quit") - mlog.error (traceback.format_exc()) - return False - except: - mlog.error("could not import DetFlags") - - #------------------------------------------------------------------------------------------------ - # configure tools: METRefinedClusterTool => calibrator Tool for ATLFASTII - try: - from MissingET.MissingETConf import METRefinedClusterTool - from MissingET.MissingETConf import METTrackSelectorTool - from AthenaCommon.AppMgr import ToolSvc - ToolSvc += METTrackSelectorTool("METTrackSelTool"+self.suffix) - - theMETRefinedClusterTool = METRefinedClusterTool("METRefCluster"+self.suffix); - theMETRefinedClusterTool.ClusterInputCollectionKey = "CaloCalTopoCluster" - theMETRefinedClusterTool.VxContainerKey = self.cellout_vxcontainerkey - theMETRefinedClusterTool.CalibType = self.cellout_calibType # Eflow, Tracks - theMETRefinedClusterTool.TrackType = self.cellout_trackType # STTrack, STTrackPV,STTrackCone - theMETRefinedClusterTool.MissingETOutKey = "MET_CellOut"+self.suffix - mytrackselector = METTrackSelectorTool("METTrackSelTool"+self.suffix) - mytrackselector.JetContainerName = self.cellout_JetInputCollectionKey - mytrackselector.MinPtTrack = self.cellout_pttrack - theMETRefinedClusterTool.METTrackSelTool = mytrackselector - - # if doFastCaloSim set calibrator tool for ATLFAST2 - from CaloRec.CaloCellFlags import jobproperties - if jobproperties.CaloCellFlags.doFastCaloSim: - doAtlfastII=True - else: - doAtlfastII=False - cellcalibtool = getStandardCalibTool(doAtlfastII); - calibtool_name = cellcalibtool.name(); - theMETRefinedClusterTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name - - except: - mlog.error("could not get handle to METRefinedClusterTool Quit") - mlog.error (traceback.format_exc()) - return False - - # add cellcalibtool - theMETRefinedClusterTool += cellcalibtool - - # add METRefinedClusterTool to list of tools - theMETRefAlg.AlgTools+= [ theMETRefinedClusterTool.getFullName() ] - - # add tools to alg - theMETRefAlg += theMETRefinedClusterTool - #-------------------------------------------------------------------------------- - # configure tools: METRefinedClusterTool (2) => only for STVF pile-up suppression - if self.plupSuppCorr == "STVF": - try: - from MissingET.MissingETConf import METRefinedClusterTool - from MissingET.MissingETConf import METTrackSelectorTool - from AthenaCommon.AppMgr import ToolSvc - ToolSvc += METTrackSelectorTool("METTrackSelTool"+self.suffix) - - theMETRefinedClusterTrackTool = METRefinedClusterTool("METRefClusterTrack"+self.suffix); - theMETRefinedClusterTrackTool.ClusterInputCollectionKey = "CaloCalTopoCluster" - theMETRefinedClusterTrackTool.VxContainerKey = self.cellout_vxcontainerkey - theMETRefinedClusterTrackTool.CalibType = self.cellout_calibType2 # Eflow, Tracks - theMETRefinedClusterTrackTool.TrackType = self.cellout_trackType2 # STTrack, STTrackPV,STTrackCone - theMETRefinedClusterTrackTool.MissingETOutKey = "MET_CellOut_Track"+self.suffix - mytrackselector = METTrackSelectorTool("METTrackSelTool"+self.suffix) - mytrackselector.JetContainerName = self.cellout_JetInputCollectionKey - mytrackselector.MinPtTrack = self.cellout_pttrack - theMETRefinedClusterTrackTool.METTrackSelTool = mytrackselector - - except: - mlog.error("could not get handle to METRefinedClusterTool Quit") - mlog.error (traceback.format_exc()) - return False - - # add cellcalibtool - theMETRefinedClusterTrackTool += cellcalibtool - - # add METRefinedClusterTool to list of tools - theMETRefAlg.AlgTools+= [ theMETRefinedClusterTrackTool.getFullName() ] - - # add tools to alg - theMETRefAlg += theMETRefinedClusterTrackTool - #-------------------------------------------------------------------------------- - # configure tools: METRefinedClusterTool (3) => only for STVF pile-up suppression - try: - from MissingET.MissingETConf import METRefinedClusterTool - from MissingET.MissingETConf import METTrackSelectorTool - from AthenaCommon.AppMgr import ToolSvc - ToolSvc += METTrackSelectorTool("METTrackSelTool"+self.suffix) - - theMETRefinedClusterTrackPVTool = METRefinedClusterTool("METRefClusterTrackPV"+self.suffix); - theMETRefinedClusterTrackPVTool.ClusterInputCollectionKey = "CaloCalTopoCluster" - theMETRefinedClusterTrackPVTool.VxContainerKey = self.cellout_vxcontainerkey - theMETRefinedClusterTrackPVTool.CalibType = self.cellout_calibType3 # Eflow, Tracks - theMETRefinedClusterTrackPVTool.TrackType = self.cellout_trackType3 # STTrack, STTrackPV,STTrackCone - theMETRefinedClusterTrackPVTool.MissingETOutKey = "MET_CellOut_TrackPV"+self.suffix - mytrackselector = METTrackSelectorTool("METTrackSelTool"+self.suffix) - mytrackselector.JetContainerName = self.cellout_JetInputCollectionKey - mytrackselector.MinPtTrack = self.cellout_pttrack - theMETRefinedClusterTrackPVTool.METTrackSelTool = mytrackselector - - except: - mlog.error("could not get handle to METRefinedClusterTool Quit") - mlog.error (traceback.format_exc()) - return False - - # add cellcalibtool - theMETRefinedClusterTrackPVTool += cellcalibtool - - # add METRefinedClusterTool to list of tools - theMETRefAlg.AlgTools+= [ theMETRefinedClusterTrackPVTool.getFullName() ] - - # add tools to alg - theMETRefAlg += theMETRefinedClusterTrackPVTool - - #------------------------------------------------------------------------------------------------ - # configure tools: METMuonTool - from AthenaCommon.DetFlags import DetFlags - if DetFlags.detdescr.Muon_on(): - try: - from MissingET.MissingETConf import METMuonTool - theMETMuonBoyTrackTool = METMuonTool("MuonIsol"+self.suffix, - MuonContainer = self.muon_Container(), - outKey ="MET_Muon_Isol_"+self.muon_algorithm+self.suffix, - ApplyChi2OverDoFCut ="Off", - cut1Chi2OverDoF = 0. , - cut2Chi2OverDoF = 10., - CaloMuonCollection = "CaloMuonCollection", - MuTagCollection = self.muon_Container(), - JetContainerName = theMETRefinedJetTool.JetInputCollectionKey, - Muon_Selected_Type = "Isol", # Isol = use muon tracks - Add_MuTag = "On", # add muon tracks from cracks - IsolDefinition = self.muon_isolationAlg, - TrackMethod = self.muon_trackMethod() - ) - theMETMuonBoySpectroTool = METMuonTool("MuonNonIsol"+self.suffix, - MuonContainer = self.muon_Container(), - outKey ="MET_Muon_NonIsol_"+self.muon_algorithm+self.suffix, - ApplyChi2OverDoFCut ="Off", - cut1Chi2OverDoF = 0. , - cut2Chi2OverDoF = 10., - CaloMuonCollection = "CaloMuonCollection", - MuTagCollection = self.muon_Container(), - JetContainerName = theMETRefinedJetTool.JetInputCollectionKey, - Muon_Selected_Type = "NonIsol", # NonIsol = use spectro muons - IsolDefinition = self.muon_isolationAlg, - TrackMethod = self.muon_trackMethod() - ) - theMETMuonTool = METMuonTool("Muon"+self.suffix, - MuonContainer = self.muon_Container(), - outKey ="MET_Muon_"+self.muon_algorithm+self.suffix, - ApplyChi2OverDoFCut ="Off", - cut1Chi2OverDoF = 0., - cut2Chi2OverDoF = 10., - CaloMuonCollection = "CaloMuonCollection", - MuTagCollection = self.muon_Container(), - JetContainerName = theMETRefinedJetTool.JetInputCollectionKey, - Muon_Selected_Type = "All", # All = use spectro muons - IsolDefinition = self.muon_isolationAlg, - TrackMethod = self.muon_trackMethod() - ) - - except: - mlog.error("could not get handle to METMuonTool Quit") - mlog.error (traceback.format_exc()) - return False - - # add the METMuonTool to list of tools - theMETRefAlg.AlgTools+= [ theMETMuonBoyTrackTool.getFullName() ] - theMETRefAlg.AlgTools+= [ theMETMuonBoySpectroTool.getFullName() ] - theMETRefAlgMu.AlgTools+= [ theMETMuonTool.getFullName() ] - - # add tool to alg - theMETRefAlg += theMETMuonBoyTrackTool - theMETRefAlg += theMETMuonBoySpectroTool - theMETRefAlgMu += theMETMuonTool - - #------------------------------------------------------------------------------------------------ - mlog.info(" now adding to sequence") - self.sequence += theMETRefAlg - from AthenaCommon.DetFlags import DetFlags - if DetFlags.detdescr.Muon_on(): - self.sequence += theMETRefAlgMu - # - # - # - # - # - # - # - # - # - # - try: - from MissingET.MissingETConf import METAlg - theMETAlg=METAlg("METAlg"+self.suffix) - except: - mlog.error("could not import MissingET.METAlg") - mlog.error(traceback.format_exc()) - return False - #------------------------------------------------------------------------------------------------ - try: - from MissingET.MissingETConf import METCryoTool - - theMETCryoTopoTool = METCryoTool("CryoTopo"+self.suffix); - - theMETCryoTopoTool.JetCollectionName = theMETRefinedJetTool.JetInputCollectionKey - # if doFastCaloSim set calibrator tool for ATLFAST2 - from CaloRec.CaloCellFlags import jobproperties - if jobproperties.CaloCellFlags.doFastCaloSim: - doAtlfastII=True - else: - doAtlfastII=False - - cellcalibtool = getStandardCalibTool(doAtlfastII); - calibtool_name = cellcalibtool.name(); - theMETCryoTopoTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name - - theMETCryoTopoTool.outKey = "MET_Cryo"+self.suffix - - # add cellcalibtool - theMETCryoTopoTool += cellcalibtool - - # add theMETCryoTool to list of tools - theMETAlg.AlgTools+= [ theMETCryoTopoTool.getFullName() ] - - # add tool to alg - theMETAlg += theMETCryoTopoTool - except: - mlog.error("could not get handle to METCryoTopoTool Quit") - mlog.error(traceback.format_exc()) - return False - - #------------------------------------------------------------------------------------------------ - # configure tools: METFinal - try: - from MissingET.MissingETConf import METFinalTool - theMETMuonFinal = METFinalTool("MuFinal"+self.suffix, - WhichCalc = "MuonCalc", # calculate final muon term - outKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # output key - muonBOYTrack = "MET_Muon_Isol_"+self.muon_algorithm+self.suffix, # key for track muons - muonBOYSpectro= "MET_Muon_NonIsol_"+self.muon_algorithm+self.suffix, # key for spectro muons - ) - if self.jet_RunSoftJetsTool: - theMETRefFinal = METFinalTool("RefFinal"+self.suffix, - WhichCalc = "RefCalib", # Refined Calib applied - plupSupp = self.plupSuppCorr, # Off, STVF - EleRefKey = "MET_RefEle"+self.suffix, # Specify key for Ref Ele - GammaRefKey = "MET_RefGamma"+self.suffix, # Specify key for Ref Gamma - MuoRefKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, # Specify key for Ref Muon - TauRefKey = "MET_RefTau"+self.suffix, # Specify key for Ref Tau - JetRefKey = "MET_RefJet"+self.suffix, # Specify key for Ref Jet - SoftJetsKey = "MET_SoftJets"+self.suffix, # Specify key for SoftJets - CellOutKey = "MET_CellOut"+self.suffix, # Specify key for Ref CellOut - muonKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # Key for Muon contrib - cryoTerm = self.cryo_ApplyCorrection, # "On"/"Off"= cryostat corr On / Off - cryoKey = "MET_Cryo"+self.suffix, # Key for Cryo corr: MET_Cryo, MET_CryoCone - outKey = "MET_RefFinal"+self.suffix - ) - if not self.jet_RunSoftJetsTool and self.plupSuppCorr != "STVF" : - theMETRefFinal = METFinalTool("RefFinal"+self.suffix, - WhichCalc = "RefCalib", # Refined Calib applied - plupSupp = self.plupSuppCorr, # Off, STVF - EleRefKey = "MET_RefEle"+self.suffix, # Specify key for Ref Ele - GammaRefKey = "MET_RefGamma"+self.suffix, # Specify key for Ref Gamma - MuoRefKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, # Specify key for Ref Muon - TauRefKey = "MET_RefTau"+self.suffix, # Specify key for Ref Tau - JetRefKey = "MET_RefJet"+self.suffix, # Specify key for Ref Jet - CellOutKey = "MET_CellOut"+self.suffix, # Specify key for Ref CellOut - muonKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # Key for Muon contrib - cryoTerm = self.cryo_ApplyCorrection, # "On"/"Off"= cryostat corr On / Off - cryoKey = "MET_Cryo"+self.suffix, # Key for Cryo corr: MET_Cryo, MET_CryoCone - outKey = "MET_RefFinal"+self.suffix - ) - if not self.jet_RunSoftJetsTool and self.plupSuppCorr == "STVF" : - theMETRefFinal = METFinalTool("RefFinal"+self.suffix, - WhichCalc = "RefCalib", # Refined Calib applied - plupSupp = self.plupSuppCorr, # Off, STVF - EleRefKey = "MET_RefEle"+self.suffix, # Specify key for Ref Ele - GammaRefKey = "MET_RefGamma"+self.suffix, # Specify key for Ref Gamma - MuoRefKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, # Specify key for Ref Muon - TauRefKey = "MET_RefTau"+self.suffix, # Specify key for Ref Tau - JetRefKey = "MET_RefJet", # Specify key for default Ref Jet - SoftJetsKey = "MET_SoftJets", # Specify key for default SoftJets - CellOutKey = "MET_CellOut_Eflow", # Specify key for default CellOutEflow - JetRefCorrKey = "MET_RefJet"+self.suffix, # Specify key for Ref Jet Corr - CellOutEflowKey = "MET_CellOut"+self.suffix, # Specify key for Ref CellOut - celloutTrackKey = "MET_CellOut_Track"+self.suffix, # Specify key for Ref CellOut - celloutTrackPVKey= "MET_CellOut_TrackPV"+self.suffix, # Specify key for Ref CellOut - muonKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # Key for Muon contrib - cryoTerm = self.cryo_ApplyCorrection, # "On"/"Off"= cryostat corr On / Off - cryoKey = "MET_Cryo"+self.suffix, # Key for Cryo corr: MET_Cryo, MET_CryoCone - outKey = "MET_RefFinal"+self.suffix - ) - if self.plupSuppCorr == "STVF": - theMETCellOutSTVF = METFinalTool("CellOutCorr"+self.suffix, - WhichCalc = "RefCalib", # Refined Calib applied - plupSupp = self.plupSuppCorr, # Off, STVF - cellOutCorr = self.celloutCorrection, - EleRefKey = "MET_RefEle"+self.suffix, # Specify key for Ref Ele - GammaRefKey = "MET_RefGamma"+self.suffix, # Specify key for Ref Gamma - MuoRefKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, # Specify key for Ref Muon - TauRefKey = "MET_RefTau"+self.suffix, # Specify key for Ref Tau - JetRefKey = "MET_RefJet", # Specify key for Ref Jet - SoftJetsKey = "MET_SoftJets", # Specify key for default SoftJets - CellOutKey = "MET_CellOut_Eflow", # Specify key for default CellOutEflow - JetRefCorrKey = "MET_RefJet"+self.suffix, # Specify key for Ref Jet - CellOutEflowKey = "MET_CellOut"+self.suffix, # Specify key for Ref CellOut - celloutTrackKey = "MET_CellOut_Track"+self.suffix, # Specify key for Ref CellOut - celloutTrackPVKey= "MET_CellOut_TrackPV"+self.suffix, # Specify key for Ref CellOut - muonKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # Key for Muon contrib - cryoTerm = self.cryo_ApplyCorrection, # "On"/"Off"= cryostat corr On / Off - cryoKey = "MET_Cryo"+self.suffix, # Key for Cryo corr: MET_Cryo, MET_CryoCone - outKey = "MET_CellOutCorr"+self.suffix - ) - - except: - mlog.error("could not get handle to METRefFinal Quit") - mlog.error(traceback.format_exc()) - return False - - # add METFinalTool to list of tools - theMETAlg.AlgTools+= [ theMETMuonFinal.getFullName() ] - theMETAlg.AlgTools+= [ theMETRefFinal.getFullName() ] - if self.plupSuppCorr == "STVF": - theMETAlg.AlgTools+= [ theMETCellOutSTVF.getFullName() ] - # add tools to alg - theMETAlg += theMETMuonFinal - theMETAlg += theMETRefFinal - if self.plupSuppCorr == "STVF": - theMETAlg += theMETCellOutSTVF - - #------------------------------------------------------------------------------------------------ - # add algorithm to the specified Sequence (this should always come at the end) - - mlog.info(" now adding to sequence") - self.sequence += theMETAlg - - return True - - -def make_METRefAlg(_suffix=''): - name = 'METRefAlg' + _suffix - cls = type (name, (METRefGetter_newplup,), {}) - cls.suffix = _suffix - cls.sequence = AlgSequence() - cls.ele_EgammaInputCollectionKey= "ElectronAODCollection" - cls.ele_noCut = False - cls.ele_isEM = PyAthena.egammaPID.ElectronIDMediumPP - cls.ele_EtCut = 10.0*GeV - cls.ele_calibType = "RefCalib" - - cls.gamma_EleInputCollectionKey = "ElectronAODCollection" - cls.gamma_EgammaInputCollectionKey= "PhotonAODCollection" - cls.gamma_EtCut = 10.0*GeV - cls.gamma_isEM = PyAthena.egammaPID.PhotonIDTight - cls.gamma_calibType = "EmScale" - cls.gamma_isEMMatch = PyAthena.egammaPID.ElectronIDMediumPP - cls.gamma_ElectronEtCutMatch = 10.0*GeV - - - cls.tau_doTauTool = True - cls.tau_TauInputCollectionKey = "TauRecContainer" - cls.tau_isTau = "BDTMedium_EleBDTMedium_MuonVeto" - cls.tau_calibType = "ExclRefCalib" - cls.tau_TauSignalConeSize = 0.3 - cls.tau_TauPtCut = 20.*GeV - cls.tau_RemoveResiduals = True - cls.tau_MinimumMETContribution = 0.5 - - cls.jet_JetInputCollectionKey = "AntiKt4LCTopoJets" - cls.jet_vxcontainerkey = "VxPrimaryCandidate" - cls.jet_UseCustomVxContainer = False - cls.jet_JetPtCut = 20.0*GeV - cls.jet_JetMaxPtCut = 1000000.0*GeV - cls.jet_ApplyJetScale = "Yes" - cls.jet_UseJetMomentForScale = True - cls.jet_JetMomentForScale = "LCJES" - cls.jet_ApplyJetJVF = "No" - cls.jet_JetMomentForJVF = "JVF" - cls.jet_calibType = "LocHad" - cls.jet_RemoveResiduals = True - cls.jet_MinimumMETContribution = 0.5 - - cls.jet_RunSoftJetsTool = True - cls.jet_SoftJetsInputCollectionKey = "AntiKt4LCTopoJets" - cls.jet_SoftJetsCalibType = "LocHad" - cls.jet_SoftJetsPtCut = 5.0*GeV - cls.jet_SoftJetsMaxPtCut = 20.0*GeV - cls.jet_ApplySoftJetsScale = "No" - cls.jet_SoftJetsUseJetMomentForScale = False - cls.jet_SoftJetsJetMomentForScale = "LCJES" - cls.jet_SoftJetsRemoveResiduals = True - cls.jet_SoftJetsMinimumMETContribution= 0.5 - - cls.cellout_vxcontainerkey = "VxPrimaryCandidate" - cls.cellout_calibType = "Eflow" - cls.cellout_trackType = "STTrack" - cls.cellout_pttrack = 150. - cls.cellout_JetInputCollectionKey = "AntiKt4LCTopoJets" - cls.photon_doPhotonTool = True - - cls.cryo_ApplyCorrection = "Off" - cls.muon_container = "StacoMuonCollection" - cls.muon_algorithm = "Staco" - cls.muon_isolationAlg = "dRJet" - - cls.plupSuppCorr = "Off" - cls.celloutCorrection = "Off" - return cls diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/PhysicsD3PDProdFlags.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/PhysicsD3PDProdFlags.py deleted file mode 100644 index d457e2870255d4bdc948557b2417c4e52f8b50c6..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/PhysicsD3PDProdFlags.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration - -# $Id: PhysicsD3PDProdFlags.py 531461 2012-12-20 21:43:15Z nedwards $ -# -# @file PhysicsD3PDMaker/python/PhysicsD3PDProdFlags.py -# @author scott snyder <snyder@bnl.gov> -# @date Jun, 2012 -# @brief Define flags and configuration settings used when making -# Physics D3PDs from production transforms. -# -# Any objects here with a name of the form Write*D3PD that derive -# from JobProperty are added to D3PDProdFlags. -# - - -from AthenaCommon.JobProperties import JobProperty - - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightTriggerBitsD3PDObject.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightTriggerBitsD3PDObject.py deleted file mode 100644 index 985138e55689509e33097704954e0a6a22ee4500..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightTriggerBitsD3PDObject.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# $Id: SMWZLightTriggerBitsD3PDObject.py 467769 2011-11-11 22:36:30Z boonekam $ -# -# @file PhysicsD3PDMaker/python/SMWZLightTriggerBitsD3PDObject.py -# @author Haifeng Li <Haifeng.Li@cern.ch> -# @date May, 2010 -# @brief Define trigger bit blocks for SMWZ -# - - - -import D3PDMakerCoreComps -import TriggerD3PDMaker -from TriggerD3PDMaker.defineTriggerBits import defineTriggerBits -from D3PDMakerCoreComps.D3PDObject import D3PDObject -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -# -# The maker function. -# We don't get any input from SG (directly). -# -def makeSMWZLightTriggerBitsD3PDObject (name, - prefix, - object_name, - getter = None, - sgkey = ''): - - return D3PDMakerCoreComps.VoidObjFillerTool (name, - Prefix = prefix - ) - -# Create the object type. -SMWZLightTriggerBitsD3PDObject = \ - D3PDObject (makeSMWZLightTriggerBitsD3PDObject, - default_name = 'SMWZLightTriggerBitsFiller') - - -###### -# Define blocks. - -if D3PDMakerFlags.DoTrigger(): - - defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_e*']) - defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_2e*']) - defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_g*']) - defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_2g*']) - defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_mu*']) - defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_2mu*']) - defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_xe*']) - defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_xs*']) - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZTriggerBitsD3PDObject.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZTriggerBitsD3PDObject.py deleted file mode 100644 index 5d15b0c8a1810fb994f4207f71972eec62cfef31..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZTriggerBitsD3PDObject.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# $Id$ -# -# @file PhysicsD3PDMaker/python/SMWZTriggerBitsD3PDObject.py -# @author Haifeng Li <Haifeng.Li@cern.ch> -# @date May, 2010 -# @brief Define trigger bit blocks for SMWZ -# - - - -import D3PDMakerCoreComps -import TriggerD3PDMaker -from TriggerD3PDMaker.defineTriggerBits import defineTriggerBits -from D3PDMakerCoreComps.D3PDObject import D3PDObject -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -# -# The maker function. -# We don't get any input from SG (directly). -# -def makeSMWZTriggerBitsD3PDObject (name, - prefix, - object_name, - getter = None, - sgkey = ''): - - return D3PDMakerCoreComps.VoidObjFillerTool (name, - Prefix = prefix - ) - -# Create the object type. -SMWZTriggerBitsD3PDObject = \ - D3PDObject (makeSMWZTriggerBitsD3PDObject, - default_name = 'SMWZTriggerBitsFiller') - - -###### -# Define blocks. - -if D3PDMakerFlags.DoTrigger(): - - defineTriggerBits (SMWZTriggerBitsD3PDObject, 0, - ['EF_.*']) - - ##bjet bits - defineTriggerBits (SMWZTriggerBitsD3PDObject, 0, - [ "L1_J10", - "L1_JE100", - "L1_JE140", - "L1_2J10_J50", - "L1_3J15", - "L1_3J20", - "L1_4J10", - "L1_4J15", - # Level 2 - "L2_2b10_medium_L1JE100" , - "L2_2b10_medium_L1JE140" , - "L2_2b15_medium_3L1J15" , - "L2_2b20_medium_3L1J20" , - "L2_2b10_medium_4L1J10" , - "L2_2b10_medium_L1_2J10J50", - "L2_3b10_loose_4L1J10", - "L2_3b15_loose_4L1J15", - # Event Filter - 'EF_b*', - 'EF_2b*', - 'EF_3b*' - ]) - - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/__init__.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/__init__.py deleted file mode 100644 index 74583d364ec2ca794156596c7254d9b234a940c6..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/ElectronSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/ElectronSelector.py deleted file mode 100644 index 22344662125c106bc0478233f89bce0ebf5a7e01..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/ElectronSelector.py +++ /dev/null @@ -1,38 +0,0 @@ -include.block( "PhysicsD3PDMaker/ElectronSelector.py" ) - -from ROOT import egammaPID -from ROOT import egammaParameters - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -preseq += D2PDElectronSelector( "SMWZ_HighPtElectronFilter", - inputCollection = 'ElectronAODCollection', - outputCollection = 'HighPtElectrons', - etMin = 20.0*Units.GeV, - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - electronID = egammaPID.ElectronIDLoosePP, - minNumberPassed = 1 - ) - -from RecExConfig.RecAlgsFlags import recAlgs -if recAlgs.doEgammaBremReco(): - gsfElectronContainer = 'HighPtGSFElectrons' - preseq += D2PDElectronSelector( "SMWZ_HighPtGSFElectronFilter", - inputCollection = 'GSFElectronAODCollection', - outputCollection = 'HighPtGSFElectrons', - etMin = 20.0*Units.GeV, - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - electronID = egammaPID.ElectronIDLoosePP, - minNumberPassed = 1 - ) -else: - gsfElectronContainer = 'None' - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/FatJetsConfig.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/FatJetsConfig.py deleted file mode 100644 index 7964da34f617c696e7029dd505d8fa39a64f903e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/FatJetsConfig.py +++ /dev/null @@ -1,34 +0,0 @@ -include.block("PhysicsD3PDMaker/FatJetsConfig.py") - -from JetRec.JetRecFlags import jetFlags -jetFlags.doBTagging = False -jetFlags.inputFileType = 'AOD' - -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -### -from HSG5DPDUtils.JSjets import createJSJets,getGroomingTools - -from HSG5DPDUtils.GroomedJetsConfig import getGroomedJetsConfig -dictsConfig = getGroomedJetsConfig() - -sj_n = [] -for dC in dictsConfig: - myjetfinder = dC[0]["JetFinder"] - myjetdr = dC[0]["JetdR"] - myjetinput = dC[0]["JetInput"] - myGroomingTools, catNames = getGroomingTools(dC[1]) - sj_n += [(myjetfinder+"%d"%(myjetdr*10) + myjetinput+x) for x in catNames if "Subjets" in x] - -from BTagging.BTaggingFlags import BTaggingFlags -for sj in sj_n: - BTaggingFlags.Jets += [sj] - BTaggingFlags.JetsWithInfoPlus += [sj] - BTaggingFlags.CalibrationChannelAliases += [sj+"->AntiKt4LCTopo" ] - -include("BTagging/BTagging_LoadTools.py") - -myJetKeys = [] -for dC in dictsConfig: - xx = createJSJets(dC[0], dC[1], preseq) - myJetKeys += [xx] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/JetSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/JetSelector.py deleted file mode 100644 index a48b651cf505792a677de83663d891ab0e097c69..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/JetSelector.py +++ /dev/null @@ -1,27 +0,0 @@ -include.block( "PhysicsD3PDMaker/JetSelector.py" ) - -from D2PDMaker.D2PDMakerConf import D2PDJetSelector - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -preseq += D2PDJetSelector( "SMWZ_HighPtJetFilter", - inputCollection = 'AntiKt4TopoEMJets', - outputCollection = 'HighPtJets', - ptMin = 20.0*Units.GeV ) - -preseq += D2PDJetSelector( "SMWZ_HighPtJetEM6Filter", - inputCollection = 'AntiKt6TopoEMJets', - outputCollection = 'HighPtJetsEM6', - ptMin = 20.0*Units.GeV ) - -preseq += D2PDJetSelector( "SMWZ_HighPtJetLC4Filter", - inputCollection = 'AntiKt4LCTopoJets', - outputCollection = 'HighPtJetsLC4', - ptMin = 20.0*Units.GeV ) - -preseq += D2PDJetSelector( "SMWZ_HighPtJetLC6Filter", - inputCollection = 'AntiKt4LCTopoJets', - outputCollection = 'HighPtJetsLC6', - ptMin = 20.0*Units.GeV ) - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtElectronPairSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtElectronPairSelector.py deleted file mode 100644 index eb547e382ddb8bf305a4d021dcb024466f99bab7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtElectronPairSelector.py +++ /dev/null @@ -1,56 +0,0 @@ -include.block( "PhysicsD3PDMaker/LowPtElectronPairSelector.py" ) - -from ROOT import egammaPID -from ROOT import egammaParameters - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - - -preseq += D2PDElectronSelector( "SMWZ_LowPtElectronFilter", - inputCollection = 'ElectronAODCollection', - outputCollection = 'LowPtElectrons', - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - electronID = egammaPID.ElectronIDMediumPP, - etMin = 5.0*Units.GeV ) - -preseq += D2PDElectronSelector( "SMWZ_MediumPtElectronFilter", - inputCollection = 'ElectronAODCollection', - outputCollection = 'MediumPtElectrons', - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - electronID = egammaPID.ElectronIDLoosePP, - etMin = 10.0*Units.GeV ) - - -from RecExConfig.RecAlgsFlags import recAlgs -if recAlgs.doEgammaBremReco(): - gsfElectronContainer = 'LowPtGSFElectrons' - preseq += D2PDElectronSelector( "SMWZ_LowPtGSFElectronFilter", - inputCollection = 'GSFElectronAODCollection', - outputCollection = 'LowPtGSFElectrons', - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - electronID = egammaPID.ElectronIDMediumPP, - etMin = 5.0*Units.GeV ) -else: - gsfElectronContainer = 'None' - - -preseq += D2PDParticleCombiner( "SMWZ_JPsieeFilter", - inputCollectionList = [ 'LowPtElectrons', 'LowPtElectrons' ], - outputCollection = 'JPsieeSelection', - minNumberPassed = 1, - massMax = 15.0*Units.GeV ) - -preseq += D2PDParticleCombiner( "SMWZ_ZeeFilter", - inputCollectionList = [ 'MediumPtElectrons', 'MediumPtElectrons' ], - outputCollection = 'ZeeSelection', - minNumberPassed = 1, - massMin = 50.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtMuonPairSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtMuonPairSelector.py deleted file mode 100644 index bf04c4a85c97491053732d82fffc73d4645482f1..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtMuonPairSelector.py +++ /dev/null @@ -1,49 +0,0 @@ -include.block( "PhysicsD3PDMaker/LowPtMuonPairSelector.py" ) - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from D2PDMaker.D2PDMakerConf import D2PDMuonSelector -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - - -# STACO - -preseq += D2PDMuonSelector( "SMWZ_LowPtMuonFilter", - inputCollection = 'StacoMuonCollection', - outputCollection = 'LowPtStacoMuons', - ptMin = 5.0*Units.GeV ) - -preseq += D2PDParticleCombiner( "SMWZ_JPsimumuStacoFilter", - inputCollectionList = [ 'LowPtStacoMuons', 'LowPtStacoMuons' ], - outputCollection = 'JPsimumuStacoSelection', - minNumberPassed = 1, - massMax = 15.0*Units.GeV ) - - -preseq += D2PDParticleCombiner( "SMWZ_ZmumuStacoFilter", - inputCollectionList = [ 'LowPtStacoMuons', 'LowPtStacoMuons' ], - outputCollection = 'ZmumuStacoSelection', - minNumberPassed = 1, - massMin = 50.0*Units.GeV ) - -# MUID - -preseq += D2PDMuonSelector( "SMWZ_LowPtMuidMuonFilter", - inputCollection = 'MuidMuonCollection', - outputCollection = 'LowPtMuidMuons', - ptMin = 5.0*Units.GeV ) - -preseq += D2PDParticleCombiner( "SMWZ_JPsimumuMuidFilter", - inputCollectionList = [ 'LowPtMuidMuons', 'LowPtMuidMuons' ], - outputCollection = 'JPsimumuMuidSelection', - minNumberPassed = 1, - massMax = 15.0*Units.GeV ) - -preseq += D2PDParticleCombiner( "SMWZ_ZmumuMuidFilter", - inputCollectionList = [ 'LowPtMuidMuons', 'LowPtMuidMuons' ], - outputCollection = 'ZmumuMuidSelection', - minNumberPassed = 1, - massMin = 50.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MuonSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MuonSelector.py deleted file mode 100644 index 9303cca5075f1750aaeb33fb16de2c8168d881ec..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MuonSelector.py +++ /dev/null @@ -1,27 +0,0 @@ -include.block( "PhysicsD3PDMaker/MuonSelector.py" ) - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from D2PDMaker.D2PDMakerConf import D2PDMuonSelector -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - - -# STACO - -preseq += D2PDMuonSelector( "SMWZ_HighPtStacoMuonFilter", - inputCollection = 'StacoMuonCollection', - outputCollection = 'HighPtStacoMuons', - ptMin = 20.0*Units.GeV, - minNumberPassed = 1 ) - - -# MUID - -preseq += D2PDMuonSelector( "SMWZ_HighPtMuidMuonFilter", - inputCollection = 'MuidMuonCollection', - outputCollection = 'HighPtMuidMuons', - ptMin = 20.0*Units.GeV, - minNumberPassed = 1 ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MyJetMake.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MyJetMake.py deleted file mode 100644 index 82216e505f8db2cd6c7981f00cac6fb79512c222..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MyJetMake.py +++ /dev/null @@ -1,57 +0,0 @@ -# Call as UserAlgs - -# Imports -from JetRec.JetRecConf import * -from JetRecTools.JetRecToolsConf import * -from JetRec.JetGetters import * -from JetCalibTools.JetCalibToolsConf import * -from AthenaCommon.SystemOfUnits import GeV -from RecExConfig.RecFlags import rec -from AthenaCommon.AlgSequence import AlgSequence -seq = AlgSequence() - -if rec.doTruth(): - # Needed for release 15 AntiKt6 truth jets - # make_StandardJetGetter('AntiKt', 0.6, 'Truth') - import D3PDMakerCoreComps - from D3PDMakerCoreComps.resolveSGKey import testSGKey - if not testSGKey ('JetCollection', 'AntiKt6TruthJets'): - make_StandardJetGetter('AntiKt', 0.6, 'Truth') - - # Add truth jet collection that includes all final state particles (including muons and neutrinos) - antikt4truthAlgAll = make_StandardJetGetter('AntiKt',0.4,'Truth',disable=False, - outputCollectionName='AntiKt4TruthJets_ALL', - useInteractingOnly=False, - includeMuons=True - ).jetAlgorithmHandle() - antikt6truthAlgAll = make_StandardJetGetter('AntiKt',0.6,'Truth',disable=False, - outputCollectionName='AntiKt6TruthJets_ALL', - useInteractingOnly=False, - includeMuons=True - ).jetAlgorithmHandle() - - # Configuration of this jetalgorithm adapted from TruthD3PDMaker/evgenD3PD.py - from TruthD3PDMaker.TruthJetFilterConfig import TruthJetFilterConfig - # Build Particle list - TruthJetFilterConfig (seq, writePartons = False, writeHadrons = True, excludeWZdecays = True, photonCone=0.1) - from ParticleBuilderOptions.AODFlags import AODFlags - AODFlags.MissingEtTruth = True - AODFlags.TruthParticleJet = True - AODFlags.McEventKey="GEN_EVENT" - # Add truth jet collection that includes all final state particles (including muons and neutrinos) - antikt4truthAlgWZ = make_StandardJetGetter('AntiKt',0.4,'Truth',disable=False, - inputCollectionNames=['FilteredD3PDTruth'], - outputCollectionName='AntiKt4TruthJets_WZ', - useInteractingOnly=False, - includeMuons=True - ).jetAlgorithmHandle() - antikt6truthAlgWZ = make_StandardJetGetter('AntiKt',0.6,'Truth',disable=False, - inputCollectionNames=['FilteredD3PDTruth'], - outputCollectionName='AntiKt6TruthJets_WZ', - useInteractingOnly=False, - includeMuons=True - ).jetAlgorithmHandle() - - - - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/PhotonSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/PhotonSelector.py deleted file mode 100644 index e6c2fb604b06837fde34fb7d26df35ad40c6be0c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/PhotonSelector.py +++ /dev/null @@ -1,16 +0,0 @@ -include.block( "PhysicsD3PDMaker/PhotonSelector.py" ) - - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from D2PDMaker.D2PDMakerConf import D2PDPhotonSelector - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -preseq += D2PDPhotonSelector( "SMWZ_HighPtPhotonFilter", - inputCollection = 'PhotonAODCollection', - outputCollection = 'HighPtPhotons', - photonVetoAuthorList = [ 128 ], - photonID = egammaPID.PhotonIDLoose, - etMin = 10.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/RedoTracksMoments.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/RedoTracksMoments.py deleted file mode 100644 index 3627fb31ae8e8b27dbc5afe179ad55a9d6760509..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/RedoTracksMoments.py +++ /dev/null @@ -1,57 +0,0 @@ -def tmp_getJetVertexAssociationTool(finder, mainParam, input, toolName="JetVertexAssociation", **options): - from JetRec.JetAlgConfiguration import checkAndUpdateOptions - options=checkAndUpdateOptions(finder=finder, mainParam=mainParam, input=input, **options) - - from JetMomentTools.JetMomentToolsConf import JetVertexAssociationTool, JetOriginCorrectionTool - - jvaTool = JetVertexAssociationTool(toolName) - - jvaTool.AssociateToHighestJVF = True - - from JetRec.TrackSelectionForJets import getDefaultJetVtxTrackHelper - jvaTool.JetVtxTrackHelper = getDefaultJetVtxTrackHelper() - - # origin correction tool - origCorr = JetOriginCorrectionTool("JetOriginCorrection") - origCorr.CellCalibrator = None - origCorr.UseGCW = False - origCorr.UseClusters = True - - # Official Choice of Jet/MET Group : Primary Vertex - origCorr.UseJVA = False - origCorr.UsePrimaryVertex = True - origCorr.UseBeamSpot = True - jvaTool.OriginCorrectionTool = origCorr - - return jvaTool - - -# simply use this as : momAlg = specialMoment('AntiKt4LCTopoJets') -def specialMoment(jetcollname): - - gAssoc = ["TrackAssoc"] - if rec.doTruth(): - gAssoc+=[ "TruthAssoc"] - - from JetMomentTools.GhostAssociation import addGhostAssociation - - momAlg = addGhostAssociation(jetcollname, gAssoc) - - # make JVF calculation use the Ghost-associated tracks - # from JetMomentTools.SetupJetMomentTools import getJetVertexAssociationTool - # jvtxTool = getJetVertexAssociationTool('AntiKt', 0.4, 'LCTopo') # parameters don't matter - # use the tmp_ version as long as the default is not fixed - # jvtxTool = tmp_getJetVertexAssociationTool('AntiKt', 0.4, 'LCTopo', toolName=jetcollname+'JVAtool') # parameters don't matter - - # jvtxTool.TrackAssocName = "TrackAssoc" - # jvtxTool.JetVtxTrackHelper.ptMin = 0.5*GeV - # momAlg.CalculatorTools += [ jvtxTool ] - - # enable trackWIDDTH - from JetMomentTools.SetupJetMomentTools import getJetTracksMomentTool - tm = getJetTracksMomentTool( DoAllPV = True) - tm.DoAllPV = True - tm.MinPt = 1 *GeV - momAlg.CalculatorTools += [ tm ] - - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_ElectronSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_ElectronSelector.py deleted file mode 100644 index bbaa2db1eb3fb8ea5ced622e1fd35808d7d88178..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_ElectronSelector.py +++ /dev/null @@ -1,38 +0,0 @@ -include.block( "SMEWTrilepSkim/SMTRILEP_ElectronSelector.py" ) - -from ROOT import egammaPID -from ROOT import egammaParameters - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -preseq += D2PDElectronSelector( "SMTRILEP_TriLepElectronFilter", - inputCollection = 'ElectronAODCollection', - outputCollection = 'TrilepElectrons', - etMin = 4.0*Units.GeV, - clusterEtaMin = -5, - clusterEtaMax = 5, - #electronID = egammaPID.ElectronIDLoosePP, - minNumberPassed = 1 - ) - -#from RecExConfig.RecAlgsFlags import recAlgs -#if recAlgs.doEgammaBremReco(): -# gsfElectronContainer = 'HighPtGSFElectrons' -# preseq += D2PDElectronSelector( "SMTRILEP_HighPtGSFElectronFilter", -# inputCollection = 'GSFElectronAODCollection', -# outputCollection = 'HighPtGSFElectrons', -# etMin = 20.0*Units.GeV, -# clusterEtaMin = -2.5, -# clusterEtaMax = 2.5, -# electronID = egammaPID.ElectronIDLoosePP, -# minNumberPassed = 1 -# ) -#else: -# gsfElectronContainer = 'None' - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_JetSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_JetSelector.py deleted file mode 100644 index 76725824aef8a0a4bc295c510cd6ba207f16c22d..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_JetSelector.py +++ /dev/null @@ -1,27 +0,0 @@ -include.block( "SMEWTrilepSkim/SMTRILEP_JetSelector.py" ) - -from D2PDMaker.D2PDMakerConf import D2PDJetSelector - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -preseq += D2PDJetSelector( "SMTRILEP_HighPtJetFilter", - inputCollection = 'AntiKt4TopoEMJets', - outputCollection = 'HighPtJets', - ptMin = 20.0*Units.GeV ) - -#preseq += D2PDJetSelector( "SMTRILEP_HighPtJetEM6Filter", -# inputCollection = 'AntiKt6TopoEMJets', -# outputCollection = 'HighPtJetsEM6', -# ptMin = 20.0*Units.GeV ) - -preseq += D2PDJetSelector( "SMTRILEP_HighPtJetLC4Filter", - inputCollection = 'AntiKt4LCTopoJets', - outputCollection = 'HighPtJetsLC4', - ptMin = 20.0*Units.GeV ) - -#preseq += D2PDJetSelector( "SMTRILEP_HighPtJetLC6Filter", -# inputCollection = 'AntiKt4LCTopoJets', -# outputCollection = 'HighPtJetsLC6', -# ptMin = 20.0*Units.GeV ) - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_MuonSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_MuonSelector.py deleted file mode 100644 index 418ff05904086cd96fc57b8ccb6a94d2ce1e7959..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_MuonSelector.py +++ /dev/null @@ -1,43 +0,0 @@ -include.block( "SMEWTrilepSkim/SMTRILEP_MuonSelector.py" ) - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from D2PDMaker.D2PDMakerConf import D2PDMuonSelector -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - - -# STACO - -preseq += D2PDMuonSelector( "SMTRILEP_TrilepStacoMuonFilter", - inputCollection = 'StacoMuonCollection', - outputCollection = 'TrilepStacoMuons', - ptMin = 4.0*Units.GeV, - minNumberPassed = 1 ) - -# THIRD Muons -preseq += D2PDMuonSelector( "SMTRILEP_TrilepThirdMuonFilter", - inputCollection = 'Muons', - outputCollection = 'TrilepThirdMuons', - ptMin = 4.0*Units.GeV, - minNumberPassed = 1 ) - -# CALO muons - apply eta cut -preseq += D2PDMuonSelector( "SMTRILEP_TrilepCaloMuonFilter", - inputCollection = 'CaloMuonCollection', - outputCollection = 'TrilepCaloMuons', - ptMin = 12.0*Units.GeV, - etaMin = -0.2, - etaMax = 0.2, - minNumberPassed = 1 ) - - -# MUID - -#preseq += D2PDMuonSelector( "SMTRILEP_HighPtMuidMuonFilter", -# inputCollection = 'MuidMuonCollection', -# outputCollection = 'HighPtMuidMuons', -# ptMin = 20.0*Units.GeV, -# minNumberPassed = 1 ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_PhotonSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_PhotonSelector.py deleted file mode 100644 index 44cdc8995d117b65a6cee1ebfcbf49add46b0a12..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_PhotonSelector.py +++ /dev/null @@ -1,16 +0,0 @@ -include.block( "SMEWTrilepSkim/SMTRILEP_PhotonSelector.py" ) - - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from D2PDMaker.D2PDMakerConf import D2PDPhotonSelector - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -preseq += D2PDPhotonSelector( "SMTRILEP_HighPtPhotonFilter", - inputCollection = 'PhotonAODCollection', - outputCollection = 'HighPtPhotons', - photonVetoAuthorList = [ 128 ], - photonID = egammaPID.PhotonIDLoose, - etMin = 10.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_VetoBranches.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_VetoBranches.py deleted file mode 100644 index f0edaa564a40d9fd850e8255a10fb0b8dfa59e94..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_VetoBranches.py +++ /dev/null @@ -1,2459 +0,0 @@ -SMTRILEP_VetoBranches = [ "^"+branch+"$" for branch in [ - "trig_RoI_EF_e_egammaContainer_egamma_Photons", - "trig_RoI_EF_e_egammaContainer_egamma_PhotonsStatus", - "trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFID", - "trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFIDStatus", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_Muon", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_MuonStatus", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_Muon", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_MuonStatus", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_Muon", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_MuonStatus", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_muonIso", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_muonIsoStatus", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIso", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIsoStatus", - "trig_EF_el_px", - "trig_EF_el_py", - "trig_EF_el_pz", - "trig_EF_el_charge", - "trig_EF_el_vertweight", - "trig_EF_el_hastrac", - "trig_roidescriptor_forID_n", - "trig_roidescriptor_forID_ph", - "trig_roidescriptor_forID_et", - "trig_roidescriptor_forID_zed0", - "trig_L2_passedPhysics", - "trig_EF_passedPhysics", - "trig_L1_TB", - "trig_L1_TA", - "trig_L2_passedRaw", - "trig_EF_passedRaw", - "trig_L2_truncated", - "trig_EF_truncated", - "trig_L2_resurrecte", - "trig_EF_resurrecte", - "trig_L2_passedThrough", - "trig_EF_passedThrough", - "trig_L2_wasPrescale", - "trig_L2_wasResurrected", - "trig_EF_wasPrescale", - "trig_EF_wasResurrected", - "trig_RoI_L2_mu_typ", - "trig_RoI_L2_mu_active", - "trig_RoI_L2_mu_lastSte", - "trig_RoI_L2_mu_TENumbe", - "trig_RoI_L2_mu_roiNumbe", - "trig_RoI_L2_mu_TrigRoiDescriptor_forID", - "trig_RoI_L2_mu_TrigRoiDescriptor_forIDStatu", - "trig_RoI_L2_mu_IsoMuonFeature", - "trig_RoI_L2_mu_IsoMuonFeatureStatu", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_Muo", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_MuonStatus", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_Muo", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_MuonStatus", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_Muo", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_MuonStatus", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_muonIs", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_muonIsoStatus", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIso", - "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIsoStatu", - "trig_RoI_EF_mu_typ", - "trig_RoI_EF_mu_active", - "trig_RoI_EF_mu_lastSte", - "trig_RoI_EF_mu_TENumbe", - "trig_RoI_EF_mu_roiNumbe", - "trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFID", - "trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFIDStatu", - " b_trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFI", - " b_trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFIDStatus", - "trig_RoI_EF_e_egammaContainer_egamma_Photon", - "trig_RoI_EF_e_egammaContainer_egamma_PhotonsSt", - "trig_L2_el_L2_2e12Tvh_loose1", - "trig_L2_el_L2_2e5_tight1_Jpsi", - "trig_L2_el_L2_2e7T_loose1_mu6", - "trig_L2_el_L2_2e7T_medium1_mu6", - "trig_L2_el_L2_e11_etcut", - "trig_L2_el_L2_e12Tvh_loose1", - "trig_L2_el_L2_e12Tvh_medium1", - "trig_L2_el_L2_e12Tvh_medium1_mu6_topo_medium", - "trig_L2_el_L2_e12Tvh_medium1_mu8", - "trig_L2_el_L2_e13_etcutTrk_xs45", - "trig_L2_el_L2_e13_etcutTrk_xs50", - "trig_L2_el_L2_e13_etcutTrk_xs55", - "trig_L2_el_L2_e13_etcutTrk_xs60", - "trig_L2_el_L2_e14_tight1_e4_etcut_Jpsi", - "trig_L2_el_L2_e15vh_loose0", - "trig_L2_el_L2_e15vh_medium1", - "trig_L2_el_L2_e18_loose1", - "trig_L2_el_L2_e18_loose1_g25_medium", - "trig_L2_el_L2_e18_medium1", - "trig_L2_el_L2_e18_medium1_g25_loose", - "trig_L2_el_L2_e18vh_medium1", - "trig_L2_el_L2_e18vh_medium1_2e7T_medium1", - "trig_L2_el_L2_e20_etcutTrk_xe25", - "trig_L2_el_L2_e20_etcutTrk_xs45", - "trig_L2_el_L2_e20vhT_medium1_g6T_etcut_Upsi", - "trig_L2_el_L2_e20vhT_tight1_g6T_etcut_Upsi", - "trig_L2_el_L2_e22vh_loose", - "trig_L2_el_L2_e22vh_loose0", - "trig_L2_el_L2_e22vh_loose1", - "trig_L2_el_L2_e22vh_medium1", - "trig_L2_el_L2_e22vh_medium1_IDTrkNoCut", - "trig_L2_el_L2_e22vhi_medium1", - "trig_L2_el_L2_e24vh_loose", - "trig_L2_el_L2_e24vh_loose0", - "trig_L2_el_L2_e24vh_loose0_3j15_a4TTem", - "trig_L2_el_L2_e24vh_loose0_4j15_a4TTem", - "trig_L2_el_L2_e24vh_loose1", - "trig_L2_el_L2_e24vh_medium1", - "trig_L2_el_L2_e24vh_medium1_EFxe30", - "trig_L2_el_L2_e24vh_medium1_EFxe35", - "trig_L2_el_L2_e24vh_medium1_EFxe40", - "trig_L2_el_L2_e24vh_medium1_IDTrkNoCut", - "trig_L2_el_L2_e24vh_medium1_IdScan", - "trig_L2_el_L2_e24vh_medium1_L2StarB", - "trig_L2_el_L2_e24vh_medium1_L2StarC", - "trig_L2_el_L2_e24vh_medium1_SiTrk", - "trig_L2_el_L2_e24vh_medium1_TRT", - "trig_L2_el_L2_e24vh_medium1_e7_medium1", - "trig_L2_el_L2_e24vh_tight1_e15_NoCut_Zee", - "trig_L2_el_L2_e24vhi_loose1", - "trig_L2_el_L2_e24vhi_loose1_mu8", - "trig_L2_el_L2_e24vhi_medium1", - "trig_L2_el_L2_e45_medium1", - "trig_L2_el_L2_e5_etcut", - "trig_L2_el_L2_e5_loose0", - "trig_L2_el_L2_e5_medium1", - "trig_L2_el_L2_e5_tight1", - "trig_L2_el_L2_e5_tight1_e14_etcut_Jpsi", - "trig_L2_el_L2_e5_tight1_e4_etcut_Jpsi", - "trig_L2_el_L2_e5_tight1_e4_etcut_Jpsi_L2StarB", - "trig_L2_el_L2_e5_tight1_e4_etcut_Jpsi_L2StarC", - "trig_L2_el_L2_e5_tight1_e5_NoCut", - "trig_L2_el_L2_e5_tight1_e9_etcut_Jpsi", - "trig_L2_el_L2_e60_loose0", - "trig_L2_el_L2_e60_medium1", - "trig_L2_el_L2_e7T_loose1", - "trig_L2_el_L2_e7T_loose1_2mu6", - "trig_L2_el_L2_e7T_medium1", - "trig_L2_el_L2_e7T_medium1_2mu6", - "trig_L2_el_L2_e7_medium1", - "trig_L2_el_L2_e9_tight1_e4_etcut_Jpsi", - "trig_L2_el_L2_eb_physics", - "trig_L2_el_L2_eb_physics_empty", - "trig_L2_el_L2_eb_physics_firstempty", - "trig_L2_el_L2_eb_physics_noL1PS", - "trig_L2_el_L2_eb_physics_unpaired_iso", - "trig_L2_el_L2_eb_physics_unpaired_noniso", - "trig_L2_el_L2_eb_random", - "trig_L2_el_L2_eb_random_empty", - "trig_L2_el_L2_eb_random_firstempty", - "trig_L2_el_L2_eb_random_unpaired_iso", - "trig_L2_el_L2_em3_empty_larcalib", - "trig_L2_el_L2_em6_empty_larcalib", - "trig_L2_ph_L2_2g15vh_medium_g10_medium", - "trig_L2_ph_L2_2g20vh_medium", - "trig_L2_ph_L2_2g40_loose", - "trig_L2_ph_L2_g100_loose", - "trig_L2_ph_L2_g10_NoCut_cosmic", - "trig_L2_ph_L2_g10_loose", - "trig_L2_ph_L2_g10_medium", - "trig_L2_ph_L2_g120_loose", - "trig_L2_ph_L2_g12Tvh_loose", - "trig_L2_ph_L2_g15_loose", - "trig_L2_ph_L2_g15vh_medium", - "trig_L2_ph_L2_g200_etcut", - "trig_L2_ph_L2_g20_etcut", - "trig_L2_ph_L2_g20_loose", - "trig_L2_ph_L2_g20_medium", - "trig_L2_ph_L2_g24_etcut", - "trig_L2_ph_L2_g30_loose", - "trig_L2_ph_L2_g30_loose_g20_loose", - "trig_L2_ph_L2_g30_medium", - "trig_L2_ph_L2_g30_medium_g20_medium", - "trig_L2_ph_L2_g35_loose_g25_loose", - "trig_L2_ph_L2_g35_loose_g30_loose", - "trig_L2_ph_L2_g40_loose", - "trig_L2_ph_L2_g40_loose_L2xe45", - "trig_L2_ph_L2_g40_loose_g25_loose", - "trig_L2_ph_L2_g40_loose_g30_loose", - "trig_L2_ph_L2_g5_NoCut_cosmic", - "trig_L2_ph_L2_g60_loose", - "trig_L2_ph_L2_g80_loose", - "trig_EF_el_EF_2e12Tvh_loose1", - "trig_EF_el_EF_2e5_tight1_Jpsi", - "trig_EF_el_EF_2e7T_loose1_mu6", - "trig_EF_el_EF_2e7T_medium1_mu6", - "trig_EF_el_EF_e11_etcut", - "trig_EF_el_EF_e12Tvh_loose1", - "trig_EF_el_EF_e12Tvh_medium1", - "trig_EF_el_EF_e12Tvh_medium1_mu6_topo_medium", - "trig_EF_el_EF_e12Tvh_medium1_mu8", - "trig_EF_el_EF_e13_etcutTrk_xs45_L1XS50_dphi2j15xe20", - "trig_EF_el_EF_e13_etcutTrk_xs45_L1XS55_dphi2j15xe20", - "trig_EF_el_EF_e13_etcutTrk_xs45_L1XS60", - "trig_EF_el_EF_e13_etcutTrk_xs45_L1XS60_dphi2j15xe20", - "trig_EF_el_EF_e13_etcutTrk_xs50_L1XS50_dphi2j15xe20", - "trig_EF_el_EF_e13_etcutTrk_xs60", - "trig_EF_el_EF_e13_etcutTrk_xs60_dphi2j15xe20", - "trig_EF_el_EF_e14_tight1_e4_etcut_Jpsi", - "trig_EF_el_EF_e15vh_loose0", - "trig_EF_el_EF_e15vh_medium1", - "trig_EF_el_EF_e18_loose1", - "trig_EF_el_EF_e18_loose1_g25_medium", - "trig_EF_el_EF_e18_medium1", - "trig_EF_el_EF_e18_medium1_g25_loose", - "trig_EF_el_EF_e18vh_medium1", - "trig_EF_el_EF_e18vh_medium1_2e7T_medium1", - "trig_EF_el_EF_e20_etcutTrk_xe30_dphi2j15xe20", - "trig_EF_el_EF_e20_etcutTrk_xs45_L1XS45_dphi2j15xe20", - "trig_EF_el_EF_e20_etcutTrk_xs60_dphi2j15xe20", - "trig_EF_el_EF_e20vhT_medium1_g6T_etcut_Upsi", - "trig_EF_el_EF_e20vhT_tight1_g6T_etcut_Upsi", - "trig_EF_el_EF_e22vh_loose", - "trig_EF_el_EF_e22vh_loose0", - "trig_EF_el_EF_e22vh_loose1", - "trig_EF_el_EF_e22vh_medium1", - "trig_EF_el_EF_e22vh_medium1_IDTrkNoCut", - "trig_EF_el_EF_e22vhi_medium1", - "trig_EF_el_EF_e24vh_loose", - "trig_EF_el_EF_e24vh_loose0", - "trig_EF_el_EF_e24vh_loose0_3j45_a4tchad_L2FS", - "trig_EF_el_EF_e24vh_loose0_4j45_a4tchad_L2FS", - "trig_EF_el_EF_e24vh_loose0_4j55_a4tchad_L2FS", - "trig_EF_el_EF_e24vh_loose1", - "trig_EF_el_EF_e24vh_medium1", - "trig_EF_el_EF_e24vh_medium1_EFxe30", - "trig_EF_el_EF_e24vh_medium1_EFxe30_tcem", - "trig_EF_el_EF_e24vh_medium1_EFxe35_tcem", - "trig_EF_el_EF_e24vh_medium1_EFxe35_tclcw", - "trig_EF_el_EF_e24vh_medium1_EFxe40", - "trig_EF_el_EF_e24vh_medium1_IDTrkNoCut", - "trig_EF_el_EF_e24vh_medium1_IdScan", - "trig_EF_el_EF_e24vh_medium1_L2StarB", - "trig_EF_el_EF_e24vh_medium1_L2StarC", - "trig_EF_el_EF_e24vh_medium1_SiTrk", - "trig_EF_el_EF_e24vh_medium1_TRT", - "trig_EF_el_EF_e24vh_medium1_e7_medium1", - "trig_EF_el_EF_e24vh_tight1_e15_NoCut_Zee", - "trig_EF_el_EF_e24vhi_loose1", - "trig_EF_el_EF_e24vhi_loose1_mu8", - "trig_EF_el_EF_e24vhi_medium1", - "trig_EF_el_EF_e45_medium1", - "trig_EF_el_EF_e5_etcut", - "trig_EF_el_EF_e5_loose0", - "trig_EF_el_EF_e5_medium1", - "trig_EF_el_EF_e5_tight1", - "trig_EF_el_EF_e5_tight1_e14_etcut_Jpsi", - "trig_EF_el_EF_e5_tight1_e4_etcut_Jpsi", - "trig_EF_el_EF_e5_tight1_e4_etcut_Jpsi_L2StarB", - "trig_EF_el_EF_e5_tight1_e4_etcut_Jpsi_L2StarC", - "trig_EF_el_EF_e5_tight1_e5_NoCut", - "trig_EF_el_EF_e5_tight1_e9_etcut_Jpsi", - "trig_EF_el_EF_e60_loose0", - "trig_EF_el_EF_e60_medium1", - "trig_EF_el_EF_e7T_loose1", - "trig_EF_el_EF_e7T_loose1_2mu6", - "trig_EF_el_EF_e7T_medium1", - "trig_EF_el_EF_e7T_medium1_2mu6", - "trig_EF_el_EF_e7_medium1", - "trig_EF_el_EF_e9_tight1_e4_etcut_Jpsi", - "trig_EF_ph_EF_2g15vh_medium_g10_medium", - "trig_EF_ph_EF_2g20vh_medium", - "trig_EF_ph_EF_2g40_loose", - "trig_EF_ph_EF_g100_loose", - "trig_EF_ph_EF_g10_NoCut_cosmic", - "trig_EF_ph_EF_g10_loose", - "trig_EF_ph_EF_g10_medium", - "trig_EF_ph_EF_g120_loose", - "trig_EF_ph_EF_g12Tvh_loose", - "trig_EF_ph_EF_g12Tvh_loose_larcalib", - "trig_EF_ph_EF_g15_loose", - "trig_EF_ph_EF_g15vh_medium", - "trig_EF_ph_EF_g200_etcut", - "trig_EF_ph_EF_g20_etcut", - "trig_EF_ph_EF_g20_loose", - "trig_EF_ph_EF_g20_loose_jetcalibdelayed", - "trig_EF_ph_EF_g20_loose_larcalib", - "trig_EF_ph_EF_g20_medium", - "trig_EF_ph_EF_g24_etcut", - "trig_EF_ph_EF_g30_loose", - "trig_EF_ph_EF_g30_loose_g20_loose", - "trig_EF_ph_EF_g30_medium", - "trig_EF_ph_EF_g30_medium_g20_medium", - "trig_EF_ph_EF_g35_loose_g25_loose", - "trig_EF_ph_EF_g35_loose_g30_loose", - "trig_EF_ph_EF_g40_loose", - "trig_EF_ph_EF_g40_loose_L2EFxe60", - "trig_EF_ph_EF_g40_loose_L2EFxe60_tclcw", - "trig_EF_ph_EF_g40_loose_g25_loose", - "trig_EF_ph_EF_g40_loose_g30_loose", - "trig_EF_ph_EF_g40_loose_jetcalibdelayed", - "trig_EF_ph_EF_g40_loose_larcalib", - "trig_EF_ph_EF_g5_NoCut_cosmic", - "trig_EF_ph_EF_g60_loose", - "trig_EF_ph_EF_g60_loose_jetcalibdelayed", - "trig_EF_ph_EF_g60_loose_larcalib", - "trig_EF_ph_EF_g80_loose", - "trig_EF_ph_EF_g80_loose_larcalib", - "trig_L2_muonfeature_L2_2mu10", - "trig_L2_muonfeature_L2_2mu10_MSonly_g10_loose", - "trig_L2_muonfeature_L2_2mu10_MSonly_g10_loose_EMPTY", - "trig_L2_muonfeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", - "trig_L2_muonfeature_L2_2mu13", - "trig_L2_muonfeature_L2_2mu13_Zmumu_IDTrkNoCut", - "trig_L2_muonfeature_L2_2mu13_muFast", - "trig_L2_muonfeature_L2_2mu15", - "trig_L2_muonfeature_L2_2mu4T", - "trig_L2_muonfeature_L2_2mu4T_2e5_tight1", - "trig_L2_muonfeature_L2_2mu4T_Bmumu", - "trig_L2_muonfeature_L2_2mu4T_Bmumu_Barrel", - "trig_L2_muonfeature_L2_2mu4T_Bmumu_BarrelOnly", - "trig_L2_muonfeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Bmumu_Barrel_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Bmumu_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Bmumux", - "trig_L2_muonfeature_L2_2mu4T_Bmumux_Barrel", - "trig_L2_muonfeature_L2_2mu4T_Bmumux_BarrelOnly", - "trig_L2_muonfeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Bmumux_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Bmumux_v2", - "trig_L2_muonfeature_L2_2mu4T_Bmumux_v2_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_DiMu", - "trig_L2_muonfeature_L2_2mu4T_DiMu_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_DiMu_L2StarC", - "trig_L2_muonfeature_L2_2mu4T_DiMu_e5_tight1", - "trig_L2_muonfeature_L2_2mu4T_DiMu_muFast", - "trig_L2_muonfeature_L2_2mu4T_DiMu_noVtx_noOS", - "trig_L2_muonfeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_Barrel", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_BarrelOnly", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", - "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_prescaled", - "trig_L2_muonfeature_L2_2mu4T_Upsimumu", - "trig_L2_muonfeature_L2_2mu4T_Upsimumu_Barrel", - "trig_L2_muonfeature_L2_2mu4T_Upsimumu_BarrelOnly", - "trig_L2_muonfeature_L2_2mu4T_Upsimumu_L2StarB", - "trig_L2_muonfeature_L2_2mu4T_xe45", - "trig_L2_muonfeature_L2_2mu4T_xe60", - "trig_L2_muonfeature_L2_2mu6", - "trig_L2_muonfeature_L2_2mu6_Bmumu", - "trig_L2_muonfeature_L2_2mu6_Bmumu_L2StarB", - "trig_L2_muonfeature_L2_2mu6_Bmumux", - "trig_L2_muonfeature_L2_2mu6_Bmumux_L2StarA", - "trig_L2_muonfeature_L2_2mu6_Bmumux_v2", - "trig_L2_muonfeature_L2_2mu6_Bmumux_v2_L2StarB", - "trig_L2_muonfeature_L2_2mu6_DiMu", - "trig_L2_muonfeature_L2_2mu6_DiMu_DY20", - "trig_L2_muonfeature_L2_2mu6_DiMu_DY25", - "trig_L2_muonfeature_L2_2mu6_DiMu_L2StarB", - "trig_L2_muonfeature_L2_2mu6_DiMu_noVtx_noOS", - "trig_L2_muonfeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", - "trig_L2_muonfeature_L2_2mu6_Jpsimumu", - "trig_L2_muonfeature_L2_2mu6_Jpsimumu_L2StarB", - "trig_L2_muonfeature_L2_2mu6_Upsimumu", - "trig_L2_muonfeature_L2_2mu6i_DiMu_DY", - "trig_L2_muonfeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", - "trig_L2_muonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS", - "trig_L2_muonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", - "trig_L2_muonfeature_L2_2mu8_EFxe30", - "trig_L2_muonfeature_L2_2mu8_EFxe40", - "trig_L2_muonfeature_L2_2mu8_EFxe40wMu", - "trig_L2_muonfeature_L2_mu10", - "trig_L2_muonfeature_L2_mu10_Jpsimumu", - "trig_L2_muonfeature_L2_mu10_Jpsimumu_L2StarA", - "trig_L2_muonfeature_L2_mu10_MSonly", - "trig_L2_muonfeature_L2_mu10_Upsimumu_tight_FS", - "trig_L2_muonfeature_L2_mu10_Upsimumu_tight_FS_L2StarA", - "trig_L2_muonfeature_L2_mu10_muCombTag_NoEF_tight", - "trig_L2_muonfeature_L2_mu10_muCombTag_NoEF_tight1", - "trig_L2_muonfeature_L2_mu10i_g10_medium", - "trig_L2_muonfeature_L2_mu10i_g10_medium_TauMass", - "trig_L2_muonfeature_L2_mu10i_loose_g12Tvh_medium", - "trig_L2_muonfeature_L2_mu10i_loose_g12Tvh_medium_TauMass", - "trig_L2_muonfeature_L2_mu11_empty_NoAlg", - "trig_L2_muonfeature_L2_mu13", - "trig_L2_muonfeature_L2_mu15", - "trig_L2_muonfeature_L2_mu15_l2cal", - "trig_L2_muonfeature_L2_mu15_muCombTag_NoEF_tight", - "trig_L2_muonfeature_L2_mu15_muCombTag_NoEF_tight1", - "trig_L2_muonfeature_L2_mu18", - "trig_L2_muonfeature_L2_mu18_2g10_loose", - "trig_L2_muonfeature_L2_mu18_2g10_medium", - "trig_L2_muonfeature_L2_mu18_IDTrkNoCut_tight", - "trig_L2_muonfeature_L2_mu18_medium", - "trig_L2_muonfeature_L2_mu18_tight", - "trig_L2_muonfeature_L2_mu18_tight_2mu4T_Jpsimumu", - "trig_L2_muonfeature_L2_mu18_tight_e7_medium1", - "trig_L2_muonfeature_L2_mu18i4_tight", - "trig_L2_muonfeature_L2_mu18it_tight", - "trig_L2_muonfeature_L2_mu20_muCombTag_NoEF_tight", - "trig_L2_muonfeature_L2_mu20_muCombTag_NoEF_tight1", - "trig_L2_muonfeature_L2_mu20i_tight_g5_loose_TauMass", - "trig_L2_muonfeature_L2_mu20i_tight_g5_medium", - "trig_L2_muonfeature_L2_mu20i_tight_g5_medium_TauMass", - "trig_L2_muonfeature_L2_mu20it_tight", - "trig_L2_muonfeature_L2_mu22_IDTrkNoCut_tight", - "trig_L2_muonfeature_L2_mu24", - "trig_L2_muonfeature_L2_mu24_g20vh_loose", - "trig_L2_muonfeature_L2_mu24_g20vh_medium", - "trig_L2_muonfeature_L2_mu24_j60_c4cchad_EFxe40", - "trig_L2_muonfeature_L2_mu24_j60_c4cchad_EFxe40wMu", - "trig_L2_muonfeature_L2_mu24_j60_c4cchad_EFxe60", - "trig_L2_muonfeature_L2_mu24_j60_c4cchad_EFxe60wMu", - "trig_L2_muonfeature_L2_mu24_j60_c4cchad_xe35", - "trig_L2_muonfeature_L2_mu24_j65_c4cchad", - "trig_L2_muonfeature_L2_mu24_medium", - "trig_L2_muonfeature_L2_mu24_muCombTag_NoEF_tight", - "trig_L2_muonfeature_L2_mu24_tight", - "trig_L2_muonfeature_L2_mu24_tight_3j35_a4tchad", - "trig_L2_muonfeature_L2_mu24_tight_3j45_a4tchad", - "trig_L2_muonfeature_L2_mu24_tight_4j35_a4tchad", - "trig_L2_muonfeature_L2_mu24_tight_4j45_a4tchad", - "trig_L2_muonfeature_L2_mu24_tight_EFxe40", - "trig_L2_muonfeature_L2_mu24_tight_L2StarB", - "trig_L2_muonfeature_L2_mu24_tight_L2StarC", - "trig_L2_muonfeature_L2_mu24_tight_muFast", - "trig_L2_muonfeature_L2_mu36_tight", - "trig_L2_muonfeature_L2_mu40_MSonly_barrel_tight", - "trig_L2_muonfeature_L2_mu40_slow_outOfTime_tight", - "trig_L2_muonfeature_L2_mu40_slow_tight", - "trig_L2_muonfeature_L2_mu40_tight", - "trig_L2_muonfeature_L2_mu4T", - "trig_L2_muonfeature_L2_mu4T_cosmic", - "trig_L2_muonfeature_L2_mu4T_j105_c4cchad", - "trig_L2_muonfeature_L2_mu4T_j10_a4TTem", - "trig_L2_muonfeature_L2_mu4T_j140_c4cchad", - "trig_L2_muonfeature_L2_mu4T_j15_a4TTem", - "trig_L2_muonfeature_L2_mu4T_j165_c4cchad", - "trig_L2_muonfeature_L2_mu4T_j30_a4TTem", - "trig_L2_muonfeature_L2_mu4T_j40_c4cchad", - "trig_L2_muonfeature_L2_mu4T_j50_a4TTem", - "trig_L2_muonfeature_L2_mu4T_j50_c4cchad", - "trig_L2_muonfeature_L2_mu4T_j60_c4cchad", - "trig_L2_muonfeature_L2_mu4T_j60_c4cchad_xe40", - "trig_L2_muonfeature_L2_mu4T_j75_a4TTem", - "trig_L2_muonfeature_L2_mu4T_j75_c4cchad", - "trig_L2_muonfeature_L2_mu4T_muFast", - "trig_L2_muonfeature_L2_mu4Ti_g20Tvh_medium", - "trig_L2_muonfeature_L2_mu4Ti_g20Tvh_medium_TauMass", - "trig_L2_muonfeature_L2_mu4Tmu6_Bmumu", - "trig_L2_muonfeature_L2_mu4Tmu6_Bmumu_Barrel", - "trig_L2_muonfeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", - "trig_L2_muonfeature_L2_mu4Tmu6_Bmumu_L2StarB", - "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux", - "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux_Barrel", - "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", - "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux_v2", - "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", - "trig_L2_muonfeature_L2_mu4Tmu6_DiMu", - "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu", - "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_Barrel", - "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", - "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", - "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", - "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB", - "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", - "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_prescaled", - "trig_L2_muonfeature_L2_mu4Tmu6_Upsimumu", - "trig_L2_muonfeature_L2_mu4Tmu6_Upsimumu_Barrel", - "trig_L2_muonfeature_L2_mu4_L1MU11_MSonly_cosmic", - "trig_L2_muonfeature_L2_mu4_L1MU11_cosmic", - "trig_L2_muonfeature_L2_mu4_empty_NoAlg", - "trig_L2_muonfeature_L2_mu4_firstempty_NoAlg", - "trig_L2_muonfeature_L2_mu4_l2cal_empty", - "trig_L2_muonfeature_L2_mu4_unpaired_iso_NoAlg", - "trig_L2_muonfeature_L2_mu50_MSonly_barrel_tight", - "trig_L2_muonfeature_L2_mu6", - "trig_L2_muonfeature_L2_mu60_slow_outOfTime_tight1", - "trig_L2_muonfeature_L2_mu60_slow_tight1", - "trig_L2_muonfeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", - "trig_L2_muonfeature_L2_mu6_Jpsimumu_L2StarA", - "trig_L2_muonfeature_L2_mu6_Jpsimumu_tight", - "trig_L2_muonfeature_L2_mu6_Jpsimumu_tight_L2StarB", - "trig_L2_muonfeature_L2_mu6_L2StarB", - "trig_L2_muonfeature_L2_mu6_MSonly", - "trig_L2_muonfeature_L2_mu6_Trk_Jpsi_loose", - "trig_L2_muonfeature_L2_mu6_Trk_Jpsi_loose_L2StarA", - "trig_L2_muonfeature_L2_mu6_Trk_Jpsi_loose_L2StarB", - "trig_L2_muonfeature_L2_mu8", - "trig_L2_muonfeature_L2_mu8_4j15_a4TTem", - "trig_L2_combmuonfeature_L2_2mu10", - "trig_L2_combmuonfeature_L2_2mu10_MSonly_g10_loose", - "trig_L2_combmuonfeature_L2_2mu10_MSonly_g10_loose_EMPTY", - "trig_L2_combmuonfeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", - "trig_L2_combmuonfeature_L2_2mu13", - "trig_L2_combmuonfeature_L2_2mu13_Zmumu_IDTrkNoCut", - "trig_L2_combmuonfeature_L2_2mu13_muFast", - "trig_L2_combmuonfeature_L2_2mu15", - "trig_L2_combmuonfeature_L2_2mu4T", - "trig_L2_combmuonfeature_L2_2mu4T_2e5_tight1", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumu", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_Barrel", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_BarrelOnly", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_Barrel_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumux", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_Barrel", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_BarrelOnly", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_v2", - "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_v2_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_DiMu", - "trig_L2_combmuonfeature_L2_2mu4T_DiMu_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_DiMu_L2StarC", - "trig_L2_combmuonfeature_L2_2mu4T_DiMu_e5_tight1", - "trig_L2_combmuonfeature_L2_2mu4T_DiMu_muFast", - "trig_L2_combmuonfeature_L2_2mu4T_DiMu_noVtx_noOS", - "trig_L2_combmuonfeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_Barrel", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", - "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_prescaled", - "trig_L2_combmuonfeature_L2_2mu4T_Upsimumu", - "trig_L2_combmuonfeature_L2_2mu4T_Upsimumu_Barrel", - "trig_L2_combmuonfeature_L2_2mu4T_Upsimumu_BarrelOnly", - "trig_L2_combmuonfeature_L2_2mu4T_Upsimumu_L2StarB", - "trig_L2_combmuonfeature_L2_2mu4T_xe45", - "trig_L2_combmuonfeature_L2_2mu4T_xe60", - "trig_L2_combmuonfeature_L2_2mu6", - "trig_L2_combmuonfeature_L2_2mu6_Bmumu", - "trig_L2_combmuonfeature_L2_2mu6_Bmumu_L2StarB", - "trig_L2_combmuonfeature_L2_2mu6_Bmumux", - "trig_L2_combmuonfeature_L2_2mu6_Bmumux_L2StarA", - "trig_L2_combmuonfeature_L2_2mu6_Bmumux_v2", - "trig_L2_combmuonfeature_L2_2mu6_Bmumux_v2_L2StarB", - "trig_L2_combmuonfeature_L2_2mu6_DiMu", - "trig_L2_combmuonfeature_L2_2mu6_DiMu_DY20", - "trig_L2_combmuonfeature_L2_2mu6_DiMu_DY25", - "trig_L2_combmuonfeature_L2_2mu6_DiMu_L2StarB", - "trig_L2_combmuonfeature_L2_2mu6_DiMu_noVtx_noOS", - "trig_L2_combmuonfeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", - "trig_L2_combmuonfeature_L2_2mu6_Jpsimumu", - "trig_L2_combmuonfeature_L2_2mu6_Jpsimumu_L2StarB", - "trig_L2_combmuonfeature_L2_2mu6_Upsimumu", - "trig_L2_combmuonfeature_L2_2mu6i_DiMu_DY", - "trig_L2_combmuonfeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", - "trig_L2_combmuonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS", - "trig_L2_combmuonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", - "trig_L2_combmuonfeature_L2_2mu8_EFxe30", - "trig_L2_combmuonfeature_L2_2mu8_EFxe40", - "trig_L2_combmuonfeature_L2_2mu8_EFxe40wMu", - "trig_L2_combmuonfeature_L2_mu10", - "trig_L2_combmuonfeature_L2_mu10_Jpsimumu", - "trig_L2_combmuonfeature_L2_mu10_Jpsimumu_L2StarA", - "trig_L2_combmuonfeature_L2_mu10_MSonly", - "trig_L2_combmuonfeature_L2_mu10_Upsimumu_tight_FS", - "trig_L2_combmuonfeature_L2_mu10_Upsimumu_tight_FS_L2StarA", - "trig_L2_combmuonfeature_L2_mu10_muCombTag_NoEF_tight", - "trig_L2_combmuonfeature_L2_mu10_muCombTag_NoEF_tight1", - "trig_L2_combmuonfeature_L2_mu10i_g10_medium", - "trig_L2_combmuonfeature_L2_mu10i_g10_medium_TauMass", - "trig_L2_combmuonfeature_L2_mu10i_loose_g12Tvh_medium", - "trig_L2_combmuonfeature_L2_mu10i_loose_g12Tvh_medium_TauMass", - "trig_L2_combmuonfeature_L2_mu11_empty_NoAlg", - "trig_L2_combmuonfeature_L2_mu13", - "trig_L2_combmuonfeature_L2_mu15", - "trig_L2_combmuonfeature_L2_mu15_l2cal", - "trig_L2_combmuonfeature_L2_mu15_muCombTag_NoEF_tight", - "trig_L2_combmuonfeature_L2_mu15_muCombTag_NoEF_tight1", - "trig_L2_combmuonfeature_L2_mu18", - "trig_L2_combmuonfeature_L2_mu18_2g10_loose", - "trig_L2_combmuonfeature_L2_mu18_2g10_medium", - "trig_L2_combmuonfeature_L2_mu18_IDTrkNoCut_tight", - "trig_L2_combmuonfeature_L2_mu18_medium", - "trig_L2_combmuonfeature_L2_mu18_tight", - "trig_L2_combmuonfeature_L2_mu18_tight_2mu4T_Jpsimumu", - "trig_L2_combmuonfeature_L2_mu18_tight_e7_medium1", - "trig_L2_combmuonfeature_L2_mu18i4_tight", - "trig_L2_combmuonfeature_L2_mu18it_tight", - "trig_L2_combmuonfeature_L2_mu20_muCombTag_NoEF_tight", - "trig_L2_combmuonfeature_L2_mu20_muCombTag_NoEF_tight1", - "trig_L2_combmuonfeature_L2_mu20i_tight_g5_loose_TauMass", - "trig_L2_combmuonfeature_L2_mu20i_tight_g5_medium", - "trig_L2_combmuonfeature_L2_mu20i_tight_g5_medium_TauMass", - "trig_L2_combmuonfeature_L2_mu20it_tight", - "trig_L2_combmuonfeature_L2_mu22_IDTrkNoCut_tight", - "trig_L2_combmuonfeature_L2_mu24", - "trig_L2_combmuonfeature_L2_mu24_g20vh_loose", - "trig_L2_combmuonfeature_L2_mu24_g20vh_medium", - "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_EFxe40", - "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_EFxe40wMu", - "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_EFxe60", - "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_EFxe60wMu", - "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_xe35", - "trig_L2_combmuonfeature_L2_mu24_j65_c4cchad", - "trig_L2_combmuonfeature_L2_mu24_medium", - "trig_L2_combmuonfeature_L2_mu24_muCombTag_NoEF_tight", - "trig_L2_combmuonfeature_L2_mu24_tight", - "trig_L2_combmuonfeature_L2_mu24_tight_3j35_a4tchad", - "trig_L2_combmuonfeature_L2_mu24_tight_3j45_a4tchad", - "trig_L2_combmuonfeature_L2_mu24_tight_4j35_a4tchad", - "trig_L2_combmuonfeature_L2_mu24_tight_4j45_a4tchad", - "trig_L2_combmuonfeature_L2_mu24_tight_EFxe40", - "trig_L2_combmuonfeature_L2_mu24_tight_L2StarB", - "trig_L2_combmuonfeature_L2_mu24_tight_L2StarC", - "trig_L2_combmuonfeature_L2_mu24_tight_muFast", - "trig_L2_combmuonfeature_L2_mu36_tight", - "trig_L2_combmuonfeature_L2_mu40_MSonly_barrel_tight", - "trig_L2_combmuonfeature_L2_mu40_slow_outOfTime_tight", - "trig_L2_combmuonfeature_L2_mu40_slow_tight", - "trig_L2_combmuonfeature_L2_mu40_tight", - "trig_L2_combmuonfeature_L2_mu4T", - "trig_L2_combmuonfeature_L2_mu4T_cosmic", - "trig_L2_combmuonfeature_L2_mu4T_j105_c4cchad", - "trig_L2_combmuonfeature_L2_mu4T_j10_a4TTem", - "trig_L2_combmuonfeature_L2_mu4T_j140_c4cchad", - "trig_L2_combmuonfeature_L2_mu4T_j15_a4TTem", - "trig_L2_combmuonfeature_L2_mu4T_j165_c4cchad", - "trig_L2_combmuonfeature_L2_mu4T_j30_a4TTem", - "trig_L2_combmuonfeature_L2_mu4T_j40_c4cchad", - "trig_L2_combmuonfeature_L2_mu4T_j50_a4TTem", - "trig_L2_combmuonfeature_L2_mu4T_j50_c4cchad", - "trig_L2_combmuonfeature_L2_mu4T_j60_c4cchad", - "trig_L2_combmuonfeature_L2_mu4T_j60_c4cchad_xe40", - "trig_L2_combmuonfeature_L2_mu4T_j75_a4TTem", - "trig_L2_combmuonfeature_L2_mu4T_j75_c4cchad", - "trig_L2_combmuonfeature_L2_mu4T_muFast", - "trig_L2_combmuonfeature_L2_mu4Ti_g20Tvh_medium", - "trig_L2_combmuonfeature_L2_mu4Ti_g20Tvh_medium_TauMass", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumu", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumu_Barrel", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumu_L2StarB", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux_Barrel", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux_v2", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", - "trig_L2_combmuonfeature_L2_mu4Tmu6_DiMu", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_prescaled", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Upsimumu", - "trig_L2_combmuonfeature_L2_mu4Tmu6_Upsimumu_Barrel", - "trig_L2_combmuonfeature_L2_mu4_L1MU11_MSonly_cosmic", - "trig_L2_combmuonfeature_L2_mu4_L1MU11_cosmic", - "trig_L2_combmuonfeature_L2_mu4_empty_NoAlg", - "trig_L2_combmuonfeature_L2_mu4_firstempty_NoAlg", - "trig_L2_combmuonfeature_L2_mu4_l2cal_empty", - "trig_L2_combmuonfeature_L2_mu4_unpaired_iso_NoAlg", - "trig_L2_combmuonfeature_L2_mu50_MSonly_barrel_tight", - "trig_L2_combmuonfeature_L2_mu6", - "trig_L2_combmuonfeature_L2_mu60_slow_outOfTime_tight1", - "trig_L2_combmuonfeature_L2_mu60_slow_tight1", - "trig_L2_combmuonfeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", - "trig_L2_combmuonfeature_L2_mu6_Jpsimumu_L2StarA", - "trig_L2_combmuonfeature_L2_mu6_Jpsimumu_tight", - "trig_L2_combmuonfeature_L2_mu6_Jpsimumu_tight_L2StarB", - "trig_L2_combmuonfeature_L2_mu6_L2StarB", - "trig_L2_combmuonfeature_L2_mu6_MSonly", - "trig_L2_combmuonfeature_L2_mu6_Trk_Jpsi_loose", - "trig_L2_combmuonfeature_L2_mu6_Trk_Jpsi_loose_L2StarA", - "trig_L2_combmuonfeature_L2_mu6_Trk_Jpsi_loose_L2StarB", - "trig_L2_combmuonfeature_L2_mu8", - "trig_L2_combmuonfeature_L2_mu8_4j15_a4TTem", - "trig_L2_isomuonfeature_L2_2mu10", - "trig_L2_isomuonfeature_L2_2mu10_MSonly_g10_loose", - "trig_L2_isomuonfeature_L2_2mu10_MSonly_g10_loose_EMPTY", - "trig_L2_isomuonfeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", - "trig_L2_isomuonfeature_L2_2mu13", - "trig_L2_isomuonfeature_L2_2mu13_Zmumu_IDTrkNoCut", - "trig_L2_isomuonfeature_L2_2mu13_muFast", - "trig_L2_isomuonfeature_L2_2mu15", - "trig_L2_isomuonfeature_L2_2mu4T", - "trig_L2_isomuonfeature_L2_2mu4T_2e5_tight1", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumu", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_Barrel", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_BarrelOnly", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_Barrel_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumux", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_Barrel", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_BarrelOnly", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_v2", - "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_v2_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_DiMu", - "trig_L2_isomuonfeature_L2_2mu4T_DiMu_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_DiMu_L2StarC", - "trig_L2_isomuonfeature_L2_2mu4T_DiMu_e5_tight1", - "trig_L2_isomuonfeature_L2_2mu4T_DiMu_muFast", - "trig_L2_isomuonfeature_L2_2mu4T_DiMu_noVtx_noOS", - "trig_L2_isomuonfeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_Barrel", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", - "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_prescaled", - "trig_L2_isomuonfeature_L2_2mu4T_Upsimumu", - "trig_L2_isomuonfeature_L2_2mu4T_Upsimumu_Barrel", - "trig_L2_isomuonfeature_L2_2mu4T_Upsimumu_BarrelOnly", - "trig_L2_isomuonfeature_L2_2mu4T_Upsimumu_L2StarB", - "trig_L2_isomuonfeature_L2_2mu4T_xe45", - "trig_L2_isomuonfeature_L2_2mu4T_xe60", - "trig_L2_isomuonfeature_L2_2mu6", - "trig_L2_isomuonfeature_L2_2mu6_Bmumu", - "trig_L2_isomuonfeature_L2_2mu6_Bmumu_L2StarB", - "trig_L2_isomuonfeature_L2_2mu6_Bmumux", - "trig_L2_isomuonfeature_L2_2mu6_Bmumux_L2StarA", - "trig_L2_isomuonfeature_L2_2mu6_Bmumux_v2", - "trig_L2_isomuonfeature_L2_2mu6_Bmumux_v2_L2StarB", - "trig_L2_isomuonfeature_L2_2mu6_DiMu", - "trig_L2_isomuonfeature_L2_2mu6_DiMu_DY20", - "trig_L2_isomuonfeature_L2_2mu6_DiMu_DY25", - "trig_L2_isomuonfeature_L2_2mu6_DiMu_L2StarB", - "trig_L2_isomuonfeature_L2_2mu6_DiMu_noVtx_noOS", - "trig_L2_isomuonfeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", - "trig_L2_isomuonfeature_L2_2mu6_Jpsimumu", - "trig_L2_isomuonfeature_L2_2mu6_Jpsimumu_L2StarB", - "trig_L2_isomuonfeature_L2_2mu6_Upsimumu", - "trig_L2_isomuonfeature_L2_2mu6i_DiMu_DY", - "trig_L2_isomuonfeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", - "trig_L2_isomuonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS", - "trig_L2_isomuonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", - "trig_L2_isomuonfeature_L2_2mu8_EFxe30", - "trig_L2_isomuonfeature_L2_2mu8_EFxe40", - "trig_L2_isomuonfeature_L2_2mu8_EFxe40wMu", - "trig_L2_isomuonfeature_L2_mu10", - "trig_L2_isomuonfeature_L2_mu10_Jpsimumu", - "trig_L2_isomuonfeature_L2_mu10_Jpsimumu_L2StarA", - "trig_L2_isomuonfeature_L2_mu10_MSonly", - "trig_L2_isomuonfeature_L2_mu10_Upsimumu_tight_FS", - "trig_L2_isomuonfeature_L2_mu10_Upsimumu_tight_FS_L2StarA", - "trig_L2_isomuonfeature_L2_mu10_muCombTag_NoEF_tight", - "trig_L2_isomuonfeature_L2_mu10_muCombTag_NoEF_tight1", - "trig_L2_isomuonfeature_L2_mu10i_g10_medium", - "trig_L2_isomuonfeature_L2_mu10i_g10_medium_TauMass", - "trig_L2_isomuonfeature_L2_mu10i_loose_g12Tvh_medium", - "trig_L2_isomuonfeature_L2_mu10i_loose_g12Tvh_medium_TauMass", - "trig_L2_isomuonfeature_L2_mu11_empty_NoAlg", - "trig_L2_isomuonfeature_L2_mu13", - "trig_L2_isomuonfeature_L2_mu15", - "trig_L2_isomuonfeature_L2_mu15_l2cal", - "trig_L2_isomuonfeature_L2_mu15_muCombTag_NoEF_tight", - "trig_L2_isomuonfeature_L2_mu15_muCombTag_NoEF_tight1", - "trig_L2_isomuonfeature_L2_mu18", - "trig_L2_isomuonfeature_L2_mu18_2g10_loose", - "trig_L2_isomuonfeature_L2_mu18_2g10_medium", - "trig_L2_isomuonfeature_L2_mu18_IDTrkNoCut_tight", - "trig_L2_isomuonfeature_L2_mu18_medium", - "trig_L2_isomuonfeature_L2_mu18_tight", - "trig_L2_isomuonfeature_L2_mu18_tight_2mu4T_Jpsimumu", - "trig_L2_isomuonfeature_L2_mu18_tight_e7_medium1", - "trig_L2_isomuonfeature_L2_mu18i4_tight", - "trig_L2_isomuonfeature_L2_mu18it_tight", - "trig_L2_isomuonfeature_L2_mu20_muCombTag_NoEF_tight", - "trig_L2_isomuonfeature_L2_mu20_muCombTag_NoEF_tight1", - "trig_L2_isomuonfeature_L2_mu20i_tight_g5_loose_TauMass", - "trig_L2_isomuonfeature_L2_mu20i_tight_g5_medium", - "trig_L2_isomuonfeature_L2_mu20i_tight_g5_medium_TauMass", - "trig_L2_isomuonfeature_L2_mu20it_tight", - "trig_L2_isomuonfeature_L2_mu22_IDTrkNoCut_tight", - "trig_L2_isomuonfeature_L2_mu24", - "trig_L2_isomuonfeature_L2_mu24_g20vh_loose", - "trig_L2_isomuonfeature_L2_mu24_g20vh_medium", - "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_EFxe40", - "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_EFxe40wMu", - "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_EFxe60", - "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_EFxe60wMu", - "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_xe35", - "trig_L2_isomuonfeature_L2_mu24_j65_c4cchad", - "trig_L2_isomuonfeature_L2_mu24_medium", - "trig_L2_isomuonfeature_L2_mu24_muCombTag_NoEF_tight", - "trig_L2_isomuonfeature_L2_mu24_tight", - "trig_L2_isomuonfeature_L2_mu24_tight_3j35_a4tchad", - "trig_L2_isomuonfeature_L2_mu24_tight_3j45_a4tchad", - "trig_L2_isomuonfeature_L2_mu24_tight_4j35_a4tchad", - "trig_L2_isomuonfeature_L2_mu24_tight_4j45_a4tchad", - "trig_L2_isomuonfeature_L2_mu24_tight_EFxe40", - "trig_L2_isomuonfeature_L2_mu24_tight_L2StarB", - "trig_L2_isomuonfeature_L2_mu24_tight_L2StarC", - "trig_L2_isomuonfeature_L2_mu24_tight_muFast", - "trig_L2_isomuonfeature_L2_mu36_tight", - "trig_L2_isomuonfeature_L2_mu40_MSonly_barrel_tight", - "trig_L2_isomuonfeature_L2_mu40_slow_outOfTime_tight", - "trig_L2_isomuonfeature_L2_mu40_slow_tight", - "trig_L2_isomuonfeature_L2_mu40_tight", - "trig_L2_isomuonfeature_L2_mu4T", - "trig_L2_isomuonfeature_L2_mu4T_cosmic", - "trig_L2_isomuonfeature_L2_mu4T_j105_c4cchad", - "trig_L2_isomuonfeature_L2_mu4T_j10_a4TTem", - "trig_L2_isomuonfeature_L2_mu4T_j140_c4cchad", - "trig_L2_isomuonfeature_L2_mu4T_j15_a4TTem", - "trig_L2_isomuonfeature_L2_mu4T_j165_c4cchad", - "trig_L2_isomuonfeature_L2_mu4T_j30_a4TTem", - "trig_L2_isomuonfeature_L2_mu4T_j40_c4cchad", - "trig_L2_isomuonfeature_L2_mu4T_j50_a4TTem", - "trig_L2_isomuonfeature_L2_mu4T_j50_c4cchad", - "trig_L2_isomuonfeature_L2_mu4T_j60_c4cchad", - "trig_L2_isomuonfeature_L2_mu4T_j60_c4cchad_xe40", - "trig_L2_isomuonfeature_L2_mu4T_j75_a4TTem", - "trig_L2_isomuonfeature_L2_mu4T_j75_c4cchad", - "trig_L2_isomuonfeature_L2_mu4T_muFast", - "trig_L2_isomuonfeature_L2_mu4Ti_g20Tvh_medium", - "trig_L2_isomuonfeature_L2_mu4Ti_g20Tvh_medium_TauMass", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumu", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumu_Barrel", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumu_L2StarB", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux_Barrel", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux_v2", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", - "trig_L2_isomuonfeature_L2_mu4Tmu6_DiMu", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_prescaled", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Upsimumu", - "trig_L2_isomuonfeature_L2_mu4Tmu6_Upsimumu_Barrel", - "trig_L2_isomuonfeature_L2_mu4_L1MU11_MSonly_cosmic", - "trig_L2_isomuonfeature_L2_mu4_L1MU11_cosmic", - "trig_L2_isomuonfeature_L2_mu4_empty_NoAlg", - "trig_L2_isomuonfeature_L2_mu4_firstempty_NoAlg", - "trig_L2_isomuonfeature_L2_mu4_l2cal_empty", - "trig_L2_isomuonfeature_L2_mu4_unpaired_iso_NoAlg", - "trig_L2_isomuonfeature_L2_mu50_MSonly_barrel_tight", - "trig_L2_isomuonfeature_L2_mu6", - "trig_L2_isomuonfeature_L2_mu60_slow_outOfTime_tight1", - "trig_L2_isomuonfeature_L2_mu60_slow_tight1", - "trig_L2_isomuonfeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", - "trig_L2_isomuonfeature_L2_mu6_Jpsimumu_L2StarA", - "trig_L2_isomuonfeature_L2_mu6_Jpsimumu_tight", - "trig_L2_isomuonfeature_L2_mu6_Jpsimumu_tight_L2StarB", - "trig_L2_isomuonfeature_L2_mu6_L2StarB", - "trig_L2_isomuonfeature_L2_mu6_MSonly", - "trig_L2_isomuonfeature_L2_mu6_Trk_Jpsi_loose", - "trig_L2_isomuonfeature_L2_mu6_Trk_Jpsi_loose_L2StarA", - "trig_L2_isomuonfeature_L2_mu6_Trk_Jpsi_loose_L2StarB", - "trig_L2_isomuonfeature_L2_mu8", - "trig_L2_isomuonfeature_L2_mu8_4j15_a4TTem", - "trig_L2_tilemufeature_L2_2mu10", - "trig_L2_tilemufeature_L2_2mu10_MSonly_g10_loose", - "trig_L2_tilemufeature_L2_2mu10_MSonly_g10_loose_EMPTY", - "trig_L2_tilemufeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", - "trig_L2_tilemufeature_L2_2mu13", - "trig_L2_tilemufeature_L2_2mu13_Zmumu_IDTrkNoCut", - "trig_L2_tilemufeature_L2_2mu13_muFast", - "trig_L2_tilemufeature_L2_2mu15", - "trig_L2_tilemufeature_L2_2mu4T", - "trig_L2_tilemufeature_L2_2mu4T_2e5_tight1", - "trig_L2_tilemufeature_L2_2mu4T_Bmumu", - "trig_L2_tilemufeature_L2_2mu4T_Bmumu_Barrel", - "trig_L2_tilemufeature_L2_2mu4T_Bmumu_BarrelOnly", - "trig_L2_tilemufeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Bmumu_Barrel_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Bmumu_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Bmumux", - "trig_L2_tilemufeature_L2_2mu4T_Bmumux_Barrel", - "trig_L2_tilemufeature_L2_2mu4T_Bmumux_BarrelOnly", - "trig_L2_tilemufeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Bmumux_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Bmumux_v2", - "trig_L2_tilemufeature_L2_2mu4T_Bmumux_v2_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_DiMu", - "trig_L2_tilemufeature_L2_2mu4T_DiMu_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_DiMu_L2StarC", - "trig_L2_tilemufeature_L2_2mu4T_DiMu_e5_tight1", - "trig_L2_tilemufeature_L2_2mu4T_DiMu_muFast", - "trig_L2_tilemufeature_L2_2mu4T_DiMu_noVtx_noOS", - "trig_L2_tilemufeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_Barrel", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_BarrelOnly", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", - "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_prescaled", - "trig_L2_tilemufeature_L2_2mu4T_Upsimumu", - "trig_L2_tilemufeature_L2_2mu4T_Upsimumu_Barrel", - "trig_L2_tilemufeature_L2_2mu4T_Upsimumu_BarrelOnly", - "trig_L2_tilemufeature_L2_2mu4T_Upsimumu_L2StarB", - "trig_L2_tilemufeature_L2_2mu4T_xe45", - "trig_L2_tilemufeature_L2_2mu4T_xe60", - "trig_L2_tilemufeature_L2_2mu6", - "trig_L2_tilemufeature_L2_2mu6_Bmumu", - "trig_L2_tilemufeature_L2_2mu6_Bmumu_L2StarB", - "trig_L2_tilemufeature_L2_2mu6_Bmumux", - "trig_L2_tilemufeature_L2_2mu6_Bmumux_L2StarA", - "trig_L2_tilemufeature_L2_2mu6_Bmumux_v2", - "trig_L2_tilemufeature_L2_2mu6_Bmumux_v2_L2StarB", - "trig_L2_tilemufeature_L2_2mu6_DiMu", - "trig_L2_tilemufeature_L2_2mu6_DiMu_DY20", - "trig_L2_tilemufeature_L2_2mu6_DiMu_DY25", - "trig_L2_tilemufeature_L2_2mu6_DiMu_L2StarB", - "trig_L2_tilemufeature_L2_2mu6_DiMu_noVtx_noOS", - "trig_L2_tilemufeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", - "trig_L2_tilemufeature_L2_2mu6_Jpsimumu", - "trig_L2_tilemufeature_L2_2mu6_Jpsimumu_L2StarB", - "trig_L2_tilemufeature_L2_2mu6_Upsimumu", - "trig_L2_tilemufeature_L2_2mu6i_DiMu_DY", - "trig_L2_tilemufeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", - "trig_L2_tilemufeature_L2_2mu6i_DiMu_DY_noVtx_noOS", - "trig_L2_tilemufeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", - "trig_L2_tilemufeature_L2_2mu8_EFxe30", - "trig_L2_tilemufeature_L2_2mu8_EFxe40", - "trig_L2_tilemufeature_L2_2mu8_EFxe40wMu", - "trig_L2_tilemufeature_L2_mu10", - "trig_L2_tilemufeature_L2_mu10_Jpsimumu", - "trig_L2_tilemufeature_L2_mu10_Jpsimumu_L2StarA", - "trig_L2_tilemufeature_L2_mu10_MSonly", - "trig_L2_tilemufeature_L2_mu10_Upsimumu_tight_FS", - "trig_L2_tilemufeature_L2_mu10_Upsimumu_tight_FS_L2StarA", - "trig_L2_tilemufeature_L2_mu10_muCombTag_NoEF_tight", - "trig_L2_tilemufeature_L2_mu10_muCombTag_NoEF_tight1", - "trig_L2_tilemufeature_L2_mu10i_g10_medium", - "trig_L2_tilemufeature_L2_mu10i_g10_medium_TauMass", - "trig_L2_tilemufeature_L2_mu10i_loose_g12Tvh_medium", - "trig_L2_tilemufeature_L2_mu10i_loose_g12Tvh_medium_TauMass", - "trig_L2_tilemufeature_L2_mu11_empty_NoAlg", - "trig_L2_tilemufeature_L2_mu13", - "trig_L2_tilemufeature_L2_mu15", - "trig_L2_tilemufeature_L2_mu15_l2cal", - "trig_L2_tilemufeature_L2_mu15_muCombTag_NoEF_tight", - "trig_L2_tilemufeature_L2_mu15_muCombTag_NoEF_tight1", - "trig_L2_tilemufeature_L2_mu18", - "trig_L2_tilemufeature_L2_mu18_2g10_loose", - "trig_L2_tilemufeature_L2_mu18_2g10_medium", - "trig_L2_tilemufeature_L2_mu18_IDTrkNoCut_tight", - "trig_L2_tilemufeature_L2_mu18_medium", - "trig_L2_tilemufeature_L2_mu18_tight", - "trig_L2_tilemufeature_L2_mu18_tight_2mu4T_Jpsimumu", - "trig_L2_tilemufeature_L2_mu18_tight_e7_medium1", - "trig_L2_tilemufeature_L2_mu18i4_tight", - "trig_L2_tilemufeature_L2_mu18it_tight", - "trig_L2_tilemufeature_L2_mu20_muCombTag_NoEF_tight", - "trig_L2_tilemufeature_L2_mu20_muCombTag_NoEF_tight1", - "trig_L2_tilemufeature_L2_mu20i_tight_g5_loose_TauMass", - "trig_L2_tilemufeature_L2_mu20i_tight_g5_medium", - "trig_L2_tilemufeature_L2_mu20i_tight_g5_medium_TauMass", - "trig_L2_tilemufeature_L2_mu20it_tight", - "trig_L2_tilemufeature_L2_mu22_IDTrkNoCut_tight", - "trig_L2_tilemufeature_L2_mu24", - "trig_L2_tilemufeature_L2_mu24_g20vh_loose", - "trig_L2_tilemufeature_L2_mu24_g20vh_medium", - "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_EFxe40", - "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_EFxe40wMu", - "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_EFxe60", - "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_EFxe60wMu", - "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_xe35", - "trig_L2_tilemufeature_L2_mu24_j65_c4cchad", - "trig_L2_tilemufeature_L2_mu24_medium", - "trig_L2_tilemufeature_L2_mu24_muCombTag_NoEF_tight", - "trig_L2_tilemufeature_L2_mu24_tight", - "trig_L2_tilemufeature_L2_mu24_tight_3j35_a4tchad", - "trig_L2_tilemufeature_L2_mu24_tight_3j45_a4tchad", - "trig_L2_tilemufeature_L2_mu24_tight_4j35_a4tchad", - "trig_L2_tilemufeature_L2_mu24_tight_4j45_a4tchad", - "trig_L2_tilemufeature_L2_mu24_tight_EFxe40", - "trig_L2_tilemufeature_L2_mu24_tight_L2StarB", - "trig_L2_tilemufeature_L2_mu24_tight_L2StarC", - "trig_L2_tilemufeature_L2_mu24_tight_muFast", - "trig_L2_tilemufeature_L2_mu36_tight", - "trig_L2_tilemufeature_L2_mu40_MSonly_barrel_tight", - "trig_L2_tilemufeature_L2_mu40_slow_outOfTime_tight", - "trig_L2_tilemufeature_L2_mu40_slow_tight", - "trig_L2_tilemufeature_L2_mu40_tight", - "trig_L2_tilemufeature_L2_mu4T", - "trig_L2_tilemufeature_L2_mu4T_cosmic", - "trig_L2_tilemufeature_L2_mu4T_j105_c4cchad", - "trig_L2_tilemufeature_L2_mu4T_j10_a4TTem", - "trig_L2_tilemufeature_L2_mu4T_j140_c4cchad", - "trig_L2_tilemufeature_L2_mu4T_j15_a4TTem", - "trig_L2_tilemufeature_L2_mu4T_j165_c4cchad", - "trig_L2_tilemufeature_L2_mu4T_j30_a4TTem", - "trig_L2_tilemufeature_L2_mu4T_j40_c4cchad", - "trig_L2_tilemufeature_L2_mu4T_j50_a4TTem", - "trig_L2_tilemufeature_L2_mu4T_j50_c4cchad", - "trig_L2_tilemufeature_L2_mu4T_j60_c4cchad", - "trig_L2_tilemufeature_L2_mu4T_j60_c4cchad_xe40", - "trig_L2_tilemufeature_L2_mu4T_j75_a4TTem", - "trig_L2_tilemufeature_L2_mu4T_j75_c4cchad", - "trig_L2_tilemufeature_L2_mu4T_muFast", - "trig_L2_tilemufeature_L2_mu4Ti_g20Tvh_medium", - "trig_L2_tilemufeature_L2_mu4Ti_g20Tvh_medium_TauMass", - "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumu", - "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumu_Barrel", - "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", - "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumu_L2StarB", - "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux", - "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux_Barrel", - "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", - "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux_v2", - "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", - "trig_L2_tilemufeature_L2_mu4Tmu6_DiMu", - "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu", - "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_Barrel", - "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", - "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", - "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", - "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_L2StarB", - "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", - "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_prescaled", - "trig_L2_tilemufeature_L2_mu4Tmu6_Upsimumu", - "trig_L2_tilemufeature_L2_mu4Tmu6_Upsimumu_Barrel", - "trig_L2_tilemufeature_L2_mu4_L1MU11_MSonly_cosmic", - "trig_L2_tilemufeature_L2_mu4_L1MU11_cosmic", - "trig_L2_tilemufeature_L2_mu4_empty_NoAlg", - "trig_L2_tilemufeature_L2_mu4_firstempty_NoAlg", - "trig_L2_tilemufeature_L2_mu4_l2cal_empty", - "trig_L2_tilemufeature_L2_mu4_unpaired_iso_NoAlg", - "trig_L2_tilemufeature_L2_mu50_MSonly_barrel_tight", - "trig_L2_tilemufeature_L2_mu6", - "trig_L2_tilemufeature_L2_mu60_slow_outOfTime_tight1", - "trig_L2_tilemufeature_L2_mu60_slow_tight1", - "trig_L2_tilemufeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", - "trig_L2_tilemufeature_L2_mu6_Jpsimumu_L2StarA", - "trig_L2_tilemufeature_L2_mu6_Jpsimumu_tight", - "trig_L2_tilemufeature_L2_mu6_Jpsimumu_tight_L2StarB", - "trig_L2_tilemufeature_L2_mu6_L2StarB", - "trig_L2_tilemufeature_L2_mu6_MSonly", - "trig_L2_tilemufeature_L2_mu6_Trk_Jpsi_loose", - "trig_L2_tilemufeature_L2_mu6_Trk_Jpsi_loose_L2StarA", - "trig_L2_tilemufeature_L2_mu6_Trk_Jpsi_loose_L2StarB", - "trig_L2_tilemufeature_L2_mu8", - "trig_L2_tilemufeature_L2_mu8_4j15_a4TTem", - "trig_L2_tiletrackmufeature_L2_2mu10", - "trig_L2_tiletrackmufeature_L2_2mu10_MSonly_g10_loose", - "trig_L2_tiletrackmufeature_L2_2mu10_MSonly_g10_loose_EMPTY", - "trig_L2_tiletrackmufeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", - "trig_L2_tiletrackmufeature_L2_2mu13", - "trig_L2_tiletrackmufeature_L2_2mu13_Zmumu_IDTrkNoCut", - "trig_L2_tiletrackmufeature_L2_2mu13_muFast", - "trig_L2_tiletrackmufeature_L2_2mu15", - "trig_L2_tiletrackmufeature_L2_2mu4T", - "trig_L2_tiletrackmufeature_L2_2mu4T_2e5_tight1", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_Barrel", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_BarrelOnly", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_Barrel_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_Barrel", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_BarrelOnly", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_v2", - "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_v2_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu", - "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_L2StarC", - "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_e5_tight1", - "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_muFast", - "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_noVtx_noOS", - "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_Barrel", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_BarrelOnly", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", - "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_prescaled", - "trig_L2_tiletrackmufeature_L2_2mu4T_Upsimumu", - "trig_L2_tiletrackmufeature_L2_2mu4T_Upsimumu_Barrel", - "trig_L2_tiletrackmufeature_L2_2mu4T_Upsimumu_BarrelOnly", - "trig_L2_tiletrackmufeature_L2_2mu4T_Upsimumu_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu4T_xe45", - "trig_L2_tiletrackmufeature_L2_2mu4T_xe60", - "trig_L2_tiletrackmufeature_L2_2mu6", - "trig_L2_tiletrackmufeature_L2_2mu6_Bmumu", - "trig_L2_tiletrackmufeature_L2_2mu6_Bmumu_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu6_Bmumux", - "trig_L2_tiletrackmufeature_L2_2mu6_Bmumux_L2StarA", - "trig_L2_tiletrackmufeature_L2_2mu6_Bmumux_v2", - "trig_L2_tiletrackmufeature_L2_2mu6_Bmumux_v2_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu6_DiMu", - "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_DY20", - "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_DY25", - "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_noVtx_noOS", - "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu6_Jpsimumu", - "trig_L2_tiletrackmufeature_L2_2mu6_Jpsimumu_L2StarB", - "trig_L2_tiletrackmufeature_L2_2mu6_Upsimumu", - "trig_L2_tiletrackmufeature_L2_2mu6i_DiMu_DY", - "trig_L2_tiletrackmufeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", - "trig_L2_tiletrackmufeature_L2_2mu6i_DiMu_DY_noVtx_noOS", - "trig_L2_tiletrackmufeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", - "trig_L2_tiletrackmufeature_L2_2mu8_EFxe30", - "trig_L2_tiletrackmufeature_L2_2mu8_EFxe40", - "trig_L2_tiletrackmufeature_L2_2mu8_EFxe40wMu", - "trig_L2_tiletrackmufeature_L2_mu10", - "trig_L2_tiletrackmufeature_L2_mu10_Jpsimumu", - "trig_L2_tiletrackmufeature_L2_mu10_Jpsimumu_L2StarA", - "trig_L2_tiletrackmufeature_L2_mu10_MSonly", - "trig_L2_tiletrackmufeature_L2_mu10_Upsimumu_tight_FS", - "trig_L2_tiletrackmufeature_L2_mu10_Upsimumu_tight_FS_L2StarA", - "trig_L2_tiletrackmufeature_L2_mu10_muCombTag_NoEF_tight", - "trig_L2_tiletrackmufeature_L2_mu10_muCombTag_NoEF_tight1", - "trig_L2_tiletrackmufeature_L2_mu10i_g10_medium", - "trig_L2_tiletrackmufeature_L2_mu10i_g10_medium_TauMass", - "trig_L2_tiletrackmufeature_L2_mu10i_loose_g12Tvh_medium", - "trig_L2_tiletrackmufeature_L2_mu10i_loose_g12Tvh_medium_TauMass", - "trig_L2_tiletrackmufeature_L2_mu11_empty_NoAlg", - "trig_L2_tiletrackmufeature_L2_mu13", - "trig_L2_tiletrackmufeature_L2_mu15", - "trig_L2_tiletrackmufeature_L2_mu15_l2cal", - "trig_L2_tiletrackmufeature_L2_mu15_muCombTag_NoEF_tight", - "trig_L2_tiletrackmufeature_L2_mu15_muCombTag_NoEF_tight1", - "trig_L2_tiletrackmufeature_L2_mu18", - "trig_L2_tiletrackmufeature_L2_mu18_2g10_loose", - "trig_L2_tiletrackmufeature_L2_mu18_2g10_medium", - "trig_L2_tiletrackmufeature_L2_mu18_IDTrkNoCut_tight", - "trig_L2_tiletrackmufeature_L2_mu18_medium", - "trig_L2_tiletrackmufeature_L2_mu18_tight", - "trig_L2_tiletrackmufeature_L2_mu18_tight_2mu4T_Jpsimumu", - "trig_L2_tiletrackmufeature_L2_mu18_tight_e7_medium1", - "trig_L2_tiletrackmufeature_L2_mu18i4_tight", - "trig_L2_tiletrackmufeature_L2_mu18it_tight", - "trig_L2_tiletrackmufeature_L2_mu20_muCombTag_NoEF_tight", - "trig_L2_tiletrackmufeature_L2_mu20_muCombTag_NoEF_tight1", - "trig_L2_tiletrackmufeature_L2_mu20i_tight_g5_loose_TauMass", - "trig_L2_tiletrackmufeature_L2_mu20i_tight_g5_medium", - "trig_L2_tiletrackmufeature_L2_mu20i_tight_g5_medium_TauMass", - "trig_L2_tiletrackmufeature_L2_mu20it_tight", - "trig_L2_tiletrackmufeature_L2_mu22_IDTrkNoCut_tight", - "trig_L2_tiletrackmufeature_L2_mu24", - "trig_L2_tiletrackmufeature_L2_mu24_g20vh_loose", - "trig_L2_tiletrackmufeature_L2_mu24_g20vh_medium", - "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_EFxe40", - "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_EFxe40wMu", - "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_EFxe60", - "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_EFxe60wMu", - "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_xe35", - "trig_L2_tiletrackmufeature_L2_mu24_j65_c4cchad", - "trig_L2_tiletrackmufeature_L2_mu24_medium", - "trig_L2_tiletrackmufeature_L2_mu24_muCombTag_NoEF_tight", - "trig_L2_tiletrackmufeature_L2_mu24_tight", - "trig_L2_tiletrackmufeature_L2_mu24_tight_3j35_a4tchad", - "trig_L2_tiletrackmufeature_L2_mu24_tight_3j45_a4tchad", - "trig_L2_tiletrackmufeature_L2_mu24_tight_4j35_a4tchad", - "trig_L2_tiletrackmufeature_L2_mu24_tight_4j45_a4tchad", - "trig_L2_tiletrackmufeature_L2_mu24_tight_EFxe40", - "trig_L2_tiletrackmufeature_L2_mu24_tight_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu24_tight_L2StarC", - "trig_L2_tiletrackmufeature_L2_mu24_tight_muFast", - "trig_L2_tiletrackmufeature_L2_mu36_tight", - "trig_L2_tiletrackmufeature_L2_mu40_MSonly_barrel_tight", - "trig_L2_tiletrackmufeature_L2_mu40_slow_outOfTime_tight", - "trig_L2_tiletrackmufeature_L2_mu40_slow_tight", - "trig_L2_tiletrackmufeature_L2_mu40_tight", - "trig_L2_tiletrackmufeature_L2_mu4T", - "trig_L2_tiletrackmufeature_L2_mu4T_cosmic", - "trig_L2_tiletrackmufeature_L2_mu4T_j105_c4cchad", - "trig_L2_tiletrackmufeature_L2_mu4T_j10_a4TTem", - "trig_L2_tiletrackmufeature_L2_mu4T_j140_c4cchad", - "trig_L2_tiletrackmufeature_L2_mu4T_j15_a4TTem", - "trig_L2_tiletrackmufeature_L2_mu4T_j165_c4cchad", - "trig_L2_tiletrackmufeature_L2_mu4T_j30_a4TTem", - "trig_L2_tiletrackmufeature_L2_mu4T_j40_c4cchad", - "trig_L2_tiletrackmufeature_L2_mu4T_j50_a4TTem", - "trig_L2_tiletrackmufeature_L2_mu4T_j50_c4cchad", - "trig_L2_tiletrackmufeature_L2_mu4T_j60_c4cchad", - "trig_L2_tiletrackmufeature_L2_mu4T_j60_c4cchad_xe40", - "trig_L2_tiletrackmufeature_L2_mu4T_j75_a4TTem", - "trig_L2_tiletrackmufeature_L2_mu4T_j75_c4cchad", - "trig_L2_tiletrackmufeature_L2_mu4T_muFast", - "trig_L2_tiletrackmufeature_L2_mu4Ti_g20Tvh_medium", - "trig_L2_tiletrackmufeature_L2_mu4Ti_g20Tvh_medium_TauMass", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumu", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumu_Barrel", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumu_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux_Barrel", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux_v2", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_DiMu", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_Barrel", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_prescaled", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Upsimumu", - "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Upsimumu_Barrel", - "trig_L2_tiletrackmufeature_L2_mu4_L1MU11_MSonly_cosmic", - "trig_L2_tiletrackmufeature_L2_mu4_L1MU11_cosmic", - "trig_L2_tiletrackmufeature_L2_mu4_empty_NoAlg", - "trig_L2_tiletrackmufeature_L2_mu4_firstempty_NoAlg", - "trig_L2_tiletrackmufeature_L2_mu4_l2cal_empty", - "trig_L2_tiletrackmufeature_L2_mu4_unpaired_iso_NoAlg", - "trig_L2_tiletrackmufeature_L2_mu50_MSonly_barrel_tight", - "trig_L2_tiletrackmufeature_L2_mu6", - "trig_L2_tiletrackmufeature_L2_mu60_slow_outOfTime_tight1", - "trig_L2_tiletrackmufeature_L2_mu60_slow_tight1", - "trig_L2_tiletrackmufeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", - "trig_L2_tiletrackmufeature_L2_mu6_Jpsimumu_L2StarA", - "trig_L2_tiletrackmufeature_L2_mu6_Jpsimumu_tight", - "trig_L2_tiletrackmufeature_L2_mu6_Jpsimumu_tight_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu6_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu6_MSonly", - "trig_L2_tiletrackmufeature_L2_mu6_Trk_Jpsi_loose", - "trig_L2_tiletrackmufeature_L2_mu6_Trk_Jpsi_loose_L2StarA", - "trig_L2_tiletrackmufeature_L2_mu6_Trk_Jpsi_loose_L2StarB", - "trig_L2_tiletrackmufeature_L2_mu8", - "trig_L2_tiletrackmufeature_L2_mu8_4j15_a4TTem", - "trig_EF_trigmuonef_EF_2mu10", - "trig_EF_trigmuonef_EF_2mu10_MSonly_g10_loose", - "trig_EF_trigmuonef_EF_2mu10_MSonly_g10_loose_EMPTY", - "trig_EF_trigmuonef_EF_2mu10_MSonly_g10_loose_UNPAIRED_ISO", - #"trig_EF_trigmuonef_EF_2mu13", - "trig_EF_trigmuonef_EF_2mu13_Zmumu_IDTrkNoCut", - "trig_EF_trigmuonef_EF_2mu13_muFast", - "trig_EF_trigmuonef_EF_2mu15", - "trig_EF_trigmuonef_EF_2mu4T", - "trig_EF_trigmuonef_EF_2mu4T_2e5_tight1", - "trig_EF_trigmuonef_EF_2mu4T_Bmumu", - "trig_EF_trigmuonef_EF_2mu4T_Bmumu_Barrel", - "trig_EF_trigmuonef_EF_2mu4T_Bmumu_BarrelOnly", - "trig_EF_trigmuonef_EF_2mu4T_Bmumu_BarrelOnly_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Bmumu_Barrel_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Bmumu_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Bmumux", - "trig_EF_trigmuonef_EF_2mu4T_Bmumux_Barrel", - "trig_EF_trigmuonef_EF_2mu4T_Bmumux_BarrelOnly", - "trig_EF_trigmuonef_EF_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Bmumux_Barrel_v2_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Bmumux_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Bmumux_v2", - "trig_EF_trigmuonef_EF_2mu4T_Bmumux_v2_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_DiMu", - "trig_EF_trigmuonef_EF_2mu4T_DiMu_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_DiMu_L2StarC", - "trig_EF_trigmuonef_EF_2mu4T_DiMu_e5_tight1", - "trig_EF_trigmuonef_EF_2mu4T_DiMu_muFast", - "trig_EF_trigmuonef_EF_2mu4T_DiMu_noVtx_noOS", - "trig_EF_trigmuonef_EF_2mu4T_DiMu_noVtx_noOS_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_Barrel", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_BarrelOnly", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_BarrelOnly_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_BarrelOnly_prescaled", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_Barrel_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_Barrel_prescaled", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_IDTrkNoCut", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_L2StarB_prescaled", - "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_prescaled", - "trig_EF_trigmuonef_EF_2mu4T_Upsimumu", - "trig_EF_trigmuonef_EF_2mu4T_Upsimumu_Barrel", - "trig_EF_trigmuonef_EF_2mu4T_Upsimumu_BarrelOnly", - "trig_EF_trigmuonef_EF_2mu4T_Upsimumu_L2StarB", - "trig_EF_trigmuonef_EF_2mu4T_xe60", - "trig_EF_trigmuonef_EF_2mu4T_xe60_tclcw", - "trig_EF_trigmuonef_EF_2mu6", - "trig_EF_trigmuonef_EF_2mu6_Bmumu", - "trig_EF_trigmuonef_EF_2mu6_Bmumu_L2StarB", - "trig_EF_trigmuonef_EF_2mu6_Bmumux", - "trig_EF_trigmuonef_EF_2mu6_Bmumux_L2StarA", - "trig_EF_trigmuonef_EF_2mu6_Bmumux_v2", - "trig_EF_trigmuonef_EF_2mu6_Bmumux_v2_L2StarB", - "trig_EF_trigmuonef_EF_2mu6_DiMu", - "trig_EF_trigmuonef_EF_2mu6_DiMu_DY20", - "trig_EF_trigmuonef_EF_2mu6_DiMu_DY25", - "trig_EF_trigmuonef_EF_2mu6_DiMu_L2StarB", - "trig_EF_trigmuonef_EF_2mu6_DiMu_noVtx_noOS", - "trig_EF_trigmuonef_EF_2mu6_DiMu_noVtx_noOS_L2StarB", - "trig_EF_trigmuonef_EF_2mu6_Jpsimumu", - "trig_EF_trigmuonef_EF_2mu6_Jpsimumu_L2StarB", - "trig_EF_trigmuonef_EF_2mu6_Upsimumu", - "trig_EF_trigmuonef_EF_2mu6i_DiMu_DY", - "trig_EF_trigmuonef_EF_2mu6i_DiMu_DY_2j25_a4tchad", - "trig_EF_trigmuonef_EF_2mu6i_DiMu_DY_noVtx_noOS", - "trig_EF_trigmuonef_EF_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", - "trig_EF_trigmuonef_EF_2mu8_EFxe30", - "trig_EF_trigmuonef_EF_2mu8_EFxe30_tclcw", - "trig_EF_trigmuonef_EF_2mu8_EFxe40_tclcw", - "trig_EF_trigmuonef_EF_2mu8_EFxe40wMu_tclcw", - "trig_EF_trigmuonef_EF_mu10", - "trig_EF_trigmuonef_EF_mu10_Jpsimumu", - "trig_EF_trigmuonef_EF_mu10_Jpsimumu_L2StarA", - "trig_EF_trigmuonef_EF_mu10_MSonly", - "trig_EF_trigmuonef_EF_mu10_Upsimumu_tight_FS", - "trig_EF_trigmuonef_EF_mu10_Upsimumu_tight_FS_L2StarA", - "trig_EF_trigmuonef_EF_mu10_muCombTag_NoEF_tight", - "trig_EF_trigmuonef_EF_mu10_muCombTag_NoEF_tight1", - "trig_EF_trigmuonef_EF_mu10i_g10_medium", - "trig_EF_trigmuonef_EF_mu10i_g10_medium_TauMass", - "trig_EF_trigmuonef_EF_mu10i_loose_g12Tvh_medium", - "trig_EF_trigmuonef_EF_mu10i_loose_g12Tvh_medium_TauMass", - "trig_EF_trigmuonef_EF_mu11_empty_NoAlg", - "trig_EF_trigmuonef_EF_mu13", - #"trig_EF_trigmuonef_EF_mu15", - "trig_EF_trigmuonef_EF_mu15_muCombTag_NoEF_tight", - "trig_EF_trigmuonef_EF_mu15_muCombTag_NoEF_tight1", - "trig_EF_trigmuonef_EF_mu18", - "trig_EF_trigmuonef_EF_mu18_2g10_loose", - "trig_EF_trigmuonef_EF_mu18_2g10_medium", - "trig_EF_trigmuonef_EF_mu18_IDTrkNoCut_tight", - "trig_EF_trigmuonef_EF_mu18_medium", - #"trig_EF_trigmuonef_EF_mu18_tight", - "trig_EF_trigmuonef_EF_mu18_tight_2mu4_EFFS", - "trig_EF_trigmuonef_EF_mu18_tight_Jpsi_EFFS", - "trig_EF_trigmuonef_EF_mu18_tight_L2_2mu4T_Jpsimumu", - "trig_EF_trigmuonef_EF_mu18_tight_e7_medium1", - #"trig_EF_trigmuonef_EF_mu18_tight_mu8_EFFS", - "trig_EF_trigmuonef_EF_mu18i4_tight", - "trig_EF_trigmuonef_EF_mu18it_tight", - "trig_EF_trigmuonef_EF_mu20_muCombTag_NoEF_tight", - "trig_EF_trigmuonef_EF_mu20_muCombTag_NoEF_tight1", - "trig_EF_trigmuonef_EF_mu20i_tight_g5_loose_TauMass", - "trig_EF_trigmuonef_EF_mu20i_tight_g5_medium", - "trig_EF_trigmuonef_EF_mu20i_tight_g5_medium_TauMass", - "trig_EF_trigmuonef_EF_mu20it_tight", - "trig_EF_trigmuonef_EF_mu22_IDTrkNoCut_tight", - "trig_EF_trigmuonef_EF_mu24", - "trig_EF_trigmuonef_EF_mu24_g20vh_loose", - "trig_EF_trigmuonef_EF_mu24_g20vh_medium", - "trig_EF_trigmuonef_EF_mu24_j65_a4tchad", - "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe40", - "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe40_tclcw", - "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe40wMu_tclcw", - "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe60_tclcw", - "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe60wMu_tclcw", - "trig_EF_trigmuonef_EF_mu24_medium", - "trig_EF_trigmuonef_EF_mu24_muCombTag_NoEF_tight", - "trig_EF_trigmuonef_EF_mu24_tight", - "trig_EF_trigmuonef_EF_mu24_tight_3j35_a4tchad", - "trig_EF_trigmuonef_EF_mu24_tight_3j45_a4tchad", - "trig_EF_trigmuonef_EF_mu24_tight_4j35_a4tchad", - "trig_EF_trigmuonef_EF_mu24_tight_4j45_a4tchad", - "trig_EF_trigmuonef_EF_mu24_tight_EFxe40", - "trig_EF_trigmuonef_EF_mu24_tight_L2StarB", - "trig_EF_trigmuonef_EF_mu24_tight_L2StarC", - "trig_EF_trigmuonef_EF_mu24_tight_MG", - "trig_EF_trigmuonef_EF_mu24_tight_MuonEF", - "trig_EF_trigmuonef_EF_mu24_tight_mu6_EFFS", - #"trig_EF_trigmuonef_EF_mu24i_tight", - #"trig_EF_trigmuonef_EF_mu24i_tight_MG", - "trig_EF_trigmuonef_EF_mu24i_tight_MuonEF", - "trig_EF_trigmuonef_EF_mu24i_tight_muFast", - "trig_EF_trigmuonef_EF_mu36_tight", - "trig_EF_trigmuonef_EF_mu40_MSonly_barrel_tight", - "trig_EF_trigmuonef_EF_mu40_slow_outOfTime_tight", - "trig_EF_trigmuonef_EF_mu40_slow_tight", - "trig_EF_trigmuonef_EF_mu40_tight", - "trig_EF_trigmuonef_EF_mu4T", - "trig_EF_trigmuonef_EF_mu4T_cosmic", - "trig_EF_trigmuonef_EF_mu4T_j110_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j110_a4tchad_L2FS_matched_jetcalibdelayed", - "trig_EF_trigmuonef_EF_mu4T_j110_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j110_a4tchad_matched_jetcalibdelayed", - "trig_EF_trigmuonef_EF_mu4T_j145_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j145_a4tchad_L2FS_matched_jetcalibdelayed", - "trig_EF_trigmuonef_EF_mu4T_j145_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j145_a4tchad_matched_jetcalibdelayed", - "trig_EF_trigmuonef_EF_mu4T_j15_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j15_a4tchad_matchedZ", - "trig_EF_trigmuonef_EF_mu4T_j180_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j180_a4tchad_L2FS_matched_jetcalibdelayed", - "trig_EF_trigmuonef_EF_mu4T_j180_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j180_a4tchad_matched_jetcalibdelayed", - "trig_EF_trigmuonef_EF_mu4T_j220_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j220_a4tchad_L2FS_matched_jetcalibdelayed", - "trig_EF_trigmuonef_EF_mu4T_j220_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j220_a4tchad_matched_jetcalibdelayed", - "trig_EF_trigmuonef_EF_mu4T_j25_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j25_a4tchad_matchedZ", - "trig_EF_trigmuonef_EF_mu4T_j280_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j280_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j35_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j35_a4tchad_matchedZ", - "trig_EF_trigmuonef_EF_mu4T_j360_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j360_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j45_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j45_a4tchad_L2FS_matchedZ", - "trig_EF_trigmuonef_EF_mu4T_j45_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j45_a4tchad_matchedZ", - "trig_EF_trigmuonef_EF_mu4T_j55_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j55_a4tchad_L2FS_matchedZ", - "trig_EF_trigmuonef_EF_mu4T_j55_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j55_a4tchad_matchedZ", - "trig_EF_trigmuonef_EF_mu4T_j65_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j65_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_j65_a4tchad_xe60_tclcw_loose", - "trig_EF_trigmuonef_EF_mu4T_j65_a4tchad_xe70_tclcw_veryloose", - "trig_EF_trigmuonef_EF_mu4T_j80_a4tchad_L2FS_matched", - "trig_EF_trigmuonef_EF_mu4T_j80_a4tchad_matched", - "trig_EF_trigmuonef_EF_mu4T_muFast", - "trig_EF_trigmuonef_EF_mu4Ti_g20Tvh_medium", - "trig_EF_trigmuonef_EF_mu4Ti_g20Tvh_medium_TauMass", - "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumu", - "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumu_Barrel", - "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumu_Barrel_L2StarB", - "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumu_L2StarB", - "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux", - "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux_Barrel", - "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", - "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux_v2", - "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux_v2_L2StarB", - "trig_EF_trigmuonef_EF_mu4Tmu6_DiMu", - "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu", - "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_Barrel", - "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_Barrel_L2StarB", - "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_Barrel_prescaled", - "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_IDTrkNoCut", - "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_L2StarB", - "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_L2StarB_prescaled", - "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_prescaled", - "trig_EF_trigmuonef_EF_mu4Tmu6_Upsimumu", - "trig_EF_trigmuonef_EF_mu4Tmu6_Upsimumu_Barrel", - "trig_EF_trigmuonef_EF_mu4_L1MU11_MSonly_cosmic", - "trig_EF_trigmuonef_EF_mu4_L1MU11_cosmic", - "trig_EF_trigmuonef_EF_mu4_empty_NoAlg", - "trig_EF_trigmuonef_EF_mu4_firstempty_NoAlg", - "trig_EF_trigmuonef_EF_mu4_unpaired_iso_NoAlg", - "trig_EF_trigmuonef_EF_mu50_MSonly_barrel_tight", - "trig_EF_trigmuonef_EF_mu6", - "trig_EF_trigmuonef_EF_mu60_slow_outOfTime_tight1", - "trig_EF_trigmuonef_EF_mu60_slow_tight1", - "trig_EF_trigmuonef_EF_mu6T_2b55_medium_2j55_a4tchad_L1J20_matched", - "trig_EF_trigmuonef_EF_mu6_Jpsimumu_L2StarA", - "trig_EF_trigmuonef_EF_mu6_Jpsimumu_tight", - "trig_EF_trigmuonef_EF_mu6_Jpsimumu_tight_L2StarB", - "trig_EF_trigmuonef_EF_mu6_L2StarB", - "trig_EF_trigmuonef_EF_mu6_MSonly", - "trig_EF_trigmuonef_EF_mu6_Trk_Jpsi_loose", - "trig_EF_trigmuonef_EF_mu6_Trk_Jpsi_loose_L2StarA", - "trig_EF_trigmuonef_EF_mu6_Trk_Jpsi_loose_L2StarB", - "trig_EF_trigmuonef_EF_mu6i", - #"trig_EF_trigmuonef_EF_mu8", - "trig_EF_trigmuonef_EF_mu8_4j45_a4tchad_L2FS", - "trig_EF_trigmugirl_EF_2mu10", - "trig_EF_trigmugirl_EF_2mu10_MSonly_g10_loose", - "trig_EF_trigmugirl_EF_2mu10_MSonly_g10_loose_EMPTY", - "trig_EF_trigmugirl_EF_2mu10_MSonly_g10_loose_UNPAIRED_ISO", - "trig_EF_trigmugirl_EF_2mu13", - "trig_EF_trigmugirl_EF_2mu13_Zmumu_IDTrkNoCut", - "trig_EF_trigmugirl_EF_2mu13_muFast", - "trig_EF_trigmugirl_EF_2mu15", - "trig_EF_trigmugirl_EF_2mu4T", - "trig_EF_trigmugirl_EF_2mu4T_2e5_tight1", - "trig_EF_trigmugirl_EF_2mu4T_Bmumu", - "trig_EF_trigmugirl_EF_2mu4T_Bmumu_Barrel", - "trig_EF_trigmugirl_EF_2mu4T_Bmumu_BarrelOnly", - "trig_EF_trigmugirl_EF_2mu4T_Bmumu_BarrelOnly_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Bmumu_Barrel_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Bmumu_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Bmumux", - "trig_EF_trigmugirl_EF_2mu4T_Bmumux_Barrel", - "trig_EF_trigmugirl_EF_2mu4T_Bmumux_BarrelOnly", - "trig_EF_trigmugirl_EF_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Bmumux_Barrel_v2_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Bmumux_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Bmumux_v2", - "trig_EF_trigmugirl_EF_2mu4T_Bmumux_v2_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_DiMu", - "trig_EF_trigmugirl_EF_2mu4T_DiMu_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_DiMu_L2StarC", - "trig_EF_trigmugirl_EF_2mu4T_DiMu_e5_tight1", - "trig_EF_trigmugirl_EF_2mu4T_DiMu_muFast", - "trig_EF_trigmugirl_EF_2mu4T_DiMu_noVtx_noOS", - "trig_EF_trigmugirl_EF_2mu4T_DiMu_noVtx_noOS_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_Barrel", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_BarrelOnly", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_BarrelOnly_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_BarrelOnly_prescaled", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_Barrel_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_Barrel_prescaled", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_IDTrkNoCut", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_L2StarB_prescaled", - "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_prescaled", - "trig_EF_trigmugirl_EF_2mu4T_Upsimumu", - "trig_EF_trigmugirl_EF_2mu4T_Upsimumu_Barrel", - "trig_EF_trigmugirl_EF_2mu4T_Upsimumu_BarrelOnly", - "trig_EF_trigmugirl_EF_2mu4T_Upsimumu_L2StarB", - "trig_EF_trigmugirl_EF_2mu4T_xe60", - "trig_EF_trigmugirl_EF_2mu4T_xe60_tclcw", - "trig_EF_trigmugirl_EF_2mu6", - "trig_EF_trigmugirl_EF_2mu6_Bmumu", - "trig_EF_trigmugirl_EF_2mu6_Bmumu_L2StarB", - "trig_EF_trigmugirl_EF_2mu6_Bmumux", - "trig_EF_trigmugirl_EF_2mu6_Bmumux_L2StarA", - "trig_EF_trigmugirl_EF_2mu6_Bmumux_v2", - "trig_EF_trigmugirl_EF_2mu6_Bmumux_v2_L2StarB", - "trig_EF_trigmugirl_EF_2mu6_DiMu", - "trig_EF_trigmugirl_EF_2mu6_DiMu_DY20", - "trig_EF_trigmugirl_EF_2mu6_DiMu_DY25", - "trig_EF_trigmugirl_EF_2mu6_DiMu_L2StarB", - "trig_EF_trigmugirl_EF_2mu6_DiMu_noVtx_noOS", - "trig_EF_trigmugirl_EF_2mu6_DiMu_noVtx_noOS_L2StarB", - "trig_EF_trigmugirl_EF_2mu6_Jpsimumu", - "trig_EF_trigmugirl_EF_2mu6_Jpsimumu_L2StarB", - "trig_EF_trigmugirl_EF_2mu6_Upsimumu", - "trig_EF_trigmugirl_EF_2mu6i_DiMu_DY", - "trig_EF_trigmugirl_EF_2mu6i_DiMu_DY_2j25_a4tchad", - "trig_EF_trigmugirl_EF_2mu6i_DiMu_DY_noVtx_noOS", - "trig_EF_trigmugirl_EF_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", - "trig_EF_trigmugirl_EF_2mu8_EFxe30", - "trig_EF_trigmugirl_EF_2mu8_EFxe30_tclcw", - "trig_EF_trigmugirl_EF_2mu8_EFxe40_tclcw", - "trig_EF_trigmugirl_EF_2mu8_EFxe40wMu_tclcw", - "trig_EF_trigmugirl_EF_mu10", - "trig_EF_trigmugirl_EF_mu10_Jpsimumu", - "trig_EF_trigmugirl_EF_mu10_Jpsimumu_L2StarA", - "trig_EF_trigmugirl_EF_mu10_MSonly", - "trig_EF_trigmugirl_EF_mu10_Upsimumu_tight_FS", - "trig_EF_trigmugirl_EF_mu10_Upsimumu_tight_FS_L2StarA", - "trig_EF_trigmugirl_EF_mu10_muCombTag_NoEF_tight", - "trig_EF_trigmugirl_EF_mu10_muCombTag_NoEF_tight1", - "trig_EF_trigmugirl_EF_mu10i_g10_medium", - "trig_EF_trigmugirl_EF_mu10i_g10_medium_TauMass", - "trig_EF_trigmugirl_EF_mu10i_loose_g12Tvh_medium", - "trig_EF_trigmugirl_EF_mu10i_loose_g12Tvh_medium_TauMass", - "trig_EF_trigmugirl_EF_mu11_empty_NoAlg", - "trig_EF_trigmugirl_EF_mu13", - "trig_EF_trigmugirl_EF_mu15", - "trig_EF_trigmugirl_EF_mu15_muCombTag_NoEF_tight", - "trig_EF_trigmugirl_EF_mu15_muCombTag_NoEF_tight1", - "trig_EF_trigmugirl_EF_mu18", - "trig_EF_trigmugirl_EF_mu18_2g10_loose", - "trig_EF_trigmugirl_EF_mu18_2g10_medium", - "trig_EF_trigmugirl_EF_mu18_IDTrkNoCut_tight", - "trig_EF_trigmugirl_EF_mu18_medium", - "trig_EF_trigmugirl_EF_mu18_tight", - "trig_EF_trigmugirl_EF_mu18_tight_2mu4_EFFS", - "trig_EF_trigmugirl_EF_mu18_tight_Jpsi_EFFS", - "trig_EF_trigmugirl_EF_mu18_tight_L2_2mu4T_Jpsimumu", - "trig_EF_trigmugirl_EF_mu18_tight_e7_medium1", - "trig_EF_trigmugirl_EF_mu18_tight_mu8_EFFS", - "trig_EF_trigmugirl_EF_mu18i4_tight", - "trig_EF_trigmugirl_EF_mu18it_tight", - "trig_EF_trigmugirl_EF_mu20_muCombTag_NoEF_tight", - "trig_EF_trigmugirl_EF_mu20_muCombTag_NoEF_tight1", - "trig_EF_trigmugirl_EF_mu20i_tight_g5_loose_TauMass", - "trig_EF_trigmugirl_EF_mu20i_tight_g5_medium", - "trig_EF_trigmugirl_EF_mu20i_tight_g5_medium_TauMass", - "trig_EF_trigmugirl_EF_mu20it_tight", - "trig_EF_trigmugirl_EF_mu22_IDTrkNoCut_tight", - "trig_EF_trigmugirl_EF_mu24", - "trig_EF_trigmugirl_EF_mu24_g20vh_loose", - "trig_EF_trigmugirl_EF_mu24_g20vh_medium", - "trig_EF_trigmugirl_EF_mu24_j65_a4tchad", - "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe40", - "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe40_tclcw", - "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe40wMu_tclcw", - "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe60_tclcw", - "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe60wMu_tclcw", - "trig_EF_trigmugirl_EF_mu24_medium", - "trig_EF_trigmugirl_EF_mu24_muCombTag_NoEF_tight", - "trig_EF_trigmugirl_EF_mu24_tight", - "trig_EF_trigmugirl_EF_mu24_tight_3j35_a4tchad", - "trig_EF_trigmugirl_EF_mu24_tight_3j45_a4tchad", - "trig_EF_trigmugirl_EF_mu24_tight_4j35_a4tchad", - "trig_EF_trigmugirl_EF_mu24_tight_4j45_a4tchad", - "trig_EF_trigmugirl_EF_mu24_tight_EFxe40", - "trig_EF_trigmugirl_EF_mu24_tight_L2StarB", - "trig_EF_trigmugirl_EF_mu24_tight_L2StarC", - "trig_EF_trigmugirl_EF_mu24_tight_MG", - "trig_EF_trigmugirl_EF_mu24_tight_MuonEF", - "trig_EF_trigmugirl_EF_mu24_tight_mu6_EFFS", - "trig_EF_trigmugirl_EF_mu24i_tight", - "trig_EF_trigmugirl_EF_mu24i_tight_MG", - "trig_EF_trigmugirl_EF_mu24i_tight_MuonEF", - "trig_EF_trigmugirl_EF_mu24i_tight_muFast", - "trig_EF_trigmugirl_EF_mu36_tight", - "trig_EF_trigmugirl_EF_mu40_MSonly_barrel_tight", - "trig_EF_trigmugirl_EF_mu40_slow_outOfTime_tight", - "trig_EF_trigmugirl_EF_mu40_slow_tight", - "trig_EF_trigmugirl_EF_mu40_tight", - "trig_EF_trigmugirl_EF_mu4T", - "trig_EF_trigmugirl_EF_mu4T_cosmic", - "trig_EF_trigmugirl_EF_mu4T_j110_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j110_a4tchad_L2FS_matched_jetcalibdelayed", - "trig_EF_trigmugirl_EF_mu4T_j110_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j110_a4tchad_matched_jetcalibdelayed", - "trig_EF_trigmugirl_EF_mu4T_j145_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j145_a4tchad_L2FS_matched_jetcalibdelayed", - "trig_EF_trigmugirl_EF_mu4T_j145_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j145_a4tchad_matched_jetcalibdelayed", - "trig_EF_trigmugirl_EF_mu4T_j15_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j15_a4tchad_matchedZ", - "trig_EF_trigmugirl_EF_mu4T_j180_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j180_a4tchad_L2FS_matched_jetcalibdelayed", - "trig_EF_trigmugirl_EF_mu4T_j180_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j180_a4tchad_matched_jetcalibdelayed", - "trig_EF_trigmugirl_EF_mu4T_j220_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j220_a4tchad_L2FS_matched_jetcalibdelayed", - "trig_EF_trigmugirl_EF_mu4T_j220_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j220_a4tchad_matched_jetcalibdelayed", - "trig_EF_trigmugirl_EF_mu4T_j25_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j25_a4tchad_matchedZ", - "trig_EF_trigmugirl_EF_mu4T_j280_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j280_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j35_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j35_a4tchad_matchedZ", - "trig_EF_trigmugirl_EF_mu4T_j360_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j360_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j45_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j45_a4tchad_L2FS_matchedZ", - "trig_EF_trigmugirl_EF_mu4T_j45_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j45_a4tchad_matchedZ", - "trig_EF_trigmugirl_EF_mu4T_j55_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j55_a4tchad_L2FS_matchedZ", - "trig_EF_trigmugirl_EF_mu4T_j55_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j55_a4tchad_matchedZ", - "trig_EF_trigmugirl_EF_mu4T_j65_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j65_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_j65_a4tchad_xe60_tclcw_loose", - "trig_EF_trigmugirl_EF_mu4T_j65_a4tchad_xe70_tclcw_veryloose", - "trig_EF_trigmugirl_EF_mu4T_j80_a4tchad_L2FS_matched", - "trig_EF_trigmugirl_EF_mu4T_j80_a4tchad_matched", - "trig_EF_trigmugirl_EF_mu4T_muFast", - "trig_EF_trigmugirl_EF_mu4Ti_g20Tvh_medium", - "trig_EF_trigmugirl_EF_mu4Ti_g20Tvh_medium_TauMass", - "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumu", - "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumu_Barrel", - "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumu_Barrel_L2StarB", - "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumu_L2StarB", - "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux", - "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux_Barrel", - "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", - "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux_v2", - "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux_v2_L2StarB", - "trig_EF_trigmugirl_EF_mu4Tmu6_DiMu", - "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu", - "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_Barrel", - "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_Barrel_L2StarB", - "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", - "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_Barrel_prescaled", - "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_IDTrkNoCut", - "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_L2StarB", - "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_L2StarB_prescaled", - "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_prescaled", - "trig_EF_trigmugirl_EF_mu4Tmu6_Upsimumu", - "trig_EF_trigmugirl_EF_mu4Tmu6_Upsimumu_Barrel", - "trig_EF_trigmugirl_EF_mu4_L1MU11_MSonly_cosmic", - "trig_EF_trigmugirl_EF_mu4_L1MU11_cosmic", - "trig_EF_trigmugirl_EF_mu4_empty_NoAlg", - "trig_EF_trigmugirl_EF_mu4_firstempty_NoAlg", - "trig_EF_trigmugirl_EF_mu4_unpaired_iso_NoAlg", - "trig_EF_trigmugirl_EF_mu50_MSonly_barrel_tight", - "trig_EF_trigmugirl_EF_mu6", - "trig_EF_trigmugirl_EF_mu60_slow_outOfTime_tight1", - "trig_EF_trigmugirl_EF_mu60_slow_tight1", - "trig_EF_trigmugirl_EF_mu6T_2b55_medium_2j55_a4tchad_L1J20_matched", - "trig_EF_trigmugirl_EF_mu6_Jpsimumu_L2StarA", - "trig_EF_trigmugirl_EF_mu6_Jpsimumu_tight", - "trig_EF_trigmugirl_EF_mu6_Jpsimumu_tight_L2StarB", - "trig_EF_trigmugirl_EF_mu6_L2StarB", - "trig_EF_trigmugirl_EF_mu6_MSonly", - "trig_EF_trigmugirl_EF_mu6_Trk_Jpsi_loose", - "trig_EF_trigmugirl_EF_mu6_Trk_Jpsi_loose_L2StarA", - "trig_EF_trigmugirl_EF_mu6_Trk_Jpsi_loose_L2StarB", - "trig_EF_trigmugirl_EF_mu6i", - "trig_EF_trigmugirl_EF_mu8", - "trig_EF_trigmugirl_EF_mu8_4j45_a4tchad_L2FS", - #"trig_DB_SMK", - "trig_DB_L1PSK", - "trig_DB_HLTPSK", - "trig_bgCode", - "trig_L1_emtau_n", - "trig_L1_emtau_eta", - "trig_L1_emtau_phi", - "trig_L1_emtau_thrNames", - "trig_L1_emtau_thrValues", - "trig_L1_emtau_core", - "trig_L1_emtau_EMClus", - "trig_L1_emtau_tauClus", - "trig_L1_emtau_EMIsol", - "trig_L1_emtau_hadIsol", - "trig_L1_emtau_hadCore", - "trig_L1_emtau_thrPattern", - "trig_L2_emcl_n", - "trig_L2_emcl_quality", - "trig_L2_emcl_E", - "trig_L2_emcl_Et", - "trig_L2_emcl_eta", - "trig_L2_emcl_phi", - "trig_L2_emcl_E237", - "trig_L2_emcl_E277", - "trig_L2_emcl_fracs1", - "trig_L2_emcl_weta2", - "trig_L2_emcl_Ehad1", - "trig_L2_emcl_eta1", - "trig_L2_emcl_emaxs1", - "trig_L2_emcl_e2tsts1", - "trig_L2_emcl_E233", - "trig_L2_emcl_wstot", - "trig_L2_trk_idscan_eGamma_n", - "trig_L2_trk_idscan_eGamma_algorithmId", - "trig_L2_trk_idscan_eGamma_trackStatus", - "trig_L2_trk_idscan_eGamma_chi2Ndof", - "trig_L2_trk_idscan_eGamma_nStrawHits", - "trig_L2_trk_idscan_eGamma_nHighThrHits", - "trig_L2_trk_idscan_eGamma_nPixelSpacePoints", - "trig_L2_trk_idscan_eGamma_nSCT_SpacePoints", - "trig_L2_trk_idscan_eGamma_param_a0", - "trig_L2_trk_idscan_eGamma_param_z0", - "trig_L2_trk_idscan_eGamma_param_phi0", - "trig_L2_trk_idscan_eGamma_param_eta", - "trig_L2_trk_idscan_eGamma_param_pt", - "trig_L2_trk_sitrack_eGamma_n", - "trig_L2_trk_sitrack_eGamma_algorithmId", - "trig_L2_trk_sitrack_eGamma_trackStatus", - "trig_L2_trk_sitrack_eGamma_chi2Ndof", - "trig_L2_trk_sitrack_eGamma_nStrawHits", - "trig_L2_trk_sitrack_eGamma_nHighThrHits", - "trig_L2_trk_sitrack_eGamma_nPixelSpacePoints", - "trig_L2_trk_sitrack_eGamma_nSCT_SpacePoints", - "trig_L2_trk_sitrack_eGamma_param_a0", - "trig_L2_trk_sitrack_eGamma_param_z0", - "trig_L2_trk_sitrack_eGamma_param_phi0", - "trig_L2_trk_sitrack_eGamma_param_eta", - "trig_L2_trk_sitrack_eGamma_param_pt", - "trig_L2_el_n", - "trig_L2_el_E", - "trig_L2_el_Et", - "trig_L2_el_pt", - "trig_L2_el_eta", - "trig_L2_el_phi", - "trig_L2_el_RoIWord", - "trig_L2_el_zvertex", - "trig_L2_el_charge", - "trig_L2_el_trackAlgo", - "trig_L2_el_TRTHighTHitsRatio", - "trig_L2_el_deltaeta1", - "trig_L2_el_deltaphi2", - "trig_L2_el_EtOverPt", - "trig_L2_el_reta", - "trig_L2_el_Eratio", - "trig_L2_el_Ethad1", - "trig_L2_el_nTRTHits", - "trig_L2_el_nTRTHighTHits", - "trig_L2_el_trackIndx", - "trig_L2_el_trkPt", - "trig_L2_el_trkEtaAtCalo", - "trig_L2_el_trkPhiAtCalo", - "trig_L2_el_caloEta", - "trig_L2_el_caloPhi", - "trig_L2_el_F1", - "trig_L2_ph_n", - "trig_L2_ph_E", - "trig_L2_ph_Et", - "trig_L2_ph_pt", - "trig_L2_ph_eta", - "trig_L2_ph_phi", - "trig_L2_ph_RoIWord", - "trig_L2_ph_HadEt1", - "trig_L2_ph_Eratio", - "trig_L2_ph_Reta", - "trig_L2_ph_dPhi", - "trig_L2_ph_dEta", - "trig_L2_ph_F1", - "trig_EF_emcl_n", - "trig_EF_emcl_pt", - "trig_EF_emcl_eta", - "trig_EF_emcl_phi", - "trig_EF_emcl_E_em", - "trig_EF_emcl_E_had", - "trig_EF_emcl_firstEdens", - "trig_EF_emcl_cellmaxfrac", - "trig_EF_emcl_longitudinal", - "trig_EF_emcl_secondlambda", - "trig_EF_emcl_lateral", - "trig_EF_emcl_secondR", - "trig_EF_emcl_centerlambda", - "trig_EF_emcl_deltaTheta", - "trig_EF_emcl_deltaPhi", - "trig_EF_emcl_centermag", - "trig_EF_emcl_time", - "trig_EF_emcl_slw_n", - "trig_EF_emcl_slw_pt", - "trig_EF_emcl_slw_eta", - "trig_EF_emcl_slw_phi", - "trig_EF_emcl_slw_E_em", - "trig_EF_emcl_slw_E_had", - "trig_EF_emcl_slw_firstEdens", - "trig_EF_emcl_slw_cellmaxfrac", - "trig_EF_emcl_slw_longitudinal", - "trig_EF_emcl_slw_secondlambda", - "trig_EF_emcl_slw_lateral", - "trig_EF_emcl_slw_secondR", - "trig_EF_emcl_slw_centerlambda", - "trig_EF_emcl_slw_deltaTheta", - "trig_EF_emcl_slw_deltaPhi", - "trig_EF_emcl_slw_centermag", - "trig_EF_emcl_slw_time", - #"trig_EF_el_n", - "trig_EF_el_E", - "trig_EF_el_Et", - "trig_EF_el_pt", - "trig_EF_el_m", - #"trig_EF_el_eta", - #"trig_EF_el_phi", - "trig_EF_el_author", - "trig_EF_el_isEM", - "trig_EF_el_isEMLoose", - "trig_EF_el_isEMMedium", - "trig_EF_el_isEMTight", - "trig_EF_el_loose", - "trig_EF_el_looseIso", - "trig_EF_el_medium", - "trig_EF_el_mediumIso", - "trig_EF_el_mediumWithoutTrack", - "trig_EF_el_mediumIsoWithoutTrack", - "trig_EF_el_tight", - "trig_EF_el_tightIso", - "trig_EF_el_tightWithoutTrack", - "trig_EF_el_tightIsoWithoutTrack", - "trig_EF_el_loosePP", - "trig_EF_el_loosePPIso", - "trig_EF_el_mediumPP", - "trig_EF_el_mediumPPIso", - "trig_EF_el_tightPP", - "trig_EF_el_tightPPIso", - "trig_EF_el_Ethad", - "trig_EF_el_Ethad1", - "trig_EF_el_f1", - "trig_EF_el_f1core", - "trig_EF_el_Emins1", - "trig_EF_el_fside", - "trig_EF_el_Emax2", - "trig_EF_el_ws3", - "trig_EF_el_wstot", - "trig_EF_el_emaxs1", - "trig_EF_el_deltaEs", - "trig_EF_el_E233", - "trig_EF_el_E237", - "trig_EF_el_E277", - "trig_EF_el_weta2", - "trig_EF_el_f3", - "trig_EF_el_f3core", - "trig_EF_el_rphiallcalo", - "trig_EF_el_Etcone45", - "trig_EF_el_Etcone15", - "trig_EF_el_Etcone20", - "trig_EF_el_Etcone25", - "trig_EF_el_Etcone30", - "trig_EF_el_Etcone35", - "trig_EF_el_Etcone40", - "trig_EF_el_ptcone20", - "trig_EF_el_ptcone30", - "trig_EF_el_ptcone40", - "trig_EF_el_pos7", - "trig_EF_el_etacorrmag", - "trig_EF_el_deltaeta1", - "trig_EF_el_deltaeta2", - "trig_EF_el_deltaphi2", - "trig_EF_el_expectHitInBLayer", - "trig_EF_el_trackd0_physics", - "trig_EF_el_reta", - "trig_EF_el_rphi", - "trig_EF_el_cl_E", - "trig_EF_el_cl_pt", - "trig_EF_el_cl_eta", - "trig_EF_el_cl_phi", - "trig_EF_el_cl_etas2", - "trig_EF_el_trackd0", - "trig_EF_el_trackz0", - "trig_EF_el_trackphi", - "trig_EF_el_tracktheta", - "trig_EF_el_trackqoverp", - "trig_EF_el_trackpt", - "trig_EF_el_tracketa", - "trig_EF_el_nBLHits", - "trig_EF_el_nPixHits", - "trig_EF_el_nSCTHits", - "trig_EF_el_nTRTHits", - "trig_EF_el_nTRTHighTHits", - "trig_EF_el_nTRTXenonHits", - "trig_EF_el_nPixHoles", - "trig_EF_el_nSCTHoles", - "trig_EF_el_nTRTHoles", - "trig_EF_el_nPixelDeadSensors", - "trig_EF_el_nSCTDeadSensors", - "trig_EF_el_nBLSharedHits", - "trig_EF_el_nPixSharedHits", - "trig_EF_el_nSCTSharedHits", - "trig_EF_el_nBLayerSplitHits", - "trig_EF_el_nPixSplitHits", - "trig_EF_el_nBLayerOutliers", - "trig_EF_el_nPixelOutliers", - "trig_EF_el_nSCTOutliers", - "trig_EF_el_nTRTOutliers", - "trig_EF_el_nTRTHighTOutliers", - "trig_EF_el_expectBLayerHit", - "trig_EF_el_nSiHits", - "trig_EF_el_TRTHighTHitsRatio", - "trig_EF_el_TRTHighTOutliersRatio", - "trig_EF_el_pixeldEdx", - "trig_EF_el_nGoodHitsPixeldEdx", - "trig_EF_el_massPixeldEdx", - "trig_EF_el_likelihoodsPixeldEdx", - "trig_EF_el_eProbabilityComb", - "trig_EF_el_eProbabilityHT", - "trig_EF_el_eProbabilityToT", - "trig_EF_el_eProbabilityBrem", - "trig_EF_ph_n", - "trig_EF_ph_E", - "trig_EF_ph_Et", - "trig_EF_ph_pt", - "trig_EF_ph_m", - "trig_EF_ph_eta", - "trig_EF_ph_phi", - "trig_EF_ph_px", - "trig_EF_ph_py", - "trig_EF_ph_pz", - "trig_EF_ph_author", - "trig_EF_ph_isRecovered", - "trig_EF_ph_isEM", - "trig_EF_ph_isEMLoose", - "trig_EF_ph_isEMMedium", - "trig_EF_ph_isEMTight", - "trig_EF_ph_convFlag", - "trig_EF_ph_isConv", - "trig_EF_ph_nConv", - "trig_EF_ph_nSingleTrackConv", - "trig_EF_ph_nDoubleTrackConv", - "trig_EF_ph_loose", - "trig_EF_ph_looseIso", - "trig_EF_ph_tight", - "trig_EF_ph_tightIso", - "trig_EF_ph_looseAR", - "trig_EF_ph_looseARIso", - "trig_EF_ph_tightAR", - "trig_EF_ph_tightARIso", - "trig_EF_ph_Ethad", - "trig_EF_ph_Ethad1", - "trig_EF_ph_E033", - "trig_EF_ph_f1", - "trig_EF_ph_f1core", - "trig_EF_ph_Emins1", - "trig_EF_ph_fside", - "trig_EF_ph_Emax2", - "trig_EF_ph_ws3", - "trig_EF_ph_wstot", - "trig_EF_ph_E132", - "trig_EF_ph_E1152", - "trig_EF_ph_emaxs1", - "trig_EF_ph_deltaEs", - "trig_EF_ph_E233", - "trig_EF_ph_E237", - "trig_EF_ph_E277", - "trig_EF_ph_weta2", - "trig_EF_ph_f3", - "trig_EF_ph_f3core", - "trig_EF_ph_rphiallcalo", - "trig_EF_ph_Etcone45", - "trig_EF_ph_Etcone15", - "trig_EF_ph_Etcone20", - "trig_EF_ph_Etcone25", - "trig_EF_ph_Etcone30", - "trig_EF_ph_Etcone35", - "trig_EF_ph_Etcone40", - "trig_EF_ph_ptcone20", - "trig_EF_ph_ptcone30", - "trig_EF_ph_ptcone40", - "trig_EF_ph_convanglematch", - "trig_EF_ph_convtrackmatch", - "trig_EF_ph_hasconv", - "trig_EF_ph_convvtxx", - "trig_EF_ph_convvtxy", - "trig_EF_ph_convvtxz", - "trig_EF_ph_Rconv", - "trig_EF_ph_zconv", - "trig_EF_ph_convvtxchi2", - "trig_EF_ph_pt1conv", - "trig_EF_ph_convtrk1nBLHits", - "trig_EF_ph_convtrk1nPixHits", - "trig_EF_ph_convtrk1nSCTHits", - "trig_EF_ph_convtrk1nTRTHits", - "trig_EF_ph_pt2conv", - "trig_EF_ph_convtrk2nBLHits", - "trig_EF_ph_convtrk2nPixHits", - "trig_EF_ph_convtrk2nSCTHits", - "trig_EF_ph_convtrk2nTRTHits", - "trig_EF_ph_ptconv", - "trig_EF_ph_pzconv", - "trig_EF_ph_reta", - "trig_EF_ph_rphi", - "trig_EF_ph_cl_E", - "trig_EF_ph_cl_pt", - "trig_EF_ph_cl_eta", - "trig_EF_ph_cl_phi", - "trig_EF_ph_cl_etas2", - #"trig_Nav_n", - #"trig_Nav_chain_ChainId", - #"trig_Nav_chain_RoIType", - #"trig_Nav_chain_RoIIndex", - "trig_RoI_L2_e_n", - "trig_RoI_L2_e_type", - "trig_RoI_L2_e_active", - "trig_RoI_L2_e_lastStep", - "trig_RoI_L2_e_TENumber", - "trig_RoI_L2_e_roiNumber", - "trig_RoI_L2_e_TrigRoiDescriptor_TrigT2CaloEgamma", - "trig_RoI_L2_e_TrigRoiDescriptor_TrigT2CaloEgammaStatus", - "trig_RoI_L2_e_TrigEMCluster", - "trig_RoI_L2_e_TrigEMClusterStatus", - "trig_RoI_L2_e_EmTau_ROI", - "trig_RoI_L2_e_EmTau_ROIStatus", - "trig_RoI_L2_e_TrigInDetTrackCollection_TrigSiTrack_eGamma", - "trig_RoI_L2_e_TrigInDetTrackCollection_TrigSiTrack_eGammaStatus", - "trig_RoI_L2_e_TrigInDetTrackCollection_TrigIDSCAN_eGamma", - "trig_RoI_L2_e_TrigInDetTrackCollection_TrigIDSCAN_eGammaStatus", - "trig_RoI_L2_e_TrigInDetTrackCollection_TrigL2SiTrackFinder_eGamma", - "trig_RoI_L2_e_TrigInDetTrackCollection_TrigL2SiTrackFinder_eGammaStatus", - "trig_RoI_L2_e_TrigElectronContainer", - "trig_RoI_L2_e_TrigElectronContainerStatus", - "trig_RoI_L2_e_TrigPhotonContainer", - "trig_RoI_L2_e_TrigPhotonContainerStatus", - "trig_RoI_EF_e_n", - "trig_RoI_EF_e_type", - "trig_RoI_EF_e_active", - "trig_RoI_EF_e_lastStep", - "trig_RoI_EF_e_TENumber", - "trig_RoI_EF_e_roiNumber", - "trig_RoI_EF_e_EmTau_ROI", - "trig_RoI_EF_e_EmTau_ROIStatus", - "trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFID", - "trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFIDStatus", - #"trig_RoI_EF_e_egammaContainer_egamma_Electrons", - #"trig_RoI_EF_e_egammaContainer_egamma_ElectronsStatus", - "trig_L1_mu_n", - #"trig_L1_mu_pt", - #"trig_L1_mu_eta", - #"trig_L1_mu_phi", - #"trig_L1_mu_thrName", - "trig_L1_mu_thrNumber", - "trig_L1_mu_RoINumber", - "trig_L1_mu_sectorAddress", - "trig_L1_mu_firstCandidate", - "trig_L1_mu_moreCandInRoI", - "trig_L1_mu_moreCandInSector", - "trig_L1_mu_source", - "trig_L1_mu_hemisphere", - "trig_L1_mu_charge", - "trig_L1_mu_vetoed", - "trig_L2_muonfeature_n", - #"trig_L2_muonfeature_pt", - #"trig_L2_muonfeature_eta", - #"trig_L2_muonfeature_phi", - "trig_L2_muonfeature_dir_phi", - "trig_L2_muonfeature_zeta", - "trig_L2_muonfeature_dir_zeta", - "trig_L2_muonfeature_radius", - "trig_L2_muonfeature_beta", - "trig_L2_muonfeature_br_radius", - "trig_L2_muonfeature_br_sagitta", - "trig_L2_muonfeature_ec_alpha", - "trig_L2_muonfeature_ec_beta", - "trig_L2_muonfeature_roiId", - "trig_L2_muonfeature_saddress", - "trig_L2_muonfeature_algoId", - "trig_L2_muonfeature_sp1_r", - "trig_L2_muonfeature_sp1_z", - "trig_L2_muonfeature_sp1_slope", - "trig_L2_muonfeature_sp2_r", - "trig_L2_muonfeature_sp2_z", - "trig_L2_muonfeature_sp2_slope", - "trig_L2_muonfeature_sp3_r", - "trig_L2_muonfeature_sp3_z", - "trig_L2_muonfeature_sp3_slope", - "trig_L2_muonfeaturedetails_n", - "trig_L2_combmuonfeature_n", - #"trig_L2_combmuonfeature_pt", - #"trig_L2_combmuonfeature_eta", - #"trig_L2_combmuonfeature_phi", - "trig_L2_combmuonfeature_sigma_pt", - "trig_L2_combmuonfeature_comb_strategy", - "trig_L2_combmuonfeature_comb_errorFlag", - "trig_L2_combmuonfeature_comb_matchFlag", - "trig_L2_combmuonfeature_mf_index", - "trig_L2_combmuonfeature_idscantrk_index", - "trig_L2_combmuonfeature_sitracktrk_index", - "trig_L2_combmuonfeature_sitrackfindertrk_index", - "trig_L2_combmuonfeature_sitrackfinderoldtrk_index", - "trig_L2_isomuonfeature_n", - "trig_L2_isomuonfeature_pt", - "trig_L2_isomuonfeature_eta", - "trig_L2_isomuonfeature_phi", - "trig_L2_isomuonfeature_sumet01", - "trig_L2_isomuonfeature_sumet02", - "trig_L2_isomuonfeature_sumet03", - "trig_L2_isomuonfeature_sumet04", - "trig_L2_isomuonfeature_sumpt01", - "trig_L2_isomuonfeature_sumpt02", - "trig_L2_isomuonfeature_sumpt03", - "trig_L2_isomuonfeature_sumpt04", - "trig_L2_isomuonfeature_ptMuID", - "trig_L2_isomuonfeature_maxPtID", - "trig_L2_isomuonfeature_iso_strategy", - "trig_L2_isomuonfeature_iso_errorFlag", - "trig_L2_isomuonfeature_RoiIdMu ", - "trig_L2_tilemufeature_n", - "trig_L2_tilemufeature_eta", - "trig_L2_tilemufeature_phi", - "trig_L2_tilemufeature_enedep", - "trig_L2_tilemufeature_quality", - "trig_L2_tiletrackmufeature_n", - "trig_L2_tiletrackmufeature_pt", - "trig_L2_tiletrackmufeature_eta", - "trig_L2_tiletrackmufeature_phi", - "trig_L2_tiletrackmufeature_PtTR_Trk", - "trig_L2_tiletrackmufeature_EtaTR_Trk", - "trig_L2_tiletrackmufeature_PhiTR_Trk", - "trig_L2_tiletrackmufeature_Typ_IDTrk", - "trig_L2_tiletrackmufeature_tilemu_index", - "trig_L2_tiletrackmufeature_idtrk_algorithmId", - "trig_L2_tiletrackmufeature_idtrk_trackStatus", - "trig_L2_tiletrackmufeature_idtrk_chi2Ndof", - "trig_L2_tiletrackmufeature_idtrk_nStrawHits", - "trig_L2_tiletrackmufeature_idtrk_nHighThrHits", - "trig_L2_tiletrackmufeature_idtrk_nPixelSpacePoints", - "trig_L2_tiletrackmufeature_idtrk_nSCT_SpacePoints", - "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_a0", - "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_z0", - "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_phi0", - "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_eta", - "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_pt", - "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_hasidtrkfitpar", - "trig_L2_tiletrackmufeature_idtrk_hasidtrk", - "trig_EF_trigmuonef_n", - "trig_EF_trigmuonef_effs15", - "trig_EF_trigmuonef_effs18", - "trig_EF_trigmuonef_effs24", - "trig_EF_trigmuonef_track_n", - #"trig_EF_trigmuonef_track_MuonType", - "trig_EF_trigmuonef_track_MS_pt", - "trig_EF_trigmuonef_track_MS_eta", - "trig_EF_trigmuonef_track_MS_phi", - "trig_EF_trigmuonef_track_MS_charge", - "trig_EF_trigmuonef_track_MS_d0", - "trig_EF_trigmuonef_track_MS_z0", - "trig_EF_trigmuonef_track_MS_chi2", - "trig_EF_trigmuonef_track_MS_chi2prob", - "trig_EF_trigmuonef_track_MS_posX", - "trig_EF_trigmuonef_track_MS_posY", - "trig_EF_trigmuonef_track_MS_posZ", - "trig_EF_trigmuonef_track_MS_hasMS", - #"trig_EF_trigmuonef_track_SA_pt", - #"trig_EF_trigmuonef_track_SA_eta", - #"trig_EF_trigmuonef_track_SA_phi", - "trig_EF_trigmuonef_track_SA_charge", - "trig_EF_trigmuonef_track_SA_d0", - "trig_EF_trigmuonef_track_SA_z0", - "trig_EF_trigmuonef_track_SA_chi2", - "trig_EF_trigmuonef_track_SA_chi2prob", - "trig_EF_trigmuonef_track_SA_posX", - "trig_EF_trigmuonef_track_SA_posY", - "trig_EF_trigmuonef_track_SA_posZ", - "trig_EF_trigmuonef_track_SA_hasSA", - #"trig_EF_trigmuonef_track_CB_pt", - #"trig_EF_trigmuonef_track_CB_eta", - #"trig_EF_trigmuonef_track_CB_phi", - "trig_EF_trigmuonef_track_CB_charge", - "trig_EF_trigmuonef_track_CB_d0", - "trig_EF_trigmuonef_track_CB_z0", - "trig_EF_trigmuonef_track_CB_chi2", - "trig_EF_trigmuonef_track_CB_chi2prob", - "trig_EF_trigmuonef_track_CB_posX", - "trig_EF_trigmuonef_track_CB_posY", - "trig_EF_trigmuonef_track_CB_posZ", - "trig_EF_trigmuonef_track_CB_matchChi2", - "trig_EF_trigmuonef_track_CB_hasCB", - "trig_EF_trigmugirl_n", - "trig_EF_trigmugirl_track_n", - "trig_EF_trigmugirl_track_MuonType", - "trig_EF_trigmugirl_track_MS_pt", - "trig_EF_trigmugirl_track_MS_eta", - "trig_EF_trigmugirl_track_MS_phi", - "trig_EF_trigmugirl_track_MS_charge", - "trig_EF_trigmugirl_track_MS_d0", - "trig_EF_trigmugirl_track_MS_z0", - "trig_EF_trigmugirl_track_MS_chi2", - "trig_EF_trigmugirl_track_MS_chi2prob", - "trig_EF_trigmugirl_track_MS_posX", - "trig_EF_trigmugirl_track_MS_posY", - "trig_EF_trigmugirl_track_MS_posZ", - "trig_EF_trigmugirl_track_MS_hasMS", - "trig_EF_trigmugirl_track_SA_pt", - "trig_EF_trigmugirl_track_SA_eta", - "trig_EF_trigmugirl_track_SA_phi", - "trig_EF_trigmugirl_track_SA_charge", - "trig_EF_trigmugirl_track_SA_d0", - "trig_EF_trigmugirl_track_SA_z0", - "trig_EF_trigmugirl_track_SA_chi2", - "trig_EF_trigmugirl_track_SA_chi2prob", - "trig_EF_trigmugirl_track_SA_posX", - "trig_EF_trigmugirl_track_SA_posY", - "trig_EF_trigmugirl_track_SA_posZ", - "trig_EF_trigmugirl_track_SA_hasSA", - "trig_EF_trigmugirl_track_CB_pt", - "trig_EF_trigmugirl_track_CB_eta", - "trig_EF_trigmugirl_track_CB_phi", - "trig_EF_trigmugirl_track_CB_charge", - "trig_EF_trigmugirl_track_CB_d0", - "trig_EF_trigmugirl_track_CB_z0", - "trig_EF_trigmugirl_track_CB_chi2", - "trig_EF_trigmugirl_track_CB_chi2prob", - "trig_EF_trigmugirl_track_CB_posX", - "trig_EF_trigmugirl_track_CB_posY", - "trig_EF_trigmugirl_track_CB_posZ", - "trig_EF_trigmugirl_track_CB_matchChi2", - "trig_EF_trigmugirl_track_CB_hasCB", - "trig_EF_trigmuonefisolation_n", - "trig_EF_trigmuonefisolation_sumTrkPtCone02", - "trig_EF_trigmuonefisolation_sumTrkPtCone03", - "trig_EF_trigmuonefisolation_trackPosition", - "trig_EF_trigmuonefisolation_sumEtCone01", - "trig_EF_trigmuonefisolation_sumEtCone02", - "trig_EF_trigmuonefisolation_sumEtCone03", - "trig_EF_trigmuonefisolation_sumEtCone04", - "trig_EF_trigmuonefisolation_efinfo_index", - "trig_EF_trigmuonefisolation_efinfoMG_index", - "trig_L2_sitrack_muon_n", - "trig_L2_sitrack_muon_algorithmId", - "trig_L2_sitrack_muon_trackStatus", - "trig_L2_sitrack_muon_chi2Ndof", - "trig_L2_sitrack_muon_nStrawHits", - "trig_L2_sitrack_muon_nHighThrHits", - "trig_L2_sitrack_muon_nPixelSpacePoints", - "trig_L2_sitrack_muon_nSCT_SpacePoints", - "trig_L2_sitrack_muon_param_a0", - "trig_L2_sitrack_muon_param_z0", - "trig_L2_sitrack_muon_param_phi0", - "trig_L2_sitrack_muon_param_eta", - "trig_L2_sitrack_muon_param_pt", - "trig_L2_idscan_muon_n", - "trig_L2_idscan_muon_algorithmId", - "trig_L2_idscan_muon_trackStatus", - "trig_L2_idscan_muon_chi2Ndof", - "trig_L2_idscan_muon_nStrawHits", - "trig_L2_idscan_muon_nHighThrHits", - "trig_L2_idscan_muon_nPixelSpacePoints", - "trig_L2_idscan_muon_nSCT_SpacePoints", - "trig_L2_idscan_muon_param_a0", - "trig_L2_idscan_muon_param_z0", - "trig_L2_idscan_muon_param_phi0", - "trig_L2_idscan_muon_param_eta", - "trig_L2_idscan_muon_param_pt", - "trig_L2_sitrackfinder_muon_n", - "trig_L2_sitrackfinder_muon_algorithmId", - "trig_L2_sitrackfinder_muon_trackStatus", - "trig_L2_sitrackfinder_muon_chi2Ndof", - "trig_L2_sitrackfinder_muon_nStrawHits", - "trig_L2_sitrackfinder_muon_nHighThrHits", - "trig_L2_sitrackfinder_muon_nPixelSpacePoints", - "trig_L2_sitrackfinder_muon_nSCT_SpacePoints", - "trig_L2_sitrackfinder_muon_param_a0", - "trig_L2_sitrackfinder_muon_param_z0", - "trig_L2_sitrackfinder_muon_param_phi0", - "trig_L2_sitrackfinder_muon_param_eta", - "trig_L2_sitrackfinder_muon_param_pt", - "trig_L2_sitrack_isomuon_n", - "trig_L2_sitrack_isomuon_algorithmId", - "trig_L2_sitrack_isomuon_trackStatus", - "trig_L2_sitrack_isomuon_chi2Ndof", - "trig_L2_sitrack_isomuon_nStrawHits", - "trig_L2_sitrack_isomuon_nHighThrHits", - "trig_L2_sitrack_isomuon_nPixelSpacePoints", - "trig_L2_sitrack_isomuon_nSCT_SpacePoints", - "trig_L2_sitrack_isomuon_param_a0", - "trig_L2_sitrack_isomuon_param_z0", - "trig_L2_sitrack_isomuon_param_phi0", - "trig_L2_sitrack_isomuon_param_eta", - "trig_L2_sitrack_isomuon_param_pt", - "trig_L2_idscan_isomuon_n", - "trig_L2_idscan_isomuon_algorithmId", - "trig_L2_idscan_isomuon_trackStatus", - "trig_L2_idscan_isomuon_chi2Ndof", - "trig_L2_idscan_isomuon_nStrawHits", - "trig_L2_idscan_isomuon_nHighThrHits", - "trig_L2_idscan_isomuon_nPixelSpacePoints", - "trig_L2_idscan_isomuon_nSCT_SpacePoints", - "trig_L2_idscan_isomuon_param_a0", - "trig_L2_idscan_isomuon_param_z0", - "trig_L2_idscan_isomuon_param_phi0", - "trig_L2_idscan_isomuon_param_eta", - "trig_L2_idscan_isomuon_param_pt", - "trig_L2_sitrackfinder_isomuon_n", - "trig_L2_sitrackfinder_isomuon_algorithmId", - "trig_L2_sitrackfinder_isomuon_trackStatus", - "trig_L2_sitrackfinder_isomuon_chi2Ndof", - "trig_L2_sitrackfinder_isomuon_nStrawHits", - "trig_L2_sitrackfinder_isomuon_nHighThrHits", - "trig_L2_sitrackfinder_isomuon_nPixelSpacePoints", - "trig_L2_sitrackfinder_isomuon_nSCT_SpacePoints", - "trig_L2_sitrackfinder_isomuon_param_a0", - "trig_L2_sitrackfinder_isomuon_param_z0", - "trig_L2_sitrackfinder_isomuon_param_phi0", - "trig_L2_sitrackfinder_isomuon_param_eta", - "trig_L2_sitrackfinder_isomuon_param_pt", - "trig_L2_sitrackfinder_n", - "trig_L2_sitrackfinder_algorithmId", - "trig_L2_sitrackfinder_trackStatus", - "trig_L2_sitrackfinder_chi2Ndof", - "trig_L2_sitrackfinder_nStrawHits", - "trig_L2_sitrackfinder_nHighThrHits", - "trig_L2_sitrackfinder_nPixelSpacePoints", - "trig_L2_sitrackfinder_nSCT_SpacePoints", - "trig_L2_sitrackfinder_param_a0", - "trig_L2_sitrackfinder_param_z0", - "trig_L2_sitrackfinder_param_phi0", - "trig_L2_sitrackfinder_param_eta", - "trig_L2_sitrackfinder_param_pt", - "trig_roidescriptor_forID_zedHalfWidth", - "trig_RoI_L2_mu_n", - #"trig_RoI_L2_mu_MuonFeature", - #"trig_RoI_L2_mu_MuonFeatureStatus", - "trig_RoI_L2_mu_MuonFeatureDetails", - "trig_RoI_L2_mu_MuonFeatureDetailsStatus", - #"trig_RoI_L2_mu_CombinedMuonFeature", - #"trig_RoI_L2_mu_CombinedMuonFeatureStatus", - #"trig_RoI_L2_mu_Muon_ROI", - #"trig_RoI_L2_mu_Muon_ROIStatus", - "trig_RoI_EF_mu_n", - #"trig_RoI_EF_mu_Muon_ROI", - "trig_RoI_EF_mu_Muon_ROIStatus", - #"trig_RoI_EF_mu_TrigMuonEFInfoContainer", - #"trig_RoI_EF_mu_TrigMuonEFInfoContainerStatus", - #"trig_RoI_EF_mu_TrigMuonEFIsolationContainer", - #"trig_RoI_EF_mu_TrigMuonEFIsolationContainerStatus", - "trig_RoI_L2_TileMu_n", - "trig_RoI_L2_TileMu_type", - "trig_RoI_L2_TileMu_active", - "trig_RoI_L2_TileMu_lastStep", - "trig_RoI_L2_TileMu_TENumber", - "trig_RoI_L2_TileMu_roiNumber", - "trig_RoI_L2_TileMu_TileMuFeature", - "trig_RoI_L2_TileMu_TileMuFeatureStatus", - "trig_RoI_L2_TileMu_TileTrackMuFeature", - "trig_RoI_L2_TileMu_TileTrackMuFeatureStatus", - "trig_RoI_L2_TileMu_Muon_ROI", - "trig_RoI_L2_TileMu_Muon_ROIStatus", - "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigSiTrack_Tile", - "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigSiTrack_TileStatus", - "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigIDSCAN_Tile", - "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigIDSCAN_TileStatus", - "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TriL2gSiTrack_Tile", - "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TriL2gSiTrack_TileStatus", - "trig_RoI_EF_TileMu_n", - "trig_RoI_EF_TileMu_type", - "trig_RoI_EF_TileMu_active", - "trig_RoI_EF_TileMu_lastStep", - "trig_RoI_EF_TileMu_TENumber", - "trig_RoI_EF_TileMu_roiNumber", - "trig_RoI_EF_TileMu_Muon_ROI", - "trig_RoI_EF_TileMu_Muon_ROIStatus", - "trig_RoI_EF_TileMu_TrigMuonEFContainer", - "trig_RoI_EF_TileMu_TrigMuonEFContainerStatus", - "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer", - "trig_RoI_EF_TileMu_TrigMuonEFInfoContainerStatus", - "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuGirl", - "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuGirlStatus", - "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuTagIMO_EF", - "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuTagIMO_EFStatus", - #"el_refittedTrack_n", - #"el_refittedTrack_author", - #"el_refittedTrack_chi2", - #"el_refittedTrack_hasBrem", - #"el_refittedTrack_bremRadius", - #"el_refittedTrack_bremZ", - #"el_refittedTrack_bremRadiusErr", - #"el_refittedTrack_bremZErr", - #"el_refittedTrack_bremFitStatus", - #"el_refittedTrack_qoverp", - #"el_refittedTrack_d0", - #"el_refittedTrack_z0", - #"el_refittedTrack_theta", - #"el_refittedTrack_phi", - #"el_refittedTrack_LMqoverp", - "el_refittedTrack_d0_wrtBL", - "el_refittedTrack_z0_wrtBL", - "el_refittedTrack_phi_wrtBL", - "el_refittedTrack_theta_wrtBL", - "el_refittedTrack_qoverp_wrtBL", - "el_refittedTrack_d0_err_wrtBL", - "el_refittedTrack_z0_err_wrtBL", - "el_refittedTrack_phi_err_wrtBL", - "el_refittedTrack_theta_err_wrtBL", - "el_refittedTrack_qoverp_err_wrtBL", - "el_refittedTrack_d0_z0_err_wrtBL", - "el_refittedTrack_d0_phi_err_wrtBL", - "el_refittedTrack_d0_theta_err_wrtBL", - "el_refittedTrack_d0_qoverp_err_wrtBL", - "el_refittedTrack_z0_phi_err_wrtBL", - "el_refittedTrack_z0_theta_err_wrtBL", - "el_refittedTrack_z0_qoverp_err_wrtBL", - "el_refittedTrack_phi_theta_err_wrtBL", - "el_refittedTrack_phi_qoverp_err_wrtBL", - "el_refittedTrack_theta_qoverp_err_wrtBL", - ] ] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_JvfFix.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_JvfFix.py deleted file mode 100644 index a795d6af05c61dc789b976aee339ff87289635d9..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_JvfFix.py +++ /dev/null @@ -1,15 +0,0 @@ -# -# @author Haifeng Li <Haifeng.Li@cern.ch> -# - -from RecExConfig.RecFlags import rec - -def myjets(): - from JetRec.JetMomentGetter import make_JetMomentGetter - from JetMomentTools.SetupJetMomentTools import getJetVertexAssociationTool - jvatool = getJetVertexAssociationTool('AntiKt', 0.4, 'Topo') - make_JetMomentGetter( 'AntiKt4TopoEMJets' , [jvatool] ) - make_JetMomentGetter( 'AntiKt6TopoEMJets' , [jvatool] ) - - -rec.UserExecs = ["myjets()"] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_RedoJets.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_RedoJets.py deleted file mode 100644 index ac82e84463518e8d50a9b64de3250f74390554be..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_RedoJets.py +++ /dev/null @@ -1,16 +0,0 @@ -from JetRec.JetRecFlags import jetFlags -jetFlags.jetPerformanceJob = True - -from BTagging.BTaggingFlags import BTaggingFlags -BTaggingFlags.Jets=[ "AntiKt4TopoEM", "AntiKt6TopoEM", "AntiKt4LCTopo" ,"AntiKt6LCTopo"] -BTaggingFlags.Active=True -BTaggingFlags.JetFitterCharm=True -BTaggingFlags.MV3_bVSu=True -BTaggingFlags.MV3_bVSc=True -BTaggingFlags.MV3_cVSu=True - -from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags -JetTagD3PDFlags.Taggers+=["JetFitterCharm","MV3_bVSu","MV3_bVSc","MV3_cVSu"] -JetTagD3PDFlags.JetFitterCharmTagInfo=True - - diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TauSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TauSelector.py deleted file mode 100644 index 26bacddbe6c046817fdfd2be253ef44566c6c97f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TauSelector.py +++ /dev/null @@ -1,11 +0,0 @@ -include.block( "PhysicsD3PDMaker/TauSelector.py" ) - -from D2PDMaker.D2PDMakerConf import D2PDTauSelector - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -preseq += D2PDTauSelector( "SMWZ_HighPtTauFilter", - inputCollection = 'TauRecContainer', - outputCollection = 'HighPtTaus', - etMin = 15.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TrackParticleSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TrackParticleSelector.py deleted file mode 100644 index 4375f4202811aeadc7f70f5d7ec14982759a81e7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TrackParticleSelector.py +++ /dev/null @@ -1,22 +0,0 @@ -include.block( "PhysicsD3PDMaker/TrackParticleSelector.py" ) - - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from D2PDMaker.D2PDMakerConf import D2PDTrackParticleSelector - -from AthenaCommon.AlgSequence import AlgSequence -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -preseq += D2PDTrackParticleSelector( "SMWZ_HighPtTrackFilter", - inputCollection = D3PDMakerFlags.TrackSGKey(), - outputCollection = 'Track_NSiHits6_Pt10', - ptMin = 10.0*Units.GeV, - numberSiliconHitsMin = 6 - ) - -preseq += D2PDTrackParticleSelector( "SMWZ_GoodTrackFilter", - inputCollection = D3PDMakerFlags.TrackSGKey(), - outputCollection = 'Tracks_NSiHits6', - numberSiliconHitsMin = 6 - ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.cxx b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.cxx deleted file mode 100644 index 4df296ae8d4882fc6fe7234d4a68ff8ea3cde921..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.cxx +++ /dev/null @@ -1,166 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/****************************************************************************** - * TrileptonSkimmer.cxx - * - * authors: Steven Kaneti <Steven.KanetiSPAMNOT.cern.ch> - * Nick Edwards - * - * version: $Id: TrileptonSkimmer.cxx 606012 2014-07-11 09:40:36Z krasznaa $ - * - * This is a C++ athena-based algorithm for a three lepton skim to be used - * by the Standard Model ZZ->4l and Standard Model WZ groups. - * - * - ******************************************************************************/ - -// EDM include(s): -#include "xAODEgamma/ElectronContainer.h" -#include "xAODMuon/MuonContainer.h" - -// Local include(s): -#include "TrileptonSkimmer.h" - -TrileptonSkimmer::TrileptonSkimmer( const std::string& name, - ISvcLocator* pSvcLocator ) - : AthFilterAlgorithm( name, pSvcLocator ) { - - // Property declaration - declareProperty("lowPtCut" , m_lowPtCut = 4.e3 ); - declareProperty("highPtCut" , m_highPtCut = 20.e3 ); - declareProperty("fwdElPtCut" , m_fwdElPtCut = 15.e3 ); - declareProperty("caloMuonPtCut" , m_caloMuPtCut = 12.e3 ); - declareProperty("allowMultiLepton" , m_allowMultiLepton = true ); - declareProperty("inputCollectionStaco" , m_inCollKey_muons = "Muons", - "StoreGate key of the input container/collection for Muons"); - declareProperty("inputCollectionElecs" , m_inCollKey_elecs = - "ElectronAODCollection", - "StoreGate key of the input container/collection for " - "Standard Electrons"); -} - -StatusCode TrileptonSkimmer::initialize() { - - ATH_MSG_INFO( "Initializing " << name() << "..."); - ATH_MSG_DEBUG( "lowPtCut = " << m_lowPtCut ); - ATH_MSG_DEBUG( "highPtCut = " << m_highPtCut ); - ATH_MSG_DEBUG( "caloMuPtCut = " << m_caloMuPtCut ); - ATH_MSG_DEBUG( "fwdElPtCut = " << m_fwdElPtCut ); - - return StatusCode::SUCCESS; -} - -StatusCode TrileptonSkimmer::execute() { - - ATH_MSG_DEBUG ("Executing " << name() << "..."); - - // Retrieve the muons: - const xAOD::MuonContainer* muons = 0; - ATH_CHECK( evtStore()->retrieve( muons, m_inCollKey_muons ) ); - - // Retrieve the electrons: - const xAOD::ElectronContainer* electrons = 0; - ATH_CHECK( evtStore()->retrieve( electrons, m_inCollKey_elecs ) ); - - //--------------------------------------------------------------------------- - // Loop over Muons - // - // We do 1 loop and count the following - - /// Combined muon with |eta|<2.5 and pT > m_highPtCut - int nHighPtCentralMuons = 0; - /// Combined/ST/SA muon with |eta|<2.5 and pT > m_lowPtCut - int nLowPtCentralMuons = 0; - /// Combined/ST/SA muon and pT > m_lowPtCut - int nLowPtMuons = 0; - - xAOD::MuonContainer::const_iterator mu_itr = muons->begin(); - xAOD::MuonContainer::const_iterator mu_end = muons->end(); - for( ; mu_itr != mu_end; ++mu_itr ) { - - if( ( ( *mu_itr )->pt() > m_highPtCut ) && - ( ( *mu_itr )->muonType() == xAOD::Muon::Combined ) && - ( fabs( ( *mu_itr )->eta() ) < 2.5 ) ) { - ++nHighPtCentralMuons; - } - if( ( ( *mu_itr )->pt() > m_lowPtCut ) && - ( ( ( *mu_itr )->muonType() == xAOD::Muon::Combined ) || - ( ( *mu_itr )->muonType() == xAOD::Muon::SegmentTagged ) || - ( ( *mu_itr )->muonType() == xAOD::Muon::MuonStandAlone ) ) ) { - - if( fabs( ( *mu_itr )->eta() ) < 2.5 ) { - ++nLowPtCentralMuons; - } - nLowPtMuons++; - } - } - - //--------------------------------------------------------------------------- - // Loop over electrons - // - // We do 1 loop and count the following - - /// author 1 || 3, Medium++, et>highPtCut, no specific eta cut, - /// but is implicit in author - int nHighPtCentralElectrons = 0; - /// author 1 || 3, Loose++, et>lowPtCut, no specific eta cut, but is - /// implicit in author - int nLowPtCentralElectronsLoosePP = 0; - /// author 1 || 3, et>lowPtCut, no specific eta cut, but is implicit in - /// author - int nLowPtCentralElectrons = 0; - /// author 8, et>fwdElpTCut, no specific eta cut, but is implicit in author - int nFwdElectrons = 0; - - xAOD::ElectronContainer::const_iterator el_itr = electrons->begin(); - xAOD::ElectronContainer::const_iterator el_end = electrons->end(); - for( ; el_itr != el_end; ++el_itr ) { - - if( ( ( *el_itr )->author() == 1 ) || - ( ( *el_itr )->author() == 3 ) ) { - - bool medium = false; - ( *el_itr )->passSelection( medium, "Medium" ); - bool loose = false; - ( *el_itr )->passSelection( loose, "Loose" ); - - if( ( ( *el_itr )->pt() > m_highPtCut ) && medium ) { - ++nHighPtCentralElectrons; - } - if( ( *el_itr )->pt() > m_lowPtCut ) { - nLowPtCentralElectrons++; - if( loose ) { - ++nLowPtCentralElectronsLoosePP; - } - } - } - } - - // - // The forward electron cut should be implemented. That needs a separate - // container from StoreGate though... - // - - // - // Also not sure about the calorimeter muons... - // - int nCaloMuons = 0; - - // -------------------------------------------------------------------------- - // Decision logic - if( ( nHighPtCentralMuons + nHighPtCentralElectrons >= 1 ) && - ( nLowPtCentralMuons + nLowPtCentralElectronsLoosePP >= 2 ) && - ( nLowPtMuons + nLowPtCentralElectrons + nFwdElectrons + - nCaloMuons >= 3 ) ) { - - setFilterPassed( true ); - } else { - setFilterPassed( false ); - } - // -------------------------------------------------------------------------- - - // Return gracefully: - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.h b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.h deleted file mode 100644 index bd109f2e7293d771773a3a0993d01d7853662a44..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.h +++ /dev/null @@ -1,59 +0,0 @@ -// Dear emacs, this is -*- c++ -*- - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/****************************************************************************** - * TrileptonSkimmer.h - * - * authors: Steven Kaneti <Steven.KanetiSPAMNOT.cern.ch> - * Nick Edwards - * - * version: $Id: TrileptonSkimmer.h 606012 2014-07-11 09:40:36Z krasznaa $ - * - * - ******************************************************************************/ - -#ifndef PHYSICSD3PDMAKER_TRILEPTONSKIMMER_H -#define PHYSICSD3PDMAKER_TRILEPTONSKIMMER_H - -// System include(s): -#include <string> - -// Athena includes -#include "AthenaBaseComps/AthFilterAlgorithm.h" - -class TrileptonSkimmer : public AthFilterAlgorithm { - -public: - /// Constructor with parameters: - TrileptonSkimmer( const std::string& name, ISvcLocator* pSvcLocator ); - - /// @name Athena algorithm Hooks - /// @{ - - /// Function initialising the algorithm - virtual StatusCode initialize(); - /// Function executing the algorithm - virtual StatusCode execute(); - - /// @} - -private: - /// Function doing the heavy lifting - bool passEvent(); - - float m_lowPtCut; - float m_highPtCut; - float m_caloMuPtCut; - float m_fwdElPtCut; - bool m_allowMultiLepton; - - //storegate input keys - std::string m_inCollKey_muons; - std::string m_inCollKey_elecs; - -}; //end class definition - -#endif // not PHYSICSD3PDMAKER_TRILEPTONSKIMMER_H diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/components/PhysicsD3PDMaker_entries.cxx b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/components/PhysicsD3PDMaker_entries.cxx deleted file mode 100644 index 952fc838ba108e2562c7583b46e8cd43f29fb781..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/components/PhysicsD3PDMaker_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "../TrileptonSkimmer.h" - -DECLARE_COMPONENT( TrileptonSkimmer ) - diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/BoostedTopD3PDMaker/MiniIsolationElectronFillerTool.h b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/BoostedTopD3PDMaker/MiniIsolationElectronFillerTool.h deleted file mode 100644 index 6e07cd457dcef89fcdd685a53787f8556099bf64..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/BoostedTopD3PDMaker/MiniIsolationElectronFillerTool.h +++ /dev/null @@ -1,97 +0,0 @@ -// This file's extension implies that it's C, but it's really -*- C++ -*-. - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id$ -#ifndef BOOSTEDTOPD3PDMAKER_MINIISOLATIONELECTRONFILLERTOOL_H -#define BOOSTEDTOPD3PDMAKER_MINIISOLATIONELECTRONFILLERTOOL_H - - -#include "D3PDMakerUtils/BlockFillerTool.h" -#include "GaudiKernel/ToolHandle.h" -#include "EventKernel/INavigable4Momentum.h" - -//namespace Rec { -//class TrackParticle; -//} - -namespace Reco{ - class ITrackToVertex; -} - -//class IIsolationTool; -class IEMTrackIsolationTool; -class egamma; - - -namespace D3PD { - /** - * @brief Fill track isolation variables. - */ -class MiniIsolationElectronFillerTool - : public BlockFillerTool<egamma> - { - public: - /** - * @brief Standard Gaudi tool constructor. - * @param type The name of the tool type. - * @param name The tool name. - * @param parent The tool's Gaudi parent. - */ - MiniIsolationElectronFillerTool (const std::string& type, - const std::string& name, - const IInterface* parent); - - - // Standard Gaudi initialize method. - StatusCode initialize(); - - - /// Book variables for this block. - virtual StatusCode book(); - - - /** - * @brief Fill one block --- type-safe version. - * @param p The input object. - * - * This is called once per object. The caller - * is responsible for arranging that all the pointers for booked variables - * are set appropriately upon entry. - */ - virtual StatusCode fill (const egamma& electron); - - - private: - /// Paramter: Isolation cone size. - //float m_coneSize; - - ToolHandle<IEMTrackIsolationTool> m_EMTrackIsolationTool; - - ToolHandle<Reco::ITrackToVertex> m_trackToVertexTool; - - /// Variable: Tracking isolation parameter. - float* m_ptsum; - float* m_ptsum_2; - /// Variable: Calorimeter isolation parameter. - float* m_nTracks; - float* m_nTracks_2; - - double m_ktdist; - double m_mindR; - double m_maxdR; - double m_maxdR_2; - - std::string m_TracksContainer; - std::string m_VxContainer; - - - }; - - -} // namespace D3PD - - -#endif // not BOOSTEDTOPD3PDMAKER_MINIISOLATIONELECTRONFILLERTOOL_H diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/BoostedTopD3PDMaker/MiniIsolationMuonFillerTool.h b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/BoostedTopD3PDMaker/MiniIsolationMuonFillerTool.h deleted file mode 100644 index 3768dbf96dfaed268e03a5ca2f4fd76b5a1c6d46..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/BoostedTopD3PDMaker/MiniIsolationMuonFillerTool.h +++ /dev/null @@ -1,85 +0,0 @@ -// This file's extension implies that it's C, but it's really -*- C++ -*-. - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id$ - -#ifndef BOOSTEDTOPD3PDMAKER_MINIISOLATIONMUONFILLERTOOL_H -#define BOOSTEDTOPD3PDMAKER_MINIISOLATIONMUONFILLERTOOL_H - - -#include "D3PDMakerUtils/BlockFillerTool.h" -#include "GaudiKernel/ToolHandle.h" -#include "EventKernel/INavigable4Momentum.h" - -namespace Analysis{class Muon;} - -class IIsolationTool; - - -namespace D3PD { - /** - * @brief Fill track isolation variables. - */ -class MiniIsolationMuonFillerTool - : public BlockFillerTool<Analysis::Muon> - { - public: - /** - * @brief Standard Gaudi tool constructor. - * @param type The name of the tool type. - * @param name The tool name. - * @param parent The tool's Gaudi parent. - */ - MiniIsolationMuonFillerTool (const std::string& type, - const std::string& name, - const IInterface* parent); - - - // Standard Gaudi initialize method. - StatusCode initialize(); - - - /// Book variables for this block. - virtual StatusCode book(); - - - /** - * @brief Fill one block --- type-safe version. - * @param p The input object. - * - * This is called once per object. The caller - * is responsible for arranging that all the pointers for booked variables - * are set appropriately upon entry. - */ - virtual StatusCode fill (const Analysis::Muon& muon); - - - private: - /// Paramter: Isolation cone size. - //float m_coneSize; - - /// Parameter: Isolation tools - ToolHandle<IIsolationTool> m_muonIsolationTool; - - /// Variable: Tracking isolation parameter. - float* m_ptsum; - float* m_ptsum_2; - /// Variable: Calorimeter isolation parameter. - float* m_nTracks; - float* m_nTracks_2; - - double m_ktdist; - double m_mindR; - double m_maxdR; - double m_maxdR_2; - - }; - - -} // namespace D3PD - - -#endif // not BOOSTEDTOPD3PDMAKER_MINIISOLATIONMUONFILLERTOOL_H diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/CMakeLists.txt b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/CMakeLists.txt deleted file mode 100644 index f49110e89b5e00494ee66a191bf2116712578647..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -################################################################################ -# Package: BoostedTopD3PDMaker -################################################################################ - -# Declare the package name: -atlas_subdir( BoostedTopD3PDMaker ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Event/EventKernel - GaudiKernel - PhysicsAnalysis/D3PDMaker/D3PDMakerUtils - PRIVATE - Control/AthenaKernel - Reconstruction/MuonIdentification/muonEvent - Reconstruction/Particle - Reconstruction/RecoTools/ITrackToVertex - Reconstruction/RecoTools/IsolationTool - Reconstruction/egamma/egammaEvent - Reconstruction/egamma/egammaInterfaces ) - -# Component(s) in the package: -atlas_add_component( BoostedTopD3PDMaker - src/*.cxx - src/components/*.cxx - LINK_LIBRARIES EventKernel GaudiKernel D3PDMakerUtils AthenaKernel muonEvent Particle ITrackToVertex IsolationToolLib egammaEvent ) - -# Install files from the package: -atlas_install_headers( BoostedTopD3PDMaker ) -atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/BoostJSD3PD.py b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/BoostJSD3PD.py deleted file mode 100644 index 58f3c8264748acf392661934c788f897f498dd6d..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/BoostJSD3PD.py +++ /dev/null @@ -1,263 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -from JetD3PDMaker.JetD3PDObject import getJetD3PDObject -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from RecExConfig.RecFlags import rec -from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation -from D3PDMakerCoreComps.IndexAssociation import IndexAssociation -from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation -from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation -import JetSubstructureD3PDMaker -from D3PDMakerCoreComps.D3PDObject import make_SG_D3PDObject, make_SGDataVector_D3PDObject - -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - - -def getJetCollectionD3PDObject(objectname = 'JetCollectionD3PDObject', prefix = 'jet_'): - return make_SG_D3PDObject('JetCollection','','jet_', objectname) - - -def AddUniqueMoments(obj, momlist, theblockname = 'ConfigParams', level = 0): - obj.defineBlock(level, theblockname, JetSubstructureD3PDMaker.JetMomentUniqueFillerTool, Moments = momlist, OutputLevel=3) - -def AddLeptonicInfo(obj, level = 0): - - ############ Electron ##### - IndJetElectronAssoc = IndexMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,'el_',level = level, - prefix='Electron_', blockname='elecblockindex', AssociationName='jetsubstructure_electrons', - IndexedMoments=['X', 'Y', 'Z','MINIISO', 'MINIISO10','DR','X_Prime', 'Y_Prime','Z_Prime', 'DR_Prime', 'contained'], IndexedMomentsSuffix = "_E" ) - - ############# Muon ######### - IndJetMuonAssoc = IndexMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,'mu_',level = level, - prefix='Muon_', blockname='muonblockindex', AssociationName='jetsubstructure_muons', - IndexedMoments=['X', 'Y', 'Z','MINIISO', 'MINIISO10','DR', 'X_Prime', 'Y_Prime','Z_Prime', 'DR_Prime','contained'], IndexedMomentsSuffix = "_U") - - -def AddHadronicInfo(obj, additionalMoments = [], theblockname = 'SubjetMomentsHadronic', level=0): - - from JetD3PDMaker import JetMomentFillerTool - obj.defineBlock(level, theblockname, JetMomentFillerTool,Moments= [] + additionalMoments) - -def AddAssocJetsIndex(obj, jetassocname, jettarget, level=0): - - JetAssocTrack = IndexMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,jettarget,level = level, - prefix=jetassocname+'_', - blockname=jetassocname+'blockindex', AssociationName = jetassocname ,OutputLevel=3 ) - -def AddConstitIndex(object, typename='CaloCluster', target='cl_', level=0): - - import EventCommonD3PDMaker - import D3PDMakerCoreComps - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, - level = level) - - ConstitAssoc.defineBlock (0, 'ConstitIndex'+typename, D3PDMakerCoreComps.IndexFillerTool, Target = target) - -def AddConstitTruthIndex(object, typename='TruthParticle', target='mc_', level=0): - - import EventCommonD3PDMaker - import D3PDMakerCoreComps - import TruthD3PDMaker - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = False, - level = level) - - genPart = SimpleAssociation(ConstitAssoc,TruthD3PDMaker.TruthParticleGenParticleAssociationTool, blockname = 'TruthParticleGenParticleAssociationTool_AddConstitTruthIndex') - trupart2 = IndexAssociation (genPart, TruthD3PDMaker.GenParticleTruthParticleAssociationTool, blockname = 'GenParticleTruthParticleAssociationTool_AddConstitTruthIndex', - target = 'mc_', - Target = 'mc_') - - -def AddTruthLeptonicInfo(object, typename='TruthParticle', target='mc_', level=0, extra_list_m=[]): - import TruthD3PDMaker - LeptAssoc = ContainedVectorMultiAssociation \ - (object, - JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool, - 'Lepton_', - blockname=typename+'Leptonblockindex', - level = level, AssociationName='jetsubstructure_truthleptons', IndexedMoments=['X', 'Y', 'Z','MINIISO', 'MINIISO10','DR','X_Prime', 'Y_Prime','Z_Prime', 'DR_Prime', 'contained'] + extra_list_m, IndexedMomentsSuffix = "_L") - - genPart = SimpleAssociation(LeptAssoc,TruthD3PDMaker.TruthParticleGenParticleAssociationTool, blockname = 'TruthParticleGenParticleAssociationTool_AddTruthLeptonicInfo') - trupart2 = IndexAssociation (genPart, TruthD3PDMaker.GenParticleTruthParticleAssociationTool, blockname = 'GenParticleTruthParticleAssociationTool_AddTruthLeptonicInfo', - target = 'mc_', - Target = 'mc_') - -def AddAssocConstitIndex(object, typename='Analysis::Electron', target='el_', level=0): - - import EventCommonD3PDMaker - import D3PDMakerCoreComps - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_'+target, - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = True, - level = level) - - ConstitAssoc.defineBlock (0, 'ConstitIndex'+typename, D3PDMakerCoreComps.IndexFillerTool, Target = target) #, ContainerIndexName = 'contidx') - - -class myLOD: - - jetprefix = 'jet_' - - def __init__(self, jetprefix): - self.jetprefix = jetprefix - - def _prefixLOD (self, reqlev, blockargs, hookargs): - #print 'yoman: ', self.jetprefix, ' ', hookargs['prefix'] - return hookargs['prefix'] in [self.jetprefix] - -def JSD3PD (jetsToWrite, alg = None, scheduleOnly=False, level = 10, - file = 'js.root', - tuplename = 'js'): - - if not alg: - from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - alg = MSMgr.NewRootStream(tuplename, file, asAlg=True) - - commonExcludeList = ['El02Match','Mu02Match','L1Info','L2Info','EFInfo'] - commonIncludeList = [] - - import re - JetAlgPattern = re.compile(r'^(\D+)(\d{1,2})(\D+)Jets') #assuming standard notation - ars = JetAlgPattern.match(jetsToWrite[0]).groups() - - parentJets = ''.join(ars) #remove the 'Jets' at the end - groomedJetsList = jetsToWrite[1] - - parentJetsWithoutJS = parentJets - if parentJets[-2:] == 'JS': parentJetsWithoutJS = parentJets[:-2] - - parentJetsWithoutJSForGrooming = parentJetsWithoutJS - if scheduleOnly: parentJetsWithoutJS += "Jets" - filteredSequence = AlgSequence('TopWGFilter') - - theZeroLevel = 0 - if not scheduleOnly: - MyJetD3PDObject = getJetD3PDObject(objectname='MyJetD3PDObject') - MyJetD3PDObject._hookArgs['seq']=filteredSequence - else: - from TopInputsD3PDMaker.topInputsD3PD import JetD3PDObject - MyJetD3PDObject = JetD3PDObject - mylod = myLOD('jet_'+parentJetsWithoutJS+'_') - theZeroLevel = mylod._prefixLOD - - MyGroomedJetD3PDObject = getJetD3PDObject(objectname='MyGroomedJetD3PDObject') - MyGroomedJetD3PDObject._hookArgs['seq']=filteredSequence - - ## Electron LC cluster overlap map - if ('LCTopo' in parentJets) and (not hasattr(alg, 'ElecTopoClusterAssoc_Filler')): - MyJetAssocD3PDObject = make_SGDataVector_D3PDObject('DataVector<INavigable4Momentum>', 'ElectronAODCollection_CaloCalTopoCluster_jetsubstructure_electrons', 'ElecTopoClusterAssoc_', 'myJetAssocD3PDObject') - AddAssocConstitIndex(MyJetAssocD3PDObject) - AddAssocConstitIndex(MyJetAssocD3PDObject, 'CaloCluster', 'cl_') - alg += MyJetAssocD3PDObject(0) - - - if 'Track' in parentJets: - AddConstitIndex(MyGroomedJetD3PDObject, typename='Rec::TrackParticle', target='trk') - AddConstitIndex(MyJetD3PDObject, typename='Rec::TrackParticle', target='trk', level=theZeroLevel) - AddLeptonicInfo(MyJetD3PDObject,level=theZeroLevel) - AddLeptonicInfo(MyGroomedJetD3PDObject,99) - elif 'Topo' in parentJets: - AddConstitIndex(MyGroomedJetD3PDObject) - AddConstitIndex(MyJetD3PDObject, level=theZeroLevel) - AddLeptonicInfo(MyJetD3PDObject, level=theZeroLevel) - AddLeptonicInfo(MyGroomedJetD3PDObject,99) - elif 'Truth' in parentJets: - if ars[1] == '4': - from JetD3PDMaker.JetD3PDMakerConf import D3PD__JetShapeFillerTool - from JetD3PDMaker.JetD3PDMakerConf import D3PD__JetTrueTagFillerTool - MyJetD3PDObject.defineBlock(theZeroLevel, 'myJetShape', D3PD__JetShapeFillerTool) - MyJetD3PDObject.defineBlock(theZeroLevel, 'TrueFlavorComponents', D3PD__JetTrueTagFillerTool) - AddConstitTruthIndex(MyJetD3PDObject, level=theZeroLevel) - AddTruthLeptonicInfo(MyJetD3PDObject, level=theZeroLevel) - AddTruthLeptonicInfo(MyGroomedJetD3PDObject, level=99) - AddConstitTruthIndex(MyGroomedJetD3PDObject) - - if 'Track' not in parentJets and 'Truth' not in parentJets: - AddAssocJetsIndex(MyJetD3PDObject, 'TrackJets', 'jet_' + ars[0] + ars[1] + 'TrackZ_', level=theZeroLevel) - if rec.doTruth(): - AddAssocJetsIndex(MyJetD3PDObject, 'TruthJets', 'jet_' + ars[0] + ars[1] + 'Truth_', level=theZeroLevel) - - JetQualInclude = [] - - if 'Topo' in parentJets: - commonIncludeList += ['ConstituentScale', 'EMScale'] - if not scheduleOnly: - AddHadronicInfo(MyJetD3PDObject, ['OriginIndex','nTrk','sumPtTrk','EtaOrigin' , 'PhiOrigin', 'MOrigin' ], theblockname = 'OriginIndexBlock') - AddHadronicInfo(MyGroomedJetD3PDObject, ['EtaOrigin' , 'PhiOrigin' , 'MOrigin' ], theblockname = 'OriginIndexBlock', level=99) - if (parentJetsWithoutJS == 'AntiKt10LCTopo') or (parentJetsWithoutJS == 'CamKt12LCTopo'): - AddHadronicInfo(MyJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock', level=theZeroLevel) - AddHadronicInfo(MyGroomedJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock') - if ars[1] == '4' or ars[1] == '6': - if not scheduleOnly: - AddHadronicInfo(MyJetD3PDObject, ['EMJES', 'EMJES_EtaCorr' ], theblockname='EMJESBlock', level=99) - AddHadronicInfo(MyJetD3PDObject, ['LCJES', 'LCJES_EtaCorr' ], theblockname='LCJESBlock', level=99) - AddHadronicInfo(MyJetD3PDObject, ['Timing', 'LArQuality', 'HECQuality', 'NegativeE', 'AverageLArQF'], theblockname= 'QMomentsBlock') - if 'TopoEM' in ars[2]: - JetQualInclude += ['EMJESBlock', 'JetQual'] - elif 'LCTopo' in ars[2]: - JetQualInclude += ['LCJESBlock', 'JetQual'] - - VtxInclude = [] - if 'Topo' in parentJets: - VtxInclude += ['JVtx', 'JetVertexFraction'] - elif 'Track' in parentJets: - VtxInclude += ['JVtx'] - - AddAssocJetsIndex(MyGroomedJetD3PDObject, 'Parent', 'jet_' + parentJetsWithoutJS + '_') - for gr in groomedJetsList: - AddAssocJetsIndex(MyJetD3PDObject, gr, 'jet_' + parentJetsWithoutJSForGrooming + gr + '_', level=theZeroLevel) - - MyGroomedJetCollectionD3PDObject = getJetCollectionD3PDObject(objectname = "MyGroomedJetCollectionD3PDObject") - AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['SmallR','PtFrac'], theblockname = 'TrimConfigMoments', level=99) - #AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['NSubjets','ktycut2','massFraction','minRfilt','minSplitR'], theblockname = 'FiltConfigMoments', level = 99) - #AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['RcutFactor', 'Zcut'], theblockname = 'PrunConfigMoments', level = 99) - - AddHadronicInfo(MyGroomedJetD3PDObject, ['CORE_RBB','CORE_RFILT'], theblockname = 'FiltMoments', level=99) - - listOfMoments = ['Tau1','Tau2','Tau3','SPLIT12', 'SPLIT23', 'SPLIT34', 'ZCUT12', 'ZCUT23', 'ZCUT34','QW', 'PullMag', 'PullPhi', 'Pull_C00', 'Pull_C01', 'Pull_C10', 'Pull_C11','WIDTH'] - - if not scheduleOnly: listOfMoments_ = listOfMoments - else: listOfMoments_ = listOfMoments[:-1] # without WIDTH - - AddHadronicInfo(MyGroomedJetD3PDObject, listOfMoments, theblockname = 'jsObsblock', level=99 ) - AddHadronicInfo(MyJetD3PDObject, listOfMoments_, theblockname = 'jsObsblock', level=theZeroLevel ) - - if not scheduleOnly: - alg += MyJetD3PDObject(0, prefix='jet_' + parentJetsWithoutJS + '_', sgkey=parentJets+'Jets', exclude=commonExcludeList, include = commonIncludeList + VtxInclude + JetQualInclude) - for gr in groomedJetsList: - includelist = [] - includelist_unique = [] - if 'Trim' in gr: - includelist_unique += ['TrimConfigMoments'] - includelist += ['jsObsblock'] - if 'Topo' in parentJets: - includelist += ['OriginIndexBlock', 'EMScale','ConstituentScale','elecblockindex','muonblockindex'] - elif 'Truth' in parentJets: - includelist += ['TruthParticleLeptonblockindex'] - elif 'Track' in parentJets: - includelist += ['elecblockindex','muonblockindex'] - - alg += MyGroomedJetCollectionD3PDObject( 0, prefix='jet_' + parentJetsWithoutJSForGrooming + gr + '_config_', sgkey=parentJets + gr +'Jets', include = includelist_unique) - elif 'Filt' in gr: - includelist += ['FiltMoments', 'jsObsblock'] - #includelist_unique += ['FiltConfigMoments'] - elif 'Prun' in gr: - #includelist_unique += ['PrunConfigMoments'] - includelist += ['jsObsblock'] - - alg += MyGroomedJetD3PDObject(0, prefix='jet_' + parentJetsWithoutJSForGrooming + gr + '_', sgkey=parentJets + gr +'Jets', include = includelist,exclude=commonExcludeList) - - return alg diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/BoostJSjets.py b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/BoostJSjets.py deleted file mode 100644 index 04f4e8b90590eb87ea09794c5aac9be242afbcbe..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/BoostJSjets.py +++ /dev/null @@ -1,369 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -#####Jet Reco ############ - -# Before adding your algorithms to topSequence -from JetRec.JetGetters import * -from JetRec.JetRecFlags import jetFlags -from JetRecTools.JetRecToolsConf import * -from JetRec.JetMomentGetter import add_jetMoments_to_JetAlg, make_JetMomentGetter -from JetRec.JetRecConf import JetSorterTool -from JetMomentTools.JetMomentToolsConf import JetWidthTool -from AthenaCommon.SystemOfUnits import GeV -from AthenaCommon.AlgSequence import AlgSequence - -import JetSubStructure - -_GroomingTool = { - 'Trimming' : JetSubStructure.SimpleTrimmingTool, - #'BDRSFiltering' : JetSubStructure.BDRSFilteringTool, - #'Pruning' : JetSubStructure.PruningTool, - 'KtSubJets' : JetSubStructure.KtSubJetsTool -} - -def buildName(GroomedDict): - - if type(GroomedDict) != dict: - raise TypeError("GroomedDicts must contain dicts!") - - if GroomedDict['Type'] in _GroomingTool: - strconfig = "" - theArgs = GroomedDict['args'] - for k in theArgs.keys(): - if type(theArgs[k]) == int: - strconfig += k + '%d' % theArgs[k] - elif type(theArgs[k]) == float: - strconfig += k + '%d' % (theArgs[k]*100) - - toolname = strconfig - - return toolname - else: - raise KeyError("Couldn't find grooming tool %s" % GroomedDict['Type']) - - -def getGroomingTools(GroomedDicts): - - myGroomingTools = [] - catNames = [] - for gr in GroomedDicts: - toolname = buildName(gr) - defname = _GroomingTool[gr['Type']].__slots__['Name'] ## safe hack ? - - kw = gr['args'].copy() - if 'Name' not in kw.keys(): - kw['Name'] = defname - kw['Name'] += toolname - - if gr['Type'] == 'KtSubJets': - myGroomingTools += [ _GroomingTool[gr['Type']](gr['Type']+toolname, **kw) ] # StoreConfigParam = True ... not implemented for KtSubJetsTool - else: - myGroomingTools += [ _GroomingTool[gr['Type']](gr['Type']+toolname, StoreConfigParam = True, **kw) ] - - catNames += [ kw['Name'] ] - - return myGroomingTools, catNames - - -###################### -## Truth Jets ## -###################### - -def setupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq): - if rec.doTruth(): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - catNames_trimmed = list(x for x in catNames if 'Trimmed' in x) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - wrapped_sortertool = JetSubStructure.JetAlgToolWrapper("JetSorterWrapper", JetAlgTool = sortertool, GroomedjetsAuthor = catNames_trimmed) - - widthtool = JetWidthTool('JS_JetWidthTool') - - truth_assoc = JetSubStructure.TruthParticleJetAssociatorTool("myTruthLeptonsAssoc", ContainerName = "SpclMC", dR = myjetdr, OutputLevel=3, #SpclMC for AODs, INav4MomTruthEvent for ESD - ParticlesPdgID = [11,13], ParticlesStatus = [1, 1], ParticlesType=[2,6], ParticlesOrigin=[-1,-1]) - truth_assoc.mcTruthClassifier.OutputLevel=3 - truth_assoc.mcTruthClassifier.McEventCollection = "GEN_AOD" #"TruthEvent" for ESD - from MCTruthClassifier.MCTruthClassifierBase import exToCalo - truth_assoc.mcTruthClassifier.ExtrapolateToCaloTool = exToCalo - - assoc_tool_truth = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTruth', - AssociatorTools = [truth_assoc], - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = [wrapped_sortertool, widthtool], OutputLevel = 3 - ) - - jetsubstructure_tool_truth = JetSubStructure.JetSubstructureTool( - name = 'JetSubstructureToolTruth', UsedSignalState = 2, OutputLevel=3, - SubstructureTools = [JetSubStructure.KtTruthLeptonSubstructureTool("mytruthleptontool", OutputLevel=3, GroomedjetsAuthor = []), - JetSubStructure.NSubjettinessTool("myNSubjettinessTool", N=[1,2,3], R0=myjetdr, GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.JetPullVectorTool("myJetPullVectorTool", GroomedjetsAuthor = catNames_trimmed) ] ) - #need to use truth collection on disk for smaller R jets for the TrueFlavorComponent block - if myjetdr < 0.9: - contname = myjetfinder + '%dTruthJets' % (myjetdr*10) - else: - contname = myjetfinder + '%dTruthJSJets' % (myjetdr*10) - - myjetgetter_truth = make_StandardJetGetter(myjetfinder, myjetdr, 'Truth', seq = theseq, doCalib=False, outputCollectionName = contname) #,addDefaultMoment=False) - truthcontname = myjetgetter_truth.outputKey() - - extra_moments_list = [] - if myjetgetter_truth.jetAlgorithmHandle() == None: - if truthcontname == None: - truthcontname = myjetgetter_truth.buildName() - extra_moments_list += [widthtool] ## jet moments lost for truth jets in ESD->AOD transition - - sss = make_JetMomentGetter(truthcontname , extra_moments_list + [assoc_tool_truth,jetsubstructure_tool_truth], theseq ) - - ## for lepton assoc - jetcont = truthcontname[:-4] #removing the 'Jets' - for x in catNames_trimmed: - make_JetMomentGetter(jetcont+x+'Jets', [JetSubStructure.JetAssociationTool('JetAssocToolTruthGr', AssociatorTools = [truth_assoc], GroomingTools =[], UsedSignalState = 2, JetAlgTools = []), - JetSubStructure.JetSubstructureTool('JetSubstructureToolTruthGr', UsedSignalState = 2, SubstructureTools = [JetSubStructure.KtTruthLeptonSubstructureTool("mytruthleptontool", GroomedjetsAuthor = [])]) ], - theseq) - - return [ truthcontname, catNames ] - - else: - return [ None, None ] - - -###################### -## Track Jets ## -###################### - -def setupTrackJets(myjetfinder, myjetdr, GroomedDicts, theseq): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - catNames_trimmed = list(x for x in catNames if 'Trimmed' in x) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - wrapped_sortertool = JetSubStructure.JetAlgToolWrapper("JetSorterWrapper", JetAlgTool = sortertool, GroomedjetsAuthor = catNames_trimmed) - - widthtool = JetWidthTool('JS_JetWidthTool') - - e_assoc = JetSubStructure.ElectronJetAssociatorTool("JSEAssocTrack", ContainerName = 'ElectronAODCollection', UseCluster = False, UseTrack = True, dR = myjetdr, OutputLevel=3) - mu_assoc = JetSubStructure.MuonJetAssociatorTool("JSMuAssocTrack", ContainerName = 'MuidMuonCollection', UseTrack = True, dR = myjetdr, OutputLevel=3) - - assoc_tool_track = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTrack', - AssociatorTools = [e_assoc, mu_assoc], - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = [wrapped_sortertool, widthtool], OutputLevel = 3 - ) - - jetsubstructure_tool_track = JetSubStructure.JetSubstructureTool( - name = 'JetSubstructureToolTrack', UsedSignalState = 2, OutputLevel=3, - SubstructureTools = [JetSubStructure.NSubjettinessTool("myNSubjettinessTool", N=[1,2,3], R0=myjetdr, GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtElectronSubstructureTool("myelectool", GroomedjetsAuthor = []), - JetSubStructure.KtMuonSubstructureTool("mymuontool", GroomedjetsAuthor = []), - JetSubStructure.JetPullVectorTool("myJetPullVectorTool", GroomedjetsAuthor = catNames_trimmed) ] ) - - - #---- TrackJet ---- - #jetFlags.finalMinEt = 5*GeV - - from BoostedTopD3PDMaker.JSTrackJets import createJSTrackJets - mygetter = createJSTrackJets(theseq, myjetfinder,myjetdr) - - trackjetcontname = mygetter.outputKey() - - add_jetMoments_to_JetAlg(mygetter, [widthtool]) - - #---- End TrackJet ---- - - sss = make_JetMomentGetter(trackjetcontname , [assoc_tool_track, jetsubstructure_tool_track], theseq ) - - ## for lepton assoc - jetcont = trackjetcontname[:-4] #removing the 'Jets' - for x in catNames_trimmed: - make_JetMomentGetter(jetcont+x+'Jets', [JetSubStructure.JetAssociationTool('JetAssocToolTrackGr', AssociatorTools = [e_assoc, mu_assoc], GroomingTools =[], UsedSignalState = 2, JetAlgTools = []), - JetSubStructure.JetSubstructureTool('JetSubstructureToolTrackGr', UsedSignalState = 2, SubstructureTools = [ JetSubStructure.KtElectronSubstructureTool("myelectool", GroomedjetsAuthor = []), - JetSubStructure.KtMuonSubstructureTool("mymuontool", GroomedjetsAuthor = []) ]) ], - theseq) - - - - return [ trackjetcontname, catNames ] - - -###################### -## Calo Jets ## -###################### - -def setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - catNames_trimmed = list(x for x in catNames if 'Trimmed' in x) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - wrapped_sortertool = JetSubStructure.JetAlgToolWrapper("JetSorterWrapper", JetAlgTool = sortertool, GroomedjetsAuthor = catNames_trimmed) - - widthtool = JetWidthTool('JS_JetWidthTool') - - grjets_calib = [] - - from JetSubStructure.mySetupJetCalibrators import doEtaMassJESCorrection - from JetCalibTools.MakeCalibSequences import calibTags - calibTags['ETAMASSJES'] = doEtaMassJESCorrection - - ## Origin correction - - mydoCalib = False - mycalibName = '' - - if 'LCTopo' in myjetinput: - mydoCalib = False - if (myjetfinder + '%d'%(myjetdr*10) == 'AntiKt10') or (myjetfinder + '%d'%(myjetdr*10) == 'CamKt12'): - mycalibName = 'LC:ORIGIN_ETAMASSJES' - else: - mycalibName = 'LC:ORIGIN' - - stdcaliblist = [] - allowedcalib = ['AntiKt10LCTopoTrimmedJets', 'AntiKt10LCTopoTrimmedPtFrac3SmallR30Jets','AntiKt10LCTopoTrimmedPtFrac5SmallR30Jets','CamKt12LCTopoTrimmedPtFrac5SmallR30Jets'] - for x in catNames: - author = myjetfinder + '%d'%(myjetdr*10) + myjetinput + x + 'Jets' - #if author in allowedcalib : - #grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin_etamassjes_'+x, - # JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput+x, doCalib=True, calibName='LC:ORIGIN_ETAMASSJES')[0], - # GroomedjetsAuthor = [x] )] - #elif 'Trimmed' in x: - # stdcaliblist += [x] - - #if stdcaliblist != [] : - #grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin', - # JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='LC:ORIGIN')[0], - # GroomedjetsAuthor = stdcaliblist )] - elif 'Topo' in myjetinput: - mydoCalib = True - mycalibName = 'EM:ORIGIN' - grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin', - JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='EM:ORIGIN')[0], - GroomedjetsAuthor = catNames_trimmed )] - - truthcontname = 'none' - if rec.doTruth(): - if myjetdr < 0.9: #need to use truth collection on disk for smaller R jets for the TrueFlavorComponent block - truthcontname = myjetfinder + '%dTruthJets' % (myjetdr*10) - else: - truthcontname = myjetfinder + '%dTruthJSJets' % (myjetdr*10) - - trackjetcontname = myjetfinder + '%dTrackZJets' % (myjetdr*10) - - assoc_tools = [] - - trkj_assoc = JetSubStructure.JetJetAssociatorTool("Trk_JetJetAssociatorTool", ContainerName = trackjetcontname, - AssociationName = "TrackJets", - MatchOrigin = True) - assoc_tools += [ trkj_assoc ] - - if rec.doTruth(): - truthj_assoc = JetSubStructure.JetJetAssociatorTool("Truth_JetJetAssociatorTool", ContainerName = truthcontname, - AssociationName = "TruthJets", - MatchOrigin = False) - assoc_tools += [ truthj_assoc ] - - e_assoc = JetSubStructure.ElectronJetAssociatorTool("JSEAssoc", ContainerName = 'ElectronAODCollection', UseCluster = True, UseTrack = False, dR = myjetdr, ResolveCluster=True, OutputLevel=3) - - e_assoc.METClusterResolver.MaximumRadialDistance = 0.2 - e_assoc.METClusterResolver.LongitudinalExtension = 1.0 - e_assoc.METClusterResolver.RadialExtension = 1.0 - e_assoc.METClusterResolver.EnergyFractionThreshold = 0.1 - e_assoc.METClusterResolver.OutputLevel = 3 - - mu_assoc = JetSubStructure.MuonJetAssociatorTool("JSMuAssoc", ContainerName = 'MuidMuonCollection', UseTrack = False, dR = myjetdr, OutputLevel=3) - assoc_tools += [ e_assoc, mu_assoc] - - assoc_tool = JetSubStructure.JetAssociationTool( - name = 'JetAssocTool', - AssociatorTools = assoc_tools, - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = grjets_calib + [wrapped_sortertool, widthtool], OutputLevel = 5 - ) - - jetsubstructure_tool = JetSubStructure.JetSubstructureTool( - name = 'JetSubstructureTool', UsedSignalState = 2, OutputLevel=3, - SubstructureTools = [JetSubStructure.NSubjettinessTool("myNSubjettinessTool", N=[1,2,3], R0=myjetdr, GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtHadSubstructureTool("myhadtool", GroomedjetsAuthor = catNames_trimmed), - JetSubStructure.KtElectronSubstructureTool("myelectool", GroomedjetsAuthor = []), - JetSubStructure.KtMuonSubstructureTool("mymuontool", GroomedjetsAuthor = []), - JetSubStructure.JetPullVectorTool("myJetPullVectorTool", GroomedjetsAuthor = catNames_trimmed) ] ) - - - - outkey = myjetfinder + '%d'%(myjetdr*10) + myjetinput - if myjetinput == 'Topo': - outkey += 'EM' - outkey += 'Jets' #'JSJets' for rebuilding on the fly - - myjetgetter = make_StandardJetGetter(myjetfinder, myjetdr, myjetinput, seq = theseq, doCalib=mydoCalib, calibName=mycalibName,addDefaultMoment=False, - outputCollectionName = outkey) - - contname = myjetgetter.outputKey() - - extra_moments_list = [] - if myjetgetter.jetAlgorithmHandle() == None: # JetCollection already in AOD - if contname == None: - contname=myjetgetter.buildName() - - if contname == 'AntiKt4LCTopoJets': - contname = 'AntiKt4LCTopoJetsReTagged' - else: - extra_moments_list += [widthtool] - - - # ------------------------------------------------ - # Associate a vertex and set the JVF moment. Must be placed AFTER vertex correction - # ------------------------------------------------ - from AthenaCommon.DetFlags import DetFlags - from AthenaCommon.AppMgr import ToolSvc - noVertex = jobproperties.Beam.beamType == 'cosmics' or jobproperties.Beam.beamType == 'singlebeam' - if DetFlags.detdescr.ID_on() and jetFlags.doJVF() and 'Truth' not in myjetinput and not noVertex and myjetdr >= 0.7: - from JetSubStructure.mySetupJetMomentTools import mygetJetVertexAssociationTool - myjvatool = mygetJetVertexAssociationTool(myjetfinder, myjetdr,myjetinput,'Custom%d'%(myjetdr*10)) - #add_jetMoments_to_JetAlg(myjetgetter, [myjvatool]) - extra_moments_list += [myjvatool] - - make_JetMomentGetter(contname , extra_moments_list + [assoc_tool, jetsubstructure_tool], theseq ) - - - ## for lepton assoc - jetcont = contname[:-4] #removing the 'Jets' - if contname == 'AntiKt4LCTopoJetsReTagged': - jetcont = 'AntiKt4LCTopo' - - for x in catNames_trimmed: - make_JetMomentGetter(jetcont+x+'Jets', [JetSubStructure.JetAssociationTool('JetAssocToolGr', AssociatorTools = [e_assoc, mu_assoc], GroomingTools =[], UsedSignalState = 2, JetAlgTools = [], OutputLevel = 5), - JetSubStructure.JetSubstructureTool('JetSubstructureToolGr',UsedSignalState = 2, SubstructureTools = [ JetSubStructure.KtElectronSubstructureTool("myelectool", GroomedjetsAuthor = []), - JetSubStructure.KtMuonSubstructureTool("mymuontool", GroomedjetsAuthor = []) ]) ], - theseq) - - - return [ contname, catNames ] - - -def createJSJets( ParentDict, GroomedDicts, theseq = AlgSequence()) : - - if type(ParentDict) != dict: - raise TypeError("ParentDict must be a dict!") - - if type(GroomedDicts) != list: - raise TypeError("GroomedDicts must be a list!") - - myjetfinder = ParentDict["JetFinder"] - myjetdr = ParentDict["JetdR"] - myjetinput = ParentDict["JetInput"] - - if myjetinput == 'Truth': - return setupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq) - elif myjetinput == 'Track': - return setupTrackJets(myjetfinder, myjetdr, GroomedDicts, theseq) - else : - return setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq) - diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/GroomedJetsConfig.py b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/GroomedJetsConfig.py deleted file mode 100644 index d704bea2b5fa0ec4fdb37febefb29636d1691540..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/GroomedJetsConfig.py +++ /dev/null @@ -1,214 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -import copy - -def getGroomedJetsConfig(): - - dictsConf = [] - - GroomedDictsTrimming = [ - # { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.3, 'PtFrac' : 0.01} }, - { 'Type' : 'Trimming' , 'args' : {} }, # default ={ 'SmallR' : 0.3, 'PtFrac' : 0.05} }, - # { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.3, 'PtFrac' : 0.03} }, - - # { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.2, 'PtFrac' : 0.01} }, - # { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.2, 'PtFrac' : 0.03} }, - # { 'Type' : 'Trimming', 'args' : { 'SmallR' : 0.2, 'PtFrac' : 0.05} } - ] - - GroomedDictsFiltering = [ - { 'Type' : 'BDRSFiltering', 'args' : { 'minSplitR' : 0., 'massFraction' : 0.20 } }, - { 'Type' : 'BDRSFiltering', 'args' : { 'minSplitR' : 0., 'massFraction' : 0.33 } }, - { 'Type' : 'BDRSFiltering', 'args' : { 'minSplitR' : 0., 'massFraction' : 0.67 } } - ] - - GroomedDictsPruning = [ - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 0.5, 'Zcut' : 0.05 } }, - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 0.5, 'Zcut' : 0.10 } }, - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 0.5, 'Zcut' : 0.15 } }, - - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 1., 'Zcut' : 0.05 } }, - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 1., 'Zcut' : 0.10 } }, - { 'Type' : 'Pruning', 'args' : { 'Name' : 'PrunedKt', 'RcutFactor' : 1., 'Zcut' : 0.15 } } - ] - - GroomedDictsKtSubJets = [ { 'Type' : 'KtSubJets' ,'args' : {} } ] # default = { 'NSubJets' : 3 } } ] - - -#### AntiKt R=0.4 #### - - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 0.4, - 'JetInput' : 'Track', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 0.4, - 'JetInput' : 'Truth', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 0.4, - 'JetInput' : 'LCTopo', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming)] ] - - -#### AntiKt R=0.6 #### - - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 0.6, - 'JetInput' : 'Track', - } - - dictsConf += [ [ParentDict, []] ] #copy.deepcopy(GroomedDictsTrimming)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 0.6, - 'JetInput' : 'Truth', - } - - dictsConf += [ [ParentDict, []] ] #copy.deepcopy(GroomedDictsTrimming)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 0.6, - 'JetInput' : 'LCTopo', - } - - dictsConf += [ [ParentDict, []] ] #copy.deepcopy(GroomedDictsTrimming)] ] - - - -#### AntiKt R=1.0 #### - - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 1.0, - 'JetInput' : 'Track', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 1.0, - 'JetInput' : 'Truth', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 1.0, - 'JetInput' : 'LCTopo', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - - -#### C/A R=1.2#### - - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'Truth', - } - - #dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - dictsConf += [ [ParentDict, []] ] #copy.deepcopy(GroomedDictsTrimming)] ] - -## - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'Track', - } - - #dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - dictsConf += [ [ParentDict, []] ] #copy.deepcopy(GroomedDictsTrimming)] ] -## - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'LCTopo', - } - - #dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - dictsConf += [ [ParentDict, []] ] #copy.deepcopy(GroomedDictsTrimming)] ] - -#### AntiKt R=1.2 #### - ''' - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 1.2, - 'JetInput' : 'Track', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 1.2, - 'JetInput' : 'Truth', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - ParentDict = { - 'JetFinder' : 'AntiKt', - 'JetdR' : 1.2, - 'JetInput' : 'LCTopo', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - - -#### C/A R=1.0#### - - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.0, - 'JetInput' : 'Truth', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.0, - 'JetInput' : 'Track', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - -## - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.0, - 'JetInput' : 'LCTopo', - } - - dictsConf += [ [ParentDict, copy.deepcopy(GroomedDictsTrimming+GroomedDictsKtSubJets)] ] - ''' - - return dictsConf diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/JSTrackJets.py b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/JSTrackJets.py deleted file mode 100644 index 410f82920b91243c006c6240647769d45e82903a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/JSTrackJets.py +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -############################################################### -# -# JetTrackZClusterTool jobOptions file -# # PhysicsAnalysis/JetEtMissDPDModifier/share/JetTrackZClusterTool_jobOptions.py -# # https://svnweb.cern.ch/trac/atlasoff/browser/PhysicsAnalysis/D3PDMaker/SUSYD3PDMaker/trunk/share/JetTrackZClusterTool_jobOptions.py -#============================================================== - -#-------------------------------------------------------------- -# JetTrackZClusterTool Options -#-------------------------------------------------------------- - -# Import configurable for tool -from JetRecTools.JetRecToolsConf import JetTrackZClusterTool -from JetRec.JetGetters import * -from JetRec.JetRecConf import * - -def createJSTrackJets ( theseq, myjetfinder, myjetdr ): - - # Setup tool so that it can be used - JS_MyJetTrackZClusterTool = JetTrackZClusterTool( "JS_JetTrackZClusterTool_%s%d" % (myjetfinder,myjetdr*10) ) - - JS_MyJetTrackZClusterTool.TrackJetMinMulti = 2 - JS_MyJetTrackZClusterTool.TrackJetMinPt = 5000 # MeV - JS_MyJetTrackZClusterTool.UseVtxSeeding = True - JS_MyJetTrackZClusterTool.DeltaZRange = 10000.0 - JS_MyJetTrackZClusterTool.TrackParticleContainerName = "TrackParticleCandidate" - JS_MyJetTrackZClusterTool.VxContainerName = "VxPrimaryCandidate" - JS_MyJetTrackZClusterTool.OutputLevel = 3 - - #-------------------------------------------------------------- - # TrackSelector Tool Options - #-------------------------------------------------------------- - - from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool - from AthenaCommon.AppMgr import ToolSvc - ToolSvc += InDet__InDetDetailedTrackSelectorTool( "JS_MyDetailedTrackSelectorTool" ) - - #See InDetDetailedTrackSelectorTool.h for additional options and defaults - - ToolSvc.JS_MyDetailedTrackSelectorTool.pTMin = 500 # MeV - ToolSvc.JS_MyDetailedTrackSelectorTool.etaMax = 2.5 - ToolSvc.JS_MyDetailedTrackSelectorTool.nHitBLayer = 0 - ToolSvc.JS_MyDetailedTrackSelectorTool.nHitPix = 0 - ToolSvc.JS_MyDetailedTrackSelectorTool.nHitBLayerPlusPix = 1 #0 - ToolSvc.JS_MyDetailedTrackSelectorTool.nHitSct = 6 #0 - ToolSvc.JS_MyDetailedTrackSelectorTool.nHitSi = 7 #7 - ToolSvc.JS_MyDetailedTrackSelectorTool.nHitTrt = 0 - ToolSvc.JS_MyDetailedTrackSelectorTool.IPd0Max = 1.0 #1 # d0 cut - ToolSvc.JS_MyDetailedTrackSelectorTool.IPz0Max = 1.5 # z0*sin(theta) cut - ToolSvc.JS_MyDetailedTrackSelectorTool.z0Max = 200 # z0 cut - ToolSvc.JS_MyDetailedTrackSelectorTool.fitChi2OnNdfMax = 1000 #3 #Should we use a tighter cut here !??? - ToolSvc.JS_MyDetailedTrackSelectorTool.d0significanceMax = -1. - ToolSvc.JS_MyDetailedTrackSelectorTool.z0significanceMax = -1. - ToolSvc.JS_MyDetailedTrackSelectorTool.Extrapolator = ToolSvc.InDetExtrapolator - - ToolSvc.JS_MyDetailedTrackSelectorTool.OutputLevel = 3 - - from TrkTrackSummaryTool.AtlasTrackSummaryTool import AtlasTrackSummaryTool - atst = AtlasTrackSummaryTool() - ToolSvc += atst - ToolSvc.JS_MyDetailedTrackSelectorTool.TrackSummaryTool = atst - -## - from JetSubStructure.JetSubStructureConf import JetSubStructure__CachedTrackSelectorTool - ToolSvc += JetSubStructure__CachedTrackSelectorTool("JS_CachedTrackSelectorTool") - - ToolSvc.JS_CachedTrackSelectorTool.TrackSelector = ToolSvc.JS_MyDetailedTrackSelectorTool - -## - # Tell "JetTrackZClusterTool" to use this tool - JS_MyJetTrackZClusterTool.TrackSelector = ToolSvc.JS_CachedTrackSelectorTool #ToolSvc.JS_MyDetailedTrackSelectorTool - - - #-------------------------------------------------------------- - # JetFinder Tool Options (Anti-Kt) - #-------------------------------------------------------------- - - from JetRec.JetRecConf import JetFastJetFinderTool - myfastfinder = JetFastJetFinderTool("JS_%s%dTrackJetFinder" % (myjetfinder,myjetdr*10)) - - if myjetfinder == 'AntiKt': - myfastfinder.Algorithm = "anti-kt" - elif myjetfinder == 'CamKt': - myfastfinder.Algorithm = "cambridge" - - myfastfinder.Radius = myjetdr - myfastfinder.RecombScheme = "E" - myfastfinder.Strategy = "Best" - myfastfinder.FailIfMisconfigured = True - myfastfinder.Inclusive = True - myfastfinder.CalculateJetArea = False - myfastfinder.StoreNFlipValues = 0 - - ToolSvc += myfastfinder - - # Tell "TrackZClusterTool" to use this tool - JS_MyJetTrackZClusterTool.JetFinder = myfastfinder - - #------------------------------------------------------------- - # Jet Getter - #------------------------------------------------------------- - - JS_TrackZToolList = [JS_MyJetTrackZClusterTool, - JetSignalSelectorTool('JSTZ_JetFinalPtCut',UseTransverseMomentum = True,MinimumSignal= jetFlags.finalMinEt()), - JetSorterTool('JSTZ_JetSorter',SortOrder="ByPtDown") ] - - mytrackzjetgetter = make_StandardJetGetter(myjetfinder, myjetdr,'TrackZ',seq = theseq, allTools = JS_TrackZToolList) - - return mytrackzjetgetter -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/MinimalistD3PD.py b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/MinimalistD3PD.py deleted file mode 100644 index 28438aa587ca461d81a5aaba277fbab65b3772c5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/MinimalistD3PD.py +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -D3PDMakerFlags.TruthWriteHadrons = True -D3PDMakerFlags.TruthDoPileup = False - -from CaloSysD3PDMaker.ClusterD3PDObject import ClusterD3PDObject - -from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject -from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject -from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation -import JetSubstructureD3PDMaker -import D3PDMakerCoreComps - -#setup tool service and include -from AthenaCommon.AppMgr import ToolSvc -from AthenaCommon.Include import include - -################################################################################################# -##NEW Mini isolation code which calls standard isolation tools -################################################################################################ - -# Get EMTrackIsolationTool -try: - from egammaTools.EMTrackIsolationToolBase import EMTrackIsolationToolBase - theemtrackisolationtool = EMTrackIsolationToolBase("emtrackisolationtool") - theemtrackisolationtool.useBremAssoc = True - ToolSvc+=theemtrackisolationtool -except Exception: - traceback.print_exc() - -# Get BoostedTopD3PDMaker which contains MI filler tools -import BoostedTopD3PDMaker - -#Electrons, 10 and 15 -ElectronD3PDObject.defineBlock(99, "miniiso10", BoostedTopD3PDMaker.MiniIsolationElectronFillerTool, EMTrackIsolationTool=theemtrackisolationtool, KtDist=10., prefix="MI10_") - -ElectronD3PDObject.defineBlock(99, "miniiso15", BoostedTopD3PDMaker.MiniIsolationElectronFillerTool, EMTrackIsolationTool=theemtrackisolationtool, KtDist=15., prefix="MI15_") - -#Get Muon Isolation tool -# This is needed to initialize the MuonIsolationTool properly. -# Without this, there will be ERRORs! -include( "MuonIsolationTools/MuonIsolationTool_jobOptions.py" ) - -#Muons, 10 and 15 -MuonD3PDObject.defineBlock(99, "miniiso10", BoostedTopD3PDMaker.MiniIsolationMuonFillerTool, MuIsolationTool=ToolSvc.MuonIsolationTool, KtDist=10., prefix="MI10_") - -MuonD3PDObject.defineBlock(99, "miniiso15", BoostedTopD3PDMaker.MiniIsolationMuonFillerTool, MuIsolationTool=ToolSvc.MuonIsolationTool, KtDist=15., prefix="MI15_") - -######################################### - -def MinimalistD3PD(alg): - - from CaloSysD3PDMaker import ClusterMomentFillerTool as CMFT - ClusterD3PDObject.defineBlock (0, 'CenterMagMoments', CMFT, Moments = [CMFT.CENTER_MAG, 'centermag']) - alg += ClusterD3PDObject(level=0, sgkey='CaloCalTopoCluster', prefix='cl_') - # alg.cl_Filler.cl_Filler_Kinematics.WriteE = True - - - return - - - diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/__init__.py b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/__init__.py deleted file mode 100644 index fd5f5b470da7087eb192e78b72a5724747a3cdff..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/python/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -import BoostedTopD3PDMakerConf -for k, v in BoostedTopD3PDMakerConf.__dict__.items(): - if k.startswith ('D3PD__'): - globals()[k[6:]] = v diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/share/TopBoostJSD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/share/TopBoostJSD3PD_prodJobOFragment.py deleted file mode 100644 index 88b9c5365bb0d4791c1f8dc00e18b60d5299e2cc..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/share/TopBoostJSD3PD_prodJobOFragment.py +++ /dev/null @@ -1,92 +0,0 @@ -# $Id: TopBoostJSD3PD_prodJobOFragment.py 511453 2012-07-26 14:45:05Z ethompso $ -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to -# create the "Qcd D3PD cart". - -# This jobO should not be included more than once: -include.block( "BoostedTopD3PDMaker/TopBoostJSD3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -TopBoostJSD3PDStream_msg = logging.getLogger( 'TopBoostJSD3PD_prodJobOFragment' ) - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags,_string_prop -from AthenaCommon.AlgSequence import * - - -## not behaving well..savannah bug 91703 -## truth bug -#if rec.doTruth(): -# from McParticleAlgs.ReOrderMcEventCollection import FixMcEventCollection -# topSequence.insert(1, FixMcEventCollection() ) - -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -####### -from BoostedTopD3PDMaker.BoostJSjets import createJSJets - -from BoostedTopD3PDMaker.GroomedJetsConfig import getGroomedJetsConfig -dictsConfig = getGroomedJetsConfig() - -myJetKeys = [] - -for dC in dictsConfig: - xx = createJSJets(dC[0], dC[1], preseq) - myJetKeys += [xx] - -######### - -# Configure algorithms needed before TopInputD3PDMaker is run -include("TopInputsD3PDMaker/PrepareTopInputs.py") - - -# Check if the configuration makes sense: -if prodFlags.WriteTopBoostJSD3PD.isVirtual: - TopBoostJSD3PDStream_msg.error( "The TopBoostJSD3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "TopBoostJSD3PD set to be a virtual stream" ) - pass - -# Construct the stream and file names for the JS D3PD: -streamName = prodFlags.WriteTopBoostJSD3PD.StreamName -fileName = buildFileName( prodFlags.WriteTopBoostJSD3PD ) -TopBoostJSD3PDStream_msg.info( "Configuring TopBoostJSD3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -# Create the D3PD stream itself: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -TopBoostJSD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# Now add all the content to this stream: - -from BoostedTopD3PDMaker.MinimalistD3PD import MinimalistD3PD -MinimalistD3PD( TopBoostJSD3PDStream) - -##overwrite JetEFTrigPattern here -#if not hasattr( D3PDMakerFlags, "JetEFTrigPattern" ): -# _string_prop( "JetEFTrigPattern", "EF_[2-9]?f?j[0-9]*.*" ) - -#new miniiso code which uses standard isolation tools -miniisoinclude = ["miniiso10","miniiso15"] - -from TopInputsD3PDMaker.topInputsD3PD import topInputsD3PD -topInputsD3PD( TopBoostJSD3PDStream ,EFJet_include=[], Muon_include = ["EFCBInfoIndex", "EFMEInfoIndex", "L2CBInfoIndex", "L1InfoIndex"] + miniisoinclude, - Electron_include = miniisoinclude) -### -from BoostedTopD3PDMaker.BoostJSD3PD import JSD3PD - -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, TopBoostJSD3PDStream ) - - -## Silent TrigNavigation Warnings -if D3PDMakerFlags.DoTrigger(): - from AthenaCommon.AppMgr import ToolSvc - if hasattr(ToolSvc, 'TrigDecisionTool'): - ToolSvc.TrigDecisionTool.Navigation.OutputLevel=5 ## ERROR diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/share/TopBoostJSD3PD_topOptions.py b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/share/TopBoostJSD3PD_topOptions.py deleted file mode 100644 index 1d2872e89e717eec254805db7fea6b3a19426d7a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/share/TopBoostJSD3PD_topOptions.py +++ /dev/null @@ -1,36 +0,0 @@ -########################### -# JetSubstructureD3PDMaker topOptions -########################### -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags - -# Input file -athenaCommonFlags.FilesInput = [] - -athenaCommonFlags.FilesInput+= ["mc10_7TeV.105594.Pythia_Zprime_tt1600.merge.AOD.e574_s933_s946_r2302_r2300_tid322318_00/AOD.322318._000006.pool.root.1"] - -from D3PDMakerConfig.D3PDProdFlags import prodFlags -prodFlags.WriteTopBoostJSD3PD.set_Value_and_Lock(True) -prodFlags.WriteTopBoostJSD3PD.FileName="boostedtop.root" - -# Number of events -athenaCommonFlags.EvtMax = 10 - -#OutputLevel=DEBUG - -from RecExConfig.RecFlags import rec - -rec.doDPD.set_Value_and_Lock(True) -rec.DPDMakerScripts.append("BoostedTopD3PDMaker/TopBoostJSD3PD_prodJobOFragment.py") - -rec.doCBNT.set_Value_and_Lock(False) -rec.doWriteESD.set_Value_and_Lock(False) -rec.doWriteAOD.set_Value_and_Lock(False) -rec.doAOD.set_Value_and_Lock(False) -rec.doESD.set_Value_and_Lock(False) -rec.doWriteTAG.set_Value_and_Lock(False) -rec.doHist.set_Value_and_Lock(False) - -# Final JO -include ("RecExCommon/RecExCommon_topOptions.py") - - diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/src/MiniIsolationElectronFillerTool.cxx b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/src/MiniIsolationElectronFillerTool.cxx deleted file mode 100644 index 515ce2280c5d1e3a95485aed07c534c5c077ce7e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/src/MiniIsolationElectronFillerTool.cxx +++ /dev/null @@ -1,183 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#if 0 // underlying tool changed to xAOD -// $Id$ -/** - * @file BoostedTopD3PDMaker/src/MiniIsolationElectronFillerTool.cxx - * @author Lucy Kogan <lucy.anne.kogan@cern.ch> - * @date Jul 2012 - * @brief Fill mini isolation variables for electron. - */ - - -#include "BoostedTopD3PDMaker/MiniIsolationElectronFillerTool.h" - -#include "ITrackToVertex/ITrackToVertex.h" -#include "egammaInterfaces/IEMTrackIsolationTool.h" -#include "Particle/TrackParticleContainer.h" -#include "egammaEvent/egamma.h" -#include "AthenaKernel/errorcheck.h" - -namespace D3PD { - - - /** - * @brief Standard Gaudi tool constructor. - * @param type The name of the tool type. - * @param name The tool name. - * @param parent The tool's Gaudi parent. - */ - MiniIsolationElectronFillerTool::MiniIsolationElectronFillerTool (const std::string& type, - const std::string& name, - const IInterface* parent) - : BlockFillerTool<egamma> (type, name, parent), - m_trackToVertexTool("Reco::TrackToVertex") - { - declareProperty ("KtDist", m_ktdist = 10.); - - declareProperty("EMTrackIsolationTool", m_EMTrackIsolationTool); - - declareProperty("TrackToVertexTool", m_trackToVertexTool); - - declareProperty("TracksContainer", m_TracksContainer = "TrackParticleCandidate"); - declareProperty("VertexContainter",m_VxContainer="VxPrimaryCandidate"); - - declareProperty("minDR", m_mindR=0.01); - - //Two maxDR's ===> so that you can have two variables with different dR max's without re-calculating isolation. - //NB: IT IS IMPORTANT THAT maxDR is GREATER than maxDR_2ndVariable - declareProperty("maxDR", m_maxdR=0.4); - declareProperty("maxDR_2ndVariable", m_maxdR_2=0.3); - - book().ignore(); // Avoid coverity warnings. - } - - - /** - * @brief Standard Gaudi initialize method. - */ - StatusCode MiniIsolationElectronFillerTool::initialize() - { - ATH_MSG_DEBUG("GETTING TOOLS"); - CHECK( m_trackToVertexTool.retrieve() ); - - if(m_EMTrackIsolationTool.retrieve().isFailure()) { - ATH_MSG_ERROR("Unable to retrieve "<<m_EMTrackIsolationTool); - return StatusCode::FAILURE; - } - else ATH_MSG_DEBUG("Retrieved Tool "<<m_EMTrackIsolationTool); - - return StatusCode::SUCCESS; - } - - - /** - * @brief Book variables for this block. - */ - StatusCode MiniIsolationElectronFillerTool::book() - { - ATH_MSG_DEBUG("BOOKING VARIABLES"); - CHECK( addVariable ("max40_ptsum", m_ptsum, "Electron Mini Isolation using standard isolation tools with max dR 0.4") ); - CHECK( addVariable ("max40_nTrks", m_nTracks, "Number of tracks used for electron mini isolation with max dR 0.4") ); - - //Second variable (_2) for an extra value of dR max - CHECK( addVariable ("max30_ptsum", m_ptsum_2, "Electron Mini Isolation using standard isolation tools with max dR 0.3") ); - CHECK( addVariable ("max30_nTrks", m_nTracks_2, "Number of tracks used for electron mini isolation with max dR 0.3") ); - return StatusCode::SUCCESS; - } - - - /** - * @brief Fill one block --- type-safe version. - * @param p The input object. - * - * This is called once per object. The caller - * is responsible for arranging that all the pointers for booked variables - * are set appropriately upon entry. - */ - StatusCode MiniIsolationElectronFillerTool::fill (const egamma& electron) - { - ATH_MSG_DEBUG("IN ELECTRON FILLER"); - *m_ptsum = 999999.; - *m_nTracks = 999999.; - - //Get Vertex container and track container (needed for EMIsolationTool) - const VxContainer* vxContainer = 0; - CHECK(evtStore()->retrieve(vxContainer, m_VxContainer)); - - const Rec::TrackParticleContainer * trackContainer = 0; - CHECK(evtStore()->retrieve( trackContainer, m_TracksContainer)); - - //dR_vector contains 3 cone sizes to be used by isolation tool - //Mini isolation only needs one (kt/lepton_pt) - //But the tool doesn't return a value if you only give it one cone size since it expects 3 - //So... Pass it the miniIso dR as the first element of the vector - //And put 30 and 40 for the second two - //Because of this when retrieving the value of ptSum for miniiso need to call ptcone20 - //as this is where the tool stores the ptsum corresponding to the first cone size - std::vector<double> dR_vector; - - ATH_MSG_DEBUG("Calculate pt etc."); - - const CaloCluster * elec_cluster = electron.cluster(); - float elec_pt = (elec_cluster) ? elec_cluster->p() / std::cosh(electron.eta()) : electron.pt(); - - if(fabs(elec_pt) > 0){ - //Calculate cone size - double dR = m_ktdist*1000 / elec_pt; - if ( dR < m_mindR ) { dR = m_mindR; } - if( dR > m_maxdR ){ dR = m_maxdR; } - - //FOR TESTING ONLY!!!! - //dR = 0.4; - - dR_vector.push_back(dR); - //To make tool happy that there are 3 cone sizes - dR_vector.push_back(0.3); - dR_vector.push_back(0.4); - - ATH_MSG_DEBUG("Calculate isolation"); - - - //Get isolation - StatusCode statusIso; - statusIso = m_EMTrackIsolationTool->calcptcone(&electron, - dR_vector, - trackContainer, - vxContainer); - - if(statusIso.isFailure()){ ATH_MSG_ERROR("Track iso tool pt cone calc failed"); } - else{ - ATH_MSG_DEBUG("ptcone20 " << m_EMTrackIsolationTool->ptcone20()); - //See note above regarding ptcone20----> actually gives you the miniiso isolation - float isolation = m_EMTrackIsolationTool->ptcone20(); - float numberOfTracks = m_EMTrackIsolationTool->nucone20(); - - float isolation_30 = m_EMTrackIsolationTool->ptcone30(); - float numberOfTracks_30 = m_EMTrackIsolationTool->nucone30(); - - float isolation_2 = isolation; - float numberOfTracks_2 = numberOfTracks; - - if( dR > m_maxdR_2 ){ - isolation_2 = isolation_30; - numberOfTracks_2 = numberOfTracks_30; - } - - (*m_ptsum) = isolation; - (*m_nTracks) = numberOfTracks; - - //For adding an extra MI variable with a different dR_max without needing to calculate isolations twice! - (*m_ptsum_2) = isolation_2; - (*m_nTracks_2) = numberOfTracks_2; - } - } - - return StatusCode::SUCCESS; - } - - -} // namespace D3PD -#endif diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/src/MiniIsolationMuonFillerTool.cxx b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/src/MiniIsolationMuonFillerTool.cxx deleted file mode 100644 index 23b62aea577ae7101b252a0049ba534ef70f24d2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/src/MiniIsolationMuonFillerTool.cxx +++ /dev/null @@ -1,146 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#if 0 // underlying tool changed to xAOD -// $Id$ -/** - * @file BoostedTopD3PDMaker/src/MiniIsolationMuonFillerTool.cxx - * @author Lucy Kogan <lucy.anne.kogan@cern.ch> - * @date Jul 2012 - * @brief Fill mini isolation variables for electron. - */ - -#include "BoostedTopD3PDMaker/MiniIsolationMuonFillerTool.h" -#include "IsolationTool/IIsolationTool.h" -#include "muonEvent/Muon.h" -#include "Particle/TrackParticle.h" -#include "AthenaKernel/errorcheck.h" - -namespace D3PD { - - - /** - * @brief Standard Gaudi tool constructor. - * @param type The name of the tool type. - * @param name The tool name. - * @param parent The tool's Gaudi parent. - */ - MiniIsolationMuonFillerTool::MiniIsolationMuonFillerTool (const std::string& type, - const std::string& name, - const IInterface* parent) - : BlockFillerTool<Analysis::Muon> (type, name, parent) - { - declareProperty ("KtDist", m_ktdist = 10.); - - declareProperty("MuIsolationTool", m_muonIsolationTool); - - declareProperty("minDR", m_mindR=0.01); - //NB: MAKE SURE MAXDR > MAXDR_2 - declareProperty("maxDR", m_maxdR=0.4); - declareProperty("maxDR_2", m_maxdR_2=0.3); - - book().ignore(); // Avoid coverity warnings. - } - - - /** - * @brief Standard Gaudi initialize method. - */ - StatusCode MiniIsolationMuonFillerTool::initialize() - { - ATH_MSG_DEBUG("Trying to retrieve muon tool"); - if(m_muonIsolationTool.retrieve().isFailure()){ - ATH_MSG_DEBUG("Unable to retrieve "<< m_muonIsolationTool); - return StatusCode::FAILURE; - } - else ATH_MSG_DEBUG("Retrieved tool " << m_muonIsolationTool); - - return StatusCode::SUCCESS; - } - - - /** - * @brief Book variables for this block. - */ - StatusCode MiniIsolationMuonFillerTool::book() - { - ATH_MSG_DEBUG("book variables"); - CHECK( addVariable ("max40_ptsum", m_ptsum, "Muon Mini Isolation using standard isolation tools with dR max 0.4") ); - CHECK( addVariable ("max40_nTrks", m_nTracks, "Number of tracks used for muon mini isolation with dR max 0.4") ); - CHECK( addVariable ("max30_ptsum", m_ptsum_2, "Muon Mini Isolation using standard isolation tools with dR max 0.3") ); - CHECK( addVariable ("max30_nTrks", m_nTracks_2, "Number of tracks used for muon mini isolation with dR max 0.3") ); - return StatusCode::SUCCESS; - } - - - /** - * @brief Fill one block --- type-safe version. - * @param p The input object. - * - * This is called once per object. The caller - * is responsible for arranging that all the pointers for booked variables - * are set appropriately upon entry. - */ - StatusCode MiniIsolationMuonFillerTool::fill (const Analysis::Muon& muon) - { - ATH_MSG_DEBUG("filling"); - *m_ptsum = -999999.; - *m_nTracks = -999999.; - - ATH_MSG_DEBUG("muon pt " << muon.pt() << " eta " << muon.eta() << " phi " << muon.phi()); - - if(fabs(muon.pt()) > 0){ - //Calculate variable cone size dR - // ATH_MSG_INFO("muon pt " << muon.pt()); - double dR = m_ktdist*1000. / muon.pt(); - if ( dR < m_mindR ) { dR = m_mindR; } - if( dR > m_maxdR ){ dR = m_maxdR; } - - ATH_MSG_DEBUG("dR " << dR); - - //FOR TESTING ONLY - //dR = 0.4; - - const Rec::TrackParticle * trackParticle = 0; - - ATH_MSG_DEBUG("get track particle"); - - //If the muon has an ID track use this in tool, if not use muon track - if ( muon.hasInDetTrackParticle() ) trackParticle = muon.inDetTrackParticle(); - else trackParticle = muon.track(); - - if(!trackParticle){ATH_MSG_DEBUG("Did not get track particle");} - else{ATH_MSG_DEBUG(" track particle pt " << trackParticle->pt());} - - //Mini Isolation - double isolation = m_muonIsolationTool->trackIsolation(trackParticle, dR); - double isolation_30 = muon.parameter(MuonParameters::ptcone30); - double isolation_2 = isolation; - - ATH_MSG_DEBUG("isolation " << isolation); - - ATH_MSG_DEBUG("Get number of tracks"); - //Number of tracks - int numberOfTracks = m_muonIsolationTool->trackIsolationNumberOfTrack(trackParticle, dR); - int numberOfTracks_30 = muon.parameter(MuonParameters::nucone30); - int numberOfTracks_2 = numberOfTracks; - - if(dR > m_maxdR_2){ - isolation_2 = isolation_30; - numberOfTracks_2 = numberOfTracks_30; - } - - (*m_ptsum) = isolation; - (*m_nTracks) = numberOfTracks; - (*m_ptsum_2) = isolation_2; - (*m_nTracks_2) = numberOfTracks_2; - } - else{ATH_MSG_INFO("Muon pt was 0");} - - return StatusCode::SUCCESS; - } - - -} // namespace D3PD -#endif diff --git a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/src/components/BoostedTopD3PDMaker_entries.cxx b/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/src/components/BoostedTopD3PDMaker_entries.cxx deleted file mode 100644 index df33879aab4b3056cbe362e6017ad8e208c3c558..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TopD3PDMaker/BoostedTopD3PDMaker/src/components/BoostedTopD3PDMaker_entries.cxx +++ /dev/null @@ -1,7 +0,0 @@ -//#include "../../BoostedTopD3PDMaker/MiniIsolationElectronFillerTool.h" -//#include "../../BoostedTopD3PDMaker/MiniIsolationMuonFillerTool.h" - - -//DECLARE_COMPONENT( D3PD::MiniIsolationElectronFillerTool ) -//DECLARE_COMPONENT( D3PD::MiniIsolationMuonFillerTool ) - diff --git a/PhysicsAnalysis/D3PDMaker/TruthD3PDMaker/share/TruthSusyD3PDfromEVGEN_preInclude.py b/PhysicsAnalysis/D3PDMaker/TruthD3PDMaker/share/TruthSusyD3PDfromEVGEN_preInclude.py deleted file mode 100644 index 95f9028a0ea749e3b4250385dc33b211595f6b24..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TruthD3PDMaker/share/TruthSusyD3PDfromEVGEN_preInclude.py +++ /dev/null @@ -1,33 +0,0 @@ -# Example of changing D3PD maker flags. -# Redefine SG keys for evgen running -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -D3PDMakerFlags.TruthSGKey = 'GEN_EVENT,GEN_AOD,TruthEvent' -D3PDMakerFlags.DoTrigger = False -D3PDMakerFlags.TruthWriteBHadrons = True -D3PDMakerFlags.TruthWriteEverything = True - -################################################################### -# Configure RecExCommon. -# -# Need to set dummy values for when running on pure EVNT files -# if you are running on normal AODs (full simulation), comment next 4 lines -from AthenaCommon.GlobalFlags import globalflags -globalflags.DetGeo.set_Value_and_Lock('atlas') -globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SDR-BS7T-04-13') -globalflags.DetDescrVersion.set_Value_and_Lock("ATLAS-GEO-16-00-00") - -from RecExConfig.RecFlags import rec -rec.doDPD=True -rec.readAOD.set_Value_and_Lock(True) -rec.AutoConfiguration.set_Value_and_Lock(['ProjectName','BeamType','RealOrSim','DoTruth','InputType']) - -# The following flags are mandatory if you build jets -from JetRec.JetRecFlags import jetFlags -jetFlags.noStandardConfig.set_Value_and_Lock(True) -jetFlags.evgenJets.set_Value_and_Lock(True) - -rec.DPDMakerScripts.append("TruthD3PDMaker/TruthSusyD3PDfromEVGEN_prodOptions.py") - - - - diff --git a/PhysicsAnalysis/D3PDMaker/TruthD3PDMaker/share/TruthSusyD3PDfromEVGEN_prodOptions.py b/PhysicsAnalysis/D3PDMaker/TruthD3PDMaker/share/TruthSusyD3PDfromEVGEN_prodOptions.py deleted file mode 100644 index 05a48ee12148e221766b5c935d53c9b8e1215aad..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TruthD3PDMaker/share/TruthSusyD3PDfromEVGEN_prodOptions.py +++ /dev/null @@ -1,102 +0,0 @@ -# Build truth missing Et -include( "ParticleBuilderOptions/MissingEtTruth_jobOptions.py" ) -METPartTruth.TruthCollectionName="GEN_EVENT" -topSequence.METAlg+=METPartTruth - -################################################################### -# Make the D3PD. -# - -#-------------------------------------------------------------------------- -# Configuration -#-------------------------------------------------------------------------- -from JetRec.JetRecFlags import jobproperties as jobpropjet -jobpropjet.JetRecFlags.inputFileType = "GEN" - -# Build list of particles stored in D3PD -from TruthD3PDAnalysis.truthParticleConfig import truthParticleConfig -truthParticleConfig (topSequence) - -# Build list of particles used to jet building -from TruthD3PDMaker.TruthJetFilterConfig import TruthJetFilterConfig -TruthJetFilterConfig (topSequence, writePartons = False, writeHadrons = True, - excludeWZdecays = True) -# Build list of particles used for WZ jet building -TruthJetFilterConfig (topSequence, sgkey = 'FilteredWZD3PDTruth', writePartons = False, writeHadrons = True, - excludeWZdecays = True, photonCone=0.1) - -# Build truth particle (hadron-level) jets -# flags for AOD -from ParticleBuilderOptions.AODFlags import AODFlags -AODFlags.MissingEtTruth = True -AODFlags.TruthParticleJet = True -AODFlags.McEventKey="GEN_EVENT" - -# Reconstruct standard ATLAS truth jets -from JetRec.JetGetters import * -antikt4truthAlgStd = make_StandardJetGetter('AntiKt',0.4,'Truth',disable=False).jetAlgorithmHandle() - -# Add truth jet collection that includes all final state particles (including muons and neutrinos) -antikt4truthAlgWZ = make_StandardJetGetter('AntiKt',0.4,'Truth',disable=False, - inputCollectionNames=['FilteredWZD3PDTruth'], - outputCollectionName='AntiKt4TruthJets_WZ', - useInteractingOnly=False, - includeMuons=True - ).jetAlgorithmHandle() -antikt6truthAlgWZ = make_StandardJetGetter('AntiKt',0.6,'Truth',disable=False, - inputCollectionNames=['FilteredWZD3PDTruth'], - outputCollectionName='AntiKt6TruthJets_WZ', - useInteractingOnly=False, - includeMuons=True - ).jetAlgorithmHandle() - -#-------------------------------------------------------------------------- -# Make the D3PD -#-------------------------------------------------------------------------- -from TruthD3PDMaker.TruthD3PDMakerFlags import TruthD3PDFlags -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -alg = MSMgr.NewRootStream( "StreamNTUP_SUSYTRUTH", TruthD3PDFlags.TruthD3PDOutputFileName(), "truth" ) - -from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject -alg += EventInfoD3PDObject (10,'EventInfo') - -from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject -alg += GenEventD3PDObject (1, 'GenEvent') - -from InDetD3PDMaker.TruthVertexD3PDObject import TruthVertexD3PDObject -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -alg += TruthVertexD3PDObject(1, 'TruthVertex', sgkey=D3PDMakerFlags.TruthSGKey(),prefix='mcVx',label='mcVx_') -alg += TruthVertexD3PDObject(1, 'TruthVertexFake', sgkey=D3PDMakerFlags.TruthSGKey(),prefix='vx',label='vx_') - -from SUSYD3PDMaker.SUSYD3PDFlags import SUSYD3PDFlags -from JetD3PDMaker.JetD3PDObject import JetD3PDObject -alg += JetD3PDObject (2, 'Jet_Truth', sgkey=SUSYD3PDFlags.AntiKt4TruthJetsSGKey(), prefix='jet_AntiKt4TruthJets_', include=['TrueFlavorComponents'],exclude=['L1Kinematics','L2Kinematics','EFKinematics','El02Match','Mu02Match','L1Info','L2Info','EFInfo']) -alg += JetD3PDObject (2, 'Jet_NotTruth', sgkey=SUSYD3PDFlags.AntiKt4TruthJetsSGKey(), prefix='jet_AntiKt4TopoNewEM_', include=['TrueFlavorComponents'],exclude=['L1Kinematics','L2Kinematics','EFKinematics','El02Match','Mu02Match','L1Info','L2Info','EFInfo']) - -alg += JetD3PDObject (2, 'Jet_Truth_WZ', sgkey='AntiKt4TruthJets_WZ', prefix='jet_AntiKt4TruthJets_WZ_', include=['TrueFlavorComponents'],exclude=['L1Kinematics','L2Kinematics','EFKinematics','El02Match','Mu02Match','L1Info','L2Info','EFInfo']) -alg += JetD3PDObject (2, 'Jet_Truth6_WZ', sgkey='AntiKt6TruthJets_WZ', prefix='jet_AntiKt6TruthJets_WZ_', include=['TrueFlavorComponents'],exclude=['L1Kinematics','L2Kinematics','EFKinematics','El02Match','Mu02Match','L1Info','L2Info','EFInfo']) - - -from SUSYD3PDMaker.SUSYTruthParticleD3PDObject import SUSYTruthParticleD3PDObject -alg += SUSYTruthParticleD3PDObject (1, 'SUSYTruthParticle') - -from TruthD3PDMaker.Atlfast1MissingETD3PDObject import TruthMETD3PDObject -alg += TruthMETD3PDObject (level=10) - -#from MissingETD3PDMaker.MissingETD3PDMakerFlags import MissingETD3PDMakerFlags -#MissingETD3PDMakerFlags.doMissingETRegions=False -#from MissingETD3PDMaker.MissingETD3PDObject import RefFinalMETD3PDObject -#alg += RefFinalMETD3PDObject( 10 , name='MET_Simplified20' , lebel=1, sgkey='MET_Truth_NonInt' , prefix='MET_Simplified20_' , label='MET_Simplified20_' , exclude=['MET_Regions'] , include = ['MET','MET_Phi','MET_Et','MET_SumEt'] ) - -from TruthD3PDMaker.TruthParticleFakerObject import * -alg += TruthParticleFakerElD3PDObject (level=10, sgkey='GEN_EVENT', prefix="el_", label='GrumpyEl_') -alg += TruthParticleFakerMuD3PDObject (level=10, sgkey='GEN_EVENT', prefix="mu_muid_", label='mu_m_') -alg += TruthParticleFakerMuD3PDObject (level=10, sgkey='GEN_EVENT', prefix="mu_staco_", label='mu_s_') -alg += TruthParticleFakerTauD3PDObject (level=10, sgkey='GEN_EVENT', prefix="tau_", label='tau_') -alg += TruthParticleFakerPhD3PDObject (level=10, sgkey='GEN_EVENT', prefix="ph_", label='ph_') -alg += TruthParticleFakerElD3PDObject (level=10, sgkey='GEN_EVENT', prefix="el_truth_", label='el_t_') -alg += TruthParticleFakerMuD3PDObject (level=10, sgkey='GEN_EVENT', prefix="mu_muid_truth_", label='mu_m_t_') -alg += TruthParticleFakerMuD3PDObject (level=10, sgkey='GEN_EVENT', prefix="mu_staco_truth_", label='mu_s_t_') -alg += TruthParticleFakerTauD3PDObject (level=10, sgkey='GEN_EVENT', prefix="trueTau_", label='tau_t_') -alg += TruthParticleFakerPhD3PDObject (level=10, sgkey='GEN_EVENT', prefix="ph_truth_", label='ph_t_') - diff --git a/PhysicsAnalysis/D3PDMaker/TruthD3PDMaker/share/TruthSusyD3PDfromEVGEN_topOptions.py b/PhysicsAnalysis/D3PDMaker/TruthD3PDMaker/share/TruthSusyD3PDfromEVGEN_topOptions.py deleted file mode 100644 index 2bb73e8f05159cd2bc0b36ccafdc1888d808c3e2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D3PDMaker/TruthD3PDMaker/share/TruthSusyD3PDfromEVGEN_topOptions.py +++ /dev/null @@ -1,56 +0,0 @@ -# @file TruthD3PDMaker/share/evgenD3PD_topOptions.py -# @author Renaud Bruneliere <Renaud.Bruneliere@cern.ch> -# @date Apr, 2010 -# @brief Example for building a D3PD from event generation file. - -################################################################### -# Define the input file here. -# - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -#athenaCommonFlags.FilesInput= ["EVNT.pool.root"] -#athenaCommonFlags.FilesInput= ["EVNT.289844._000396.pool.root.1"] -athenaCommonFlags.FilesInput= ["/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._000002.pool.root.1", -"/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._000001.pool.root.1", -"/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._000003.pool.root.1", -"/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._000004.pool.root.1", -"/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._000005.pool.root.1", -"/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._000006.pool.root.1", -"/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._000007.pool.root.1", -"/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._000008.pool.root.1", -"/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._000009.pool.root.1", -"/afs/phas.gla.ac.uk/user/p/pmullen/sw-test/EVNTFiles/mc12_8TeV.107283.AlpgenJimmy_AUET2CTEQ6L1_WbbNp3.evgen.EVNT.e1601_tid01025138_00/EVNT.01025138._0000010.pool.root.1"] - -################################################################### -# Define the output file here. -# -from TruthD3PDMaker.TruthD3PDMakerFlags import TruthD3PDFlags -if not globals().get('tupleFileOutput'): - tupleFileOutput = 'susy.root' -TruthD3PDFlags.TruthD3PDOutputFileName = tupleFileOutput - - -################################################################### -# Define other job options here. -# - -#athenaCommonFlags.EvtMax = 1000 -athenaCommonFlags.EvtMax = -1 - - -from RecExConfig.RecFlags import rec -rec.doHist=False -rec.doMonitoring=False -rec.doCBNT=False -rec.doWriteESD=False -rec.doWriteAOD=False -rec.doWriteTAG=False - -include("TruthD3PDMaker/TruthD3PDfromEVGEN_preInclude.py") - -include("RecExCommon/RecExCommon_topOptions.py") -#from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -#D3PDMakerFlags.TruthSGKey = 'GEN_EVENT,GEN_AOD,TruthEvent' -#D3PDMakerFlags.DoTrigger = False -#D3PDMakerFlags.TruthWriteBHadrons=True -#D3PDMakerFlags.TruthWriteEverything=True diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/python/MCTruthCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/python/MCTruthCommon.py index fadf6b8fa7c2bd79397cf80d364e7bbdc8bf3d2a..767aecbce65e742f0795b25cf17813b3aedd4bae 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/python/MCTruthCommon.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/python/MCTruthCommon.py @@ -26,15 +26,14 @@ if DerivationFrameworkIsMonteCarlo: DerivationFrameworkJob.insert(0,xAODMaker__xAODTruthCnvAlg("GEN_EVNT2xAOD",AODContainerName="TruthEvent")) dfInputIsEVNT = True # If it isn't available, make a truth meta data object (will hold MC Event Weights) - #if not objKeyStore.isInInput( "xAOD::TruthMetaDataContainer", "TruthMetaData" ) and not dfInputIsEVNT: - # # If we are going to be making the truth collection (dfInputIsEVNT) then this will be made elsewhere - # from AthenaCommon.AppMgr import ToolSvc - # ToolSvc += CfgMgr.DerivationFramework__TruthMetaDataWriter(name='DFCommonTruthMetaDataWriter') - # from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__CommonAugmentation - # from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkJob - # DerivationFrameworkJob += CfgMgr.DerivationFramework__CommonAugmentation("MCTruthCommonMetaDataWriterKernel", - # AugmentationTools = [ToolSvc.DFCommonTruthMetaDataWriter] - # ) + if not objKeyStore.isInInput( "xAOD::TruthMetaDataContainer", "TruthMetaData" ) and not dfInputIsEVNT: + # If we are going to be making the truth collection (dfInputIsEVNT) then this will be made elsewhere + from AthenaCommon.AppMgr import ToolSvc + ToolSvc += CfgMgr.DerivationFramework__TruthMetaDataWriter(name='DFCommonTruthMetaDataWriter') + from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkJob + DerivationFrameworkJob += CfgMgr.DerivationFramework__CommonAugmentation("MCTruthCommonMetaDataWriterKernel", + AugmentationTools = [ToolSvc.DFCommonTruthMetaDataWriter] + ) # Add in some jets - global config if we are running on EVNT if dfInputIsEVNT: @@ -47,166 +46,172 @@ if DerivationFrameworkIsMonteCarlo: "Partons", ] -def addTruthJetsEVNT(kernel=None, decorationDressing=None): - # Ensure that we are running on something - if kernel is None: - from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkJob - kernel = DerivationFrameworkJob - # Add jet algorithms if they aren't there - from JetRec.JetRecStandard import jtm - truth_modifiers = [jtm.truthpartondr, jtm.partontruthlabel, jtm.jetdrlabeler, jtm.trackjetdrlabeler] - if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt4TruthJets") and not hasattr(kernel,'jetalgAntiKt4Truth'): - # Standard truth jets - # To remove jet constituents add the modifier jtm.removeconstit - from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets - addStandardJets("AntiKt", 0.4, "Truth", 15000, mods=truth_modifiers, algseq=kernel, outputGroup="DFCommonMCTruthJets") - if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt4TruthWZJets") and not hasattr(kernel,'jetalgAntiKt4TruthWZ'): - # WZ Truth Jets - handle non-dressed case - from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets - addStandardJets("AntiKt", 0.4, "TruthWZ", 15000, mods=truth_modifiers, algseq=kernel, outputGroup="DFCommonMCTruthJets") - if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt4TruthDressedWZJets") and decorationDressing is not None: - # WZ Dressed Truth Jets - handle dressed case - from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets - addStandardJets("AntiKt", 0.4, "TruthDressedWZ", ptmin=15000, mods="truth_ungroomed", algseq=kernel, outputGroup="DFCommonMCTruthJets") - - if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt2TruthChargedJets"): - # R=0.2 truth charged jets - from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets - addStandardJets("AntiKt", 0.2, "TruthCharged", 5000, mods=truth_modifiers, algseq=kernel, outputGroup="DFCommonMCTruthJets") - - if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt10TruthJets") and not hasattr(kernel,'jetalgAntiKt10Truth'): - # AntiKt2 truth charged jets ghost association - from JetRec.JetRecConf import PseudoJetGetter - if 'gakt2truthchargedget' not in jtm.tools: - jtm += PseudoJetGetter("gakt2truthchargedget", # give a unique name - InputContainer = "AntiKt2TruthChargedJets", # SG key - Label = "GhostAntiKt2TruthChargedJets", # this is the name you'll use to retrieve associated ghosts - OutputContainer = "PseudoJetGhostAntiKt2TruthChargedJet", - SkipNegativeEnergy = True, - GhostScale = 1.e-20, # This makes the PseudoJet Ghosts, and thus the reco flow will treat them as so. - ) - trackjetgetters = [] - trackjetgetters += [jtm.gakt2truthchargedget] - truthgetters = [jtm.truthget] - truthgetters += trackjetgetters - flavorgetters = [] - for ptype in jetFlags.truthFlavorTags(): - flavorgetters += [getattr(jtm, "gtruthget_" + ptype)] - truthgetters += flavorgetters - jtm.gettersMap["truth"] = list(truthgetters) - - # NB! This line works together with the next block. Some care is required here! - # If we build groomed jets, the jet code will automatically build ungroomed jets, so no need to add them separately - #Large R ungroomed jets - if objKeyStore.isInInput( "xAOD::JetContainer","AntiKt10TruthTrimmedPtFrac5SmallR20Jets"): - from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets - addStandardJets('AntiKt', 1.0, 'Truth', ptmin=50000, mods=truth_modifiers, algseq=kernel, outputGroup="DFCommonMCTruthJets") - - if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt10TruthTrimmedPtFrac5SmallR20Jets") and not hasattr(kernel,'jetalgAntiKt10TruthTrimmedPtFrac5SmallR20'): - #Large R jets - #from DerivationFrameworkJetEtMiss.JetCommon import addTrimmedJets - #addTrimmedJets('AntiKt', 1.0, 'Truth', rclus=0.2, ptfrac=0.05, mods="truth_groomed", - # algseq=kernel, outputGroup="Trimmed", writeUngroomed=False) - pass - -def addTruthJetsAOD(kernel=None, decorationDressing=None): - # Ensure that we are adding it to something + +def simplePJGetter(Label, InputContainer): + # Set up a pseudo-jet algorithm + from AthenaCommon import CfgMgr + return CfgMgr.PseudoJetAlgorithm(Label+"Get", + InputContainer = InputContainer, + Label = Label, + OutputContainer = "PseudoJet"+Label, + SkipNegativeEnergy = True + ) + +# Helper for adding truth jet collections +def addTruthJets(kernel=None, decorationDressing=None): + # Ensure that we are adding it to something, and that we haven't run it already if kernel is None: from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkJob kernel = DerivationFrameworkJob - # In this case, we simply use the helpers from ExtendedJetCommon - from DerivationFrameworkJetEtMiss.ExtendedJetCommon import addAntiKt4TruthJets,addAntiKt4TruthWZJets,addAntiKt10TruthJets - addAntiKt4TruthJets(kernel,"TRUTH") # Ignore the output list - addAntiKt4TruthWZJets(kernel,"TRUTH") - #if decorationDressing is not None: - # from DerivationFrameworkJetEtMiss.ExtendedJetCommon import addAntiKt4TruthDressedWZJets - # addAntiKt4TruthDressedWZJets(kernel,'TRUTH') - if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt10TruthTrimmedPtFrac5SmallR20Jets"): - #Large R jets - #from DerivationFrameworkJetEtMiss.JetCommon import addTrimmedJets - #addTrimmedJets('AntiKt', 1.0, 'Truth', rclus=0.2, ptfrac=0.05, mods="truth_groomed", - # algseq=kernel, outputGroup="Trimmed", writeUngroomed=False) - pass - elif not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt10TruthJets"): - addAntiKt10TruthJets(kernel,"TRUTH") -# Helper for adding truth jet collections -def addTruthJets(kernel=None, decorationDressing=None): - # In case it's requested, set up the use of photon decorations from dressing code - from JetRec.JetRecStandardToolManager import jtm - if decorationDressing is not None and not hasattr(jtm,'truthpartdressedwz'): - # Ensure that we are adding it to something, and that we haven't run it already - if kernel is None: - from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkJob - kernel = DerivationFrameworkJob - # make sure if we are using EVNT that we don't try to check sim metadata - barCodeFromMetadata=2 - if objKeyStore.isInInput( "McEventCollection", "GEN_EVENT" ): - barCodeFromMetadata=0 - from JetRec.JetRecStandardToolManager import jtm - from ParticleJetTools.ParticleJetToolsConf import CopyTruthJetParticles - if 'truthpartdressedwz' not in jtm.tools: - jtm += CopyTruthJetParticles("truthpartdressedwz", OutputName="JetInputTruthParticlesDressedWZ", - MCTruthClassifier=jtm.JetMCTruthClassifier, - #IncludePromptLeptons=False,#IncludePromptPhotons=False, - #IncludeMuons=True,IncludeNeutrinos=True,BarCodeFromMetadata=barCodeFromMetadata, - #FSRPhotonCone=-1. #, DressingDecorationName=decorationDressing - ) - # Add a jet tool runner for this thing - from JetRec.JetRecConf import JetToolRunner,JetAlgorithm,PseudoJetGetter - jtm += JetToolRunner("jetdressedwzrun", EventShapeTools=[], Tools=[jtm.truthpartdressedwz], Timer=jetFlags.timeJetToolRunner() ) - # And an algorithm to run in - kernel += JetAlgorithm("jetdressedwzalg") - jetdressedwzalg = kernel.jetdressedwzalg - jetdressedwzalg.Tools = [ jtm.jetdressedwzrun ] - if 'truthdressedwzget' not in jtm.tools: - jtm += PseudoJetGetter("truthdressedwzget", - Label = "TruthDressedWZ", - InputContainer = jtm.truthpartdressedwz.OutputName, - OutputContainer = "PseudoJetTruthDressedWZ", - GhostScale = 0.0, - SkipNegativeEnergy = True - ) - jtm.gettersMap['truthdressedwz'] = list(jtm.gettersMap['truth']) - jtm.gettersMap['truthdressedwz'][0] = jtm.truthdressedwzget - if not hasattr(jtm,'truthpartcharged'): - # Ensure that we are adding it to something, and that we haven't run it already - if kernel is None: - from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkJob - kernel = DerivationFrameworkJob - # make sure if we are using EVNT that we don't try to check sim metadata + if not hasattr(kernel,'MCTruthCommonJetTruthCopyAlg'): + from AthenaCommon.AppMgr import ToolSvc + + # Check where we get the barcode offset from barCodeFromMetadata=2 if objKeyStore.isInInput( "McEventCollection", "GEN_EVENT" ): - barCodeFromMetadata=0 # noqa: F841 (kept for documentation purposes) - from JetRec.JetRecStandardToolManager import jtm + barCodeFromMetadata=0 + + # Set up the copy truth jet particle algorithms from ParticleJetTools.ParticleJetToolsConf import CopyTruthJetParticles - if 'truthpartcharged' not in jtm.tools: - jtm += CopyTruthJetParticles("truthpartcharged", OutputName="JetInputTruthParticlesCharged", - MCTruthClassifier=jtm.JetMCTruthClassifier, - #ChargedParticlesOnly=True, - #BarCodeFromMetadata=barCodeFromMetadata - ) - # Add a jet tool runner for this thing - from JetRec.JetRecConf import JetToolRunner,JetAlgorithm,PseudoJetGetter - jtm += JetToolRunner("jetchargedrun", EventShapeTools=[], Tools=[jtm.truthpartcharged], Timer=jetFlags.timeJetToolRunner() ) - # And an algorithm to run in - kernel += JetAlgorithm("jetchargedalg") - jetchargedalg = kernel.jetchargedalg - jetchargedalg.Tools = [ jtm.jetchargedrun ] - if 'truthchargedget' not in jtm.tools: - jtm += PseudoJetGetter("truthchargedget", - Label = "TruthCharged", - InputContainer = jtm.truthpartcharged.OutputName, - OutputContainer = "PseudoJetTruthCharged", - GhostScale = 0.0, - SkipNegativeEnergy = True - ) - jtm.gettersMap['truthcharged'] = [jtm.truthchargedget] - # Propagate that downward - if dfInputIsEVNT: - addTruthJetsEVNT(kernel,decorationDressing) - else: - addTruthJetsAOD(kernel,decorationDressing) + ToolSvc += CopyTruthJetParticles("truthpartcopy", + OutputName="JetInputTruthParticles", + MCTruthClassifier=ToolSvc.DFCommonTruthClassifier,BarCodeFromMetadata=barCodeFromMetadata) + ToolSvc += CopyTruthJetParticles("truthpartcopywz", + OutputName="JetInputTruthParticlesNoWZ", + MCTruthClassifier=ToolSvc.DFCommonTruthClassifier,BarCodeFromMetadata=barCodeFromMetadata, + IncludePromptLeptons=False) + ToolSvc += CopyTruthJetParticles("truthpartcopydressedwz", + OutputName="JetInputTruthParticlesDressedWZ", + MCTruthClassifier=ToolSvc.DFCommonTruthClassifier, + IncludePromptLeptons=False,IncludePromptPhotons=False, + IncludeMuons=True,IncludeNeutrinos=True,BarCodeFromMetadata=barCodeFromMetadata, + FSRPhotonCone=-1., DressingDecorationName=decorationDressing) + ToolSvc += CopyTruthJetParticles("truthpartcopycharged", OutputName="JetInputTruthParticlesCharged", + MCTruthClassifier=ToolSvc.DFCommonTruthClassifier, + ChargedParticlesOnly=True, + BarCodeFromMetadata=barCodeFromMetadata) + from JetRec import JetRecConf + kernel += JetRecConf.JetAlgorithm("MCTruthCommonJetTruthCopyAlg", + Tools=[ToolSvc.truthpartcopy,ToolSvc.truthpartcopywz,ToolSvc.truthpartcopydressedwz,ToolSvc.truthpartcopycharged]) + + # Set up pseudo-jet getters + from JetRec import JetRecConf + kernel += simplePJGetter( Label = "Truth", InputContainer = ToolSvc.truthpartcopy.OutputName ) + kernel += simplePJGetter( Label = "TruthWZ", InputContainer = ToolSvc.truthpartcopywz.OutputName ) + kernel += simplePJGetter( Label = "TruthDressedWZ", InputContainer = ToolSvc.truthpartcopydressedwz.OutputName ) + kernel += simplePJGetter( Label = "TruthCharged", InputContainer = ToolSvc.truthpartcopycharged.OutputName ) + + # Set up the jet builder (no area moments) + from AthenaCommon import CfgMgr + DFCommon_jbld = CfgMgr.JetFromPseudojet("DFCommon_jbld") + + # Tool for parton labeling + from ParticleJetTools import ParticleJetToolsConf + ToolSvc += ParticleJetToolsConf.Analysis__JetPartonTruthLabel("partontruthlabel") + + # Set up the jet finder, tool using the finder, and algorithm using the tool + threshold = 15000. if dfInputIsEVNT else 5000. + if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt4TruthJets") and not hasattr(kernel,'AntiKt4TruthJetsAlg'): + AntiKt4TruthJetsFinder = CfgMgr.JetFinder("AntiKt4TruthJetsFinder", + JetAlgorithm = "AntiKt", + JetRadius = 0.4, + JetBuilder = DFCommon_jbld, + GhostArea = 0.01, + PtMin = threshold + ) + #Now we setup a JetRecTool which will use the above JetFinder + AntiKt4TruthJetsRec = CfgMgr.JetRecTool("AntiKt4TruthJetsRec", + JetFinder = AntiKt4TruthJetsFinder, + InputPseudoJets = [kernel.TruthGet.OutputContainer], + OutputContainer = "AntiKt4TruthJets", + JetModifiers = [ToolSvc.partontruthlabel] + ) + kernel += CfgMgr.JetAlgorithm("AntiKt4TruthJetsAlg", Tools=[AntiKt4TruthJetsRec]) + if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt4TruthWZJets") and not hasattr(kernel,'jetalgAntiKt4TruthWZ'): + AntiKt4TruthWZJetsFinder = CfgMgr.JetFinder("AntiKt4TruthWZJetsFinder", + JetAlgorithm = "AntiKt", + JetRadius = 0.4, + JetBuilder = DFCommon_jbld, + GhostArea = 0.01, + PtMin = threshold + ) + AntiKt4TruthWZJetsRec = CfgMgr.JetRecTool("AntiKt4TruthWZJetsRec", + JetFinder = AntiKt4TruthWZJetsFinder, + InputPseudoJets = [kernel.TruthWZGet.OutputContainer], + OutputContainer = "AntiKt4TruthWZJets", + JetModifiers = [ToolSvc.partontruthlabel] + ) + kernel += CfgMgr.JetAlgorithm("AntiKt4TruthWZJetsAlg", Tools=[AntiKt4TruthWZJetsRec]) + if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt4TruthDressedWZJets") and decorationDressing is not None: + AntiKt4TruthDressedWZJetsFinder = CfgMgr.JetFinder("AntiKt4TruthDressedWZJetsFinder", + JetAlgorithm = "AntiKt", + JetRadius = 0.4, + JetBuilder = DFCommon_jbld, + GhostArea = 0.01, + PtMin = threshold + ) + AntiKt4TruthDressedWZJetsRec = CfgMgr.JetRecTool("AntiKt4TruthDressedWZJetsRec", + JetFinder = AntiKt4TruthDressedWZJetsFinder, + InputPseudoJets = [kernel.TruthDressedWZGet.OutputContainer], + OutputContainer = "AntiKt4TruthDressedWZJets", + JetModifiers = [ToolSvc.partontruthlabel] + ) + kernel += CfgMgr.JetAlgorithm("AntiKt4TruthDressedWZJetsAlg", Tools=[AntiKt4TruthDressedWZJetsRec]) + if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt2TruthChargedJets"): + AntiKt2TruthChargedJetsFinder = CfgMgr.JetFinder("AntiKt2TruthChargedJetsFinder", + JetAlgorithm = "AntiKt", + JetRadius = 0.2, + JetBuilder = DFCommon_jbld, + GhostArea = 0.01, + PtMin = 5000. + ) + AntiKt2TruthChargedJetsRec = CfgMgr.JetRecTool("AntiKt2TruthChargedJetsRec", + JetFinder = AntiKt2TruthChargedJetsFinder, + InputPseudoJets = [kernel.TruthChargedGet.OutputContainer], + OutputContainer = "AntiKt2TruthChargedJets", + JetModifiers = [ToolSvc.partontruthlabel] + ) + kernel += CfgMgr.JetAlgorithm("AntiKt2TruthChargedJetsAlg", Tools=[AntiKt2TruthChargedJetsRec]) + if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt10TruthJets") and not hasattr(kernel,'AntiKt10TruthJetsAlg'): + AntiKt10TruthJetsFinder = CfgMgr.JetFinder("AntiKt10TruthJetsFinder", + JetAlgorithm = "AntiKt", + JetRadius = 1.0, + JetBuilder = DFCommon_jbld, + GhostArea = 0.01, + PtMin = threshold + ) + #Now we setup a JetRecTool which will use the above JetFinder + AntiKt10TruthJetsRec = CfgMgr.JetRecTool("AntiKt10TruthJetsRec", + JetFinder = AntiKt10TruthJetsFinder, + InputPseudoJets = [kernel.TruthGet.OutputContainer], + OutputContainer = "AntiKt10TruthJets", + JetModifiers = [ToolSvc.partontruthlabel] + ) + kernel += CfgMgr.JetAlgorithm("AntiKt10TruthJetsAlg", Tools=[AntiKt10TruthJetsRec]) + if not objKeyStore.isInInput( "xAOD::JetContainer","AntiKt10TruthSoftDropBeta100Zcut10Jets") and not hasattr(kernel,'AntiKt10TruthSoftDropBeta100Zcut10JetsAlg'): + from JetRec.JetRecConf import JetSoftDrop + groomer = JetSoftDrop("AntiKt10TruthSoftDropBeta100Zcut10JetsGroomer", + ZCut = 0.1, + Beta = 1.0, + R0 = 1.0, + JetBuilder = DFCommon_jbld) + + AntiKt10TruthSoftDropBeta100Zcut10JetsFinder = CfgMgr.JetFinder("AntiKt10TruthJetsFinder", + JetAlgorithm = "AntiKt", + JetRadius = 1.0, + JetBuilder = DFCommon_jbld, + GhostArea = 0.01, + PtMin = threshold + ) + AntiKt10TruthSoftDropBeta100Zcut10JetsRec = CfgMgr.JetRecTool("AntiKt10TruthSoftDropBeta100Zcut10JetsRec", + JetGroomer = groomer, + InputPseudoJets = [kernel.TruthGet.OutputContainer], + OutputContainer = "AntiKt10TruthSoftDropBeta100Zcut10Jets", + JetModifiers = [ToolSvc.partontruthlabel], + JetFinder = AntiKt10TruthSoftDropBeta100Zcut10JetsFinder) + kernel += CfgMgr.JetAlgorithm("AntiKt10TruthSoftDropBeta100Zcut10JetsAlg",Tools=[AntiKt10TruthSoftDropBeta100Zcut10JetsRec]) + # Helper for scheduling the truth MET collection def addTruthMET(kernel=None): @@ -280,6 +285,7 @@ def schedulePostJetMCTruthAugmentations(kernel=None, decorationDressing=None): #from DerivationFrameworkMCTruth.GenFilterToolSetup import DFCommonTruthGenFilter # schedule the special truth building tools and add them to a common augmentation; note taus are handled separately below + #from DerivationFrameworkMCTruth.TruthDerivationTools import DFCommonTruthQGLabelTool #augmentationToolsList += [ DFCommonTruthGenFilter, # DFCommonTruthQGLabelTool] augmentationToolsList = [] @@ -566,10 +572,10 @@ def addTruthEnergyDensity(kernel=None): # Truth energy density tools from EventShapeTools.EventDensityConfig import configEventDensityTool,EventDensityAthAlg from AthenaCommon.AppMgr import ToolSvc - from JetRec.JetRecStandard import jtm # Algorithms for the energy density - needed only if e/gamma hasn't set things up already if not hasattr(ToolSvc,'EDTruthCentralTool'): - DFCommonTruthCentralEDTool = configEventDensityTool("DFCommonTruthCentralEDTool", jtm.truthget, + DFCommonTruthCentralEDTool = configEventDensityTool("DFCommonTruthCentralEDTool", + kernel.TruthGet.OutputContainer.replace('PseudoJet',''), 0.5, AbsRapidityMax = 1.5, OutputContainer = "TruthIsoCentralEventShape", @@ -577,7 +583,8 @@ def addTruthEnergyDensity(kernel=None): ToolSvc += DFCommonTruthCentralEDTool kernel += EventDensityAthAlg("DFCommonTruthCentralEDAlg", EventDensityTool = DFCommonTruthCentralEDTool ) if not hasattr(ToolSvc,'EDTruthForwardTool'): - DFCommonTruthForwardEDTool = configEventDensityTool("DFCommonTruthForwardEDTool", jtm.truthget, + DFCommonTruthForwardEDTool = configEventDensityTool("DFCommonTruthForwardEDTool", + kernel.TruthGet.OutputContainer.replace('PseudoJet',''), 0.5, AbsRapidityMin = 1.5, AbsRapidityMax = 3.0, diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH0.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH0.py index 018a22cbe2e1859b4e148074f28eecda4d9a215a..10f6d13296e867439944c8acff7d6e23afa7c80f 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH0.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH0.py @@ -55,5 +55,4 @@ TRUTH0Stream.AddMetaDataItem( [ "xAOD::TruthMetaDataContainer#TruthMetaData", "x # If we don't have a conditions tag set by now, then assume this job isn't going to have one and kill the conditions service if len(globalflags.ConditionsTag())==0: - for a in svcMgr.PoolSvc.ReadCatalog: - svcMgr.PoolSvc.ReadCatalog.remove(a) + svcMgr.PoolSvc.ReadCatalog = [] diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH1.py index 49bce2ec6522673bb790d94e0d8ac848e8826195..f50030f25b36a78432e3a9dff20a23fbf90d4c0a 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH1.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH1.py @@ -90,5 +90,4 @@ TRUTH1Stream.AddMetaDataItem( [ "xAOD::TruthMetaDataContainer#TruthMetaData", "x # If we don't have a conditions tag set by now, then assume this job isn't going to have one and kill the conditions service if len(globalflags.ConditionsTag())==0: - for a in svcMgr.PoolSvc.ReadCatalog: - svcMgr.PoolSvc.ReadCatalog.remove(a) + svcMgr.PoolSvc.ReadCatalog = [] diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH2.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH2.py index d4ac40bb1c0bfe8aa2a24f5ee02bd6aa971083b0..98bcb682429271c52911895114a6f3b0c94ea5be 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH2.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH2.py @@ -135,5 +135,4 @@ TRUTH2Stream.AddMetaDataItem( [ "xAOD::TruthMetaDataContainer#TruthMetaData", "x # If we don't have a conditions tag set by now, then assume this job isn't going to have one and kill the conditions service if len(globalflags.ConditionsTag())==0: - for a in svcMgr.PoolSvc.ReadCatalog: - svcMgr.PoolSvc.ReadCatalog.remove(a) + svcMgr.PoolSvc.ReadCatalog = [] diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH3.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH3.py index 5f44e324e5d3e23dc402ce2fab6399014d52e454..c318987149028da7ab235bd1521810065a653045 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH3.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/share/TRUTH3.py @@ -59,5 +59,4 @@ TRUTH3Stream.RemoveItem('EventInfo#*') # If we don't have a conditions tag set by now, then assume this job isn't going to have one and kill the conditions service if len(globalflags.ConditionsTag())==0: - for a in svcMgr.PoolSvc.ReadCatalog: - svcMgr.PoolSvc.ReadCatalog.remove(a) + svcMgr.PoolSvc.ReadCatalog = [] diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkTau/python/TauJetsCPContent.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkTau/python/TauJetsCPContent.py index 4892bc607d8b4762c234748a6fec0c1773edfb35..eb34c2ed59bf7bedc07e7ebe80daa1065db00833 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkTau/python/TauJetsCPContent.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkTau/python/TauJetsCPContent.py @@ -5,9 +5,11 @@ TauJetsCPContent = [ "InDetTrackParticles", "InDetTrackParticlesAux.phi.vertexLink.theta.qOverP.truthParticleLink.truthMatchProbability", "TauJets", -"TauJetsAux.pt.eta.phi.m.tauTrackLinks.jetLink.vertexLink.charge.isTauFlags.BDTJetScore.BDTEleScore.ptFinalCalib.etaFinalCalib.phiFinalCalib.mFinalCalib.electronLink.EleMatchLikelihoodScore.pt_combined.eta_combined.phi_combined.m_combined.BDTJetScoreSigTrans.BDTEleScoreSigTrans.PanTau_DecayMode.RNNJetScore.RNNJetScoreSigTrans.seedJetWidth.seedJetJvt.seedTrackWidthPt1000.seedTrackWidthPt500.truthParticleLink.truthJetLink", +"TauJetsAux.pt.eta.phi.m.tauTrackLinks.jetLink.vertexLink.secondaryVertexLink.charge.isTauFlags.BDTJetScore.BDTEleScore.ptFinalCalib.etaFinalCalib.phiFinalCalib.mFinalCalib.electronLink.EleMatchLikelihoodScore.pt_combined.eta_combined.phi_combined.m_combined.BDTJetScoreSigTrans.BDTEleScoreSigTrans.PanTau_DecayMode.RNNJetScore.RNNJetScoreSigTrans.seedJetWidth.seedJetJvt.seedTrackWidthPt1000.seedTrackWidthPt500.truthParticleLink.truthJetLink", "TauTracks", "TauTracksAux.pt.eta.phi.flagSet.trackLinks", "TruthTaus", -"TruthTausAux.pt_vis_neutral_pions.pt_vis_neutral_others.numCharged.classifierParticleType.classifierParticleOrigin.IsHadronicTau.numNeutralPion.numNeutral.numChargedPion.pt_vis.eta_vis.phi_vis.m_vis" +"TruthTausAux.pt_vis_neutral_pions.pt_vis_neutral_others.numCharged.classifierParticleType.classifierParticleOrigin.IsHadronicTau.numNeutralPion.numNeutral.numChargedPion.pt_vis.eta_vis.phi_vis.m_vis", +"TauSecondaryVertices", +"TauSecondaryVerticesAux.x.y.z.covariance.trackParticleLinks" ] diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/EGammaAmbiguityTool.h b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/EGammaAmbiguityTool.h index b0a4850a8185e69e9a9f06b993c629f3b230a4f7..124c8efa3f678e45b10513f82b02faf921256ca1 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/EGammaAmbiguityTool.h +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/EGammaAmbiguityTool.h @@ -29,45 +29,39 @@ public: /** Standard destructor */ - virtual ~EGammaAmbiguityTool(); + virtual ~EGammaAmbiguityTool() = default; public: /** Gaudi Service Interface method implementations */ - virtual StatusCode initialize(); + virtual StatusCode initialize() override final; - /** Gaudi Service Interface method implementations */ - virtual StatusCode finalize(); - - /** Return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown */ + /** Return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown */ - virtual unsigned int ambiguityResolve(const xAOD::CaloCluster* cluster, - const xAOD::Vertex* vx, - const xAOD::TrackParticle* tp, xAOD::AmbiguityTool::AmbiguityType& type) const; + virtual unsigned int ambiguityResolve( + const xAOD::CaloCluster* cluster, + const xAOD::Vertex* vx, + const xAOD::TrackParticle* tp, + xAOD::AmbiguityTool::AmbiguityType& type) const override final; - /** Return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown - Needed because of existing client usage (i.e Trigger). Implementation calls method above + /** Return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown + Needed because of existing client usage (i.e Trigger). Implementation + calls method above */ - virtual unsigned int ambiguityResolve(const xAOD::CaloCluster* cluster, - const xAOD::Vertex* vx, - const xAOD::TrackParticle* tp) const; + virtual unsigned int ambiguityResolve( + const xAOD::CaloCluster* cluster, + const xAOD::Vertex* vx, + const xAOD::TrackParticle* tp) const override final; - /** Access the ambiguity resolution of central electrons and photons and return - * AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown + /** Access the ambiguity resolution of central electrons and photons and + * return AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown * or the author of the object if no overlapping object is found **/ - unsigned int ambiguityResolve(const xAOD::Egamma& egamma) const; + virtual unsigned int ambiguityResolve(const xAOD::Egamma& egamma) const override final; /** Accept or reject egamma object based on ambiguity resolution * (e.g. if object is a photon and ambiguity return value is electron -> reject) **/ - bool accept( const xAOD::Egamma& egamma) const; - - /** Accept or reject egamma object (passed via pointer) based on ambiguity resolution - * (e.g. if object is a photon and ambiguity return value is electron -> reject) - **/ - bool accept( const xAOD::Egamma* egamma) const{ - return accept(*egamma); - } + virtual bool accept( const xAOD::Egamma& egamma) const override final; /** Return true if track has innermost pixel hit * or next-to-innermost in case innermost is not expected diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/EGammaAmbiguityTool.cxx b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/EGammaAmbiguityTool.cxx index bf014a645175a7908fd1b90e87ecc8ea8ba54079..a2c62248bf6f0b3208facaf6b37c8abbf5b144fb 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/EGammaAmbiguityTool.cxx +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/EGammaAmbiguityTool.cxx @@ -2,13 +2,10 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -// Dear emacs, this is -*-c++-*- - /** @class EGammaAmbiguityTool @brief Electron / photon ambiguity resolution. Dual-use version - - @author Bruno Lenzi + @author Bruno Lenzi , Christos Anastopoulos, Ruggero Turra @date May 2015 */ @@ -29,36 +26,43 @@ #include "xAODEgamma/EgammaxAODHelpers.h" #include "FourMomUtils/xAODP4Helpers.h" -#define CHECK_HITS( EXP ) \ - if (!(EXP)) \ - { \ - ATH_MSG_WARNING("Failed \"" << #EXP << "\"" ); \ - return false; \ - } \ - +#define CHECK_HITS(EXP) \ + if (!(EXP)) { \ + ATH_MSG_WARNING("Failed \"" << #EXP << "\""); \ + return false; \ + } //============================================================================= // Standard constructor //============================================================================= -EGammaAmbiguityTool::EGammaAmbiguityTool(const std::string& myname) : - asg::AsgTool(myname) +EGammaAmbiguityTool::EGammaAmbiguityTool(const std::string& myname) + : asg::AsgTool(myname) { - declareProperty("minNoSiHits", m_MinNoSiHits = 4, "Minimum number of silicon hits to be an electron==>not photon for sure"); - declareProperty("minNoPixHits", m_MinNoPixHits = 2, "Minimum number of Pixel hits to be an electron==>not photon for sure"); - declareProperty("maxEoverPCut", m_maxEoverPCut = 10,"Maximum EoverP , more that this is ambiguous"); - declareProperty("minPCut", m_minPtCut = 2000 , "Minimum Pt, less than that is ambiguous"); - declareProperty("maxDeltaR_innermost", m_maxDeltaR_innermost = 40 , "Maximum value for Rconv - RfirstHit for Si+Si conversions where both tracks have innermost hits"); - declareProperty("noVertexNoInnermostAsAmb", m_noVertexNoInnermostAsAmb = true, - "If true classify as ambiguous when there is no vertex and no innermost Hits. " - "If false classify no vertex as for sure not photon"); - declareProperty("AcceptAmbiguous", m_acceptAmbiguous = true,"When used as a selector accept the ambiguous as default"); -} - - -//============================================================================= -// Standard destructor -//============================================================================= -EGammaAmbiguityTool::~EGammaAmbiguityTool(){ + declareProperty( + "minNoSiHits", + m_MinNoSiHits = 4, + "Minimum number of silicon hits to be an electron==>not photon for sure"); + declareProperty( + "minNoPixHits", + m_MinNoPixHits = 2, + "Minimum number of Pixel hits to be an electron==>not photon for sure"); + declareProperty("maxEoverPCut", + m_maxEoverPCut = 10, + "Maximum EoverP , more that this is ambiguous"); + declareProperty( + "minPCut", m_minPtCut = 2000, "Minimum Pt, less than that is ambiguous"); + declareProperty("maxDeltaR_innermost", + m_maxDeltaR_innermost = 40, + "Maximum value for Rconv - RfirstHit for Si+Si conversions " + "where both tracks have innermost hits"); + declareProperty("noVertexNoInnermostAsAmb", + m_noVertexNoInnermostAsAmb = true, + "If true classify as ambiguous when there is no vertex and " + "no innermost Hits. " + "If false classify no vertex as for sure not photon"); + declareProperty("AcceptAmbiguous", + m_acceptAmbiguous = true, + "When used as a selector accept the ambiguous as default"); } StatusCode EGammaAmbiguityTool::initialize(){ @@ -66,33 +70,24 @@ StatusCode EGammaAmbiguityTool::initialize(){ return StatusCode::SUCCESS; } - -//============================================================================= -// finalize method (now called by destructor) -//============================================================================= -StatusCode EGammaAmbiguityTool::finalize(){ - return StatusCode::SUCCESS; -} - // ==================================================================== // return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown - unsigned int EGammaAmbiguityTool::ambiguityResolve(const xAOD::CaloCluster* cluster, const xAOD::Vertex* vx, const xAOD::TrackParticle* tp, xAOD::AmbiguityTool::AmbiguityType& type) const{ type=xAOD::AmbiguityTool::unknown; - // Energy from 3x5 cluster, stored in altE after EMClusterTool // Result should stay the same before after calibration corrections - double cluster_e = (cluster->clusterSize() != xAOD::CaloCluster::SW_35ele && - cluster->clusterSize() != xAOD::CaloCluster::SW_35gam && - cluster->clusterSize() != xAOD::CaloCluster::SuperCluster) ? cluster->altE() : cluster->e(); + double cluster_e = (cluster->clusterSize() != xAOD::CaloCluster::SW_35ele && + cluster->clusterSize() != xAOD::CaloCluster::SW_35gam && + cluster->clusterSize() != xAOD::CaloCluster::SuperCluster) + ? cluster->altE() + : cluster->e(); - //Number of hits from the track uint8_t trkPixelHits(0); - uint8_t trkSiHits(0); + uint8_t trkSiHits(0); if (tp && !tp->summaryValue(trkPixelHits,xAOD::numberOfPixelHits)){ ATH_MSG_WARNING("Could not retrieve number of pixel hits from track"); } @@ -100,11 +95,11 @@ unsigned int EGammaAmbiguityTool::ambiguityResolve(const xAOD::CaloCluster* clus ATH_MSG_WARNING("Could not retrieve number of SCT hits from track"); } trkSiHits += trkPixelHits; - + //Check if the vertex is double silicon xAOD::EgammaParameters::ConversionType convType(xAOD::EgammaHelpers::conversionType(vx)); bool vxDoubleSi = (convType == xAOD::EgammaParameters::doubleSi); - + // Check if the track particle and the ones associated to the conversion vertex // have innermost pixel hits bool trkHasInnermostHit = tp && hasInnermostPixelHit(*tp); @@ -114,19 +109,19 @@ unsigned int EGammaAmbiguityTool::ambiguityResolve(const xAOD::CaloCluster* clus //if not we might have a trident. //if yes and the track is not good we definetely matched the conversion as electron. bool shareTrack = tp && trkSiHits>=m_MinNoSiHits && vxDoubleSi && isInVertex(*tp, *vx); - + //Debug messages - ATH_MSG_DEBUG("Vertex, SiSi, tracks with innermost pixel hits: " + ATH_MSG_DEBUG("Vertex, SiSi, tracks with innermost pixel hits: " << (vx != nullptr) << ", " << vxDoubleSi << ", " << nTrkVxWithInnermostHit); - ATH_MSG_DEBUG("Track, Si hits, pixel hits, has innermost pixel hit: " - << (tp != nullptr) << ", " << (int) trkSiHits << ", " << (int) trkPixelHits + ATH_MSG_DEBUG("Track, Si hits, pixel hits, has innermost pixel hit: " + << (tp != nullptr) << ", " << (int) trkSiHits << ", " << (int) trkPixelHits << " , " << (int) trkHasInnermostHit); ATH_MSG_DEBUG("Share track : " << shareTrack); //The Electron collection will NOT contain Photons //The Photon collection will NOT contain Electrons - //So for conversions vs electrons better to go to ambiguous + //So for conversions vs electrons better to go to ambiguous //except if we are sure. //Practically a photon here means definetely not Electron @@ -139,19 +134,19 @@ unsigned int EGammaAmbiguityTool::ambiguityResolve(const xAOD::CaloCluster* clus // - No pixel // - The electron track is part of the conversion // In this case we do not want this to be in Electrons - - if (!tp || - trkSiHits<m_MinNoSiHits || + if (!tp || + trkSiHits<m_MinNoSiHits || (vxDoubleSi && !trkPixelHits && shareTrack)){ ATH_MSG_DEBUG("Returning Photon"); type= xAOD::AmbiguityTool::photon; return xAOD::EgammaParameters::AuthorPhoton; } - - //Ambigous due to E/P, Min Pt, pixel hits - //We are not sure it is a Photon, but is not good enough either to be surely an Electron + + // Ambigous due to E/P, Min Pt, pixel hits + // We are not sure it is a Photon, but is not good enough either to be surely + // an Electron // - E/P >10 or track Pt < 2.0 GeV or no-pixel then Ambiguous - double track_ep= cluster_e * fabs(tp->qOverP()); + double track_ep = cluster_e * fabs(tp->qOverP()); if(tp->pt()<m_minPtCut) { ATH_MSG_DEBUG("Returning Ambiguous due min Pt"); @@ -172,58 +167,63 @@ unsigned int EGammaAmbiguityTool::ambiguityResolve(const xAOD::CaloCluster* clus return xAOD::EgammaParameters::AuthorAmbiguous; } - //Electron ==> Surely not Photon - // - No vertex Matched (and trk has "innermost pixel hits" when m_noVertexNoInnermostAsAmb is true, + // Electron ==> Surely not Photon + // - No vertex Matched (and trk has "innermost pixel hits" when + // m_noVertexNoInnermostAsAmb is true, // othewise ambiguous) - // - Track with at least the minimum Si and Pixel hits (previous selection for photons/ambiguous) + // - Track with at least the minimum Si and Pixel hits (previous selection for + // photons/ambiguous) // - And has E/P < 10 and Pt > 2.0 GeV (previous for ambiguous) // - Or if a vertex exists and: - // * is not Si+Si + // * is not Si+Si // * is Si+Si but only 1 trk has "innermost pixel hits" - // * is Si+Si and both tracks have "innermost pixel hits" but - // Rconv - RfirstHit > maxDeltaR_innermost + // * is Si+Si and both tracks have "innermost pixel hits" but + // Rconv - RfirstHit > maxDeltaR_innermost // In this case we do not want this to be in Photons if (!vx) { - if (trkHasInnermostHit || !m_noVertexNoInnermostAsAmb) { - ATH_MSG_DEBUG("Returning Electron"); - type=xAOD::AmbiguityTool::electron; - return xAOD::EgammaParameters::AuthorElectron; - } - else { - // the true photons falling here are classified as unconverted photons - // but it may happen that they are late single-track conversions - // very few true electrons are falling here, since there is no innermost hits - ATH_MSG_DEBUG("Returning Ambiguous due to no conv vertex and track with no innermost hits"); - type=xAOD::AmbiguityTool::ambiguousNoInnermost; // TODO: create new type. - // NOTE: now there is no distinction between TrackEOverPBetterTanVertexEoverP, ... - return xAOD::EgammaParameters::AuthorAmbiguous; - } + if (trkHasInnermostHit || !m_noVertexNoInnermostAsAmb) { + ATH_MSG_DEBUG("Returning Electron"); + type = xAOD::AmbiguityTool::electron; + return xAOD::EgammaParameters::AuthorElectron; + } else { + // the true photons falling here are classified as unconverted photons + // but it may happen that they are late single-track conversions + // very few true electrons are falling here, since there is no innermost + // hits + ATH_MSG_DEBUG("Returning Ambiguous due to no conv vertex and track with " + "no innermost hits"); + type = xAOD::AmbiguityTool::ambiguousNoInnermost; + return xAOD::EgammaParameters::AuthorAmbiguous; + } } // here we have a conv vertex - - if (trkHasInnermostHit && (!vxDoubleSi || nTrkVxWithInnermostHit == 1 || !passDeltaR_innermost(*vx))) { + if (trkHasInnermostHit && (!vxDoubleSi || nTrkVxWithInnermostHit == 1 || + !passDeltaR_innermost(*vx))) { ATH_MSG_DEBUG("Returning Electron"); - type=xAOD::AmbiguityTool::electron; + type = xAOD::AmbiguityTool::electron; return xAOD::EgammaParameters::AuthorElectron; } // Ambiguous all else, these will go to both electrons and photons - // A matched Si+Si vertex (where either both or none of the tracks have - // "innermost pixel hits") + // A matched Si+Si vertex (where either both or none of the tracks have + // "innermost pixel hits") // and a track with "innermost pixel hits" // A non Si+Si vertex matched and a track with no "innermost pixel hits" - //Here the types can become interesting - double track_p = fabs(1.0/tp->qOverP()); - double vertex_p=xAOD::EgammaHelpers::momentumAtVertex(*vx).mag() ; - - type = (fabs(track_p - cluster_e) < fabs(vertex_p- cluster_e)) ? - xAOD::AmbiguityTool::ambiguousTrackEoverPBetterThanVertexEoverP : + //If we have no double si + //or if the single track p matches the cluster E than the vertex p + //mark TrackEoverPBetterThanVertexEover. + //Otherwise maek as TrackEoverPBetterThanVertexEover + //as the double si vertex is a better match to the cluster E. + const double track_p = fabs(1.0/tp->qOverP()); + const double vertex_p=xAOD::EgammaHelpers::momentumAtVertex(*vx).mag() ; + type = !vxDoubleSi || (fabs(track_p - cluster_e) < fabs(vertex_p- cluster_e))? + xAOD::AmbiguityTool::ambiguousTrackEoverPBetterThanVertexEoverP : xAOD::AmbiguityTool::ambiguousVertexEoverPBetterThanTrackEoverP ; //end of types - + ATH_MSG_DEBUG("Returning Ambiguous"); return xAOD::EgammaParameters::AuthorAmbiguous; } @@ -243,41 +243,41 @@ unsigned int EGammaAmbiguityTool::ambiguityResolve(const xAOD::CaloCluster* clus /** Redo the ambiguity resolution of central electrons and photons and return - * AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown + * AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown * or the author of the object if no overlapping object is found **/ unsigned int EGammaAmbiguityTool::ambiguityResolve(const xAOD::Egamma& egamma) const{ - - //Fwd and Topo seeded not handled + + //Fwd and Topo seeded not handled if (egamma.author() == xAOD::EgammaParameters::AuthorFwdElectron || egamma.author() == xAOD::EgammaParameters::AuthorCaloTopo35){ ATH_MSG_DEBUG("Author Fwd of Topo seeded. Do not do overlap or ambiguity"); return egamma.author(); } - + //No overlap found so either photon or electron if (!egamma.ambiguousObject()){ //!ELink.isAvailable(*egamma)) { ATH_MSG_DEBUG("No overlaping object found"); return egamma.author(); } - - //Overlap found. define the electron and the photon - const xAOD::Electron *electron = - static_cast<const xAOD::Electron*>(egamma.type() == xAOD::Type::Electron ? &egamma : egamma.ambiguousObject()); - const xAOD::Photon *photon = - static_cast<const xAOD::Photon*>(egamma.type() == xAOD::Type::Photon ? &egamma : egamma.ambiguousObject()); - + + // Overlap found. define the electron and the photon + const xAOD::Electron* electron = static_cast<const xAOD::Electron*>( + egamma.type() == xAOD::Type::Electron ? &egamma : egamma.ambiguousObject()); + const xAOD::Photon* photon = static_cast<const xAOD::Photon*>( + egamma.type() == xAOD::Type::Photon ? &egamma : egamma.ambiguousObject()); + //Error if cannot define any of them if (!electron || !photon){ ATH_MSG_WARNING("Could not cast to electron and/or photon"); return egamma.author(); } - + //pass the proper input to the ambiguity resolve method xAOD::AmbiguityTool::AmbiguityType type; unsigned int result = ambiguityResolve(electron->caloCluster(), - photon->vertex(), + photon->vertex(), electron->trackParticle(), type); ATH_MSG_DEBUG("Performed ambiguity resolution, resulting type is: "<< type); @@ -297,11 +297,11 @@ bool EGammaAmbiguityTool::accept( const xAOD::Egamma& egamma) const{ return true; } - return (author == (egamma.type() == xAOD::Type::Electron ? + return (author == (egamma.type() == xAOD::Type::Electron ? xAOD::EgammaParameters::AuthorElectron : xAOD::EgammaParameters::AuthorPhoton) ); } -/** Return true if track has innermost pixel hit +/** Return true if track has innermost pixel hit * or next-to-innermost in case innermost is not expected * or at least m_MinNoPixHits pixel hits in case next-to-innermost is not expected **/ @@ -311,21 +311,21 @@ bool EGammaAmbiguityTool::hasInnermostPixelHit(const xAOD::TrackParticle& tp) co uint8_t trkNhits(0); CHECK_HITS( tp.summaryValue(trkNhits,xAOD::numberOfInnermostPixelLayerHits) ); if (trkNhits) {return true;} - + CHECK_HITS( tp.summaryValue(trkExpectHit,xAOD::expectInnermostPixelLayerHit) ); if (trkExpectHit) {return false;} - + CHECK_HITS( tp.summaryValue(trkNhits,xAOD::numberOfNextToInnermostPixelLayerHits) ); if (trkNhits) {return true;} - + CHECK_HITS( tp.summaryValue(trkExpectHit,xAOD::expectNextToInnermostPixelLayerHit) ); - if (trkExpectHit) {return false;} - + if (trkExpectHit) {return false;} + CHECK_HITS( tp.summaryValue(trkNhits,xAOD::numberOfPixelHits) ); return (trkNhits >= m_MinNoPixHits); } -/** Return the number of tracks with "innermost pixel hits" (see above) +/** Return the number of tracks with "innermost pixel hits" (see above) * in the given vertex **/ size_t EGammaAmbiguityTool::nTrkWithInnermostPixelHits(const xAOD::Vertex& vx) const{ size_t n = 0; @@ -354,5 +354,6 @@ bool EGammaAmbiguityTool::passDeltaR_innermost(const xAOD::Vertex& vx) const ATH_MSG_WARNING("minRfirstHit not available"); return false; } - return xAOD::EgammaHelpers::conversionRadius(&vx) - vx.auxdata<float>("minRfirstHit") < m_maxDeltaR_innermost; + static const SG::AuxElement::Accessor<float> acc("minRfirstHit"); + return xAOD::EgammaHelpers::conversionRadius(&vx) - acc(vx) < m_maxDeltaR_innermost; } diff --git a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/CMakeLists.txt b/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/CMakeLists.txt deleted file mode 100644 index e59b4d473e381aa25a3e883d7459a6b4c15a4a0e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -################################################################################ -# Package: ExoticPhysTagTools -################################################################################ - -# Declare the package name: -atlas_subdir( ExoticPhysTagTools ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaBaseComps - Database/AthenaPOOL/AthenaPoolUtilities - GaudiKernel - PhysicsAnalysis/EventTag/TagEvent ) - -# External dependencies: -find_package( CLHEP ) - -# Component(s) in the package: -atlas_add_library( ExoticPhysTagToolsLib - src/*.cxx - PUBLIC_HEADERS ExoticPhysTagTools - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ) - -atlas_add_component( ExoticPhysTagTools - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent ExoticPhysTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/ExoticPhysTagTools/ExoticPhysTagTool.h b/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/ExoticPhysTagTools/ExoticPhysTagTool.h deleted file mode 100755 index 220131b209906272f885993df4b129d772969aea..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/ExoticPhysTagTools/ExoticPhysTagTool.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EXOTICPHYSTAGTOOL_H -#define EXOTICPHYSTAGTOOL_H - -/***************************************************************************** -Name : ExoticPhysTagTool.h -Package : offline/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : build the ExoticPhys Tag object - AnalysisTag.h. - The ExoticPhys Analysis Tag fragment is built here - For example encoding the results of hypotheses on different channels -*****************************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -#include <map> - -/** Interface ID for ExoticPhysTagTool*/ -static const InterfaceID IID_ExoticPhysTagTool("ExoticPhysTagTool", 1, 0); - -class ExoticPhysTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - ExoticPhysTagTool(const std::string& type, const std::string& name, const IInterface* -parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_ExoticPhysTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int max); - virtual StatusCode execute(TagFragmentCollection& exoticTagCol, const int max); - virtual StatusCode finalize(); - -private: - - /** Properties */ - std::string m_jetContainerName; - double m_jetPtCut; - }; - -#endif // EXOTICPHYSTAGTOOL_H - - - diff --git a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/doc/packagedoc.h b/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/doc/packagedoc.h deleted file mode 100644 index b2e9914d515f007475d892e0132a10e946eefe81..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/doc/packagedoc.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page ExoticPhysTagTools_page ExoticPhysTagTools - -@section ExoticPhysTagTools_introductionExoticPhysTagTools Introduction -This package contains the alg tools for building the TAG fragment for Exotic Physics Analysis - -@section ExoticPhysTagTools_packagecontentExoticPhysTagTools Package Contents -ExoticPhysTagTools contains the following tools: - -- ExoticPhysTagTool ... tool for Exotic-Physics Analysis TAG fragment - -- for questions and comments: ketevi@bnl.gov - - - -*/ diff --git a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/share/ExoticPhysTagTool_jobOptions.py b/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/share/ExoticPhysTagTool_jobOptions.py deleted file mode 100755 index ccab293724e98138381ed85d7f72176cc56c3a4c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/share/ExoticPhysTagTool_jobOptions.py +++ /dev/null @@ -1,15 +0,0 @@ -include.block ("ExoticPhysTagTools/ExoticPhysTagTool_jobOptions.py") - -from EventTagAlgs.EventTagGlobal import EventTagGlobal - -if not EventTagGlobal.InitEventTagBuilder: - raise RunTimeError('EventTagBuilder has not been initialized') - -########### ExoticPhysics analysis tag options ################ - -from ExoticPhysTagTools.ExoticPhysTagToolsConf import \ -ExoticPhysTagTool as ConfiguredExoticPhysTagTool -ExoticPhysTagTool=ConfiguredExoticPhysTagTool( - JetContainer = "AntiKt4TopoJets", - EtCut = 15.0*GeV) -ToolSvc += ExoticPhysTagTool diff --git a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/src/ExoticPhysTagTool.cxx b/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/src/ExoticPhysTagTool.cxx deleted file mode 100755 index 4d43994972364451008b50f6c9bce57816088c09..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/src/ExoticPhysTagTool.cxx +++ /dev/null @@ -1,80 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : ExoticPhysTagTool.cxx -Package : offline/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : create a ExoticPhysTag - a word to encode ExoticPhys specific information such - as the results of hypotheses - -*****************************************************************************/ - -#include "Gaudi/Property.h" -#include "CLHEP/Units/SystemOfUnits.h" - -#include "ExoticPhysTagTools/ExoticPhysTagTool.h" -#include "TagEvent/ExoticPhysAttributeNames.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -/** the constructor */ -ExoticPhysTagTool::ExoticPhysTagTool (const std::string& type, const -std::string& name, const IInterface* parent) : - AthAlgTool( type, name, parent ) { - - /** Container Names */ - declareProperty("JetContainer", m_jetContainerName = "AntiKt4TopoJets"); - - /** Pt cut on jte - modifiable in job options */ - declareProperty("EtCut", m_jetPtCut = 15.0*CLHEP::GeV); - - declareInterface<ExoticPhysTagTool>( this ); -} - -/** initialization - called once at the begginning */ -StatusCode ExoticPhysTagTool::initialize() { - ATH_MSG_DEBUG( "in intialize()" ); - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode ExoticPhysTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, - const int max) { - - ATH_MSG_DEBUG( "in attributeSpecification()" ); - - /** specifiy the ExoticPhys the attributes */ - - attrMap[ ExoticAttributeNames[0] ] = AthenaAttributeType("unsigned int", ExoticAttributeUnitNames[0], ExoticAttributeGroupNames[0]); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** execute - called on every event */ -StatusCode ExoticPhysTagTool::execute(TagFragmentCollection& exoticTagCol, const int max) { - - ATH_MSG_DEBUG( "in execute()" ); - - /** fill the ExoticPhys analysis tag */ - - unsigned int fragment = 0x0; - exoticTagCol.insert( ExoticAttributeNames[0], fragment ); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** finalize - called once at the end */ -StatusCode ExoticPhysTagTool::finalize() { - ATH_MSG_DEBUG( "in finalize()" ); - return StatusCode::SUCCESS; -} - - diff --git a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/src/components/ExoticPhysTagTools_entries.cxx b/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/src/components/ExoticPhysTagTools_entries.cxx deleted file mode 100644 index d7f4dd5b6f12bfe823ec6152dc02e56dc4247205..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/ExoticPhys/ExoticPhysTagTools/src/components/ExoticPhysTagTools_entries.cxx +++ /dev/null @@ -1,6 +0,0 @@ -#include "ExoticPhysTagTools/ExoticPhysTagTool.h" - - -DECLARE_COMPONENT( ExoticPhysTagTool ) - - diff --git a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/CMakeLists.txt b/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/CMakeLists.txt deleted file mode 100644 index 564d0ced89ca8270d6a0e4c157cb09cba40d1521..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -################################################################################ -# Package: HeavyIonPhysTagTools -################################################################################ - -# Declare the package name: -atlas_subdir( HeavyIonPhysTagTools ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaBaseComps - Database/AthenaPOOL/AthenaPoolUtilities - GaudiKernel - PhysicsAnalysis/EventTag/TagEvent ) - -# External dependencies: -find_package( CLHEP ) - -# Component(s) in the package: -atlas_add_library( HeavyIonPhysTagToolsLib - src/*.cxx - PUBLIC_HEADERS HeavyIonPhysTagTools - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ) - -atlas_add_component( HeavyIonPhysTagTools - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent HeavyIonPhysTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/HeavyIonPhysTagTools/HeavyIonPhysTagTool.h b/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/HeavyIonPhysTagTools/HeavyIonPhysTagTool.h deleted file mode 100755 index 850f274266daf25c6837d4d2dd7044088a63b584..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/HeavyIonPhysTagTools/HeavyIonPhysTagTool.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef HEAVYIONPHYSTAGTOOL_H -#define HEAVYIONPHYSTAGTOOL_H - -/***************************************************************************** -Name : HeavyIonPhysTagTool.h -Package : offline/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools -Author : Ketevi A. Assamagan -Created : June 2006 -Purpose : build the HeavyIonPhys Tag object - AnalysisTag.h. - The HeavyIonPhys Analysis Tag fragment is built here - For example encoding the results of hypotheses on different channels -*****************************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" -#include "TagEvent/TagFragmentCollection.h" - -#include <map> - -/** Interface ID for HeavyIonPhysTagTool*/ -static const InterfaceID IID_HeavyIonPhysTagTool("HeavyIonPhysTagTool", 1, 0); - -class HeavyIonPhysTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - HeavyIonPhysTagTool(const std::string& type, const std::string& name, const IInterface* parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_HeavyIonPhysTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int max); - virtual StatusCode execute(TagFragmentCollection& heavyIonTagCol, const int max); - virtual StatusCode finalize(); - -private: - - /** Properties */ - std::string m_jetContainerName; - double m_jetPtCut; - }; - -#endif // HEAVYIONPHYSTAGTOOL_H - diff --git a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/share/HeavyIonPhysTagTool_jobOptions.py b/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/share/HeavyIonPhysTagTool_jobOptions.py deleted file mode 100755 index 2386db02effde00a07ff03ee649f71a04937e581..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/share/HeavyIonPhysTagTool_jobOptions.py +++ /dev/null @@ -1,7 +0,0 @@ -include.block ("HeavyIonPhysTagTools/HeavyIonPhysTagTool_jobOptions.py") - -from HeavyIonPhysTagTools.HeavyIonPhysTagToolsConf import \ - HeavyIonPhysTagTool as ConfiguredHeavyIonPhysTagTool -HeavyIonPhysTagTool = ConfiguredHeavyIonPhysTagTool( - EtCut = 6.0*GeV) -ToolSvc += HeavyIonPhysTagTool diff --git a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/src/HeavyIonPhysTagTool.cxx b/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/src/HeavyIonPhysTagTool.cxx deleted file mode 100755 index 2ad0971a94888eb26dd75b4ef0eb66a284de484f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/src/HeavyIonPhysTagTool.cxx +++ /dev/null @@ -1,80 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : HeavyIonPhysTagTool.cxx -Package : offline/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools -Author : Ketevi A. Assamagan -Created : June 2006 -Purpose : create a HeavyIonPhysTag - a word to encode ExoticPhys specific information such - as the results of hypotheses - -*****************************************************************************/ - -#include "GaudiKernel/MsgStream.h" -#include "Gaudi/Property.h" -#include "CLHEP/Units/SystemOfUnits.h" - -#include "HeavyIonPhysTagTools/HeavyIonPhysTagTool.h" -#include "TagEvent/HeavyIonPhysAttributeNames.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -/** the constructor */ -HeavyIonPhysTagTool::HeavyIonPhysTagTool (const std::string& type, const -std::string& name, const IInterface* parent) : - AthAlgTool( type, name, parent ) -{ - - /** Pt cut on jte - modifiable in job options */ - declareProperty("EtCut", m_jetPtCut = 15.0*CLHEP::GeV); - - declareInterface<HeavyIonPhysTagTool>( this ); -} - -/** initialization - called once at the begginning */ -StatusCode HeavyIonPhysTagTool::initialize() { - ATH_MSG_DEBUG( "in intialize()" ); - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode HeavyIonPhysTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, - const int max) { - - ATH_MSG_DEBUG( "in attributeSpecification()" ); - - /** specifiy the HeavyIonPhys the attributes */ - - attrMap[ HeavyIonAttributeNames[0] ] = AthenaAttributeType("unsigned int", HeavyIonAttributeUnitNames[0], HeavyIonAttributeGroupNames[0]); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** execute - called on every event */ -StatusCode HeavyIonPhysTagTool::execute(TagFragmentCollection& heavyIonTagCol, const int max) { - - ATH_MSG_DEBUG( "in execute()" ); - - /** fill the HeavyIonPhys analysis tag */ - - unsigned int fragment = 0x0; - heavyIonTagCol.insert( HeavyIonAttributeNames[0], fragment ); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** finalize - called once at the end */ -StatusCode HeavyIonPhysTagTool::finalize() { - ATH_MSG_DEBUG( "in finalize()" ); - return StatusCode::SUCCESS; -} - - - diff --git a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/src/components/HeavyIonPhysTagTools_entries.cxx b/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/src/components/HeavyIonPhysTagTools_entries.cxx deleted file mode 100644 index ef92e399df7ac8dad3bf05268ab0cbe343f7fb43..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HeavyIonPhys/HeavyIonPhysTagTools/src/components/HeavyIonPhysTagTools_entries.cxx +++ /dev/null @@ -1,6 +0,0 @@ -#include "HeavyIonPhysTagTools/HeavyIonPhysTagTool.h" - - -DECLARE_COMPONENT( HeavyIonPhysTagTool ) - - diff --git a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1AnalysisCommon/CMakeLists.txt b/PhysicsAnalysis/HiggsPhys/HSG1/HSG1AnalysisCommon/CMakeLists.txt deleted file mode 100644 index a7b1945b350690bffac8676ed3623c6269eb1678..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1AnalysisCommon/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -################################################################################ -# Package: HSG1AnalysisCommon -################################################################################ - -# Declare the package name: -atlas_subdir( HSG1AnalysisCommon ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1AnalysisCommon/share/HSG1_CommonJobOptions.py b/PhysicsAnalysis/HiggsPhys/HSG1/HSG1AnalysisCommon/share/HSG1_CommonJobOptions.py deleted file mode 100644 index 7ff39d4b27e4e498564b56e1b03a14621b680b39..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1AnalysisCommon/share/HSG1_CommonJobOptions.py +++ /dev/null @@ -1,602 +0,0 @@ -## --------------------------------------------------------- -## PhotonAnalysisUtils -## --------------------------------------------------------- - -# Author: Marcello Fanti -# Milano, August 2007 - -## input AOD files must be defined at the bottom of this file... -## ---------------------------------------------------------- - -MessageSvc.OutputLevel = ERROR -MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M" -MessageSvc.warningLimit = 9999999 -MessageSvc.infoLimit = 9999999 -MessageSvc.debugLimit = 9999999 -MessageSvc.verboseLimit = 9999999 - -from AthenaServices.AthenaServicesConf import AthenaEventLoopMgr -AthenaEventLoopMgr.OutputLevel = WARNING - -from AthenaCommon.AppMgr import ServiceMgr - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUanalysis -theJob += PAUanalysis() -theJob.PAUanalysis.UseTrigger = UseTrigger -theJob.PAUanalysis.OnlyTriggerDecision = False -theJob.PAUanalysis.EnforceTriggerLogicalFlow = EnforceTriggerLogicalFlow -theJob.PAUanalysis.ElectronContainerName = ElectronContainer -theJob.PAUanalysis.MuonContainerName = MuonContainer -theJob.PAUanalysis.CaloCellContainer = CaloCells -theJob.PAUanalysis.doTrack = DumpTracks -theJob.PAUanalysis.doEtCone = DumpAdditionalEtCones -theJob.PAUanalysis.doCell = DumpCells -theJob.PAUanalysis.doCluster = DumpClusters - -if ( TriggerNames == 'R14' ) : - theJob.PAUanalysis.TriggerSignatures = [ "g20" , - "g20i" , - "2g20" , - "g25" , - "g105" , - "g10" ] -if ( TriggerNames == 'R15' ) : - theJob.PAUanalysis.TriggerSignatures = [ "g20_loose" , - "g20i_loose" , - "2g20_loose" , - "g25_loose" , - "g105" , - "g10_loose" ] - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUdumper -ToolSvc += PAUdumper() -ToolSvc.PAUdumper.DumpNtuple = DumpNtuple - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUhggUserDataTool -ToolSvc += PAUhggUserDataTool() -ToolSvc.PAUhggUserDataTool.DumpNtuple = DumpNtuple - -# theJob.PAUanalysis.DumpTruth = 2 # dump truth tree in file dumpTruth.txt (BIG! ~ 200 K/evt) -theJob.PAUanalysis.OutputLevel = INFO -theJob.PAUanalysis.EgDetailContainerName = PhotonsDetailsContainerName - -# theJob.PAUanalysis.UsePAUtruthMatchingTool = True - -# here if you want to set which process you are analysing... - -from PhotonAnalysisUtils.PAUanalysisCodes import PAUanalysisCodes -#PAUanalysis.AnalysisCode = PAUanalysisCodes["gluongluon"] -#PAUanalysis.AnalysisCode = PAUanalysisCodes["VBF"] -#PAUanalysis.AnalysisCode = PAUanalysisCodes["WHprod"] -#PAUanalysis.AnalysisCode = PAUanalysisCodes["ZHprod"] -#PAUanalysis.AnalysisCode = PAUanalysisCodes["ttHprod"] -#PAUanalysis.AnalysisCode = PAUanalysisCodes["QCDgammagamma"] -#PAUanalysis.AnalysisCode = PAUanalysisCodes["QCDgammajet"] -#PAUanalysis.AnalysisCode = PAUanalysisCodes["QCDjetjet"] - -### The related algtools ### -from AthenaCommon.AppMgr import ToolSvc - -########################################################################################################## -# Configure the extrapolator -########################################################################################################## -from TrkExTools.AtlasExtrapolator import AtlasExtrapolator -theAtlasExtrapolator=AtlasExtrapolator(name = 'egammaExtrapolator') -theAtlasExtrapolator.DoCaloDynamic = False # this turns off dynamic calculation of eloss in calorimeters -# all left to MaterialEffects/EnergyLossUpdators - -MaterialEffectsUpdator = CfgMgr.Trk__MaterialEffectsUpdator -AtlasMaterialEffectsUpdator = MaterialEffectsUpdator(name = 'AtlasMaterialEffectsUpdator') -ToolSvc += AtlasMaterialEffectsUpdator #default material effects updator -NoElossMaterialEffectsUpdator = MaterialEffectsUpdator(name = 'NoElossMaterialEffectsUpdator') -NoElossMaterialEffectsUpdator.EnergyLoss = False -ToolSvc += NoElossMaterialEffectsUpdator - -#setup MaterialEffectsUpdator arrays -MyUpdators = [] -MyUpdators += [ToolSvc.AtlasMaterialEffectsUpdator] # for ID -MyUpdators += [ToolSvc.NoElossMaterialEffectsUpdator] # for Calo -#MyUpdators += [ToolSvc.NoElossMaterialEffectsUpdator] # for muon - -MySubUpdators = [] -MySubUpdators += [ToolSvc.AtlasMaterialEffectsUpdator.name()] # for ID -MySubUpdators += [ToolSvc.NoElossMaterialEffectsUpdator.name()] # for Calo -MySubUpdators += [ToolSvc.NoElossMaterialEffectsUpdator.name()] # for muon - -theAtlasExtrapolator.MaterialEffectsUpdators = MyUpdators -theAtlasExtrapolator.SubMEUpdators = MySubUpdators -ToolSvc+=theAtlasExtrapolator - -# moved to PAUhybridPrimaryVertexTool theJob.PAUanalysis.ExtrapolationTool=theAtlasExtrapolator - -from CaloDetDescr.CaloDepthToolBase import CaloDepthToolFactory -theCaloDepthTool=CaloDepthToolFactory(depth='cscopt2') -theCaloDepthTool.DepthChoice="cscopt2" -#theCaloDepthTool=CaloDepthToolFactory(depth='cscopt') -ToolSvc += theCaloDepthTool - -# add tool ExtrapolateTrackToCalo -exToCalo = CfgMgr.ExtrapolateToCaloTool(Extrapolator = theAtlasExtrapolator,CaloDepthTool=theCaloDepthTool.getFullName()) -ToolSvc+=exToCalo -#print exToCalo - -#ToolSvc.ExtrapolateToCaloTool.CaloDepthTool.DepthChoice = "egparametrized" -ToolSvc.ExtrapolateToCaloTool.OutputLevel = INFO -# -#print "------------------------------------------------->>>extrapolToCalo<<<---------------------------------------------------" -#print ToolSvc.ExtrapolateToCaloTool.CaloDepthTool -#print ToolSvc.ExtrapolateToCaloTool.CaloDepthTool.DepthChoice -#print exToCalo -#print "------------------------------------------------->>>extrapolToCalo<<<---------------------------------------------------" - - -########################################################################################################## - - -########################################################################################################## -# Configure the InDetConversionFinder -############################################################################################################ - -theAtlasMagField = CfgMgr.Trk__MagneticFieldTool('theAtlasMagField') -ToolSvc += theAtlasMagField - -from TrkTrackSummaryTool.AtlasTrackSummaryTool import AtlasTrackSummaryTool -theAtlasTrackSummaryTool = AtlasTrackSummaryTool("theAtlasTrackSummaryTool") - -ToolSvc += theAtlasTrackSummaryTool - -from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter -InDetConversionVxFitterTool = Trk__TrkVKalVrtFitter(name = "InDetConversionVxFitter", - # Extrapolator = InDetExtrapolator, - Extrapolator = theAtlasExtrapolator, - IterationNumber = 30, - #MagFieldSvc = InDetMagField, - MagFieldSvc = theAtlasMagField, - Robustness = 6, -#This line has no more meaning Constraint = 12, - usePhiCnst = True, - useThetaCnst = True, - InputParticleMasses = [0.511,0.511], - MassForConstraint = 2., - VertexForConstraint = [0.,0.,0.], - CovVrtForConstraint = [0.015*0.015,0.,0.015*0.015,0.,0.,10000.*10000.], - MakeExtendedVertex=True - # MakeExtendedVertex=False -# IterationPrecision = 1.e-5, - ) - -ToolSvc += InDetConversionVxFitterTool -print InDetConversionVxFitterTool - -#next instruction no more useful but keep it for a while -#theJob.PAUanalysis.VertexFitterTool = InDetConversionVxFitterTool - - - -###### Vertex fitter : need to put a second instance to prevent perturbation to convFlag value ###### -#this is the standard one -from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter -InDetConversionVxFitterTool = Trk__TrkVKalVrtFitter(name = "InDetConversionVxFitter", - Extrapolator = theAtlasExtrapolator, - IterationNumber = 30, - MagFieldSvc = theAtlasMagField, - Robustness = 6, - usePhiCnst = True, - useThetaCnst = True, - InputParticleMasses = [0.511,0.511], - MakeExtendedVertex=True, - FirstMeasuredPoint=True - ) - -###### Vertex fitter : need to put a second instance to prevent perturbation to convFlag value ##### -#This is the one for HybridPrimaryVertex -from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter -InDetConversionVxFitterToolBis = Trk__TrkVKalVrtFitter(name = "InDetConversionVxFitterBis", - Extrapolator = theAtlasExtrapolator, - IterationNumber = 30, - MagFieldSvc = theAtlasMagField, - Robustness = 6, - usePhiCnst = True, - useThetaCnst = True, - InputParticleMasses = [0.511,0.511], - MakeExtendedVertex=True, - FirstMeasuredPoint=True - ) - -ToolSvc += InDetConversionVxFitterToolBis -#next line is debugging mode, for providing feedback to Vadim if some bugs are found. -#ToolSvc.InDetConversionVxFitterBis.OutputLevel= DEBUG -print InDetConversionVxFitterToolBis - -# Distance of minimum approach utility -# -from TrkVertexSeedFinderUtils.TrkVertexSeedFinderUtilsConf import Trk__SeedNewtonTrkDistanceFinder -InDetConversionTrkDistanceFinder = Trk__SeedNewtonTrkDistanceFinder(name = 'InDetConversionTrkDistanceFinder') -ToolSvc += InDetConversionTrkDistanceFinder -print InDetConversionTrkDistanceFinder - -# Straight line propagator needed to clean-up single track conversions -# -from TrkExSlPropagator.TrkExSlPropagatorConf import Trk__StraightLinePropagator as Propagator -InDetConversionPropagator = Propagator(name = 'InDetConversionPropagator') -ToolSvc += InDetConversionPropagator -print InDetConversionPropagator - -# Helper Tool -# -from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__ConversionFinderUtils -InDetConversionHelper = InDet__ConversionFinderUtils(name = "ConversionFinderUtils") -ToolSvc += InDetConversionHelper -print InDetConversionHelper - -# Track selector tool -# -from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetConversionTrackSelectorTool -InDetConversionTrackSelector = InDet__InDetConversionTrackSelectorTool(name = "ConversionTrackSelector", - Extrapolator = theAtlasExtrapolator, - maxSiD0 = 10000., #50., #50.0, # 10000., - maxTrtD0 = 10000., #100., #100., # 10000., - maxSiZ0 = 10000., #350.0, # 10000., - maxTrtZ0 = 10000., #1400., # 10000., - minPt = 500.0, - RatioCut1 = 0.0, #0.5, #0.5, # 0., - RatioCut2 = 0.1, #0.1, # 0., - RatioCut3 = 0.1) #0.05) # 0., maxSiD0 = 50.0, - -# maxTrtD0 = 100., -# maxSiZ0 = 10000., -# maxTrtZ0 = 10000., -# minPt = 500.0, -# RatioCut1 = 0., #0.5, -# RatioCut2 = 0., #0.1, -# RatioCut3 = 0.) #0.05) - -ToolSvc += InDetConversionTrackSelector -print InDetConversionTrackSelector - -# Track pairs selector -# -from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__TrackPairsSelector -InDetConversionTrackPairsSelector = InDet__TrackPairsSelector(name = "ConversionTrackPairsSelector", - ConversionFinderHelperTool = InDetConversionHelper, - DistanceTool = InDetConversionTrkDistanceFinder, - MaxFirstHitRadius = 500., - MaxDistBetweenTracks = [10.,50.,50.],#[6.,90.,30.], - MaxEta = [.3,.5,.5]) #[0.5,0.9,0.4], -# MaxInitDistance = [350.,640.,80.]) - -ToolSvc += InDetConversionTrackPairsSelector -print InDetConversionTrackPairsSelector - -# Vertex point estimator -# -from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__VertexPointEstimator -InDetConversionVtxPointEstimator = InDet__VertexPointEstimator(name = "ConversionVtxPointEstimator", -# MaxTrkXYDiffAtVtx = [6.,8.,2.], -# MaxTrkZDiffAtVtx = [80.,380.,80.], -# MaxTrkXYValue = [450.,650.,400.], -# MinArcLength = [30.,80.,350.], -# MaxArcLength = [600.,650.,680.], -# MaxChi2OfVtxEstimation = 20.) - MinDeltaR = [-5.,-25.,-50.], - MaxDeltaR = [5.,10.,10.], - MaxPhi = [0.05, 0.1, 0.1]) -ToolSvc += InDetConversionVtxPointEstimator -print InDetConversionVtxPointEstimator - -# Conversion post selector -# -from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__ConversionPostSelector -InDetConversionPostSelector = InDet__ConversionPostSelector(name = "ConversionPostSelector", - # MaxChi2PerTrack = [400., 100., 80.], # [10000.,10000.,10000.], #[40.,50.,25.], - MaxChi2Vtx = [50., 50., 50.], - MaxInvariantMass = [10000., 10000., 10000.], #[60., 60., 30.], # [10000.,10000.,10000.], #[60.,50.,25.], - MinFitMomentum = [0., 0., 0.], #[2000., 2000., 2000.], # [0.,0.,0.], #[2000.,2000.,2000.], - MinRadius = [-10000., -10000., -10000.], #[30., 35., 250.], # [0.,0.,0.], #[30.,35.,350.], - MinPt = 0., # 500., - MaxdR = -10000., #-250.) # -10000.) #-100. - MaxPhiVtxTrk = 10000.) -ToolSvc += InDetConversionPostSelector -print InDetConversionPostSelector - -# Single track conversion tool -# -from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__SingleTrackConversionTool -InDetSingleTrackConversion = InDet__SingleTrackConversionTool(name = "SingleTrackConversionTool", - ConversionFinderHelperTool = InDetConversionHelper, - #TrackSummaryTool = InDetTrackSummaryTool, - TrackSummaryTool = theAtlasTrackSummaryTool, - MinInitialHitRadius = 70., - MinRatioOfHLhits = 0.95)#0.5) -ToolSvc += InDetSingleTrackConversion -print InDetSingleTrackConversion - -############################################################################################################ -#for the second instance : for HybridPrimaryVertex -from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__InDetConversionFinderTools -InDetConversionFinderToolsBis = InDet__InDetConversionFinderTools(name = "InDetConversionFinderToolsBis", -#next line : don't put Bis to prevent conflict with HybridPrimaryVertex - VertexFitterTool = InDetConversionVxFitterTool, - TrackSelectorTool = InDetConversionTrackSelector, - TrackPairsSelector = InDetConversionTrackPairsSelector, - ConversionFinderHelperTool = InDetConversionHelper, - VertexPointEstimator = InDetConversionVtxPointEstimator, - PostSelector = InDetConversionPostSelector, - SingleTrackConversionTool = InDetSingleTrackConversion, - Extrapolator = theAtlasExtrapolator, - TrackParticleCollection = "TrackParticleCandidate", - RemoveTrtTracks = False, - IsConversion = True) -ToolSvc += InDetConversionFinderToolsBis -print InDetConversionFinderToolsBis - -#This is the standard one -from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__InDetConversionFinderTools -InDetConversionFinderTools = InDet__InDetConversionFinderTools(name = "InDetConversionFinderTools", - VertexFitterTool = InDetConversionVxFitterTool, - TrackSelectorTool = InDetConversionTrackSelector, - TrackPairsSelector = InDetConversionTrackPairsSelector, - ConversionFinderHelperTool = InDetConversionHelper, - VertexPointEstimator = InDetConversionVtxPointEstimator, - PostSelector = InDetConversionPostSelector, - SingleTrackConversionTool = InDetSingleTrackConversion, - #Extrapolator = InDetExtrapolator, - Extrapolator = theAtlasExtrapolator, - TrackParticleCollection = "TrackParticleCandidate", - RemoveTrtTracks = False, - IsConversion = True) -ToolSvc += InDetConversionFinderTools -print InDetConversionFinderTools - - - -############################################################################################################ -#for the second instance -from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__InDetConversionFinderTools -InDetConversionFinderToolsBis = InDet__InDetConversionFinderTools(name = "InDetConversionFinderToolsBis", - VertexFitterTool = InDetConversionVxFitterToolBis, - TrackSelectorTool = InDetConversionTrackSelector, - TrackPairsSelector = InDetConversionTrackPairsSelector, - ConversionFinderHelperTool = InDetConversionHelper, - VertexPointEstimator = InDetConversionVtxPointEstimator, - PostSelector = InDetConversionPostSelector, - SingleTrackConversionTool = InDetSingleTrackConversion, - Extrapolator = theAtlasExtrapolator, - TrackParticleCollection = "TrackParticleCandidate", - RemoveTrtTracks = False, - IsConversion = True) -ToolSvc += InDetConversionFinderToolsBis -print InDetConversionFinderToolsBis -############################################################################################################ - -from TrkMagFieldTools.TrkMagFieldToolsConf import Trk__MagneticFieldTool -theAtlasMagField = Trk__MagneticFieldTool('theAtlasMagField') -ToolSvc += theAtlasMagField - -###### Vertex fitter ###### -from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter -InDetConversionVxFitterTool = Trk__TrkVKalVrtFitter(name = "InDetConversionVxFitter", - # Extrapolator = InDetExtrapolator, - Extrapolator = theAtlasExtrapolator, - IterationNumber = 30, - #MagFieldSvc = InDetMagField, - MagFieldSvc = theAtlasMagField, - Robustness = 6, -#This line has no more meaning Constraint = 12, - usePhiCnst = True, - useThetaCnst = True, - InputParticleMasses = [0.511,0.511], - MassForConstraint = 2., - VertexForConstraint = [0.,0.,0.], - CovVrtForConstraint = [0.015*0.015,0.,0.015*0.015,0.,0.,10000.*10000.]) -ToolSvc += InDetConversionVxFitterTool - -#################################################################################################################### - - - -from TrackToVertex.TrackToVertexConf import Reco__TrackToVertex -TrackToVertexTool = Reco__TrackToVertex() -ToolSvc += TrackToVertexTool - -from TrkExTools.AtlasExtrapolator import AtlasExtrapolator -EMTrackIsolationExtrapolator = AtlasExtrapolator() -ToolSvc+=EMTrackIsolationExtrapolator - -from TrkTrackSummaryTool.AtlasTrackSummaryTool import AtlasTrackSummaryTool -EMTrackIsolationTrackSummaryTool = AtlasTrackSummaryTool() -ToolSvc += EMTrackIsolationTrackSummaryTool - -from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool -OuterTrackIsolationTrackSelectorTool = InDet__InDetDetailedTrackSelectorTool(name = "OuterTrackIsolationTrackSelectorTool", - pTMin = 1000., - IPd0Max = 1.*mm, - IPz0Max = 9999., - nHitBLayer = 1, - nHitPix = 0, - nHitSct = 0, - nHitSi = 7, - #TrtMaxEtaAcceptance = 0, #don't check nb TRT hits - nHitTrt = 0, - #nSharedBLayer = 999, - #nSharedPix = 999, - #nSharedSct = 999, - #nSharedSi = 999, - useTrackQualityInfo = False, - #d0MaxPreselection = 9999., - TrackSummaryTool = EMTrackIsolationTrackSummaryTool, - Extrapolator = EMTrackIsolationExtrapolator, - OutputLevel = WARNING) -ToolSvc += OuterTrackIsolationTrackSelectorTool -OuterTrackIsolationTrackSelectorTool.OutputLevel = INFO - -InnerTrackIsolationTrackSelectorTool = InDet__InDetDetailedTrackSelectorTool(name = "InnerTrackIsolationTrackSelectorTool", - pTMin = 1000., - IPd0Max = 1.*mm, - IPz0Max = 9999., - nHitBLayer = 1, - nHitPix = 0, - nHitSct = 0, - nHitSi = 7, - #TrtMaxEtaAcceptance = 0, #don't check nb TRT hits - nHitTrt = 0, - #nSharedBLayer = 999, - #nSharedPix = 999, - #nSharedSct = 999, - #nSharedSi = 999, - useTrackQualityInfo = False, - #d0MaxPreselection = 9999., - TrackSummaryTool = EMTrackIsolationTrackSummaryTool, - Extrapolator = EMTrackIsolationExtrapolator, - OutputLevel = WARNING) -ToolSvc += InnerTrackIsolationTrackSelectorTool -InnerTrackIsolationTrackSelectorTool.OutputLevel = INFO - -from TrackIsolationTools.TrackIsolationToolsConf import TrackIsolationTool -NewTrackIsolationTool = TrackIsolationTool( - name = "NewTrackIsolationTool", - DoTrackIsolation = True, - DoSumConversionTracks = False, - InnerCone = 0.1, - PtMaxInnerCone = 99999999., - UseInnerConeTrkSelection = True, - TrackParticleCollection = "TrackParticleCandidate", - ConversionContainer = "ConversionCandidate", - CaloCellContainer = CaloCells, # ESD: "AllCalo", AOD: "AODCellContainer" - TrackSelector = OuterTrackIsolationTrackSelectorTool, - InnerConeTrackSelector = InnerTrackIsolationTrackSelectorTool, - TrackToVertex = TrackToVertexTool, - DeltaRTolerance = 0. -) -ToolSvc += NewTrackIsolationTool -NewTrackIsolationTool.OutputLevel = ERROR - -print "---------------> NewTrackIsolation" -print NewTrackIsolationTool - -#################################################################################################################### - - - - - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUphotonIdentificationTool -ToolSvc += PAUphotonIdentificationTool() -ToolSvc.PAUphotonIdentificationTool.EgDetailContainerName = PhotonsDetailsContainerName - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUphotonCorrectionTool -ToolSvc += PAUphotonCorrectionTool() -ToolSvc.PAUphotonCorrectionTool.OutputLevel = INFO - -if not 'doReRunEgamma' in dir(): #to be used by PAUphotonSelector only - doReRunEgamma = False - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUphotonSelector -ToolSvc += PAUphotonSelector() -ToolSvc.PAUphotonSelector.OutputLevel = INFO -#ToolSvc.PAUphotonSelector.doRecovery = True -ToolSvc.PAUphotonSelector.PhotonContainer = PhotonContainerMerged -ToolSvc.PAUphotonSelector.TrackIsolationTool = NewTrackIsolationTool -ToolSvc.PAUphotonSelector.UsePhotonRecoveryTool = usePhotonRecoveryTool -ToolSvc.PAUphotonSelector.UsePAUconversionFlagTool = usePAUconversionFlagTool -ToolSvc.PAUphotonSelector.EgDetailContainerName = PhotonsDetailsContainerName -ToolSvc.PAUphotonSelector.RemovePhotonWithoutEgDetail = doReRunEgamma - -#FANTI ToolSvc.PAUphotonSelector.LoopOverElectronContainer = LoopOverElectronContainer -# --- Photon selection: -#ToolSvc.PAUphotonSelector.GammaTypeNames = [ "unconv" ] # default is [ "unconv" , "conv1" , "conv2" ] -#ToolSvc.PAUphotonSelector.PtIsolationCut = ... # Pt cut in MeV (default is 4000; negative value for not using isolation tool) -#ToolSvc.PAUphotonSelector.PhotonIDbyCuts = ... # photon ID (default==0 use isem(PhotonTight); >0 use G.Unal's itune ; -1 use likelihood) -#ToolSvc.PAUphotonSelector.PhotonIDlogLHcut = ... # set cut for photon ID loglikelihood (default==9.4; works if PhotonIDbyCuts==-1) -# --- Event selection: -#ToolSvc.PAUphotonSelector.PtCut1 = ... # inclusive selection: pt cut (MeV) for leading photon (default is 40 GeV) -#ToolSvc.PAUphotonSelector.PtCut2 = ... # inclusive selection: pt cut (MeV) for sub-leading photon (default is 25 GeV) -# --- printout -#ToolSvc.PAUphotonSelector.DumpReco = True # dump reco e/gammas in file dumpReco.txt (~ 0.8 K/evt) -#ToolSvc.PAUphotonSelector.FileEventSummary = "myEventSummary.txt" # comment out to switch off event summary -#ToolSvc.PAUphotonSelector.FileEventDetails = "myEventDetails.txt" # comment out to switch off event details -#ToolSvc.PAUphotonSelector.DumpTriggerDecision = True # dump at INFO level, default is False - -if doESD: - from McParticleTools.McParticleToolsConf import TruthParticleCnvTool - TruthParticleCnvTool.McEvents = MCEventCollection - TruthParticleCnvTool.TruthParticlesOutput = MCParticleContainer - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUtruthTool -ToolSvc += PAUtruthTool() -ToolSvc.PAUtruthTool.OutputLevel = INFO -# --- Truth handling: -#ToolSvc.PAUtruthTool.EGammasFromTruth = True # all e/gamma are kept (otherwise only gammas from H->gg) (default is true) -#ToolSvc.PAUtruthTool.MuonsFromTruth = True # all muons are kept (default is true) -#ToolSvc.PAUtruthTool.HadronsFromTruth = True # all hadrons are kept (default is true) -#ToolSvc.PAUtruthTool.PartonsFromTruth = True # all partons are kept (default is false) -#ToolSvc.PAUtruthTool.RTruthConv = ... # maximum conversion/interaction radius (in mm, default is 800) -#ToolSvc.PAUtruthTool.ZTruthConv = ... # maximum conversion/interaction z (in mm, default is 2800) -#ToolSvc.PAUtruthTool.PtTruthCut = ... # reject truth particles produced with pt<PtTruthCut (in MeV) -#ToolSvc.PAUtruthTool.deltaRmatch = ... # deltaR for angular Reco/Truth match (default is 0.1) -# --- Containers' SG keys -ToolSvc.PAUtruthTool.MCParticleContainer = MCParticleContainer -ToolSvc.PAUtruthTool.MCEventCollection = MCEventCollection -ToolSvc.PAUtruthTool.TruthJetsContainer = TruthJetsContainer -ToolSvc.PAUtruthTool.ConvertFromESD = doESD - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUtruthMatchingTool -ToolSvc += PAUtruthMatchingTool() -ToolSvc.PAUtruthMatchingTool.OutputLevel = INFO - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUconversionFlagTool -ToolSvc += PAUconversionFlagTool() -ToolSvc.PAUconversionFlagTool.ExtrapolateToCaloToolName=exToCalo.name() -#ToolSvc.PAUconversionFlagTool.VertexFinderToolName= InDetConversionFinderTools.getFullName() -ToolSvc.PAUconversionFlagTool.VertexFinderToolName= InDetConversionFinderToolsBis.getFullName() -ToolSvc.PAUconversionFlagTool.OutputLevel = INFO -#ToolSvc.PAUconversionFlagTool.useBDT=True -#ToolSvc.PAUconversionFlagTool.BDTCut=0.2 -#ToolSvc.PAUconversionFlagTool.DBTFileName="TMVAnalysis_BDT.weights.txt" - -ToolSvc.PAUconversionFlagTool.SingleTrkConvTool = InDetSingleTrackConversion - - - - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUhybridPrimaryVertexTool - -ToolSvc += PAUhybridPrimaryVertexTool() - -from CaloDetDescr.CaloDepthToolBase import CaloDepthToolFactory -hybridCaloDepthTool=CaloDepthToolFactory(depth='cscopt2') -#showerdefault -ToolSvc.PAUhybridPrimaryVertexTool.CaloDepthTool=hybridCaloDepthTool.getFullName() - -ToolSvc.PAUhybridPrimaryVertexTool.ExtrapolationTool=theAtlasExtrapolator -ToolSvc.PAUhybridPrimaryVertexTool.OutputLevel= INFO -ToolSvc.PAUhybridPrimaryVertexTool.SingleTrkConvTool = InDetSingleTrackConversion -#ToolSvc.PAUhybridPrimaryVertexTool.VertexFitterTool = InDetConversionVxFitterTool -ToolSvc.PAUhybridPrimaryVertexTool.VertexFitterTool = InDetConversionVxFitterToolBis -ToolSvc.PAUhybridPrimaryVertexTool.ExtrapolateToCaloToolName=exToCalo.name() -ToolSvc.PAUhybridPrimaryVertexTool.VertexFinderToolName= InDetConversionFinderToolsBis.getFullName() - - - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUtrackIsolationTool -ToolSvc += PAUtrackIsolationTool() -ToolSvc.PAUtrackIsolationTool.ExtrapolationTool=theAtlasExtrapolator - -from PhotonAnalysisUtils.PhotonAnalysisUtilsConf import PAUhggFitter -ToolSvc += PAUhggFitter() -ToolSvc.PAUhggFitter.ExtrapolationTool=theAtlasExtrapolator - -from AthenaCommon import CfgMgr -CfgMgr.PAUanalysis(SingleTrkConvTool = InDetSingleTrackConversion) - - - - - - - - - - - - diff --git a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1AnalysisCommon/share/README b/PhysicsAnalysis/HiggsPhys/HSG1/HSG1AnalysisCommon/share/README deleted file mode 100644 index b2a171e47edc8d5fb9a234a45b7feba4f1f1ea9e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1AnalysisCommon/share/README +++ /dev/null @@ -1 +0,0 @@ -HSG1_CommonJobOptions.py is for PAU82, release 16.0.0, and 15.6.2 diff --git a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1DPDUtils/CMakeLists.txt b/PhysicsAnalysis/HiggsPhys/HSG1/HSG1DPDUtils/CMakeLists.txt deleted file mode 100644 index bda8c9aa1d6eac8d57441e197b0672f1a7a1ccb1..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1DPDUtils/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -################################################################################ -# Package: HSG1DPDUtils -################################################################################ - -# Declare the package name: -atlas_subdir( HSG1DPDUtils ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Tools/PyJobTransformsCore ) - -# Install files from the package: -atlas_install_python_modules( python/*.py ) - diff --git a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1DPDUtils/python/HSG1Filter.py b/PhysicsAnalysis/HiggsPhys/HSG1/HSG1DPDUtils/python/HSG1Filter.py deleted file mode 100755 index 78fc1aec5f784ec31c2b5ab0ef6f2263ad3d1b42..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1DPDUtils/python/HSG1Filter.py +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -##============================= -## Name: HSG1Filter -## -## Author: James Saxon -## Created: February 2013 -##============================= - -__doc__ = "Perform the HSG1 preselection." -__author__ = "James Saxon" - -import AthenaPython.PyAthena as PyAthena -from AthenaPython.PyAthena import StatusCode - -from PrimaryDPDMaker import PrimaryDPDHelpers - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -# ---- Load the egammaPID and egammaParameters information -# This is needed to always be up-to-date with the egamma -# IsEM selections and also the author selections -from ROOT import egammaPID -from ROOT import egammaParameters - -from math import fabs - - -####################################################### -#### THIS CLASS DEFINES THE PHOTON SELECTION #### -####################################################### - -class HSG1PreselectionFilter( PyAthena.AthFilterAlgorithm ): - - """ - This class performs (most of) the HSG1 preselection. - """ - - def __init__ ( self, name = "HSG1PreselectionFilter", **kw ): - - ## initialize base class - kw['name'] = name - super(HSG1PreselectionFilter, self).__init__(**kw) - - ## Define the cuts - self.photonCollectionType = kw.get('photonCollectionType', "PhotonContainer") - self.photonCollectionName = kw.get('photonCollectionName', "PhotonAODCollection") - - ## Get the storgate handle - self.storeGateSvc = None - - - def initialize(self): - self.msg.info( '************************************' ) - self.msg.info( '==> initialize %s...', self.name() ) - self.msg.info( 'Will apply the following cuts:' ) - self.msg.info( ' photonCollectionName = %r', self.photonCollectionName ) - self.msg.info( '************************************' ) - - ## Also, declare some counters and initialize them to zero - self.nProcessed = 0 - self.nLeading = 0 - self.nTotal = 0 - self.nPassed = 0 - - ## Get the StoreGate service - self.storeGateSvc = PyAthena.py_svc('StoreGateSvc') - if self.storeGateSvc is None: - self.msg.error("Problem retrieving StoreGateSvc pointer !!") - return StatusCode.Failure - - return StatusCode.Success - - def execute(self): - - self.nProcessed += 1 - self.nLeading = 0 - self.nTotal = 0 - self.msg.debug( '==> execute %s on %r. event...' % (self.name(), self.nProcessed) ) - - #--- Photons! - photonCollection = None - try: - - photonCollection = self.storeGateSvc.retrieve( self.photonCollectionType, - self.photonCollectionName ) - for photon in photonCollection : - - if photon.isem(egammaPID.PhotonLoose): - continue - - if photon.isem(0x800000): - continue - - if photon.isgoodoq(34214): - continue - -# eta = fabs(photon.cluster().etaBE(2)) -# if 1.37 < eta < 1.55 or 2.37 < eta: -# continue - - # using > 5% as a (very) conservative max(alpha) - if photon.hlv().perp() > 37.*Units.GeV: - self.nLeading += 1 - - if photon.hlv().perp() > 27.*Units.GeV: - self.nTotal += 1 - - except LookupError: - self.msg.warning( 'Collection %s not found' % self.photonCollectionName ) - - if self.nLeading and self.nTotal >= 2: - self.msg.debug( '%s event passed' % self.name() ) - self.setFilterPassed(True) - self.nPassed += 1 - - else: - self.msg.debug( '%s event failed' % self.name() ) - self.setFilterPassed(False) - - return StatusCode.Success - - - def finalize(self): - self.msg.info( '==> finalize %s...' % self.name() ) - self.msg.info( '***************************************************************' ) - self.msg.info( 'Cut-flow table of %s skimming algorithm:' % self.name() ) - self.msg.info( '-------------' ) - self.msg.info( ' Number of processed events: %r' % self.nProcessed ) - - self.msg.info( ' Number of events passed : %r' % self.nPassed ) - - return StatusCode.Success - diff --git a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1DPDUtils/share/DAOD_HSG1.py b/PhysicsAnalysis/HiggsPhys/HSG1/HSG1DPDUtils/share/DAOD_HSG1.py deleted file mode 100644 index d0cb9f833188d5540e9f89007c4ee6277124c6b3..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG1/HSG1DPDUtils/share/DAOD_HSG1.py +++ /dev/null @@ -1,90 +0,0 @@ -##=================================== -## Name: DAOD_HSG1 -## -## Author: James Saxon -## Created: February 2013 -##=================================== - -__doc__ = "Perform the HSG1 preselection." -__author__ = "James Saxon" - -#if this file is already inlcuded, don't include it again -include.block("DAOD_HSG1.py") - - -from AthenaCommon.AlgSequence import AlgSequence -import AthenaPython.PyAthena as PyAthena -from AthenaPython.PyAthena import StatusCode - -## for messaging -from AthenaCommon.Logging import logging -DAOD_EGammaStream_msg = logging.getLogger( 'DAOD_EGammaStream' ) - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from PrimaryDPDMaker.PrimaryDPDFlags import primDPD -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -## This handles multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - - -##==================================================================== -## Define the skimming (event selection) for the ZEEPHO DAOD output stream -##==================================================================== -from PrimaryDPDMaker.TriggerFilter import TriggerFilter -from D2PDMaker.D2PDMakerConf import D2PDVertexSelector - -topSequence += TriggerFilter("DAODM_HSG1_EF_g35_loose_g25_loose", trigger = "EF_g35_loose_g25_loose") - -topSequence += D2PDVertexSelector("DAODM_HSG1_VertexFilter", - inputCollection = 'VxPrimaryCandidate', - minNumberVxTracks = 2) - -from HSG1DPDUtils.HSG1Filter import HSG1PreselectionFilter -topSequence += HSG1PreselectionFilter("DAODM_HSG1_PreselectionFilter") - -# book-keeping for these three pieces.... -hsg1FilterBookkeeping = ["DAODM_HSG1_EF_g35_loose_g25_loose", - "DAODM_HSG1_VertexFilter", - "DAODM_HSG1_PreselectionFilter"] - - -##### DO I NEED TO DO THIS??? -# streamName = primDPD.WriteDAOD_ZEEGAMMAStream.StreamName -# fileName = buildFileName( primDPD.WriteDAOD_ZEEGAMMAStream ) -# if primDPD.isVirtual() == False: -# DAOD_EGammaStream = MSMgr.NewPoolStream( streamName, fileName ) -# pass -# if primDPD.isVirtual() == True: -# DAOD_EGammaStream = MSMgr.NewVirtualStream( streamName, fileName ) -# pass - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from D2PDMaker.D2PDFlags import D2PDFlags -from D2PDMaker.D2PDHelpers import buildFileName -fileName = buildFileName( D2PDFlags.WriteDAODM_HSG1Stream ) -streamName = D2PDFlags.WriteDAODM_HSG1Stream.StreamName - -DAOD_EGammaStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -# SkimmedOutputStream.AcceptAlgs( [""] ) -DAOD_EGammaStream.RequireAlgs( [ "DAODM_HSG1_EF_g35_loose_g25_loose", - "DAODM_HSG1_VertexFilter", - "DAODM_HSG1_PreselectionFilter"] ) - -DAOD_EGammaStream.AddOtherAlgsToBookkeep( hsg1FilterBookkeeping ) - -excludeList = [] -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput -dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - - diff --git a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/CMakeLists.txt b/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/CMakeLists.txt deleted file mode 100644 index 7dadb666fbb3d83b733ec14746944a313edf48fc..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -################################################################################ -# Package: HSG2Event -################################################################################ - -# Declare the package name: -atlas_subdir( HSG2Event ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthLinks - Control/AthenaKernel - PhysicsAnalysis/AnalysisCommon/ParticleEvent - Tracking/TrkEvent/VxVertex ) - -# External dependencies: -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) - -# Component(s) in the package: -atlas_add_library( HSG2Event - src/*.cxx - PUBLIC_HEADERS HSG2Event - PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES AthLinks AthenaKernel ParticleEvent VxVertex - PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ) - -atlas_add_dictionary( HSG2EventDict - HSG2Event/HSG2EventDict.h - HSG2Event/selection.xml - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthLinks AthenaKernel ParticleEvent VxVertex HSG2Event ) - diff --git a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/HSG2EventDict.h b/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/HSG2EventDict.h deleted file mode 100644 index 7d7a9ed131edd2224617f4982c24779141c5aec8..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/HSG2EventDict.h +++ /dev/null @@ -1,15 +0,0 @@ -// Dear emacs, this is -*- c++ -*- - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: HSG2EventDict.h 484888 2012-02-24 11:20:26Z krasznaa $ -#ifndef HSG2EVENT_HSG2EVENTDICT_H -#define HSG2EVENT_HSG2EVENTDICT_H - -// Local include(s): -#include "HSG2Event/QuadrupletContainer.h" -#include "HSG2Event/Quadruplet.h" - -#endif // HSG2EVENT_HSG2EVENTDICT_H diff --git a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/Quadruplet.h b/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/Quadruplet.h deleted file mode 100644 index 39d51c6919eaedef2728dffa079278cf1646ad4b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/Quadruplet.h +++ /dev/null @@ -1,96 +0,0 @@ -// Dear emacs, this is -*- c++ -*- - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: Quadruplet.h 485033 2012-02-24 16:54:50Z krasznaa $ -#ifndef HSG2Event_Quadruplet_H -#define HSG2Event_Quadruplet_H - -// EDM include(s): -#include "AthLinks/ElementLink.h" -#include "VxVertex/VxContainer.h" -#include "ParticleEvent/CompositeParticleContainer.h" - -/** - * @short Namespace for HSG2 related classes - * - * To play nice, we put (almost) all the classes used in the - * Athena codes of the HSG2 (H->ZZ) group into this namespace. - * - * @author Kirill Prokofiev <Kirill.Prokofiev@cern.ch> - * @author Attila Krasznahorkay <Attila.Krasznahorkay@cern.ch> - * - * $Revision: 485033 $ - * $Date: 2012-02-24 17:54:50 +0100 (Fri, 24 Feb 2012) $ - */ -namespace HSG2 { - - /** - * @short Type definition used for 4-lepton quadruplets - * - * It might look better inside the Quadruplet class, but - * oh well... It's just a simple listing of 4-lepton - * types that the analysis uses. - */ - enum FinalState { - fs_4mu = 0, ///< 4 muon final state - fs_4e = 1, ///< 4 electron final state - fs_2e2mu = 2, ///< 2 electron - 2 muon final state - fs_undef = 100 ///< Undefined final state, needed for technical reasons - }; // enum FinalState - - /** - * @class HSG2::Quadruplet.h - * @short Top level object defining lepton quadruplets - * - * Multi-lepton objects can in principle simply be created using - * the CompositeParticle class on its own. The reason why we need - * this class is that we want to associate the 4-lepton composite - * objects with the vertex objects that were reconstructed using - * their tracks. - * - * @author Kirill Prokofiev <Kirill.Prokofiev@cern.ch> - * @author Attila Krasznahorkay <Attila.Krasznahorkay@cern.ch> - * - * $Revision: 485033 $ - * $Date: 2012-02-24 17:54:50 +0100 (Fri, 24 Feb 2012) $ - */ - class Quadruplet { - - public: - /// Default constructor needed for persistency - Quadruplet(); - /// Constructor specifying all properties of the object - Quadruplet( const ElementLink< CompositeParticleContainer >& particle, - const ElementLink< VxContainer >& vertex, - FinalState fs ); - - /// Get the composite particle describing this quadruplet - const ElementLink< CompositeParticleContainer >& particle() const; - /// Get the vertex created from the lepton tracks - const ElementLink< VxContainer >& vertex() const; - /// Get the type of the quadruplet - FinalState finalState() const; - - /// Set the composite particle describing this quadruplet - void setParticle( const ElementLink< CompositeParticleContainer >& comb ); - /// Set the vertex created from the lepton tracks - void setVertex( const ElementLink< VxContainer >& vertex ); - /// Set the type of the quadruplet - void setFinalState( FinalState fs ); - - protected: - /// Link to the composite particle holding the 4 leptons - ElementLink< CompositeParticleContainer > m_particle; - /// Link to the vertex reconstructed from the leptons - ElementLink< VxContainer > m_vertex; - /// Decoded final state enumeration to be used during event processing - FinalState m_finalState; - - }; // class Quadruplet - -}//end of namespace definitions - -#endif /// HSG2Event_Quadruplet_H diff --git a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/QuadrupletContainer.h b/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/QuadrupletContainer.h deleted file mode 100644 index 26db4c336f84dc79592af4cbc0c60b3a5cd6dbea..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/QuadrupletContainer.h +++ /dev/null @@ -1,44 +0,0 @@ -// Dear emacs, this is -*- c++ -*- - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: QuadrupletContainer.h 485033 2012-02-24 16:54:50Z krasznaa $ -#ifndef HSG2Event_QuadrupletContainer_H -#define HSG2Event_QuadrupletContainer_H - -// Gaudi/Athena include(s): -#include "AthContainers/DataVector.h" -#include "AthenaKernel/CLASS_DEF.h" -#include "AthenaKernel/BaseInfo.h" - -// Local include(s): -#include "Quadruplet.h" - -/** - * @class QuadrupletContainer - * @short Container for reconstructed quadruplets - * - * Such containers can be put into StoreGate to hold the - * 4-lepton candidates that were reconstructed by some algorithm. - * - * @author Kirill Prokofiev <Kirill.Prokofiev@cern.ch> - * @author Attila Krasznahorkay <Attila.Krasznahorkay@cern.ch> - * - * $Revision: 485033 $ - * $Date: 2012-02-24 17:54:50 +0100 (Fri, 24 Feb 2012) $ - */ -class QuadrupletContainer : public DataVector< HSG2::Quadruplet > { - -public: - /// Constructor with ownership policy - QuadrupletContainer( SG::OwnershipPolicy own = SG::OWN_ELEMENTS ) - : DataVector< HSG2::Quadruplet >( own ) {} - -}; // class QuadrupletContainer - -CLASS_DEF( QuadrupletContainer, 1146749485, 1 ) -SG_BASE( QuadrupletContainer, DataVector<HSG2::Quadruplet> ); - -#endif // HSG2Event_QuadrupletContainer_H diff --git a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/selection.xml b/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/selection.xml deleted file mode 100644 index f4acce9c38932587ec80d7f71abd93de4a8828d5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/HSG2Event/selection.xml +++ /dev/null @@ -1,6 +0,0 @@ -<lcgdict> - - <class name="QuadrupletContainer" id="6C9EEE63-6415-4A3A-A31D-1F9E11264008" /> - <class name="HSG2::Quadruplet" /> - -</lcgdict> diff --git a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/src/Quadruplet.cxx b/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/src/Quadruplet.cxx deleted file mode 100644 index f169cb40fe111a9887af0509deb40ddd4a088ecb..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG2/HSG2Event/src/Quadruplet.cxx +++ /dev/null @@ -1,96 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// $Id: Quadruplet.cxx 485033 2012-02-24 16:54:50Z krasznaa $ - -// EDM include(s): -#include "VxVertex/VxCandidate.h" -#include "ParticleEvent/CompositeParticle.h" - -// Local include(s): -#include "../HSG2Event/Quadruplet.h" - -namespace HSG2 { - - Quadruplet::Quadruplet() - : m_particle(), m_vertex(), m_finalState( fs_undef ) { - - } - - /** - * @param particle The CombinedParticle holding the 4 leptons - * @param vertex The vertex reconstructed from the lepton tracks - * @param fs The final state type - */ - Quadruplet::Quadruplet( const ElementLink< CompositeParticleContainer >& particle, - const ElementLink< VxContainer >& vertex, - FinalState fs ) - : m_particle( particle ), m_vertex( vertex ), m_finalState( fs ) { - - } - - /** - * @returns The CombinedParticle holding the 4 leptons - */ - const ElementLink< CompositeParticleContainer >& Quadruplet::particle() const { - - return m_particle; - } - - /** - * @returns The vertex reconstructed from the lepton tracks - */ - const ElementLink< VxContainer >& Quadruplet::vertex() const { - - return m_vertex; - } - - /** - * @returns The final state type - */ - FinalState Quadruplet::finalState() const { - - return m_finalState; - } - - /** - * The function only does anything if the ElementLink given to it is valid. If not, - * it just ignores the passed argument. - * - * @param particle The CombinedParticle holding the 4 leptons - */ - void Quadruplet::setParticle( const ElementLink< CompositeParticleContainer >& particle ) { - - if( particle.isValid() ) { - m_particle = particle; - } - - return; - } - - /** - * The function only does anything if the ElementLink given to it is valid. If not, - * it just ignores the passed argument. - * - * @param vertex The vertex reconstructed from the lepton tracks - */ - void Quadruplet::setVertex( const ElementLink< VxContainer>& vertex ) { - - if( vertex.isValid() ) { - m_vertex = vertex; - } - - return; - } - - /** - * @param fs The final state type - */ - void Quadruplet::setFinalState( FinalState fs ) { - - m_finalState = fs; - return; - } - -} // namespace HSG2 diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/CMakeLists.txt b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/CMakeLists.txt deleted file mode 100644 index d701f17f0679dc63b13889a00db799059a100ee1..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -################################################################################ -# Package: HSG5DPDUtils -################################################################################ - -# Declare the package name: -atlas_subdir( HSG5DPDUtils ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaBaseComps - Control/AthenaPython - PRIVATE - Event/NavFourMom - GaudiKernel - Reconstruction/Jet/JetEvent - Reconstruction/MuonIdentification/muonEvent ) - -# External dependencies: -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) - -# Component(s) in the package: -atlas_add_component( HSG5DPDUtils - src/*.cxx - src/components/*.cxx - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps NavFourMom GaudiKernel JetEvent muonEvent ) - -# Install files from the package: -atlas_install_headers( HSG5DPDUtils ) -atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/HSG5DPDUtils/LeptonFilter.h b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/HSG5DPDUtils/LeptonFilter.h deleted file mode 100644 index 62a2d49ab535b5fe0ff2e64175cc77643c26c122..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/HSG5DPDUtils/LeptonFilter.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef HSG5DPDUTILS_LEPTONFILTER_H -#define HSG5DPDUTILS_LEPTONFILTER_H - -#include "AthenaBaseComps/AthFilterAlgorithm.h" - -#include <string> - -class Algorithm; - -namespace HSG5 { - - class LeptonFilter : public AthFilterAlgorithm { - - public: - LeptonFilter(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~LeptonFilter(); - - virtual StatusCode initialize(); - virtual StatusCode execute(); - virtual StatusCode finalize(); - - private: - std::string findType(std::string l_property); - std::string findName(std::string l_property); - - Algorithm* m_electronFilter; - std::vector<Algorithm*> m_muonFilter; - - std::string m_electronFilterNameAndType; - std::vector<std::string> m_muonFilterNameAndTypeVec; - - }; - -} // end namespace - -#endif // HSG5DPDUTILS_LEPTONFILTER_H diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/HSG5DPDUtils/LeptonJetsFilter.h b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/HSG5DPDUtils/LeptonJetsFilter.h deleted file mode 100644 index 8b9bf220202fb25cadc1416d98a1c2fe2d91b6aa..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/HSG5DPDUtils/LeptonJetsFilter.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef HSG5DPDUTILS_LEPTONJETSFILTER_H -#define HSG5DPDUTILS_LEPTONJETSFILTER_H - -#include "AthenaBaseComps/AthFilterAlgorithm.h" - -#include <string> - - -namespace HSG5 { - - class LeptonJetsFilter : public AthFilterAlgorithm { - - public: - - LeptonJetsFilter(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~LeptonJetsFilter(); - - virtual StatusCode initialize(); - virtual StatusCode execute(); - virtual StatusCode finalize(); - - private: - - std::string m_selectedJetContainerName; - std::string m_selectedMuonContainerName; - - int m_minSumJetsAndMuon; - int m_maxSumJetsAndMuon; - - int m_nProcessed; - int m_nEventPassTrigger; - }; - -} // end namespace - -#endif // HSG5DPDUTILS_LEPTONJETSFILTER_H diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/BoostedJetFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/BoostedJetFilter.py deleted file mode 100644 index 760832a522cf70e980ea95fa41d710bc360b1147..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/BoostedJetFilter.py +++ /dev/null @@ -1,305 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -__doc__ = """This is a short algorithm to select events that contain one -boosted jet which fulfills a certain set of criteria. -""" -__version__ = "0.0.1" -__author__ = "Robert Harrington <R.Harrington@ed.ac.uk>" - - -import AthenaPython.PyAthena as PyAthena -from AthenaPython.PyAthena import StatusCode - -from PrimaryDPDMaker import PrimaryDPDHelpers - -import PyUtils.RootUtils as ru -ROOT = ru.import_root() -from ROOT import JetCollectionHelper - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -class JetFilter( PyAthena.AthFilterAlgorithm ): - """ - This class is a short algorithm to select events that contain one - jet which fulfills a certain set of criteria. All energies below - are uncalibrated (EM scale). The possible criteria are (with - default values): - jetCollectionType = "JetCollection" - jetCollectionName = "CamKt12LCTopoJets" - useUncalibratedJets = True - cutEtMin = 60.0*Units.GeV - cutEtaMin = 0 - cutEtaMax = 2.5 - removeOverlap = False - deltaR = 1.2 - leptonContainerTypeList = [] - leptonContainerNameList = [] - nLeadingsForCheck = 10000000 - minNumberPassed = 1 - recordGoodJets = False - goodJetCollectionName = self.name() - passAll = False - """ - - def __init__ ( self, name = "JetFilter", **kw ): - ## initialize base class - kw['name'] = name - super(JetFilter, self).__init__(**kw) - - ## Define the cuts - self.jetCollectionType = kw.get('jetCollectionType', "JetCollection") - self.jetCollectionName = kw.get('jetCollectionName', "CamKt12LCTopoJets") - self.useUncalibratedJets = kw.get('useUncalibratedJets', True) - self.cutEtMin = kw.get('cutEtMin', 60.0*Units.GeV) - self.cutEtaMin = kw.get('cutEtaMin', 0.0) - self.cutEtaMax = kw.get('cutEtaMax', 2.5) - self.removeOverlap = kw.get('removeOverlap', False) - self.deltaR = kw.get('deltaR', 1.2) - self.leptonContainerTypeList = kw.get('leptonContainerTypeList', []) - self.leptonContainerNameList = kw.get('leptonContainerNameList', []) - self.nLeadingsForCheck = kw.get('nLeadingsForCheck', 10000000) - self.minNumberPassed = kw.get('minNumberPassed', 1) - self.recordGoodJets = kw.get('recordGoodJets', False) - self.goodJetCollectionName = kw.get('goodBoostedJetCollectionName', self.name() ) - self.passAll = kw.get('passAll', False) - - ## Get the storgate handle - self.storeGateSvc = None - - ## Handle to JetSignalState - self.jss = None - - return - - - - - def initialize(self): - self.msg.info( '************************************' ) - self.msg.info( '==> initialize %s...', self.name() ) - self.msg.info( ' jetCollectionType = %r', self.jetCollectionType ) - self.msg.info( ' jetCollectionName = %r', self.jetCollectionName ) - self.msg.info( ' recordGoodJets = %r', self.recordGoodJets ) - self.msg.info( ' goodJetCollectionName = %r', self.goodJetCollectionName ) - self.msg.info( 'Will apply the following cuts:' ) - self.msg.info( ' useUncalibratedJets = %r', self.useUncalibratedJets ) - self.msg.info( ' EtMin (GeV) = %r', self.cutEtMin/Units.GeV ) - self.msg.info( ' EtaMin = %r', self.cutEtaMin ) - self.msg.info( ' EtaMax = %r', self.cutEtaMax ) - self.msg.info( ' removeOverlap = %r', self.removeOverlap ) - self.msg.info( ' deltaR = %r', self.deltaR ) - self.msg.info( ' leptonContainerTypeList = %r', self.leptonContainerTypeList ) - self.msg.info( ' leptonContainerNameList = %r', self.leptonContainerNameList ) - self.msg.info( ' nLeadingsForCheck = %r', self.nLeadingsForCheck ) - self.msg.info( ' minNumberPassed = %r', self.minNumberPassed ) - self.msg.info( ' passAll = %r', self.passAll ) - self.msg.info( '************************************' ) - - ## Initialize the counters - self.nProcessed = 0 - self.nJets = 0 - self.nEventPassed = 0 - - ## Import needed modules - import PyUtils.RootUtils as ru - ROOT = ru.import_root() - - ## Get the StoreGate service - self.storeGateSvc = PyAthena.py_svc('StoreGateSvc') - if self.storeGateSvc is None: - self.msg.error("Problem retrieving StoreGateSvc pointer !!") - return StatusCode.Failure - - ## Eagerly load library due to reflex bug (autoloading enums/namespaces doesn't work) - PyAthena.load_library ('FourMomUtils') - - ## Get the JetSignalState helper - self.jss = PyAthena.SignalStateHelper(PyAthena.P4SignalState.JETFINAL) - - ## import some 4-mom utils - import FourMomUtils.Bindings - self.utils = { 'deltaR' : PyAthena.P4Helpers.deltaR } - - - return StatusCode.Success - - - - def execute(self): - self.nProcessed+=1 - self.msg.debug( '==> execute %s on %r. event...' % (self.name(), self.nProcessed) ) - - - ## If passAll is selected, accept all events - if self.passAll : - self.msg.debug( '%s event passed because passAll is true' % self.name() ) - self.setFilterPassed(True) - self.nEventPassed += 1 - return StatusCode.Success - - - # Load the jet collection from the input file - jetCollection = None - try: - jetCollection = self.storeGateSvc.retrieve( self.jetCollectionType, self.jetCollectionName ) - self.msg.debug( 'Loading the jet collection %s from the input file.' % self.jetCollectionName ) - except LookupError: - self.msg.warning( 'Collection %s not found' % self.jetCollectionName ) - self.setFilterPassed(True) - return StatusCode.Success - - - # Load the lepton collections from the input file - self.msg.debug( 'Going to load the leptons of type %s and key %s.' % (self.leptonContainerTypeList, self.leptonContainerNameList) ) - leptonList = [] - if self.leptonContainerTypeList.__len__() == self.leptonContainerNameList.__len__() : - for i in range( self.leptonContainerTypeList.__len__() ) : - try: - lepColl = self.storeGateSvc.retrieve( self.leptonContainerTypeList[i], - self.leptonContainerNameList[i] ) - self.msg.debug( 'Loading the lepton collection %s from the input file.' - % self.leptonContainerNameList[i] ) - for lep in lepColl : - leptonList.append(lep) - pass - pass - except LookupError: - self.msg.warning( 'Collection %s not found' % self.leptonContainerNameList[i] ) - self.setFilterPassed(True) - return StatusCode.Success - pass - pass - else : - self.msg.error( 'List of leptons type %s and key %s has different lenght!' - % (self.leptonContainerTypeList, self.leptonContainerNameList) ) - pass - - - ## Turn all jets into uncalibrated state - if self.useUncalibratedJets : - self.jss.setSignalState( PyAthena.P4SignalState.UNCALIBRATED) - self.msg.debug( 'Setting the jet state to uncalibrated jets.' ) - - - # Create a class-member list of all jets that passed all cuts. - # This can then be used by other filters to do overlap removal, etc. - VIEW_ELEMENTS = 1 - goodJets = PyAthena.JetCollection(VIEW_ELEMENTS) - - - # Print a debug message - self.msg.debug( 'Starting loop over all jets. In this event, there are %s jets' % jetCollection.size() ) - - - ## Find leading Et - leadEt = 0.0*Units.GeV - jet_pass=0 - jet_n=0 - - controlObject = self.jss.controlObject - releaseObject = self.jss.releaseObject - - for jet in jetCollection : - controlObject(jet) - self.msg.debug( ' jet = '+str(jet)) - self.nJets += 1 - jet_n += 1 - if jet_n <= self.nLeadingsForCheck : - if abs(jet.eta()) >= self.cutEtaMin and abs(jet.eta()) < self.cutEtaMax : - if jet.et() > self.cutEtMin : - if self.removeOverlap : - self.msg.debug( 'JetFilter: I am in overlap!' ) - doesOverlap = False - for lep in leptonList : - if self.utils['deltaR'](jet, lep) <= self.deltaR : - doesOverlap = True - break - pass - if not doesOverlap : - if jet.et() > leadEt : - leadEt = jet.et() - pass - jet_pass+=1 - jetCopy = jet - goodJets.push_back( jetCopy ) - pass - pass - else : - self.msg.debug( 'JetFilter: I am NOT in overlap!' ) - if jet.et() > leadEt : - leadEt = jet.et() - pass - jet_pass+=1 - jetCopy = jet - goodJets.push_back( jetCopy ) - pass - pass - pass - pass - pass - - # Print a debug message - self.msg.debug( 'Done with the loop over the jets. Have %s jets in collection, put %s jets in goodJets, and the leading jet has et = %s GeV.' % ( jetCollection.size(), goodJets.__len__(), leadEt/Units.GeV ) ) - - releaseObject() - - - ## Record the good jets into StoreGate so that they can be retrieved by other algorithms - if self.recordGoodJets : - if JetCollectionHelper.record_jets( self.storeGateSvc, goodJets, self.goodJetCollectionName ).isFailure() : - self.msg.error( 'Could not record the goodJets into StoreGate with the key = %s' % self.goodJetCollectionName ) - pass - pass - - ## Check if the event is accepted - if goodJets.__len__() >= self.minNumberPassed : - self.msg.debug( 'The %d leading jets are > %f GeV', jet_pass, self.cutEtMin/Units.GeV) - self.msg.debug( '%s event passed.' % self.name() ) - self.setFilterPassed(True) - self.nEventPassed += 1 - pass - else: - self.msg.debug( '%s event failed' % self.name() ) - self.setFilterPassed(False) - pass - - return StatusCode.Success - - - - def finalize(self): - ## Import needed modules - import math - - ## Calculate the efficiencies and their errors - effiJets = 0.0 - effiEvents = 0.0 - effiErrJets = 0.0 - effiErrEvents = 0.0 - try : - # Efficiencies - effiJets = self.nJets / float(self.nProcessed) - effiEvents = self.nEventPassed / float(self.nProcessed) - - # Error on efficiencies - effiErrJets = math.sqrt(self.nJets) / float(self.nProcessed) - effiErrEvents = 100.0*math.sqrt(effiEvents*(1.-effiEvents)/float(self.nProcessed)) - - effiEvents *= 100. - - except ZeroDivisionError : - self.msg.warning( 'Division by zero error when calculating the uncertainties on the pass efficiencies...' ) - - - - self.msg.info( '==> finalize %s...' % self.name() ) - self.msg.info( '***************************************************************' ) - self.msg.info( 'Cut-flow table of %s skimming algorithm:' % self.name() ) - self.msg.info( '-------------' ) - self.msg.info( ' Number of processed events: %r' % self.nProcessed ) - self.msg.info( ' Number of all jets: %r and number of jets per event: %3.3f +/- %3.3f' % ( self.nJets, effiJets, effiErrJets ) ) - self.msg.info( ' Events accepted: %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventPassed, effiEvents, effiErrEvents ) ) - self.msg.info( '***************************************************************' ) - - return StatusCode.Success diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/GroomedJetsConfig.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/GroomedJetsConfig.py deleted file mode 100644 index 54837ab4f15765bae231db79e574b25428d144db..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/GroomedJetsConfig.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -import copy - -def getGroomedJetsConfig(): - - dictsConf = [] - - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'LCTopo', - } - - GroomedDicts = [ - #{ 'Type' : 'BDRSFiltering', 'args' : { 'SaveSubjets' : True } } #, - { 'Type' : 'BDRSFiltering', 'args' : { 'SaveSubjets' : True , 'minSplitR' :0.} } - ] - - - dictsConf += [ [ParentDict, GroomedDicts] ] - - ParentDict = { - 'JetFinder' : 'CamKt', - 'JetdR' : 1.2, - 'JetInput' : 'Truth', - } - - dictsConf += [ [ParentDict, GroomedDicts] ] - - - return dictsConf diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5D3PD.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5D3PD.py deleted file mode 100644 index 8ae5f87e2a70f80e414ac1dc169d3d1d8d449ffe..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5D3PD.py +++ /dev/null @@ -1,758 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# -# @file HSG5D3PD.py -# @author Robert Harrington <R.Harrington@ed.ac.uk> -# @date Oct, 2011 -# @brief Construct a boosted Higgs physics D3PD (copied from and based on SMWZD3PD). -# - - -import D3PDMakerCoreComps -from D3PDMakerCoreComps.resolveSGKey import testSGKey - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# local flags -from HSG5Flags import * -from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation - - -# event - -from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject -from EventCommonD3PDMaker.LBMetadataConfig import LBMetadataConfig -from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject - -from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation - - -# eletron/photon - -from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject -from egammaD3PDMaker.GSFElectronD3PDObject import GSFElectronD3PDObject -from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject -from egammaD3PDMaker.egammaTriggerBitsD3PDObject import egammaTriggerBitsD3PDObject - -# muons - -from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject -from MuonD3PDMaker.MuonSegmentD3PDObject import MuonSegmentD3PDObject -from MuonD3PDMaker.MuonTriggerBitsD3PDObject import MuonTriggerBitsD3PDObject - -# jet - -from JetD3PDMaker.JetD3PDObject import JetD3PDObject - -# tau, not for exclusion - -from TauD3PDMaker.makeTrackFilterAlg import makeTrackFilterAlg - -# calo - -from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject -from CaloD3PDMaker.MBTSTimeD3PDObject import MBTSTimeD3PDObject -from CaloD3PDMaker.MBTSTriggerBitsD3PDObject import MBTSTriggerBitsD3PDObject -from CaloD3PDMaker.LArCollisionTimeD3PDObject import LArCollisionTimeD3PDObject -from CaloD3PDMaker.CollisionDecisionD3PDObject import CollisionDecisionD3PDObject -from CaloD3PDMaker.ClusterD3PDObject import ClusterD3PDObject -from CaloD3PDMaker.EMClusterD3PDObject import EMClusterD3PDObject -from CaloD3PDMaker.makeClusterFilter import makeClusterFilter - -# baseline track config - -from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags - -#TrackD3PDFlags.doTruth = False # True -TrackD3PDFlags.doTruth = True -TrackD3PDFlags.storeDetailedTruth = False -TrackD3PDFlags.storeDiagonalCovarianceAsErrors = True -#TrackD3PDFlags.storeHitTruthMatching = False # True -TrackD3PDFlags.storeHitTruthMatching = True -TrackD3PDFlags.storePixelHitsOnTrack = False -TrackD3PDFlags.storePixelHolesOnTrack = False -TrackD3PDFlags.storePixelOutliersOnTrack = False -TrackD3PDFlags.storeSCTHitsOnTrack = False -TrackD3PDFlags.storeSCTHolesOnTrack = False -TrackD3PDFlags.storeSCTOutliersOnTrack = False -TrackD3PDFlags.storeTRTHitsOnTrack = False -TrackD3PDFlags.storeTRTHolesOnTrack = False -TrackD3PDFlags.storeTRTOutliersOnTrack = False -TrackD3PDFlags.storeTrackFitQuality = True -TrackD3PDFlags.storeTrackInfo = False -TrackD3PDFlags.storeTrackMomentum = True -TrackD3PDFlags.storeTrackPredictionAtBLayer = False -#TrackD3PDFlags.storeTrackSummary = False # True -TrackD3PDFlags.storeTrackSummary = True -TrackD3PDFlags.trackParametersAtBeamSpotLevelOfDetails = 0 -TrackD3PDFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 0 -TrackD3PDFlags.trackParametersAtPrimaryVertexLevelOfDetails = 1 - -# setting specifically for HSG5D3PD -TrackD3PDFlags.storeTrackSummary.IDSharedHits = True # IC -TrackD3PDFlags.storeDetailedTruth=False -TrackD3PDFlags.storeVertexKinematics=False -TrackD3PDFlags.storeVertexPurity=False -#TrackD3PDFlags.storeVertexTrackIndexAssociation=False -TrackD3PDFlags.storeVertexTrackIndexAssociation=True -TrackD3PDFlags.trackParametersAtPrimaryVertexLevelOfDetails=1 -TrackD3PDFlags.vertexPositionLevelOfDetails=1 -TrackD3PDFlags.storeTrackInfo=True # IC -TrackD3PDFlags.storeTrackSummary=True # IC -D3PDMakerFlags.TruthWriteHadrons = True -# end HSG5D3PD configuration - -from TrackD3PDMaker.TrackD3PDObject import TrackParticleD3PDObject - -# PV config - -TrackD3PDFlags.storeVertexFitQuality = True -TrackD3PDFlags.storeVertexKinematics = True -TrackD3PDFlags.storeVertexPurity = False -TrackD3PDFlags.storeVertexTrackAssociation = False -TrackD3PDFlags.storeVertexTrackIndexAssociation = True -TrackD3PDFlags.vertexPositionLevelOfDetails = 2 - -from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject - -# BeamSpot / MinBias - -from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject - -# MET - -from MissingETD3PDMaker.MissingETD3PDMakerFlags import MissingETD3PDMakerFlags -from MissingETD3PDMaker.MissingETD3PDObject import * -from MissingETD3PDMaker.MissingETD3PDTriggerBitsObject import * - -MissingETD3PDMakerFlags.doCellOutEflow=True -MissingETD3PDMakerFlags.METDefaultJetCollectionSGKey = 'AntiKt4LCTopoJets' -MissingETD3PDMakerFlags.METDefaultJetPrefix = "jet_AntiKt4LCTopo_MET_" - -# Trigger - -from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject -from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata -from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject -from TrigEgammaD3PDMaker.TrigEgammaD3PD import TrigEgammaD3PDObjects -from TrigMuonD3PDMaker.TrigMuonD3PD import TrigMuonD3PDObjects -from TriggerD3PDMaker.EnergySumROID3PDObject import EnergySumROID3PDObject -from TrigMissingETD3PDMaker.TrigMETD3PDObject import TrigMETD3PDObject -from PhysicsD3PDMaker.SMWZTriggerBitsD3PDObject import SMWZTriggerBitsD3PDObject - -from RecExConfig.RecFlags import rec -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - - -def _args (level, name, kwin, **kw): - kw = kw.copy() - kw['level'] = level - for (k, v) in kwin.items(): - if k.startswith (name + '_'): - kw[k[len(name)+1:]] = v - return kw - -# Routine to write GSCFactor and WidthFraction jet moments -#def addSTRUCTCalib(jetcoll , **options): -# from JetCalibTools.MakeCalibSequences import alternateCalibSequence -# emSeq = alternateCalibSequence('CAL:STRUCT1',options) -# StructSeq = emSeq.CalibToolSequence[-1] -# StructSeq.MomentTag = "GSCFactor" -# StructSeq.SimpleFactorCorrection = True -# for t in StructSeq.CalibToolSequence[:-1]: #switch off all moments writing but the last. -# t.WriteMoments = False - - #from JetRec.JetGetters import getJetCalibrationTool - #emToolFromDict = getJetCalibrationTool(emSeq, "STRUCTcalib",inPlaceCorr=False) - -# from JetMomentTools.JetMomentToolsConf import JetMomentsFromCalib -# momTool = JetMomentsFromCalib() -# momTool.Calibrator = emSeq - -# from JetRec.JetMomentGetter import make_JetMomentGetter -# make_JetMomentGetter( jetcoll , [momTool]) - - -def HSG5D3PD (alg = None, - file = 'hsg5.root', - tuplename = 'physics', - streamname = 'd3pdstream', - flags=HSG5Flags, - **kw): - - if flags.doTaus(): - # tau - from TauD3PDMaker.TauD3PDObject import TauD3PDObject - - # define associations - if flags.doPhotons() and not PhotonD3PDObject.allBlocknames().has_key('RecoveryMatch'): - from PhotonD3PDMaker.PhotonRecoveryAssociation import PhotonRecoveryAssociation - PhotonRecoveryAssoc = PhotonRecoveryAssociation(PhotonD3PDObject, - 'ElectronContainer', - D3PDMakerFlags.ElectronSGKey(), - prefix = 'el_', - blockname = 'RecoveryMatch', - target = 'ph_ElectronRecovered_') - - - # define track and cluster filters - - preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - - if flags.doGoodTracks() and not hasattr( preseq, "GoodTracks" ): - filter1 = makeTrackFilterAlg(TracksName = D3PDMakerFlags.TrackSGKey(), - OutputTracksName='GoodTracks', - ptCut=0.,nSCTPix=4) - preseq += filter1 - - if flags.doHighPtTracks() and not hasattr( preseq, "HighPtTracks" ): - filter2 = makeTrackFilterAlg(TracksName = D3PDMakerFlags.TrackSGKey(), - OutputTracksName='HighPtTracks', - ptCut=5000.,nSCTPix=4) - preseq += filter2 - - - if flags.doHighPtClusters() and not hasattr( preseq, "HighPtClusters" ): - filter3 = makeClusterFilter(InputName = D3PDMakerFlags.ClusterSGKey(), - OutputName = 'HighPtClusters', - ptCut=10000.) - preseq += filter3 - - if flags.doHighPtEMClusters() and not hasattr( preseq, "HighPtEMClusters" ): - filter4 = makeClusterFilter(InputName = D3PDMakerFlags.EMTopoClusterSGKey(), - OutputName = 'HighPtEMClusters', - ptCut=10000.) - preseq += filter4 - - # perform recoil calculation - - if flags.doHadronicRecoil(): - from HadronicRecoil.HadronicRecoilConf import HadronicRecoil__ElectronSelector - from HadronicRecoil.HadronicRecoilConf import HadronicRecoil__MuonSelector - from HadronicRecoil.HadronicRecoilConf import HadronicRecoil__EflowSelector - from HadronicRecoil.HadronicRecoilConf import HadronicRecoil__RecoilCalculation - from HadronicRecoil.HadronicRecoilConf import HadronicRecoil__EflowRecoil - - if not hasattr( preseq, "HadronicRecoil::ElectronSelector" ): - preseq += HadronicRecoil__ElectronSelector() - if not hasattr( preseq, "HadronicRecoil::MuonSelector" ): - preseq += HadronicRecoil__MuonSelector() - if not hasattr( preseq, "HadronicRecoil::EflowSelector" ): - preseq += HadronicRecoil__EflowSelector() - if not hasattr( preseq, "HadronicRecoil::RecoilCalculation" ): - preseq += HadronicRecoil__RecoilCalculation( ConeSizes = [0.20] ) - if not hasattr( preseq, "EflowRecoil_20" ): - preseq += HadronicRecoil__EflowRecoil("EflowRecoil_20", - TrackRough = "RoughRecoil_track_20", - TrackUE = "ueCorrection_track_20", - TrackRef = "RefinedRecoil_track_20", - ClusNoTrackRough = "RoughRecoil_clusNoTrack_20", - ClusNoTrackUE = "ueCorrection_clusNoTrack_20", - ClusNoTrackRef = "RefinedRecoil_clusNoTrack_20", - RoughRecoil_out = "RoughRecoil_Eflow_20", - ueCorrection_out = "ueCorrection_Eflow_20", - RefinedRecoil_out= "RefinedRecoil_Eflow_20", - MET_out = "MET_HR_Eflow_20" ) - - # now configure the D3PD - - if not alg: - alg = MSMgr.NewRootStream(StreamName = streamname, FileName = file, TreeName = tuplename) - - - alg += EventInfoD3PDObject (**_args (10, 'EventInfo', kw)) - alg += LArCollisionTimeD3PDObject (**_args (10, 'LArCollisionTime', kw)) - - from TriggerD3PDMaker.BunchStructureMetadata import addBunchStructureMetadata - addBunchStructureMetadata (alg) - - # Eta rings of energy - # FIXME brian crashing aod running - if not rec.readAOD: - from CaloD3PDMaker.RapgapD3PDObject import EtaRingsNonTileD3PDObject - from CaloD3PDMaker.RapgapD3PDObject import EtaRingsD3PDObject - - alg += EtaRingsNonTileD3PDObject ( **_args ( 0, 'EtaRings', kw) ) - alg += EtaRingsD3PDObject ( **_args ( 0, 'EtaRings', kw) ) - - # Electron/Photon blocks - - alg += ElectronD3PDObject (**_args (10, 'Electron', kw)) - - if testSGKey ('ElectronContainer', D3PDMakerFlags.GSFElectronSGKey()): - alg += GSFElectronD3PDObject (**_args (10, 'GSFElectron', kw, - sgkey = D3PDMakerFlags.GSFElectronSGKey(), - prefix = 'el_gsf_')) - - if flags.doPhotons(): - print "adding photons" - alg += PhotonD3PDObject (**_args (10, 'Photon', kw)) - - - # Muon blocks - - ### add the scattering significance filler - to be removed when added in the MuonD3PDMaker - if not MuonD3PDObject.allBlocknames().has_key("MuonScatteringAngleSignificance"): - from AthenaCommon.AppMgr import ToolSvc - muonScatteringSigTool=None - if hasattr(ToolSvc, "MuonScatteringSigTool"): - muonScatteringSigTool=ToolSvc.MuonScatteringSigTool - from JetTagD3PDMaker import MuonScatteringAngleSignificanceFillerTool - MuonD3PDObject.defineBlock (100, "MuonScatteringAngleSignificance", - MuonScatteringAngleSignificanceFillerTool, - ScatteringSigTool=muonScatteringSigTool) - - alg += MuonD3PDObject (**_args (10, 'MuidMuon', kw, - sgkey='MuidMuonCollection', prefix='mu_muid_', - include = ["EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", - "L2CBInfoIndex", "L1InfoIndex"], - exclude = ["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], - allowMissing = True )) - - alg += MuonD3PDObject (**_args (10, 'StacoMuon', kw, - sgkey='StacoMuonCollection', prefix='mu_staco_', - include = ["EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", - "L2CBInfoIndex", "L1InfoIndex"], - exclude = ["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], - allowMissing = True )) - - from AthenaCommon.KeyStore import CfgItemList - if CfgItemList("KeyStore_inputFile").has_item("Analysis::MuonContainer#Muons"): - alg += MuonD3PDObject (**_args (10, 'Muons', kw, - sgkey='Muons', prefix='mu_muons_', - include = ["EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", - "L2CBInfoIndex", "L1InfoIndex"], - exclude = ["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], - allowMissing = True )) - - alg += MuonD3PDObject (**_args (0, 'CaloMuon', kw, sgkey='CaloMuonCollection', prefix='mu_calo_', - include = ["MuonHitSummary", "Authors", "Likelihood", - "Isolation", "CaloEnergyLoss", "Quality"] )) - - # Tau block - - if flags.doTaus(): - alg += TauD3PDObject (**_args ( 1, 'Tau', kw)) - - - - # track and cluster blocks - - # ... all clusters, very low LOD - - alg += ClusterD3PDObject (**_args ( 0, 'Clusters1', kw, - exclude='SamplingBasics')) - - # ... higher LOD for pt>10 GeV - if flags.doHighPtClusters(): - alg += ClusterD3PDObject (**_args ( 2, 'Clusters2', kw, - sgkey = 'HighPtClusters', - prefix = 'clpt10_')) - - if flags.doHighPtEMClusters(): - alg += ClusterD3PDObject (**_args ( 3, 'Clusters3', kw, - sgkey = 'HighPtEMClusters', - prefix = 'emclpt10_')) - - from TrackD3PDMaker.TrackD3PDObject import TrackD3PDObject - - # ... good tracks only (nSCT>3; no pt cut) - - # use standard level of track info for 'GoodTracks' - - if flags.doGoodTracks(): - # use standard level of track info for 'GoodTracks' - alg += TrackParticleD3PDObject (**_args ( 3, 'Tracks1', kw, - sgkey = 'GoodTracks', - label = 'trk', - prefix = 'trk_')) - - # ... high-pt tracks (nSCT>3; pt>5 GeV) - - if flags.doHighPtTracks(): - - from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags as highPtFlags - highPtFlags.doTruth = True - highPtFlags.storeDiagonalCovarianceAsErrors = True - highPtFlags.storeHitTruthMatching = True - highPtFlags.storePixelHitsOnTrack = False - highPtFlags.storePixelHolesOnTrack = False - highPtFlags.storePixelOutliersOnTrack = False - highPtFlags.storeSCTHitsOnTrack = False - highPtFlags.storeSCTHolesOnTrack = False - highPtFlags.storeSCTOutliersOnTrack = False - highPtFlags.storeTRTHitsOnTrack = False - highPtFlags.storeTRTHolesOnTrack = False - highPtFlags.storeTRTOutliersOnTrack = False - highPtFlags.storeTrackFitQuality = True - highPtFlags.storeTrackMomentum = True - highPtFlags.storeTrackSummary = True - highPtFlags.storeTrackSummary.IDOutliers = True - highPtFlags.storeTrackSummary.PixelInfoPlus = True - highPtFlags.storeTrackSummary.SCTInfoPlus = True - highPtFlags.storeTrackSummary.TRTInfoPlus = True - highPtFlags.storeTrackSummary.InfoPlus = True - highPtFlags.trackParametersAtBeamSpotLevelOfDetails = 0 - highPtFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 2 - highPtFlags.trackParametersAtPrimaryVertexLevelOfDetails = 3 - - HighPtTrackParticleD3PDObject = TrackD3PDObject(_label='trkpt5', - _prefix='trkpt5_', - _sgkey='HighPtTracks', - typeName='Rec::TrackParticleContainer', - flags=highPtFlags) - - alg += HighPtTrackParticleD3PDObject(**_args ( 3, 'Tracks2', kw, - sgkey = 'HighPtTracks', - label = 'trkpt5', - prefix = 'trkpt5_')) - - - # Jet blocks - - from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags - - # include list modified for HSG5D3PD - - includelist = JetTagD3PDFlags.StdInfoInclude() - - from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys - includelist += [JetTagD3PDKeys.BTagWeightsBlockName()] - #includelist += [JetTagD3PDKeys.JetFitterInfoBaseBlockName()] - #includelist += [JetTagD3PDKeys.JetFitterTagInfoBlockName()] - #includelist += [JetTagD3PDKeys.IP3DInfoBaseBlockName()] - #includelist += [JetTagD3PDKeys.IP3DIPInfoBaseBlockName()] - #includelist += [JetTagD3PDKeys.JetFitterCombInfoBaseBlockName()] - includelist += [JetTagD3PDKeys.JetTrackAssocBlockName()] - includelist += [JetTagD3PDKeys.JetTrackBlockName()] - includelist += [JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()] - includelist += [JetTagD3PDKeys.IPInfoPlusTrackBlockName()] - includelist += ['ConstituentScale'] - - jetkw = kw - if not jetkw.has_key ( 'AK4TopoEMJet_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target'): - jetkw['AK4TopoEMJet_'+JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']= "trk" - if not jetkw.has_key ( 'AK4TopoEMJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target'): - jetkw['AK4TopoEMJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target']= "trk" - - alg += JetD3PDObject (**_args ( 3, 'AK4TopoEMJet', jetkw, - sgkey='AntiKt4TopoEMJets', prefix='jet_AntiKt4TopoEM_', - include = includelist, - JetVertexFraction_FromUD=True, - JetVertexFraction_FillFullJVF=True, - allowMissing = True)) - - alg += JetD3PDObject (**_args ( 3, 'AK6TopoEMJet', kw, - sgkey='AntiKt6TopoEMJets', prefix='jet_AntiKt6TopoEM_', - include = [JetTagD3PDFlags.StdInfoInclude(),'ConstituentScale'], - JetVertexFraction_FromUD=True, - JetVertexFraction_FillFullJVF=True, - allowMissing = True)) - - alg += JetD3PDObject (**_args ( 3, 'AK4LCTopoJet', kw, - sgkey='AntiKt4LCTopoJets', prefix='jet_AntiKt4LCTopo_', - exclude=['Layer'], - include=['ConstituentScale'], - JetVertexFraction_FromUD=True, - JetVertexFraction_FillFullJVF=True, - allowMissing = True)) - - alg += JetD3PDObject (**_args ( 3, 'AK6LCTopoJet', kw, - sgkey='AntiKt6LCTopoJets', prefix='jet_AntiKt6LCTopo_', - exclude=['Layer'], - include=['ConstituentScale'], - JetVertexFraction_FromUD=True, - JetVertexFraction_FillFullJVF=True, - allowMissing = True)) - - - from TopInputsD3PDMaker.HforD3PDObject import HforD3PDObject - alg += HforD3PDObject(**_args (0, 'HforInfo', kw)) - - - # MET blocks - # a whole mess to remove x,y components separately for all flavours - - if flags.doAllMissingET() : - alg += MissingETD3PDObject (**_args (10, 'MissingET', kw, - exclude=['MET_Base', 'MET_Base0', 'MET_Truth_Int', - 'MET_RefFinal_Comps','MET_Calib_Comps','MET_CellOut_Comps', - 'MET_CorrTopo_Comps','MET_Cryo_Comps','MET_CryoCone_Comps', - 'MET_Final_Comps','MET_LocHadTopo_Comps', - 'MET_LocHadTopoObj_Comps', - 'MET_Muid_Comps','MET_Muid_Spectro_Comps','MET_Muid_Track_Comps', - 'MET_MuonBoy_Comps','MET_MuonBoy_Spectro_Comps','MET_MuonBoy_Track_Comps', - 'MET_Muons_Comps','MET_Muons_Spectro_Comps','MET_Muons_Track_Comps', - 'MET_MuonMuid_Comps', - 'MET_Muon_Comps','MET_Muon_Isol_Muid_Comps', - 'MET_Muon_Isol_Staco_Comps','MET_Muon_NonIsol_Muid_Comps', - 'MET_Muon_NonIsol_Staco_Comps','MET_Muon_Total_Muid_Comps', - 'MET_Muon_Total_Staco_Comps','MET_RefEle_Comps', - 'MET_RefEle_em_Comps','MET_RefGamma_Comps', - 'MET_RefGamma_em_Comps','MET_RefJet_Comps', - 'MET_RefJet_em_Comps','MET_RefMuon_Comps', - 'MET_RefMuon_Muid_Comps','MET_RefMons_Comps','MET_RefMuon_Staco_Comps', - 'MET_RefMuon_Track_Muid_Comps','MET_RefMuon_Track_Staco_Comps', - 'MET_RefMuon_Track_em_Comps','MET_RefMuon_Track_Comps', - 'MET_RefMuons_Track_Comps', - 'MET_RefMuon_em_Comps','MET_RefTau_Comps', - 'MET_RefTau_em_Comps','MET_SoftJets_Comps', - 'MET_SoftJets_em_Comps','MET_Topo_Comps', - 'MET_TopoObj_Comps','MET_Track_Comps','MET_Comps', - 'MET_Track_Weights','MET_Cluster_Weights'], - allowMissing=True)) - else : - alg += MissingETD3PDObject(0, sgkey = "MET_RefFinal", prefix = "MET_RefFinal") - - # MuonBoy terms used in RefFinal - alg += MissingETD3PDObject(0, sgkey = "MET_MuonBoy", prefix = "MET_MuonBoy") - alg += MissingETD3PDObject(0, sgkey = "MET_RefMuon", prefix = "MET_RefMuon") - alg += MissingETD3PDObject(0, sgkey = "MET_CellOut_Eflow", prefix = "MET_CellOut_Eflow") - - # terms needed to calculate RefFinal with Muid instead of Staco - alg += MissingETD3PDObject(0, sgkey = "MET_RefMuon_Muid", prefix = "MET_RefMuon_Muid") - alg += MissingETD3PDObject(0, sgkey = "MET_MuonMuid", prefix = "MET_MuonMuid") - alg += MissingETD3PDObject(0, sgkey = "MET_Muid", prefix = "MET_Muid") - alg += MissingETD3PDObject(0, sgkey = "MET_CellOut_Eflow_Muid", prefix = "MET_CellOut_Eflow_Muid") - - # terms needed to calculate RefFinal with third chain instead of Staco - from AthenaCommon.KeyStore import CfgItemList - keystore = CfgItemList("KeyStore_inputFile") - if keystore.has_item("MissingET#MET_Muons"): - alg += MissingETD3PDObject(0, sgkey = "MET_Muons", prefix = "MET_Muons") - if keystore.has_item("MissingET#MET_RefMuons"): - alg += MissingETD3PDObject(0, sgkey = "MET_RefMuons", prefix = "MET_RefMuons") - if keystore.has_item("MissingET#MET_CellOut_Eflow_Muons"): - alg += MissingETD3PDObject(0, sgkey = "MET_CellOut_Eflow_Muons", prefix = "MET_CellOut_Eflow_Muons") - - # I have no idea what these are for - alg += MissingETD3PDObject(0, sgkey = "MET_SoftJets", prefix = "MET_SoftJets") - alg += MissingETD3PDObject(0, sgkey = "MET_RefFinal_em", prefix = "MET_RefFinal_em") - alg += MissingETD3PDObject(0, sgkey = "MET_CellOut_em", prefix = "MET_CellOut_em") - alg += MissingETD3PDObject(0, sgkey = "MET_SoftJets_em", prefix = "MET_SoftJets_em") - - - # HadronicRecoil blocks - - if flags.doHadronicRecoil(): - alg += ElectronD3PDObject(0, sgkey = "HR_selectedElectrons", prefix = "hr_el_") - alg += MuonD3PDObject( 0, sgkey = "HR_selectedMuons", prefix = "hr_mu_" ) - - alg += MissingETD3PDObject(0, sgkey = "RoughRecoil_20", prefix = "hr_roughRecoil_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "ueCorrection_20", prefix = "hr_ueCorrection_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "RefinedRecoil_20", prefix = "hr_corrRecoil_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "MET_HR_20", prefix = "hr_MET_20", - exclude=['MET_Regions','MET_Comps'] ) - - alg += MissingETD3PDObject(0, sgkey = "RoughRecoil_track_20", prefix = "hr_roughRecoil_track_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "ueCorrection_track_20", prefix = "hr_ueCorrection_track_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "RefinedRecoil_track_20", prefix = "hr_corrRecoil_track_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "MET_HR_track_20", prefix = "hr_MET_track_20", - exclude=['MET_Regions','MET_Comps'] ) - - alg += MissingETD3PDObject(0, sgkey = "RoughRecoil_clusNoTrack_20", prefix = "hr_roughRecoil_clusNoTrack_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "ueCorrection_clusNoTrack_20", prefix = "hr_ueCorrection_clusNoTrack_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "RefinedRecoil_clusNoTrack_20", prefix = "hr_corrRecoil_clusNoTrack_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "MET_HR_clusNoTrack_20", prefix = "hr_MET_clusNoTrack_20", - exclude=['MET_Regions','MET_Comps'] ) - - alg += MissingETD3PDObject(0, sgkey = "RoughRecoil_Eflow_20", prefix = "hr_roughRecoil_Eflow_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "ueCorrection_Eflow_20", prefix = "hr_ueCorrection_Eflow_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "RefinedRecoil_Eflow_20", prefix = "hr_corrRecoil_Eflow_20", - exclude=['MET_Regions','MET_Comps'] ) - alg += MissingETD3PDObject(0, sgkey = "MET_HR_Eflow_20", prefix = "hr_MET_Eflow_20", - exclude=['MET_Regions','MET_Comps'] ) - - - """ - # track and cluster blocks - - # ... all clusters, very low LOD - - alg += ClusterD3PDObject (**_args ( 0, 'Clusters1', kw, - exclude='SamplingBasics')) - - # ... higher LOD for pt>10 GeV - if flags.doHighPtClusters(): - alg += ClusterD3PDObject (**_args ( 2, 'Clusters2', kw, - sgkey = 'HighPtClusters', - prefix = 'clpt10_')) - - if flags.doHighPtEMClusters(): - alg += ClusterD3PDObject (**_args ( 3, 'Clusters3', kw, - sgkey = 'HighPtEMClusters', - prefix = 'emclpt10_')) - - from TrackD3PDMaker.TrackD3PDObject import TrackD3PDObject - - # ... good tracks only (nSCT>3; no pt cut) - - # use standard level of track info for 'GoodTracks' - - if flags.doGoodTracks(): - # use standard level of track info for 'GoodTracks' - alg += TrackParticleD3PDObject (**_args ( 3, 'Tracks1', kw, - sgkey = 'GoodTracks', - label = 'trk', - prefix = 'trk_')) - - # ... high-pt tracks (nSCT>3; pt>5 GeV) - - if flags.doHighPtTracks(): - - from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags as highPtFlags - highPtFlags.doTruth = True - highPtFlags.storeDiagonalCovarianceAsErrors = True - highPtFlags.storeHitTruthMatching = True - highPtFlags.storePixelHitsOnTrack = False - highPtFlags.storePixelHolesOnTrack = False - highPtFlags.storePixelOutliersOnTrack = False - highPtFlags.storeSCTHitsOnTrack = False - highPtFlags.storeSCTHolesOnTrack = False - highPtFlags.storeSCTOutliersOnTrack = False - highPtFlags.storeTRTHitsOnTrack = False - highPtFlags.storeTRTHolesOnTrack = False - highPtFlags.storeTRTOutliersOnTrack = False - highPtFlags.storeTrackFitQuality = True - highPtFlags.storeTrackMomentum = True - highPtFlags.storeTrackSummary = True - highPtFlags.storeTrackSummary.IDOutliers = True - highPtFlags.storeTrackSummary.PixelInfoPlus = True - highPtFlags.storeTrackSummary.SCTInfoPlus = True - highPtFlags.storeTrackSummary.TRTInfoPlus = True - highPtFlags.storeTrackSummary.InfoPlus = True - highPtFlags.trackParametersAtBeamSpotLevelOfDetails = 0 - highPtFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 2 - highPtFlags.trackParametersAtPrimaryVertexLevelOfDetails = 3 - - HighPtTrackParticleD3PDObject = TrackD3PDObject(_label='trkpt5', - _prefix='trkpt5_', - _sgkey='HighPtTracks', - typeName='Rec::TrackParticleContainer', - flags=highPtFlags) - - alg += HighPtTrackParticleD3PDObject(**_args ( 3, 'Tracks2', kw, - sgkey = 'HighPtTracks', - label = 'trkpt5', - prefix = 'trkpt5_')) - """ - - # Primary vertex block - May be missing in single-beam data. - - alg += PrimaryVertexD3PDObject (**_args (1, 'PrimaryVertex', kw, - allowMissing = True, - sgkey = D3PDMakerFlags.VertexSGKey(), - prefix = 'vxp_')) - - # MBTS - - alg += MBTSD3PDObject (**_args (10, 'MBTS', kw)) - alg += MBTSTimeD3PDObject (**_args (10, 'MBTSTime', kw)) - alg += MBTSTriggerBitsD3PDObject (**_args (10, 'MBTSTriggerBits', kw)) - #alg += CollisionDecisionD3PDObject(**_args (10, 'CollisionDecision', kw)) - - # Truth - - if rec.doTruth(): - - from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject - from MuonD3PDMaker.TruthMuonD3PDObject import TruthMuonD3PDObject - - alg += TruthMuonD3PDObject (**_args ( 2, 'TruthMuon', kw)) - alg += GenEventD3PDObject (**_args ( 1, 'GenEvent', kw)) - alg += TruthParticleD3PDObject(**_args ( 1, 'TruthParticle', kw)) - - # TruthJets - alg += JetD3PDObject (**_args ( 1, 'AK4TruthJet', kw, - sgkey='AntiKt4TruthJets',prefix='jet_AntiKt4Truth_', - allowMissing = True)) - alg += JetD3PDObject (**_args ( 1, 'AK6TruthJet', kw, - sgkey='AntiKt6TruthJets', prefix='jet_AntiKt6Truth_', - allowMissing = True)) - alg += JetD3PDObject (**_args ( 1, 'AK4TruthJetALL', kw, - sgkey='AntiKt4TruthJets_ALL', prefix='jet_AntiKt4TruthALL_', - allowMissing = True)) - alg += JetD3PDObject (**_args ( 1, 'AK6TruthJetALL', kw, - sgkey='AntiKt6TruthJets_ALL', prefix='jet_AntiKt6TruthALL_', - allowMissing = True)) - alg += JetD3PDObject (**_args ( 1, 'AK4TruthJetWZ', kw, - sgkey='AntiKt4TruthJets_WZ', prefix='jet_AntiKt4TruthWZ_', - allowMissing = True)) - alg += JetD3PDObject (**_args ( 1, 'AK6TruthJetWZ', kw, - sgkey='AntiKt6TruthJets_WZ', prefix='jet_AntiKt6TruthWZ_', - allowMissing = True)) - - - if not rec.doTruth(): - alg += BeamSpotD3PDObject(10) - - - from TrigMissingETD3PDMaker.TrigMETD3PD import TrigMETD3PDObjects - TrigMETD3PDObjects(alg,10) - - # Trigger - - if D3PDMakerFlags.DoTrigger(): - - alg += SMWZTriggerBitsD3PDObject (**_args (10, 'SMWZTriggerBits', kw)) - - # Trigger Decision + metadata - - alg += TrigDecisionD3PDObject (**_args(10, 'TrigDecision', kw)) - addTrigConfMetadata(alg) - - # Bunch group info - - alg += BGCodeD3PDObject (**_args (2, 'BGCode', kw)) - - # Egamma and Mu - - TrigEgammaD3PDObjects (alg, 1) - TrigMuonD3PDObjects( alg, 1) - - # Esum - - #alg += EnergySumROID3PDObject(**_args (2, 'EnergySumROI', kw, - # prefix = "trig_L1_esum_")) - - # The LVL2 information: - - #alg += TrigMETD3PDObject(**_args( 2, 'TrigMETL2', kw, - # prefix = "trig_L2_met_", - # sgkey = "HLT_T2MissingET" )) - # The EF information: - - #alg += TrigMETD3PDObject(**_args ( 2, 'TrigMETEF', kw, - # prefix = "trig_EF_met_", - # sgkey = "HLT_TrigEFMissingET" )) - -# Event metadata - - alg.MetadataTools += [LBMetadataConfig()] - -# Invoke routine to write GSCFactor and WidthFraction jet moments - - #addSTRUCTCalib('AntiKt4LCTopoJets', input='Topo', mainParam=0.4) - #addSTRUCTCalib('AntiKt6LCTopoJets', input='Topo', mainParam=0.6) - #addSTRUCTCalib('AntiKt4TopoEMJets', input='Topo', mainParam=0.4) - #addSTRUCTCalib('AntiKt6TopoEMJets', input='Topo', mainParam=0.6) - - if D3PDMakerFlags.FilterCollCand(): - from CaloD3PDMaker.CollisionFilterAlg import CollisionFilterAlg - alg.filterSeq += CollisionFilterAlg (tuplename + '_CollCandFilter') - - return alg diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5D3PDProdFlags.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5D3PDProdFlags.py deleted file mode 100644 index 1afc2d9e08e78484e915fc11b342858d85d16da2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5D3PDProdFlags.py +++ /dev/null @@ -1,153 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# $Id$ -# -# @file HSG5DPDUtils/python/HSG5D3PDProdFlags.py -# @author Robert Harrington <roberth@cern.ch> -# @date March 16, 2012 -# @brief Define flags and configuration settings used when making -# HSG5 D3PDs from production transforms. -# -# Any objects here with a name of the form Write*D3PD that derive -# from JobProperty are added to D3PDProdFlags. -# - -from AthenaCommon.JobProperties import JobProperty - -allowedD3PDList = [] - -# WH D3PD -class WriteHSG5WHD3PD (JobProperty): - """Produce the HSG5 BOOSTED WH D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5WH' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_WHlnubb_boosted_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5WHFile') - -class WriteHSG5WHUD3PD (JobProperty): - """Produce the HSG5 UNBOOSTED WH D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5WHU' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_WHlnubb_unboosted_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5WHUFile') - -class WriteHSG5WHQD3PD (JobProperty): - """Produce the HSG5 UNBOOSTED WH QCD D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5WHQ' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_WHlnubb_unboosted_QCDbkg_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5WHQFile') - -# ZHLL D3PD -class WriteHSG5ZHLLD3PD (JobProperty): - """Produce the HSG5 BOOSTED ZH->llbb D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5ZHLL' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_ZHllbb_boosted_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5ZHLLFile') - -class WriteHSG5ZHLLUD3PD (JobProperty): - """Produce the HSG5 UNBOOSTED ZH->llbb D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5ZHLLU' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_ZHllbb_unboosted_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5ZHLLUFile') - -# ZHMET D3PD -class WriteHSG5ZHMETD3PD (JobProperty): - """Produce the HSG5 BOOSTED ZH->nunubb D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5ZHMET' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_ZHnunubb_boosted_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5ZHMETFile') - -class WriteHSG5ZHMETUD3PD (JobProperty): - """Produce the HSG5 UNBOOSTED ZH->nunubb D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5ZHMETU' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_ZHnunubb_unboosted_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5ZHMETUFile') - -# GAMH D3PD (should no longer be used) -class WriteHSG5GAMHD3PD (JobProperty): - """Produce the HSG5 boosted gamma-H D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5GAMH' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_gammaHbb_boosted_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5GAMHFile') - -# GAMZ D3PD -class WriteHSG5GAMZD3PD (JobProperty): - """Produce the HSG5 boosted gamma-Z D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5GAMZ' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_gammaZbb_boosted_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5GAMZFile') - -# ZBB D3PD -class WriteHSG5ZBBD3PD (JobProperty): - """Produce the HSG5 boosted Z->bb D3PD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = 'StreamNTUP_HSG5ZBB' - FileName = '' - isVirtual = False - DPDMakerScript = "HSG5DPDUtils/HSG5_Zbb_boosted_D3PD_prodJobOFragment.py" - TreeNames = ['physics'] - SubSteps = ['a2d', 'e2d'] -allowedD3PDList.append('outputNTUP_HSG5ZBBFile') diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5Flags.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5Flags.py deleted file mode 100644 index e3657920c45e5e289d87eda78dd7d26ebe038a76..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5Flags.py +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# -## @file HSG5D3PDUtils/python/HSG5Flags.py -## @purpose Python module to hold common flags to configure HSG5D3PD JobOptions -## - -##----------------------------------------------------------------------------- -## Import -from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer -from AthenaCommon.JobProperties import jobproperties - -# General flags -_flags = [] - -class doHadronicRecoil(JobProperty): - """ Turn on filling of hadronic recoil branches - """ - statusOn=True - allowedTypes=['bool'] - StoredValue=False -_flags.append(doHadronicRecoil) - -class doGoodTracks(JobProperty): - """ Turn on filling of hadronic recoil branches - """ - statusOn=True - allowedTypes=['bool'] - StoredValue=True -_flags.append(doGoodTracks) - -class doHighPtTracks(JobProperty): - """ Turn on filling of HighPtTracks branches - """ - statusOn=False - allowedTypes=['bool'] - StoredValue=False -_flags.append(doHighPtTracks) - -class doHighPtClusters(JobProperty): - """ Turn on filling of HighPtClusters branches - """ - statusOn=False - allowedTypes=['bool'] - StoredValue=False -_flags.append(doHighPtClusters) - -class doHighPtEMClusters(JobProperty): - """ Turn on filling of HighPtEMClusters branches - """ - statusOn=False - allowedTypes=['bool'] - StoredValue=False -_flags.append(doHighPtEMClusters) - -class doTaus(JobProperty): - """ Turn on filling of tau branches - """ - statusOn=False - allowedTypes=['bool'] - StoredValue=False -_flags.append(doTaus) - -class doPhotons(JobProperty): - """ Turn on filling of photon branches - """ - statusOn=False - allowedTypes=['bool'] - StoredValue=False -_flags.append(doPhotons) - -class doAllMissingET(JobProperty): - """ Turn on filling of all MissingET branches - """ - statusOn=True - allowedTypes=['bool'] - StoredValue=True -_flags.append(doAllMissingET) - -# V0D3PDObject flags - - -##----------------------------------------------------------------------------- -## Definition of the HSG5 flag container - -class HSG5Flags(JobPropertyContainer): - """ The HSG5 base D3PD flag container - """ - -class HSG5WHFlags(JobPropertyContainer): - """ The HSG5WH D3PD flag container - """ - -class HSG5WHUFlags(JobPropertyContainer): - """ The HSG5WHU D3PD flag container - """ - -class HSG5WHQFlags(JobPropertyContainer): - """ The HSG5WHU D3PD flag container - """ - -class HSG5ZHLLFlags(JobPropertyContainer): - """ The HSG5ZHLL D3PD flag container - """ - -class HSG5ZHLLUFlags(JobPropertyContainer): - """ The HSG5ZHLLU D3PD flag container - """ - -class HSG5ZHMETFlags(JobPropertyContainer): - """ The HSG5ZHMET D3PD flag container - """ - -class HSG5ZHMETUFlags(JobPropertyContainer): - """ The HSG5ZHMETU D3PD flag container - """ - -class HSG5GAMZFlags(JobPropertyContainer): - """ The HSG5GAMZ D3PD flag container - """ - -class HSG5ZBBFlags(JobPropertyContainer): - """ The HSG5ZBB D3PD flag container - """ - -# add the reconstruction flags container to the top containers -jobproperties.add_Container(HSG5Flags) -jobproperties.add_Container(HSG5WHFlags) -jobproperties.add_Container(HSG5WHUFlags) -jobproperties.add_Container(HSG5WHQFlags) -jobproperties.add_Container(HSG5ZHLLFlags) -jobproperties.add_Container(HSG5ZHLLUFlags) -jobproperties.add_Container(HSG5ZHMETFlags) -jobproperties.add_Container(HSG5ZHMETUFlags) -jobproperties.add_Container(HSG5GAMZFlags) -jobproperties.add_Container(HSG5ZBBFlags) - -for flag in _flags: - jobproperties.HSG5Flags.add_JobProperty(flag) - jobproperties.HSG5WHFlags.add_JobProperty(flag) - jobproperties.HSG5WHUFlags.add_JobProperty(flag) - jobproperties.HSG5WHQFlags.add_JobProperty(flag) - jobproperties.HSG5ZHLLFlags.add_JobProperty(flag) - jobproperties.HSG5ZHLLUFlags.add_JobProperty(flag) - jobproperties.HSG5ZHMETFlags.add_JobProperty(flag) - jobproperties.HSG5ZHMETUFlags.add_JobProperty(flag) - jobproperties.HSG5GAMZFlags.add_JobProperty(flag) - jobproperties.HSG5ZBBFlags.add_JobProperty(flag) -del _flags - -HSG5Flags=jobproperties.HSG5Flags -HSG5WHFlags=jobproperties.HSG5WHFlags -HSG5WHUFlags=jobproperties.HSG5WHUFlags -HSG5WHQFlags=jobproperties.HSG5WHQFlags -HSG5ZHLLFlags=jobproperties.HSG5ZHLLFlags -HSG5ZHLLUFlags=jobproperties.HSG5ZHLLUFlags -HSG5ZHMETFlags=jobproperties.HSG5ZHMETFlags -HSG5ZHMETUFlags=jobproperties.HSG5ZHMETUFlags -HSG5GAMZFlags=jobproperties.HSG5GAMZFlags -HSG5ZBBFlags=jobproperties.HSG5ZBBFlags - - diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5Selectors.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5Selectors.py deleted file mode 100644 index e4e4ef8ccb28e84582965a31710d46bdba5d06fc..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/HSG5Selectors.py +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -import AthenaCommon.SystemOfUnits as Units -from D2PDMaker.D2PDMakerConf import D2PDMuonSelector, D2PDElectronSelector - -from ROOT import egammaPID - -class MuonSelector( object ) : - - def __init__( self, - name = 'HSG5_MuonSelector', - inputCollection = 'MuidMuonCollection', - outputLinkCollection = 'HSG5_ElectronLinkCollection', - minNumberPassed = 1, - ptMin = 18.0, - absEtaMax = 2.5, - acceptIsCombined = False, - acceptIsSegmentTagged = False, - doRelPtCone20 = False, - relPtCone20Max = 0.15, - requireIsLoose = False, - requireIsTight = False) : - - self.name = name - self.inputCollection = inputCollection - self.outputLinkCollection = outputLinkCollection - self.minNumberPassed = minNumberPassed - self.ptMin = ptMin - self.absEtaMax = absEtaMax - self.acceptIsCombined = acceptIsCombined - self.acceptIsSegmentTagged = acceptIsSegmentTagged - self.doRelPtCone20 = doRelPtCone20 - self.relPtCone20Max = relPtCone20Max - self.muonRequireIsLoose = requireIsLoose - self.muonRequireIsTight = requireIsTight - - def getMuonSelector ( self, name="", inputCollection="", outputLinkCollection="" ) : - - if name!="": - self.name=name - if inputCollection!="": - self.inputCollection=inputCollection - if outputLinkCollection!="": - self.outputLinkCollection=outputLinkCollection - - muonParametersList = [] - muonParametersMinList = [] - muonParametersMaxList = [] - muonParametersUseRelativeCutsList = [] - if self.doRelPtCone20: - muonParametersList.append(17) # ptcone20 - muonParametersMinList.append(0.) - muonParametersMaxList.append(self.relPtCone20Max) - muonParametersUseRelativeCutsList.append(True) - - return D2PDMuonSelector(self.name, - inputCollection = self.inputCollection, - outputLinkCollection = self.outputLinkCollection, - minNumberPassed = self.minNumberPassed, - ptMin = self.ptMin*Units.GeV, - absEtaMax = self.absEtaMax, - muonAcceptIsCombined = self.acceptIsCombined, - muonAcceptIsSegmentTagged = self.acceptIsSegmentTagged, - muonRequireIsLoose = self.muonRequireIsLoose, - muonRequireIsTight = self.muonRequireIsTight, - muonParametersList = muonParametersList, - muonParametersMinList = muonParametersMinList, - muonParametersMaxList = muonParametersMaxList, - muonParametersUseRelativeCutsList = muonParametersUseRelativeCutsList ) - - -class ElectronSelector( object ) : - - def __init__( self, - name = 'HSG5_ElectronSelector', - outputLinkCollection = 'HSG5_ElectronLinkCollection', - minNumberPassed = 1, - ptMin = 20.0, - clusterEtaMax = 2.5, - requireTight = False) : - - self.name = name - self.outputLinkCollection = outputLinkCollection - self.minNumberPassed = minNumberPassed - self.ptMin = ptMin - self.clusterEtaMax = clusterEtaMax - self.requireTight = requireTight - - def getElectronSelector ( self, name="", outputLinkCollection="" ) : - - if name!="": - self.name=name - if outputLinkCollection!="": - self.outputLinkCollection=outputLinkCollection - - electronIsEM = egammaPID.isEM - if self.requireTight: - electronIsEM = egammaPID.ElectronTight - - return D2PDElectronSelector( self.name, - inputCollection = 'ElectronAODCollection', - outputLinkCollection = self.outputLinkCollection, - minNumberPassed = self.minNumberPassed, - ptMin = self.ptMin*Units.GeV, - clusterEtaMax = self.clusterEtaMax, - electronIsEM = electronIsEM ) - - -class JetSelector( object ) : - - def __init__( self, - name = 'HSG5_JetSelector', - inputCollection = 'AntiKt4TopoEMJets', - outputLinkCollection = 'HSG5_JetLinkCollection', - minNumberPassed = 1, - ptMin = 20.0, - etaMax = 2.5, - emVeto = False, - emCollection = 'HSG5_ElectronLinkCollection', - emJetDeltaRMax = 0.3) : - - self.name = name - self.inputCollection = inputCollection, - self.outputLinkCollection = 'HSG5_JetLinkCollection' - self.minNumberPassed = minNumberPassed - self.ptMin = ptMin - self.etaMax = 2.5 - self.emVeto = emVeto - self.emCollection = emCollection - self.emJetDeltaRMax = emJetDeltaRMax - - def getJetSelector( self, name="", outputLinkCollection="") : - - if name!="": - self.name=name - if outputLinkCollection!="": - self.outputLinkCollection=outputLinkCollection - - - outputAssociationContainerList = [] - numberOfAssociationsContainerList = [] - - if self.emVeto: - from AssociationComps.AssociationCompsConf import DeltaRAssociationTool - ToolSvc += DeltaRAssociationTool( self.name+"_emDeltaRAssocTool", - OutputLevel = INFO, - inputAssociateToCollection = self.emCollection, - deltaRMax = self.emJetDeltaRMax, - writeUserData = False) - outputAssociationContainerList.append(self.name+"_emDeltaRAssocTool") - numberOfAssociationsContainerList.append(0) - - return D2PDJetSelector( self.name, - inputCollection = self.inputCollection, - outputLinkCollection = self.outputLinkCollection, - associationToolList = [ ToolSvc.HSG5WHU_emDeltaRAssociationTool ], - outputAssociationContainerList = outputAssociationContainerList, - numberOfAssociationsMaxCutList = numberOfAssociationsMaxCutList, - minNumberPassed = self.minNumberPassed, - ptMin = self.ptMin*Units.GeV, - etaMax = self.etaMax) diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/JSD3PD.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/JSD3PD.py deleted file mode 100644 index 292bbe426914bb69082e2f8e5dd777b0bf734fbc..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/JSD3PD.py +++ /dev/null @@ -1,221 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -from JetD3PDMaker.JetD3PDObject import getJetD3PDObject -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from RecExConfig.RecFlags import rec -from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation -from D3PDMakerCoreComps.IndexAssociation import IndexAssociation -from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation -from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation -import JetSubstructureD3PDMaker -from D3PDMakerCoreComps.D3PDObject import make_SG_D3PDObject -import EventCommonD3PDMaker -#from JetTagD3PDMaker.AddBTagD3PDInfo import addBTagInfoToJetObject -from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys -from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags -import JetTagD3PDMaker - - -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -def getJetCollectionD3PDObject(objectname = 'JetCollectionD3PDObject', prefix = 'jet_'): - return make_SG_D3PDObject('JetCollection','','jet_', objectname) - - -def AddUniqueMoments(obj, momlist, theblockname = 'ConfigParams', level = 0): - obj.defineBlock(level, theblockname, JetSubstructureD3PDMaker.JetMomentUniqueFillerTool, Moments = momlist, OutputLevel=3) - - -def AddHadronicInfo(obj, additionalMoments = [], theblockname = 'SubjetMomentsHadronic', level=0): - - from JetD3PDMaker import JetMomentFillerTool - obj.defineBlock(level, theblockname, JetMomentFillerTool,Moments= [] + additionalMoments) - -def AddAssocJetsIndex(obj, jetassocname, jettarget, intermediate_names = [], level=0): - - JetAssocTrack = IndexMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,jettarget,level = level, - prefix=jetassocname+'_', - blockname=jetassocname+'blockindex', AssociationName = jetassocname , IntermediateAssociationNames=intermediate_names, OutputLevel=3 ) - -def AddConstitIndex(object, typename='CaloCluster', target='cl_', level=0): - - import EventCommonD3PDMaker - import D3PDMakerCoreComps - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = True, - level = level) - - ConstitAssoc.defineBlock (0, 'ConstitIndex'+typename, D3PDMakerCoreComps.IndexFillerTool, Target = target) - -def AddConstitTruthIndex(object, typename='TruthParticle', target='mc_', level=0): - - import EventCommonD3PDMaker - import D3PDMakerCoreComps - import TruthD3PDMaker - ConstitAssoc = ContainedVectorMultiAssociation \ - (object, - EventCommonD3PDMaker.NavigableConstituentAssociationTool, - 'constit_', - blockname=typename+'NavigableConstituentAssociationTool', - TypeName = typename, WriteWeight = False, - level = level) - - genPart = SimpleAssociation(ConstitAssoc,TruthD3PDMaker.TruthParticleGenParticleAssociationTool) - trupart2 = IndexAssociation (genPart, TruthD3PDMaker.GenParticleTruthParticleAssociationTool, - target = 'mc_', - Target = 'mc_') - - - -def AddBTaggingInfo(obj, level = 0, block_prefix = "my"): - - obj.defineBlock(level,block_prefix+JetTagD3PDKeys.BTagWeightsBlockName(), - JetTagD3PDMaker.JetTagBTagWeightsFillerTool, - prefix=JetTagD3PDKeys.BTagWeightsPrefix(), - TaggerNames=JetTagD3PDFlags.Taggers()) - #addBTagInfoToJetObject(obj,0) - -def AddBTaggingInfoFromSubjets(obj, sj_assoc_name = 'SplitFiltSubjets', sj_prefix = "subjets", level=0): - t = ContainedVectorMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,level = level, prefix= sj_prefix+"_", - blockname='blockbtag'+sj_assoc_name, nrowName = 'nsj', OutputLevel=3, AssociationName=sj_assoc_name, IntermediateAssociationNames=['Parent']) - - #t.defineBlock(0, 'myKinematics', EventCommonD3PDMaker.FourMomFillerTool, WriteE = True) - - AddBTaggingInfo(t, 0, "my"+sj_assoc_name) - -myJSD3PD = [] - -def JSD3PD(jetsToWrite, alg): - - global myJSD3PD - - if not alg: - raise TypeError("alg should be specified!") - - jsD3PD=None - for val in myJSD3PD: - if val[0]==jetsToWrite: - print "using existing JSD3PD" - jsD3PD=val[1] - break - - if jsD3PD==None: - jsD3PD = JSD3PD_Tool(jetsToWrite) - myJSD3PD += [ (jetsToWrite, jsD3PD) ] - - jsD3PD.addToAlg(alg) - -class JSD3PD_Tool(object): - - def __init__(self,jetsToWrite): - - self.commonExcludeList = ['El02Match','Mu02Match','L1Info','L2Info','EFInfo'] - self.commonIncludeList = [] - - MyJetD3PDObject = getJetD3PDObject(objectname='MyJetD3PDObject') - MyGroomedJetD3PDObject = getJetD3PDObject(objectname='MyGroomedJetD3PDObject') - - import re - JetAlgPattern = re.compile(r'^(\D+)(\d{1,2})(\D+)Jets') #assuming standard notation - ars = JetAlgPattern.match(jetsToWrite[0]).groups() - - self.parentJets = ''.join(ars) #remove the 'Jets' at the end - - self.groomedJetsList = jetsToWrite[1] - - if 'Track' in self.parentJets: - AddConstitIndex(MyGroomedJetD3PDObject, typename='Rec::TrackParticle', target='trk') - AddConstitIndex(MyJetD3PDObject, typename='Rec::TrackParticle', target='trk') - elif 'LCTopo' in self.parentJets: - AddConstitIndex(MyGroomedJetD3PDObject) - AddConstitIndex(MyJetD3PDObject) - elif 'Truth' in self.parentJets: - AddConstitTruthIndex(MyJetD3PDObject) - AddConstitTruthIndex(MyGroomedJetD3PDObject) - - #if 'Track' not in self.parentJets and 'Truth' not in self.parentJets: - # AddAssocJetsIndex(MyJetD3PDObject, 'TrackJets', 'jet_' + ars[0] + ars[1] + 'TrackZ_') - # if rec.doTruth(): - # AddAssocJetsIndex(MyJetD3PDObject, 'TruthJets', 'jet_' + ars[0] + ars[1] + 'Truth_') - - self.JetQualInclude = [] - - if 'Topo' in self.parentJets or 'LCTopo' in self.parentJets: - self.commonIncludeList += ['ConstituentScale', 'EMScale'] - AddHadronicInfo(MyJetD3PDObject, ['OriginIndex','nTrk','sumPtTrk','EtaOrigin' , 'PhiOrigin' , 'MOrigin'], theblockname = 'OriginIndexBlock') - AddHadronicInfo(MyGroomedJetD3PDObject, ['EtaOrigin' , 'PhiOrigin' , 'MOrigin' ], theblockname = 'OriginIndexBlock') - - - if (self.parentJets == 'AntiKt10LCTopo') or (self.parentJets == 'CamKt12LCTopo'): - AddHadronicInfo(MyJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock') - AddHadronicInfo(MyGroomedJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock') - - self.VtxInclude = [] - - if 'Topo' in self.parentJets: - self.VtxInclude += ['JVtx','JetVertexFraction'] - - AddAssocJetsIndex(MyGroomedJetD3PDObject, 'Parent', 'jet_' + self.parentJets + '_') - for gr in self.groomedJetsList: - AddAssocJetsIndex(MyJetD3PDObject, gr, 'jet_' + self.parentJets + gr + '_') - - MyGroomedJetCollectionD3PDObject = getJetCollectionD3PDObject(objectname = "MyGroomedJetCollectionD3PDObject") - AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['SmallR','PtFrac', 'NSub'], theblockname = 'TrimConfigMoments', level=99) - AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['NSubjets','ktycut2','massFraction','minRfilt','minSplitR'], theblockname = 'FiltConfigMoments', level = 99) - - AddHadronicInfo(MyGroomedJetD3PDObject, ['CORE_RBB','CORE_RFILT'], theblockname = 'FiltMoments', level=99) - - ## in groomedJetsList, subjets name should follow the name of the 'full/composite' jet. - for idx,gr in enumerate(self.groomedJetsList): - ## names are unique - if 'Subjets' in gr and idx != 0 and 'Subjets' not in self.groomedJetsList[idx-1]: - AddBTaggingInfoFromSubjets(MyGroomedJetD3PDObject, sj_assoc_name = gr, sj_prefix = gr, level = 99) - AddAssocJetsIndex(MyGroomedJetD3PDObject, gr, 'jet_' + self.parentJets + gr + '_', intermediate_names = ['Parent'], level=99) - elif 'Subjets' in gr: - raise ValueError("Subjets without full composite jet ?") ## not suppose to happen - - self.MyJetD3PDObject = MyJetD3PDObject - self.MyGroomedJetD3PDObject = MyGroomedJetD3PDObject - self.MyGroomedJetCollectionD3PDObject = MyGroomedJetCollectionD3PDObject - - - - def addToAlg(self,alg): - - alg += self.MyJetD3PDObject(0, prefix='jet_' + self.parentJets + '_', sgkey=self.parentJets+'Jets', exclude=self.commonExcludeList, include = self.commonIncludeList + self.VtxInclude + self.JetQualInclude) - - for idx,gr in enumerate(self.groomedJetsList): - - kw = {} - includelist = [] - includelist_unique = [] - - if 'Trim' in gr: - includelist_unique += ['TrimConfigMoments'] - - elif 'Filt' in gr and 'Subjets' not in gr: - includelist += ['FiltMoments'] - includelist_unique += ['FiltConfigMoments'] - if len(self.groomedJetsList) > idx+1 and 'Subjets' in self.groomedJetsList[idx+1]: - includelist += ['blockbtag'+self.groomedJetsList[idx+1], self.groomedJetsList[idx+1]+'blockindex'] - - elif 'Subjets' in gr: - includelist += [JetTagD3PDKeys.BTagWeightsBlockName()] - includelist += [JetTagD3PDKeys.JetTrackAssocBlockName()] - includelist += [JetTagD3PDKeys.JetTrackBlockName()] - includelist += [JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()] - includelist += [JetTagD3PDKeys.IPInfoPlusTrackBlockName()] - - kw[JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']= "trk" - kw[JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target']= "trk" - - alg += self.MyGroomedJetD3PDObject(0, prefix='jet_' + self.parentJets + gr + '_', sgkey=self.parentJets + gr +'Jets', include = includelist + self.commonIncludeList,exclude=self.commonExcludeList,**kw) - - alg += self.MyGroomedJetCollectionD3PDObject( 0, prefix='jet_' + self.parentJets + gr + '_config_', sgkey=self.parentJets + gr +'Jets', include = includelist_unique) - - return diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/JSjets.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/JSjets.py deleted file mode 100644 index a1d79d7f5526be7d5532fef3dc3fa8ee2acea6a2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/JSjets.py +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -#####Jet Reco ############ - -# Before adding your algorithms to topSequence -from JetRec.JetGetters import * -from JetRec.JetRecFlags import jetFlags -from JetRecTools.JetRecToolsConf import * -from AthenaCommon.AlgSequence import AlgSequence -from JetRec.JetMomentGetter import add_jetMoments_to_JetAlg, make_JetMomentGetter -from JetRec.JetRecConf import JetSorterTool -#from JetMomentTools.JetMomentToolsConf import JetWidthTool - -import JetSubStructure - -_GroomingTool = { - 'Trimming' : JetSubStructure.SimpleTrimmingTool, - 'BDRSFiltering' : JetSubStructure.BDRSFilteringTool, -} - -def buildName(GroomedDict): - - if type(GroomedDict) != dict: - raise TypeError("GroomedDicts must contain dicts!") - - if GroomedDict['Type'] in _GroomingTool: - strconfig = "" - theArgs = GroomedDict['args'] - for k in theArgs.keys(): - if type(theArgs[k]) == int: - strconfig += k + '%d' % theArgs[k] - elif type(theArgs[k]) == float: - strconfig += k + '%d' % (theArgs[k]*100) - - toolname = strconfig - - return toolname - else: - raise KeyError("Couldn't find grooming tool %s" % GroomedDict['Type']) - - -def getGroomingTools(GroomedDicts): - - myGroomingTools = [] - catNames = [] - for gr in GroomedDicts: - toolname = buildName(gr) - defname = _GroomingTool[gr['Type']].__slots__['Name'] ## safe hack ? - - defsubjetsname = '' - if "SubjetsName" in _GroomingTool[gr['Type']].__slots__.keys(): - defsubjetsname = _GroomingTool[gr['Type']].__slots__['SubjetsName'] - - kw = gr['args'].copy() - if 'Name' not in kw.keys(): - kw['Name'] = defname - kw['Name'] += toolname - - if 'SubjetsName' not in kw.keys() and defsubjetsname != '': - kw['SubjetsName'] = defsubjetsname - kw['SubjetsName'] += toolname - - myGroomingTools += [_GroomingTool[gr['Type']](gr['Type']+toolname, StoreConfigParam = True, **kw)] - - catNames += [ kw['Name'] ] - - ## are we requesting subjets ? - if "SaveSubjets" in kw.keys(): - if kw["SaveSubjets"] == True: - catNames += [ kw['SubjetsName'] ] - - return myGroomingTools, catNames - - -###################### -## Truth Jets ## -###################### - -def setupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq): - if rec.doTruth(): - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3) - - assoc_tool_truth = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTruth', - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = [sortertool], OutputLevel = 3 - ) - - myjetgetter_truth = make_StandardJetGetter(myjetfinder, myjetdr, 'Truth', seq = theseq, doCalib=False ,addDefaultMoment=False) - truthcontname = myjetgetter_truth.outputKey() - - make_JetMomentGetter(truthcontname , [assoc_tool_truth], theseq ) - - return [ truthcontname, catNames ] - else: - return [ None, None ] - -###################### -## Track Jets ## -###################### - -def setupTrackJets(myjetfinder, myjetdr, GroomedDicts, theseq): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - - assoc_tool_track = JetSubStructure.JetAssociationTool( - name = 'JetAssocToolTrack', - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = [sortertool], OutputLevel = 3 - ) - - - #---- TrackJet ---- - - from JetSubStructure.JSTrackJets import createJSTrackJets - mygetter = createJSTrackJets(theseq, myjetfinder,myjetdr) - - trackjetcontname = mygetter.outputKey() - - #---- End TrackJet ---- - - make_JetMomentGetter(trackjetcontname , [assoc_tool_track], theseq ) - - return [ trackjetcontname, catNames ] - - -###################### -## Calo Jets ## -###################### - -def setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq): - - myGroomingTools, catNames = getGroomingTools(GroomedDicts) - - sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) - - grjets_calib = [] - - ## Origin correction / Eta-Mass-JES hack - - from JetSubStructure.mySetupJetCalibrators import doEtaMassJESCorrection - from JetCalibTools.MakeCalibSequences import calibTags - calibTags['ETAMASSJES'] = doEtaMassJESCorrection - - mydoCalib = False - mycalibName = '' - - if 'LCTopo' in myjetinput: - mydoCalib = True - if (myjetfinder + '%d'%(myjetdr*10) == 'AntiKt10') or (myjetfinder + '%d'%(myjetdr*10) == 'CamKt12'): - mycalibName = 'LC:ORIGIN_ETAMASSJES' - else: - mycalibName = 'LC:ORIGIN' - - stdcaliblist = [] - allowedcalib = ['AntiKt10LCTopoTrimmedJets', 'AntiKt10LCTopoTrimmedPtFrac3SmallR30Jets','AntiKt10LCTopoTrimmedPtFrac5SmallR30Jets','CamKt12LCTopoTrimmedPtFrac5SmallR30Jets'] - for x in catNames: - author = myjetfinder + '%d'%(myjetdr*10) + myjetinput + x + 'Jets' - if author in allowedcalib : - grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin_etamassjes_'+x, - JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput+x, doCalib=True, calibName='LC:ORIGIN_ETAMASSJES')[0], - GroomedjetsAuthor = [x] )] - else: - stdcaliblist += [x] - - if stdcaliblist != [] : - grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin', - JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='LC:ORIGIN')[0], - GroomedjetsAuthor = stdcaliblist )] - elif 'Topo' in myjetinput: - mydoCalib = True - mycalibName = 'EM:ORIGIN' - grjets_calib += getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='EM:ORIGIN') - - assoc_tools = [] - if rec.doTruth(): - truthcontname = myjetfinder + '%dTruthJets' % (myjetdr*10) - if hasattr(theseq, truthcontname): - truthj_assoc = JetSubStructure.JetJetAssociatorTool("Truth_JetJetAssociatorTool", ContainerName = truthcontname, AssociationName = "TruthJets", MatchOrigin = False) - - trackjetcontname = myjetfinder + '%dTrackZJets' % (myjetdr*10) - if hasattr(theseq, trackjetcontname): - trkj_assoc = JetSubStructure.JetJetAssociatorTool("Trk_JetJetAssociatorTool", ContainerName = trackjetcontname, AssociationName = "TrackJets", MatchOrigin = True) - - - ## batgging ## - subjets_names = [x for x in catNames if "Subjets" in x] - btag_tool = [] - if subjets_names != '': - from JetRec.JetGetters import getStandardBTaggerTool - from JetRec.JetRecFlags import jetFlags - jetFlags.doBTagging = True - _btag_tool = getStandardBTaggerTool('AntiKt', 0.4, 'LCTopo') - if len(_btag_tool) > 0: - btag_tool += [ JetSubStructure.JetAlgToolWrapper(name = 'JetBTagger_' + ''.join(subjets_names), JetAlgTool = _btag_tool[0], - GroomedjetsAuthor = subjets_names ) ] - jetFlags.doBTagging = False - - ## btagging end ## - - assoc_tool = JetSubStructure.JetAssociationTool( - name = 'JetAssocTool', - AssociatorTools = assoc_tools, - GroomingTools = myGroomingTools, UsedSignalState = 2, - JetAlgTools = grjets_calib + [sortertool] + btag_tool, OutputLevel = 3 - ) - - - myjetgetter = make_StandardJetGetter(myjetfinder, myjetdr, myjetinput, seq = theseq, doCalib=mydoCalib, calibName=mycalibName,addDefaultMoment=False) - contname = myjetgetter.outputKey() - - - # ------------------------------------------------ - # Associate a vertex and set the JVF moment. Must be placed AFTER vertex correction - # ------------------------------------------------ - from AthenaCommon.DetFlags import DetFlags - from AthenaCommon.AppMgr import ToolSvc - noVertex = jobproperties.Beam.beamType == 'cosmics' or jobproperties.Beam.beamType == 'singlebeam' - if DetFlags.detdescr.ID_on() and jetFlags.doJVF() and 'Truth' not in myjetinput and not noVertex: - from JetSubStructure.mySetupJetMomentTools import mygetJetVertexAssociationTool - myjvatool = mygetJetVertexAssociationTool(myjetfinder, myjetdr,myjetinput,'Custom%d'%(myjetdr*10)) - add_jetMoments_to_JetAlg(myjetgetter, [myjvatool]) - - make_JetMomentGetter(contname , [assoc_tool], theseq ) - - return [ contname, catNames ] - - -def createJSJets( ParentDict, GroomedDicts, theseq = AlgSequence()) : - - if type(ParentDict) != dict: - raise TypeError("ParentDict must be a dict!") - - if type(GroomedDicts) != list: - raise TypeError("GroomedDicts must be a list!") - - myjetfinder = ParentDict["JetFinder"] - myjetdr = ParentDict["JetdR"] - myjetinput = ParentDict["JetInput"] - - if myjetinput == 'Truth': - return setupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq) - elif myjetinput == 'Track': - return setupTrackJets(myjetfinder, myjetdr, GroomedDicts, theseq) - else : - return setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq) - diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/LeptonFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/LeptonFilter.py deleted file mode 100644 index 59622f931a9a4f1a2450edc494a1a425e46499d2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/LeptonFilter.py +++ /dev/null @@ -1,609 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -##============================================================================= -## Name: LeptonFilter.py -## -## Author: Robert Harrington -## Created: July 2011 -## -## Description: This is a short algorithm to select events that contain one -## electron or muon which fulfills a certain set of criteria. -##============================================================================= - -__doc__ = """This is a short algorithm to select events that contain one -electron or muon which fulfills a certain set of criteria. -""" -__version__ = "0.0.1" -__author__ = "Robert Harrington <roberth@cern.ch>" - - -import AthenaPython.PyAthena as PyAthena -from AthenaPython.PyAthena import StatusCode - -from PrimaryDPDMaker import PrimaryDPDHelpers - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -class LeptonFilter( PyAthena.AthFilterAlgorithm ): - - """ - This class is a short algorithm to select events that contain one - electron which fulfills a certain set of criteria. - - The possible criteria for electrons are (with default values): - - cutEtMin = 20.0*Units.GeV) - cutIsEM = 'None' # Possible values: 'None', 'Loose', 'Medium', 'Tight', 'TightNoIsolation' - cutElAuthor = 'either' # Possible values: 'softe', 'egamma', 'either' - cutElEtaMax = 2.5 - removeEtaCrack = False - crackEtaMin = 1.37 - crackEtaMax = 1.52 - minNumberPassedEl= 1 - passAllEl = False - - The possible criteria for muons are (with default values): - - cutPtMinMu = 0*Units.GeV - muonAuthors = 'all' # Possible values: 'lowpt', 'combined', 'calo', 'standalone', 'all' - cutContainerMu = 'all' # Possible values: 'staco', 'muid', 'calo','all' - cutEtaMuMax = 3.0 - passAllMu = False - usingAOD = True - doEtconeMu = False - etconeMuMax = 6.0*Units.GeV - doNoTrackIsolMu = False - noTrackIsolMu = 5 - innerNoTrackRadiusMu = 0.05 - outerNoTrackRadiusMu = 0.5 - doPtTrackIsolMu = False - ptTrackIsolMu = 8.0*Units.GeV - innerPtTrackRadiusMu = 0.05 - outerPtTrackRadiusMu = 0.5 - doCaloIsolMu = False - caloIsolMu = 6.0*Units.GeV - innerCaloRadiusMu = 0.05 - outerCaloRadiusMu = 0.5 - doJetIsolMu = False - jetIsolEtMu = 15.0*Units.GeV - jetDistanceMu = 0.5 - minNumberPassedMu = 1 - """ - - - def __init__ ( self, name = "LeptonFilter", **kw ): - - ## initialize base class - kw['name'] = name - super(LeptonFilter, self).__init__(**kw) - - ## Define the cuts - self.electronCollectionType = kw.get('electronCollectionType', "ElectronContainer") - self.electronCollectionName = kw.get('electronCollectionName', "ElectronAODCollection") - self.goodElectronCollectionName = kw.get('goodElectronCollectionName', self.name() ) - - self.cutEtMinEl = kw.get('cutEtMinEl', 20.0*Units.GeV) - self.cutIsEM = kw.get('cutIsEM', "None") # Possible values: "None", "Loose", 'Medium', 'Tight', 'TightNoIsolation' - self.cutElAuthor = kw.get('cutElAuthor', "either") # Possible values: 'softe', 'egamma', 'either' - self.cutElEtaMax = kw.get('cutElEtaMax', 2.5) - self.removeEtaCrack = kw.get('removeEtaCrack', False) - self.crackEtaMin = kw.get('crackEtaMin', 1.37) - self.crackEtaMax = kw.get('crackEtaMax', 1.52) - self.minNumberPassedEl = kw.get('minNumberPassedEl', 1) - self.passAllEl = kw.get('passAllEl', False) - - ## muon - self.cutPtMinMu = kw.get('cutPtMinMu', 0.0*Units.GeV) - self.muonAuthors = kw.get('muonAuthors', "all") # Possible values: 'lowpt', 'combined', 'calo', 'standalone', 'all' - self.muonContainers = kw.get('muonContainers', "all") # Possible values: 'staco', 'muid', 'calo','all' - self.goodMuonCollectionName = kw.get('goodMuonCollectionName', self.name() ) - self.cutMuEtaMax = kw.get('cutMuEtaMax', 3.0) - self.passAllMu = kw.get('passAllMu', False) - self.doEtconeMu = kw.get('doEtconeMu', False) - self.etconeMuMax = kw.get('etconeMuMax', 6.0*Units.GeV) - self.doNoTrackIsolMu = kw.get('doNoTrackIsolMu', False) - self.noTrackIsolMu = kw.get('noTrackIsolMu', 5) - self.innerNoTrackRadiusMu = kw.get('innerNoTrackRadiusMu', 0.05) - self.outerNoTrackRadiusMu = kw.get('outerNoTrackRadiusMu', 0.5) - self.doPtTrackIsolMu = kw.get('doPtTrackIsolMu', False) - self.ptTrackIsolMu = kw.get('ptTrackIsolMu', 8.0*Units.GeV) - self.innerPtTrackRadiusMu = kw.get('innerPtTrackRadiusMu', 0.05) - self.outerPtTrackRadiusMu = kw.get('outerPtTrackRadiusMu', 0.5) - self.doCaloIsolMu = kw.get('doCaloIsolMu', False) - self.caloIsolMu = kw.get('caloIsolMu', 6.0*Units.GeV) - self.innerCaloRadiusMu = kw.get('innerCaloRadiusMu', 0.05) - self.outerCaloRadiusMu = kw.get('outerCaloRadiusMu', 0.5) - self.doJetIsolMu = kw.get('doJetIsolMu', False) - self.jetIsolEtMu = kw.get('jetIsolEtMu', 15.0*Units.GeV) - self.jetDistanceMu = kw.get('jetDistanceMu', 0.5) - self.jetContainerName = kw.get('jetContainerName',"Cone4TowerJets") - self.muonIsolationTool = kw.get('muonIsolation',None) - self.minNumberPassedMu = kw.get('minNumberPassedMu', 1) - - self.usingAOD = kw.get('usingAOD', True) - - ## Get the storgate handle - self.storeGateSvc = None - self.muContainerNames = [] - - return - - - def initialize(self): - - self.msg.info( '************************************' ) - self.msg.info( '==> initialize %s...', self.name() ) - self.msg.info( 'Will apply the following electron cuts:' ) - self.msg.info( ' EtMinEl = %r', self.cutEtMinEl ) - self.msg.info( ' IsEmEl = %s', self.cutIsEM ) - self.msg.info( ' AuthorEl = %s', self.cutElAuthor ) - self.msg.info( ' ElEtaMax = %r', self.cutElEtaMax ) - self.msg.info( ' removeEtaCrack = %r', self.removeEtaCrack ) - self.msg.info( ' crackEtaMin = %r', self.crackEtaMin ) - self.msg.info( ' crackEtaMax = %r', self.crackEtaMax ) - self.msg.info( ' minNumberPassedEl = %r', self.minNumberPassedEl ) - self.msg.info( ' passAllEl = %r', self.passAllEl ) - - self.msg.info( 'And the following muon cuts:' ) - self.msg.info( ' PtMinMu = %r', self.cutPtMinMu ) - self.msg.info( ' AuthorMu = %s', self.muonAuthors ) - self.msg.info( ' MuEtaMax = %r', self.cutMuEtaMax ) - if self.doEtconeMu: self.msg.info( ' muon etcone cut = %r', self.etconeMuMax ) - self.msg.info( ' passAllMu = %r', self.passAllMu ) - self.msg.info( ' minNumberPassedMu = %r', self.minNumberPassedMu ) - self.msg.info( '************************************' ) - - - ## Also, declare some counters and initialize them to zero - self.nProcessed = 0 - self.nEventMinNumPassed = 0 - - self.nElectrons = 0 - self.nEventElPassEta = 0 - self.nEventElPassEt = 0 - self.nEventElPassIsEM = 0 - self.nEventElPassAuthor = 0 - - self.nMuons = 0 - self.nEventMuPassEta = 0 - self.nEventMuPassPt = 0 - self.nEventMuPassAuthor = 0 - self.nEventMuPassPrescale = 0 - self.nEventMuPassIsolation = 0 - - ## Import needed modules - import PyUtils.RootUtils as ru - ROOT = ru.import_root() - - if self.doNoTrackIsolMu or self.doPtTrackIsolMu or self.doCaloIsolMu : - if self.muonIsolationTool is None: - self.msg.warning("Problem retrieving MuonIsolationTool pointer ") - self.msg.warning("setting Track and Calo isolation to False ") - self.doNoTrackIsolMu = False - self.doPtTrackIsolMu = False - self.doCaloIsolMu = False - - ## import some 4-mom utils - import FourMomUtils.Bindings - self.utils = { 'deltaR' : PyAthena.P4Helpers.deltaR } - - _append = self.muContainerNames.append - if self.usingAOD : - if self.muonContainers.__contains__('staco') or self.muonContainers is 'all': - _append("StacoMuonCollection") - if self.muonContainers.__contains__('muid') or self.muonContainers is 'all': - _append("MuidMuonCollection") - if self.muonContainers.__contains__('calo') or self.muonContainers is 'all': - _append("CaloMuonCollection") - else : - if self.muonContainers.__contains__('staco') or self.muonContainers is 'all': - _append("StacoESDMuonCollection") - if self.muonAuthors is 'combined' or self.muonAuthors is 'all' : - _append("StacoCombinedMuonContainer") - if self.muonAuthors is 'lowpt' or self.muonAuthors is 'all' : - _append("StacoCombinedMuonContainerLowPt") - if self.muonAuthors is 'standalone' or self.muonAuthors is 'all': - _append("MboyESDMuonContainer") - if self.muonContainers.__contains__('muid') or self.muonContainers is 'all': - _append("MuidESDMuonCollection") - if self.muonAuthors is 'combined' or self.muonAuthors is 'all' : - _append("MuidCombinedMuonContainer") - if self.muonAuthors is 'lowpt' or self.muonAuthors is 'all' : - _append("MuGirlCombinedMuonContainer") - if self.muonAuthors is 'standalone' or self.muonAuthors is 'all' : - _append("MuidExtrMuonContainer") - if self.muonContainers.__contains__('calo') or self.muonContainers is 'all': - if self.muonAuthors is 'calo' or self.muonAuthors is 'all' : - _append("CaloMuonIdContainer") - _append("CaloESDMuonCollection") - del _append - - ## Get the StoreGate service - self.storeGateSvc = PyAthena.py_svc('StoreGateSvc') - if self.storeGateSvc is None: - self.msg.error("Problem retrieving StoreGateSvc pointer !!") - return StatusCode.Failure - - return StatusCode.Success - - - - - def execute(self): - - self.nProcessed+=1 - self.msg.debug( '==> execute %s on %r. event...' % (self.name(), self.nProcessed) ) - - passEl = self.passElectronSelection() - passMu = self.passMuonSelection() - - if ( passEl or passMu) : - self.nEventMinNumPassed += 1 - self.msg.debug( '%s event passed.' % self.name() ) - self.setFilterPassed(True) - pass - else : - self.msg.debug( '%s event failed.' % self.name() ) - self.setFilterPassed(False) - pass - - - return StatusCode.Success - - - def finalize(self): - ## Import needed modules - import math - - ## Calculate the efficiencies and their errors - effiElectrons = 0.0 - effiElPassEta = 0.0 - effiElPassEt = 0.0 - effiElPassAuthor = 0.0 - effiElPassIsEM = 0.0 - effiMinNumPassed = 0.0 - effiErrElectrons = 0.0 - effiErrElPassEta = 0.0 - effiErrElPassEt = 0.0 - effiErrElPassAuthor = 0.0 - effiErrElPassIsEM = 0.0 - effiErrMinNumPassed = 0.0 - try : - # Efficiencies - effiElectrons = self.nElectrons / (1.0*self.nProcessed) - effiElPassEta = self.nEventElPassEta / float(self.nProcessed) - effiElPassEt = self.nEventElPassEt / float(self.nProcessed) - effiElPassAuthor = self.nEventElPassAuthor / float(self.nProcessed) - effiElPassIsEM = self.nEventElPassIsEM / float(self.nProcessed) - effiMinNumPassed = self.nEventMinNumPassed / float(self.nProcessed) - - # Error on efficiencies; use binomial errors - effiErrElectrons = math.sqrt(self.nElectrons) / self.nElectrons - effiErrElPassEta = 100.0 * math.sqrt( effiElPassEta*(1.0 - effiElPassEta) / float(self.nProcessed) ) - effiErrElPassEt = 100.0 * math.sqrt( effiElPassEt*(1.0 - effiElPassEt) / float(self.nProcessed) ) - effiErrElPassAuthor = 100.0 * math.sqrt( effiElPassAuthor*(1.0 - effiElPassAuthor) / float(self.nProcessed) ) - effiErrElPassIsEM = 100.0 * math.sqrt( effiElPassIsEM*(1.0 - effiElPassIsEM) / float(self.nProcessed) ) - effiErrMinNumPassed = 100.0 * math.sqrt( effiMinNumPassed*(1.0 - effiMinNumPassed) / float(self.nProcessed) ) - - effiElPassEta *= 100.0 - effiElPassEt *= 100.0 - effiElPassAuthor *= 100.0 - effiElPassIsEM *= 100.0 - effiMinNumPassed *= 100.0 - - except ZeroDivisionError : - self.msg.warning( 'Division by zero error when calculating the uncertainties on the pass efficiencies...' ) - pass - - - self.msg.info( '==> finalize %s...' % self.name() ) - self.msg.info( '***************************************************************' ) - self.msg.info( 'Cut-flow table of %s skimming algorithm:' % self.name() ) - self.msg.info( '-------------' ) - self.msg.info( ' Number of processed events: %r' % self.nProcessed ) - self.msg.info( ' Number of all electrons: %r and number of electrons per event: %3.3f +/- %3.3f' % ( self.nElectrons, effiElectrons, effiErrElectrons ) ) - self.msg.info( ' Events after eta cut: %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventElPassEta, effiElPassEta, effiErrElPassEta ) ) - self.msg.info( ' Events after E_T cut: %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventElPassEt, effiElPassEt, effiErrElPassEt ) ) - self.msg.info( ' Events after author cut: %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventElPassAuthor, effiElPassAuthor, effiErrElPassAuthor ) ) - self.msg.info( ' Events after IsEM cut: %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventElPassIsEM, effiElPassIsEM, effiErrElPassIsEM ) ) - self.msg.info( ' Events after minNumberPassedEl %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventMinNumPassed, effiMinNumPassed, effiErrMinNumPassed ) ) - self.msg.info( '***************************************************************' ) - - ## Import needed modules - import math - - ## Calculate the efficiencies and their errors - effiMuons = 0.0 - effiMuPassEta = 0.0 - effiMuPassPt = 0.0 - effiMuPassAuthor = 0.0 - effiMuPassIsol = 0.0 - effiMinNumPassed = 0.0 - effiErrMuons = 0.0 - effiErrMuPassEta = 0.0 - effiErrMuPassPt = 0.0 - effiErrMuPassAuthor = 0.0 - effiErrMuPassIsol = 0.0 - effiErrMinNumPassed = 0.0 - try : - # Efficiencies - effiMuons = self.nMuons / (1.0*self.nProcessed) - effiMuPassEta = self.nEventMuPassEta / float(self.nProcessed) - effiMuPassPt = self.nEventMuPassPt / float(self.nProcessed) - effiMuPassAuthor = self.nEventMuPassAuthor / float(self.nProcessed) - effiMuPassIsol = self.nEventMuPassIsolation / float(self.nProcessed) - effiMinNumPassed = self.nEventMinNumPassed / float(self.nProcessed) - - # Error on efficiencies, use binomial errors - effiErrMuons = math.sqrt(self.nMuons) / self.nMuons - effiErrMuPassEta = 100.0 * math.sqrt( effiMuPassEta*(1.0 - effiMuPassEta) / float(self.nProcessed) ) - effiErrMuPassPt = 100.0 * math.sqrt( effiMuPassPt*(1.0 - effiMuPassPt) / float(self.nProcessed) ) - effiErrMuPassAuthor = 100.0 * math.sqrt( effiMuPassAuthor*(1.0 - effiMuPassAuthor) / float(self.nProcessed) ) - effiErrMuPassIsol = 100.0 * math.sqrt( effiMuPassIsol*(1.0 - effiMuPassIsol) / float(self.nProcessed) ) - effiErrMinNumPassed = 100.0 * math.sqrt( effiMinNumPassed*(1.0 - effiMinNumPassed) / float(self.nProcessed) ) - - effiMuPassEta *= 100.0 - effiMuPassPt *= 100.0 - effiMuPassAuthor *= 100.0 - effiMuPassIsol *= 100.0 - effiMinNumPassed *= 100.0 - - except ZeroDivisionError : - self.msg.warning( 'Division by zero error when calculating the uncertainties on the pass efficiencies...' ) - pass - - - self.msg.info( '==> finalize %s...' % self.name() ) - self.msg.info( '***************************************************************' ) - self.msg.info( 'Cut-flow table of %s skimming algorithm:' % self.name() ) - self.msg.info( '-------------' ) - self.msg.info( ' Number of processed events: %r' % self.nProcessed ) - self.msg.info( ' Number of all muons: %r and number of muons per event: %3.3f +/- %3.3f' % ( self.nMuons, effiMuons, effiErrMuons ) ) - self.msg.info( ' Events after eta cut: %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventMuPassEta, effiMuPassEta, effiErrMuPassEta ) ) - self.msg.info( ' Events after p_T cut: %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventMuPassPt, effiMuPassPt, effiErrMuPassPt ) ) - self.msg.info( ' Events after author cut: %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventMuPassAuthor, effiMuPassAuthor, effiErrMuPassAuthor ) ) - self.msg.info( ' Events after isolation cut: %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventMuPassIsolation, effiMuPassIsol, effiErrMuPassIsol ) ) - self.msg.info( ' Events after minNumberPassed %r and resulting efficiency = (%3.3f +/- %3.3f)%%' % ( self.nEventMinNumPassed, effiMinNumPassed, effiErrMinNumPassed ) ) - self.msg.info( '***************************************************************' ) - - - return StatusCode.Success - - - def passPresel(self,muon) : - if not self.doEtconeMu : - return True - if (muon.parameter(1)<self.etconeMax) : - return True - return False - - - def passCaloIsol(self,muon) : - - if not self.doCaloIsolMu : - return True - outerConeEt = self.muonIsolationTool.caloIsolationEnergy(muon, dR, False,None) - innerConeEt = self.muonIsolationTool.caloIsolationEnergy(muon, dR, False,None) - - if (outerConeEt-innerConeEt) < self.caloIsolMu : - return True - return False - - def passNoTracksIsol(self,muon) : - - if not self.doNoTrackIsolMu : - return True - outerConeNoTracks = self.muonIsolationTool.trackIsolationNumberOfTrack(muon,self.outerNoTrackRadiusMu) - innerConeNoTracks = self.muonIsolationTool.trackIsolationNumberOfTrack(muon,self.innerNoTrackRadiusMu) - if (outerConeNoTracks-innerConeNoTracks) < self.noTracksIsolMu : - return True - return False - - def passPtTracksIsol(self,muon) : - - if not self.doPtTrackIsolMu : - return True - outerConePtTracks = self.muonIsolationTool.trackIsolationEnergy(muon,self.outerNoTrackRadiusMu) - innerConePtTracks = self.muonIsolationTool.trackIsolationEnergy(muon,self.innerNoTrackRadiusMu) - if (outerConePtTracks-innerConePtTracks) < self.ptTracksIsolMu : - return True - return False - - def passJetIsol(self,muon,jetCollection) : - - # Declare the utility to calculate the DeltaR between two objects - deltaR = self.utils['deltaR'] - - if not self.doJetIsolMu : - return True - for jet in jetCollection : - if deltaR(jet,muon) < self.jetDistanceMu and jet.et() > self.jetIsolEtMu : - return True - return False - - def passElectronSelection(self) : - - ####################################################### - # electron selection - ####################################################### - - nElPassEta = 0 - nElPassEt = 0 - nElPassIsEM = 0 - nElPassAuthor = 0 - - # Create a class-member list of all electrons that passed all cuts. - # This can then be used by other filters to do overlap removal, etc. - VIEW_ELEMENTS = 1 - goodElectrons = PyAthena.ElectronContainer(VIEW_ELEMENTS) - - ## If passAll is selected, accept all events - if self.passAllEl : - self.msg.debug( '%s event passed electron selection because passAll is true' % self.name() ) - return True - - # Get the electron collection from StoreGate - try: - electronCollection = self.storeGateSvc.retrieve( self.electronCollectionType, self.electronCollectionName ) - pass - except LookupError: - self.msg.warning( 'Collection %s not found' % self.electronCollectionName ) - return True - - # Loop over all electrons and make the selections cuts - for electron in electronCollection : - self.nElectrons += 1 - # Use Et of CaloCluster. - cluster = None - cluster = electron.cluster() - if cluster == None : - self.msg.warning( 'Could not get the cluster for this electron!' ) - pass - else : - if abs(cluster.etaBE(2)) < self.cutElEtaMax : - # Check if the EM calorimeter barrel-encap crack should be removed. - if not self.removeEtaCrack or ( self.removeEtaCrack and \ - ( abs(cluster.etaBE(2)) < self.crackEtaMin - or abs(cluster.etaBE(2)) > self.crackEtaMax ) ): - nElPassEta += 1 - # If the Et of this electron is larger than the minimum required Et - # of the high-Et cut, then the high-Et electron is found. - if cluster.et() > self.cutEtMinEl : - nElPassEt += 1 - # Check that the electron in question comes from the right reconstruction algorithm using PrimaryDPDHelpers - if PrimaryDPDHelpers.checkEgammaAuthor( electron, self.cutElAuthor ) : - nElPassAuthor += 1 - # Check the quality of the electron using PrimaryDPDHelpers - if PrimaryDPDHelpers.checkElectronIsEM( electron, self.cutIsEM ): - nElPassIsEM += 1 - # goodElectrons.append( electron ) - goodElectrons.push_back( electron) - pass - pass - pass - pass - pass - pass - pass - - - ## Translate the electron pass counters into event pass counters - if nElPassEta > 0 : self.nEventElPassEta += 1 - if nElPassEt > 0 : self.nEventElPassEt += 1 - if nElPassIsEM > 0 : self.nEventElPassIsEM += 1 - if nElPassAuthor > 0 : self.nEventElPassAuthor += 1 - - if self.storeGateSvc.record( goodElectrons, self.goodElectronCollectionName ) != StatusCode.Success : - self.msg.error( 'Could not record the goodElectrons into StoreGate with the key = ' % self.goodElectronCollectionName ) - pass - - - ## Check if the event is accepted - if goodElectrons.__len__() >= self.minNumberPassedEl : - self.msg.debug( '%s event passed electron selection' % self.name() ) - return True - - - self.msg.debug( '%s event failed electron selection' % self.name() ) - return False - - - def passMuonSelection(self) : - - ####################################################### - # muon selection - ####################################################### - - ## If passAll is selected, accept all events - if self.passAllMu : - self.msg.debug( '%s event passed muon selection because passAllMu is true' % self.name() ) - return True - - jetCollection = None - _retrieve = self.storeGateSvc.retrieve - - if self.doJetIsolMu : - try : - jetCollection = _retrieve ('JetCollection', jetContainerName) - except LookupError : - self.msg.warning('%s container not found in StoreGate ' % self.jetContainerName) - self.msg.warning('Turning jet isolation off ') - self.doJetIsolMu = False - - #Then... here we go! - hasMuon = False - hasMuonPt = False - hasMuonEta = False - - # Create a class-member list of all muons that passed all cuts. - # This can then be used by other filters to do overlap removal, etc. - VIEW_ELEMENTS = 1 - goodMuons = PyAthena.Analysis.MuonContainer(VIEW_ELEMENTS) - - _contains = self.storeGateSvc.contains - for name in self.muContainerNames : - if not _contains('Analysis::MuonContainer', name): - self.msg.debug('%s container not found in StoreGate ' % name) - continue - muonCollection = None - try : - muonCollection = _retrieve('Analysis::MuonContainer', name) - pass - except LookupError: - self.msg.warning( 'Collection %s not found' % name ) - return false - - ############## - nMuPassEta = 0 - nMuPassPt = 0 - nMuPassAuthor = 0 - nMuPassIsolation = 0 - - for muon in muonCollection : - self.nMuons += 1 - - # eta cut - if abs(muon.eta()) < self.cutMuEtaMax : - nMuPassEta += 1 - - # muon pT cut - if muon.pt() > self.cutPtMinMu : - nMuPassPt += 1 - - # Check that the muon in question comes from the right reconstruction algorithm using PrimaryDPDHelpers - if PrimaryDPDHelpers.checkMuonAuthor( muon, self.muonAuthors ) : - nMuPassAuthor += 1 - - if self.passCaloIsol(muon) and self.passNoTracksIsol(muon) and self.passPtTracksIsol(muon) and self.passJetIsol(muon, jetCollection) and self.passPresel(muon) : - nMuPassIsolation += 1 - - goodMuons.push_back(muon) - pass - pass - pass - pass - pass - - - ## Translate the muon pass counters into event pass counters - if nMuPassEta > 0 : self.nEventMuPassEta += 1 - if nMuPassPt > 0 : self.nEventMuPassPt += 1 - if nMuPassAuthor > 0 : self.nEventMuPassAuthor += 1 - if nMuPassIsolation > 0 : self.nEventMuPassIsolation += 1 - - pass - - ## Record the good muons into StoreGate so that they can be retrieved by other algorithms - if self.storeGateSvc.record( goodMuons, self.goodMuonCollectionName ) != StatusCode.Success : - self.msg.error( 'Could not record the goodMuons into StoreGate with the key = ' % self.goodMuonCollectionName ) - pass - - - ## Check if the event is accepted - if goodMuons.__len__() >= self.minNumberPassedMu : - self.msg.debug( '%s event passed muon selection' % self.name() ) - return True - - self.msg.debug( '%s event failed muon selection' % self.name() ) - return False diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/__init__.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/__init__.py deleted file mode 100644 index 04a7917a89e5cebcfe68290bc9ff5bd94f27cf4e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/python/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# template __init__.py defined in the GaudiPolicy package. diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/AODToHSG5_WHlnubb_boosted_D3PD.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/AODToHSG5_WHlnubb_boosted_D3PD.py deleted file mode 100644 index 98315dc4e16f49275942dcde12c289790f006156..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/AODToHSG5_WHlnubb_boosted_D3PD.py +++ /dev/null @@ -1,49 +0,0 @@ -###################################################################3 -# Define the input file here. -# - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -#athenaCommonFlags.FilesInput= ["AOD.pool.root"] -athenaCommonFlags.FilesInput= ["/tmp/roberth/AOD.324274._000001.pool.root.1"] - - -###################################################################3 -# Define the output file here. -# - -if not globals().get('tupleFileOutput'): - tupleFileOutput = 'hsg5_WHlnubb_boosted.root' - -from D3PDMakerConfig.D3PDProdFlags import prodFlags -prodFlags.WriteSMWZD3PD = True -prodFlags.WriteSMWZD3PD.FileName = tupleFileOutput -prodFlags.WriteSMWZD3PD.lock() - -#prodFlags.WriteHSG5_WHlnubb_boosted_D3PD = True -#prodFlags.WriteHSG5_WHlnubb_boosted_D3PD.FileName = tupleFileOutput -#prodFlags.WriteHSG5_WHlnubb_boosted_D3PD.lock() - -###################################################################3 -# Define other job options here. -# - -athenaCommonFlags.EvtMax = -1 - -# Example of changing D3PD maker flags. -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -#D3PDMakerFlags.DoTrigger = False - - -################################################################### -# Configure RecExCommon. -# - -from RecExConfig.RecFlags import rec -rec.DPDMakerScripts.append( "PhysicsD3PDMaker/HSG5_WHlnubb_boosted_D3PD_prodJobOFragment.py" ) -rec.doCBNT.set_Value_and_Lock( False ) -rec.doWriteTAG.set_Value_and_Lock( False ) - -include( "RecExCommon/RecExCommon_topOptions.py" ) - -print "topSequence: " -print topSequence diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/D2PD_ExampleSimpleTest.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/D2PD_ExampleSimpleTest.py deleted file mode 100644 index d8d505046114a8a861de4e15aa61286a2a52dfe3..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/D2PD_ExampleSimpleTest.py +++ /dev/null @@ -1,67 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_Test.py -## -## Author: Elias Coniavitis (Uppsala), based on code by Karsten Koeneke (DESY) -## Email: elias.coniavitis@cern.ch; karsten.koeneke@desy.de -## -## Description: This defines the content of the D2PD example -## for HSG5 -## -##----------------------------------------------------------------------------- - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags -from RecExConfig.RecFlags import rec - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -streamName = D2PDFlags.WriteExampleSimpleTestStream.StreamName -fileName = buildFileName( D2PDFlags.WriteExampleSimpleTestStream ) -ExampleTestStream = MSMgr.NewPoolStream( streamName, fileName ) - - -ExampleTestStream.AddItem( 'TruthParticleContainer#SpclMC' ) -ExampleTestStream.AddItem( 'MissingEtTruth#MET_Truth_PileUp' ) -ExampleTestStream.AddItem( 'MissingET#MET_RefFinal' ) -ExampleTestStream.AddItem( 'TrigDec::TrigDecision#TrigDecision' ) -ExampleTestStream.AddItem( 'MissingEtTruth#MET_Truth' ) -ExampleTestStream.AddItem( 'Analysis::MuonContainer#StacoMuonCollection' ) -ExampleTestStream.AddItem( 'CTP_Decision#CTP_Decision' ) -ExampleTestStream.AddItem( 'EventInfo#*' ) -ExampleTestStream.AddItem( 'Analysis::TauJetContainer#TauRecContainer' ) -ExampleTestStream.AddItem( 'JetCollection#Cone4TruthJets' ) -ExampleTestStream.AddItem( 'JetCollection#AntiKt4TruthJets' ) -ExampleTestStream.AddItem( 'JetCollection#Cone4H1TopoJets' ) -ExampleTestStream.AddItem( 'JetCollection#AntiKt4H1TopoJets' ) -ExampleTestStream.AddItem( 'Analysis::TauDetailsContainer#TauRecDetailsContainer' ) -ExampleTestStream.AddItem( 'ElectronContainer#ElectronAODCollection' ) -ExampleTestStream.AddItem( 'egDetailContainer#egDetailAOD' ) -ExampleTestStream.AddItem( 'JetKeyDescriptor#JetKeyMap' ) -ExampleTestStream.AddItem( 'McEventCollection#GEN_AOD' ) -ExampleTestStream.AddItem( 'HLT::HLTResult#HLTResult_L2' ) -ExampleTestStream.AddItem( 'HLT::HLTResult#HLTResult_EF' ) - - - -### Yellow containers - -#Trigger stuff -ExampleTestStream.AddItem( 'egammaContainer#HLT_egamma' ) -ExampleTestStream.AddItem( 'TrigMuonEFContainer#HLT_MuonEF' ) -ExampleTestStream.AddItem( 'TrigMuonEFInfoContainer#HLT_MuonEFInfo' ) -#ExampleTestStream.AddItem( 'TrigMissingETContainer#HLT_TrigEFMissingET' ) -#ExampleTestStream.AddItem( 'Analysis::TauJetContainer#HLT_TrigTauRecMerged' ) -ExampleTestStream.AddItem( 'egDetailContainer#HLT_egamma_Electrons' ) -#'Rerunning' stuff -ExampleTestStream.AddItem( 'CaloClusterContainer#CaloCalTopoCluster') -ExampleTestStream.AddItem( 'Rec::TrackParticleContainer#TrackParticleCandidate') diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/D2PD_topOptions.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/D2PD_topOptions.py deleted file mode 100644 index 3ae13e3a9bdd2a1cb2fd237874b924a6641cf7fc..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/D2PD_topOptions.py +++ /dev/null @@ -1,71 +0,0 @@ -##============================================================================= -## Name: D2PD_topOptions.py -## -## Author: Karsten Koeneke (DESY) -## Created: April 2009 - -## Description: job options for all AOD->D2PD and D1PD->D2PD. -## -## Usage: Here, all neccessary job options for the D2PDs can be set. -## To run, type: -## athena D2PDMaker/D2PD_topOptions.py 2>&1 | tee log.txt -##============================================================================= - - -#============================================================================== -## Include the job property flags for this package -#============================================================================== -from D2PDMaker.D2PDFlags import D2PDFlags - -#============================================================================== -# If you have your own DPD Maker scripts -# (see: -# share/D2PD_ExampleSimple*.py -# for examples), -# then just append your script (wherever it is) to this list: -# -# D2PDFlags.DPDMakerScripts.append("MyPackage/MyScript") -# -# The example scripts are appended below, so you can see how it works! -#============================================================================== - -D2PDFlags.DPDMakerScripts.append("D2PDMaker/D2PD_ExampleSimpleTest.py") - - -#============================================================================== -# Load your input file -#============================================================================== -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.PoolAODInput=["AOD.079660._000094.pool.root.1"] - - - -#============================================================================== -# Set the geometry for your input file -#============================================================================== -from AthenaCommon.GlobalFlags import globalflags -globalflags.DetDescrVersion.set_Value_and_Lock("ATLAS-GEO-08-00-01") - - -#============================================================================== -# You can change the location and name of your output file with -# these three flags: -#============================================================================== -#D2PDFlags.OutputDirectoryName = "/my/directory/with/enough/space/" -#D2PDFlags.OutputPoolRootFileNamePrefix = "MyFirstD2PD" -#D2PDFlags.OutputMiddleName = "test1" - - -#============================================================================== -# Set the number of events that you want to process -#============================================================================== -#athenaCommonFlags.SkipEvents.set_Value_and_Lock(0) -if not vars().has_key('EvtMax'): EvtMax = 50#250 -athenaCommonFlags.EvtMax=EvtMax - - -#============================================================================== -# Execute the dpd maker -#============================================================================== -include("D2PDMaker/aodtodpd.py") - diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/FatJetsConfig.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/FatJetsConfig.py deleted file mode 100644 index ab77cdcf94537341b95ac5d68cbd4c3c17f3589c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/FatJetsConfig.py +++ /dev/null @@ -1,34 +0,0 @@ -include.block("HSG5DPDUtils/FatJetsConfig.py") - -from JetRec.JetRecFlags import jetFlags -jetFlags.doBTagging = False -jetFlags.inputFileType = 'AOD' - -preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - -### -from HSG5DPDUtils.JSjets import createJSJets,getGroomingTools - -from HSG5DPDUtils.GroomedJetsConfig import getGroomedJetsConfig -dictsConfig = getGroomedJetsConfig() - -sj_n = [] -for dC in dictsConfig: - myjetfinder = dC[0]["JetFinder"] - myjetdr = dC[0]["JetdR"] - myjetinput = dC[0]["JetInput"] - myGroomingTools, catNames = getGroomingTools(dC[1]) - sj_n += [(myjetfinder+"%d"%(myjetdr*10) + myjetinput+x) for x in catNames if "Subjets" in x] - -from BTagging.BTaggingFlags import BTaggingFlags -for sj in sj_n: - BTaggingFlags.Jets += [sj] - BTaggingFlags.JetsWithInfoPlus += [sj] - BTaggingFlags.CalibrationChannelAliases += [sj+"->AntiKt4LCTopo" ] - -include("BTagging/BTagging_LoadTools.py") - -myJetKeys = [] -for dC in dictsConfig: - xx = createJSJets(dC[0], dC[1], preseq) - myJetKeys += [xx] diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_WHlnubb_boosted_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_WHlnubb_boosted_D3PD_prodJobOFragment.py deleted file mode 100644 index 89b8fadf9e7ebf8eaae729e6d4063aa2877271b6..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_WHlnubb_boosted_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,65 +0,0 @@ -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs. - -# This jobO should not be included more than once: -include.block( "HSG5DPDUtils/HSG5_WHlnubb_boosted_D3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -HSG5D3PD_msg = logging.getLogger( 'HSG5_WHlnubb_boosted_D3PD_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WriteHSG5WHD3PD.isVirtual: - HSG5D3PD_msg.error( "The HSG5 WH D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "HSG5 D3PD set to be a virtual stream" ) - pass - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Construct the stream and file names for the SMWZ D3PD: -streamName = prodFlags.WriteHSG5WHD3PD.StreamName -fileName = buildFileName( prodFlags.WriteHSG5WHD3PD ) - -HSG5D3PD_msg.info( "Configuring HSG5D3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -HSG5D3PD_Stream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# create stream - -if 'IS_SIMULATION' in inputFileSummary['evt_type']: - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - -# set flags -from HSG5DPDUtils.HSG5Flags import HSG5WHFlags -#HSG5WHFlags.doTaus = True -#HSG5WHFlags.doPhotons = True - -from HSG5DPDUtils.HSG5D3PD import HSG5D3PD -HSG5D3PD( HSG5D3PD_Stream, flags=HSG5WHFlags ) - -include("HSG5DPDUtils/FatJetsConfig.py") - -from HSG5DPDUtils.JSD3PD import JSD3PD -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, HSG5D3PD_Stream ) - -# add filters -HSG5D3PD_Stream.AcceptAlgs=[] -HSG5D3PD_Stream.RequireAlgs=[] - -include ("HSG5DPDUtils/WHlnubb_boostedFilter.py") - -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -HSG5D3PD_Stream.MetadataTools += [CutFlowMetadataConfig(HSG5D3PD_Stream)] - -ToolSvc.TrigDecisionTool.Navigation.OutputLevel=ERROR diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_WHlnubb_unboosted_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_WHlnubb_unboosted_D3PD_prodJobOFragment.py deleted file mode 100644 index 03461249ef5513abff70f6d133f7a2716ee1540b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_WHlnubb_unboosted_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,76 +0,0 @@ -''' -Created on 28 Feb 2012 - -@author: wvazquez -''' -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs. - -# This jobO should not be included more than once: -include.block( "HSG5DPDUtils/HSG5_WHlnubb_unboosted_D3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -HSG5D3PD_msg = logging.getLogger( 'HSG5_WHlnubb_unboosted_D3PD_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WriteHSG5WHUD3PD.isVirtual: - HSG5D3PD_msg.error( "The HSG5 WH unboosted D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "HSG5 D3PD set to be a virtual stream" ) - pass - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Construct the stream and file names for the SMWZ D3PD: -streamName = prodFlags.WriteHSG5WHUD3PD.StreamName -fileName = buildFileName( prodFlags.WriteHSG5WHUD3PD ) - -HSG5D3PD_msg.info( "Configuring HSG5D3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -HSG5D3PD_Stream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# create stream -#from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD -#SMWZD3PD( HSG5D3PD_Stream ) - -if 'IS_SIMULATION' in inputFileSummary['evt_type']: - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - - -# set flags -from HSG5DPDUtils.HSG5Flags import HSG5WHUFlags -HSG5WHUFlags.doTaus = True -HSG5WHUFlags.doPhotons = True - -print "HSG5WHUFlags.doPhotons()=",HSG5WHUFlags.doPhotons() - -from HSG5DPDUtils.HSG5D3PD import HSG5D3PD -print "after import of HSG5D3PD, HSG5WHUFlags.doPhotons()=",HSG5WHUFlags.doPhotons() -HSG5D3PD( HSG5D3PD_Stream, flags=HSG5WHUFlags ) - -include("HSG5DPDUtils/FatJetsConfig.py") - -from HSG5DPDUtils.JSD3PD import JSD3PD -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, HSG5D3PD_Stream ) - -# add filters -HSG5D3PD_Stream.AcceptAlgs=[] -HSG5D3PD_Stream.RequireAlgs=[] - -include ("HSG5DPDUtils/WHlnubb_unboostedFilter.py") - -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -HSG5D3PD_Stream.MetadataTools += [CutFlowMetadataConfig(HSG5D3PD_Stream)] - -ToolSvc.TrigDecisionTool.Navigation.OutputLevel=ERROR diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_WHlnubb_unboosted_QCDbkg_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_WHlnubb_unboosted_QCDbkg_D3PD_prodJobOFragment.py deleted file mode 100644 index e82650323bb1aac08c1a2164cb490a6a7bcfb5b0..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_WHlnubb_unboosted_QCDbkg_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,71 +0,0 @@ -''' -Created on 28 Feb 2012 - -@author: wvazquez -''' -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs. - -# This jobO should not be included more than once: -include.block( "HSG5DPDUtils/HSG5_WHlnubb_unboosted_QCDbkg_D3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -HSG5D3PD_msg = logging.getLogger( 'HSG5_WHlnubb_unboosted_D3PD_QCDbkg_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WriteHSG5WHQD3PD.isVirtual: - HSG5D3PD_msg.error( "The HSG5 WH QCD D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "HSG5 QCD D3PD set to be a virtual stream" ) - pass - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Construct the stream and file names for the SMWZ D3PD: -streamName = prodFlags.WriteHSG5WHQD3PD.StreamName -fileName = buildFileName( prodFlags.WriteHSG5WHQD3PD ) - -HSG5D3PD_msg.info( "Configuring HSG5D3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -HSG5D3PD_Stream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# create stream -#from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD -#SMWZD3PD( HSG5D3PD_Stream ) - -if 'IS_SIMULATION' in inputFileSummary['evt_type']: - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - - -# set flags -from HSG5DPDUtils.HSG5Flags import HSG5WHQFlags - -from HSG5DPDUtils.HSG5D3PD import HSG5D3PD -HSG5D3PD( HSG5D3PD_Stream, flags=HSG5WHQFlags ) - -include("HSG5DPDUtils/FatJetsConfig.py") - -from HSG5DPDUtils.JSD3PD import JSD3PD -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, HSG5D3PD_Stream ) - -# add filters -HSG5D3PD_Stream.AcceptAlgs=[] -HSG5D3PD_Stream.RequireAlgs=[] - -include ("HSG5DPDUtils/WHlnubb_unboostedFilterQCDbkg.py") - -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -HSG5D3PD_Stream.MetadataTools += [CutFlowMetadataConfig(HSG5D3PD_Stream)] - -ToolSvc.TrigDecisionTool.Navigation.OutputLevel=ERROR diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHllbb_boosted_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHllbb_boosted_D3PD_prodJobOFragment.py deleted file mode 100644 index ff07dd11618299fad20376336ec7a35d590a086c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHllbb_boosted_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,66 +0,0 @@ -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs. - -# This jobO should not be included more than once: -include.block( "HSG5DPDUtils/HSG5_ZHllbb_boosted_D3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -HSG5D3PD_msg = logging.getLogger( 'HSG5_ZHllbb_boosted_D3PD_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WriteHSG5ZHLLD3PD.isVirtual: - HSG5D3PD_msg.error( "The HSG5 ZHLL D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "HSG5 ZHLL D3PD set to be a virtual stream" ) - pass - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Construct the stream and file names for the HSG5 D3PD: -streamName = prodFlags.WriteHSG5ZHLLD3PD.StreamName -fileName = buildFileName( prodFlags.WriteHSG5ZHLLD3PD ) - -HSG5D3PD_msg.info( "Configuring HSG5D3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -HSG5D3PD_Stream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# create stream -#from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD -#SMWZD3PD( HSG5D3PD_Stream ) - -if 'IS_SIMULATION' in inputFileSummary['evt_type']: - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - -# set flags -from HSG5DPDUtils.HSG5Flags import HSG5ZHLLFlags -HSG5ZHLLFlags.doTaus = True - -from HSG5DPDUtils.HSG5D3PD import HSG5D3PD -HSG5D3PD( HSG5D3PD_Stream,flags=HSG5ZHLLFlags ) - -include("HSG5DPDUtils/FatJetsConfig.py") - -from HSG5DPDUtils.JSD3PD import JSD3PD -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, HSG5D3PD_Stream ) - -# add filters -HSG5D3PD_Stream.AcceptAlgs=[] -HSG5D3PD_Stream.RequireAlgs=[] - -include ("HSG5DPDUtils/ZHllbb_boostedFilter.py") - -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -HSG5D3PD_Stream.MetadataTools += [CutFlowMetadataConfig(HSG5D3PD_Stream)] - -ToolSvc.TrigDecisionTool.Navigation.OutputLevel=ERROR diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHllbb_unboosted_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHllbb_unboosted_D3PD_prodJobOFragment.py deleted file mode 100644 index c2b1f89f03f432facd17500677674c33a1007870..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHllbb_unboosted_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,66 +0,0 @@ -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs. - -# This jobO should not be included more than once: -include.block( "HSG5DPDUtils/HSG5_ZHllbb_unboosted_D3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -HSG5D3PD_msg = logging.getLogger( 'HSG5_ZHllbb_unboosted_D3PD_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WriteHSG5ZHLLUD3PD.isVirtual: - HSG5D3PD_msg.error( "The HSG5 ZHLL unboosted D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "HSG5 ZHLL unboosted D3PD set to be a virtual stream" ) - pass - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Construct the stream and file names for the HSG5 D3PD: -streamName = prodFlags.WriteHSG5ZHLLUD3PD.StreamName -fileName = buildFileName( prodFlags.WriteHSG5ZHLLUD3PD ) - -HSG5D3PD_msg.info( "Configuring HSG5D3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -HSG5D3PD_Stream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# create stream -#from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD -#SMWZD3PD( HSG5D3PD_Stream ) - -if 'IS_SIMULATION' in inputFileSummary['evt_type']: - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - -# set flags -from HSG5DPDUtils.HSG5Flags import HSG5ZHLLUFlags -HSG5ZHLLUFlags.doTaus = True - -from HSG5DPDUtils.HSG5D3PD import HSG5D3PD -HSG5D3PD( HSG5D3PD_Stream, flags=HSG5ZHLLUFlags ) - -include("HSG5DPDUtils/FatJetsConfig.py") - -from HSG5DPDUtils.JSD3PD import JSD3PD -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, HSG5D3PD_Stream ) - -# add filters -HSG5D3PD_Stream.AcceptAlgs=[] -HSG5D3PD_Stream.RequireAlgs=[] - -include ("HSG5DPDUtils/ZHllbb_unboostedFilter.py") - -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -HSG5D3PD_Stream.MetadataTools += [CutFlowMetadataConfig(HSG5D3PD_Stream)] - -ToolSvc.TrigDecisionTool.Navigation.OutputLevel=ERROR diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHnunubb_boosted_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHnunubb_boosted_D3PD_prodJobOFragment.py deleted file mode 100644 index 5d35c7ac4091752decc52aadd81279c89f0bdaf0..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHnunubb_boosted_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,67 +0,0 @@ -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs. - -# This jobO should not be included more than once: -include.block( "HSG5DPDUtils/HSG5_ZHnunubb_boosted_D3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -HSG5D3PD_msg = logging.getLogger( 'HSG5_ZHnunubb_boosted_D3PD_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WriteHSG5ZHMETD3PD.isVirtual: - HSG5D3PD_msg.error( "The HSG5 ZHMET D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "HSG5 ZHMET D3PD set to be a virtual stream" ) - pass - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Construct the stream and file names for the HSG5 D3PD: -streamName = prodFlags.WriteHSG5ZHMETD3PD.StreamName -fileName = buildFileName( prodFlags.WriteHSG5ZHMETD3PD ) - -HSG5D3PD_msg.info( "Configuring HSG5D3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -HSG5D3PD_Stream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# create stream -#from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD -#SMWZD3PD( HSG5D3PD_Stream ) - -if 'IS_SIMULATION' in inputFileSummary['evt_type']: - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - -# set flags -from HSG5DPDUtils.HSG5Flags import HSG5ZHMETFlags -#HSG5ZHMETFlags.doAllMissingET = True -HSG5ZHMETFlags.doTaus = True - -from HSG5DPDUtils.HSG5D3PD import HSG5D3PD -HSG5D3PD( HSG5D3PD_Stream,flags=HSG5ZHMETFlags ) - -include("HSG5DPDUtils/FatJetsConfig.py") - -from HSG5DPDUtils.JSD3PD import JSD3PD -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, HSG5D3PD_Stream ) - -# add filters -HSG5D3PD_Stream.AcceptAlgs=[] -HSG5D3PD_Stream.RequireAlgs=[] - -include ("HSG5DPDUtils/ZHnunubb_boostedFilter.py") - -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -HSG5D3PD_Stream.MetadataTools += [CutFlowMetadataConfig(HSG5D3PD_Stream)] - -ToolSvc.TrigDecisionTool.Navigation.OutputLevel=ERROR diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHnunubb_unboosted_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHnunubb_unboosted_D3PD_prodJobOFragment.py deleted file mode 100644 index 225ce7e5dd1927dc419ad5c66883fb9aebb45dae..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_ZHnunubb_unboosted_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,67 +0,0 @@ -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs. - -# This jobO should not be included more than once: -include.block( "HSG5DPDUtils/HSG5_ZHnunubb_unboosted_D3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -HSG5D3PD_msg = logging.getLogger( 'HSG5_ZHnunubb_unboosted_D3PD_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WriteHSG5ZHMETUD3PD.isVirtual: - HSG5D3PD_msg.error( "The HSG5 ZHMET unboosted D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "HSG5 ZHMET unboosted D3PD set to be a virtual stream" ) - pass - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Construct the stream and file names for the HSG5 D3PD: -streamName = prodFlags.WriteHSG5ZHMETUD3PD.StreamName -fileName = buildFileName( prodFlags.WriteHSG5ZHMETUD3PD ) - -HSG5D3PD_msg.info( "Configuring HSG5D3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -HSG5D3PD_Stream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# create stream -#from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD -#SMWZD3PD( HSG5D3PD_Stream ) - -if 'IS_SIMULATION' in inputFileSummary['evt_type']: - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - -# set flags -from HSG5DPDUtils.HSG5Flags import HSG5ZHMETUFlags -#HSG5ZHMETUFlags.doAllMissingET = True -HSG5ZHMETUFlags.doTaus = True - -from HSG5DPDUtils.HSG5D3PD import HSG5D3PD -HSG5D3PD( HSG5D3PD_Stream,flags=HSG5ZHMETUFlags ) - -include("HSG5DPDUtils/FatJetsConfig.py") - -from HSG5DPDUtils.JSD3PD import JSD3PD -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, HSG5D3PD_Stream ) - -# add filters -HSG5D3PD_Stream.AcceptAlgs=[] -HSG5D3PD_Stream.RequireAlgs=[] - -include ("HSG5DPDUtils/ZHnunubb_unboostedFilter.py") - -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -HSG5D3PD_Stream.MetadataTools += [CutFlowMetadataConfig(HSG5D3PD_Stream)] - -ToolSvc.TrigDecisionTool.Navigation.OutputLevel=ERROR diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_Zbb_boosted_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_Zbb_boosted_D3PD_prodJobOFragment.py deleted file mode 100644 index 56a5155b19144df674f23c914f97d4a744629fda..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_Zbb_boosted_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,65 +0,0 @@ -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs. - -# This jobO should not be included more than once: -include.block( "HSG5DPDUtils/HSG5_Zbb_boosted_D3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - -# Set up a logger: -from AthenaCommon.Logging import logging -HSG5D3PD_msg = logging.getLogger( 'HSG5_Zbb_boosted_D3PD_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WriteHSG5ZBBD3PD.isVirtual: - HSG5D3PD_msg.error( "The HSG5 ZBB D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "HSG5 ZBB D3PD set to be a virtual stream" ) - pass - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Construct the stream and file names for the HSG5 D3PD: -streamName = prodFlags.WriteHSG5ZBBD3PD.StreamName -fileName = buildFileName( prodFlags.WriteHSG5ZBBD3PD ) - -HSG5D3PD_msg.info( "Configuring HSG5D3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -HSG5D3PD_Stream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# create stream -#from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD -#SMWZD3PD( HSG5D3PD_Stream ) - -if 'IS_SIMULATION' in inputFileSummary['evt_type']: - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - -# set flags -from HSG5DPDUtils.HSG5Flags import HSG5ZBBFlags - -from HSG5DPDUtils.HSG5D3PD import HSG5D3PD -HSG5D3PD( HSG5D3PD_Stream,flags=HSG5ZBBFlags ) - -include("HSG5DPDUtils/FatJetsConfig.py") - -from HSG5DPDUtils.JSD3PD import JSD3PD -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, HSG5D3PD_Stream ) - -# add filters -HSG5D3PD_Stream.AcceptAlgs=[] -HSG5D3PD_Stream.RequireAlgs=[] - -include ("HSG5DPDUtils/Zbb_boostedFilter.py") - -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -HSG5D3PD_Stream.MetadataTools += [CutFlowMetadataConfig(HSG5D3PD_Stream)] - -ToolSvc.TrigDecisionTool.Navigation.OutputLevel=ERROR diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_gammaHbb_boosted_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_gammaHbb_boosted_D3PD_prodJobOFragment.py deleted file mode 100644 index 202430c6c1d3e4c1722011a0e82ca01a3b9e7828..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_gammaHbb_boosted_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,3 +0,0 @@ -include.block("HSG5DPDUtils/HSG5_gammaHbb_boosted_D3PD_prodJobOFragment.py") -print "OBSOLETE WARNING please use HSG5_gammaZbb_boosted_D3PD_prodJobOFragment.py" -include("HSG5DPDUtils/HSG5_gammaZbb_boosted_D3PD_prodJobOFragment.py") diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_gammaZbb_boosted_D3PD_prodJobOFragment.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_gammaZbb_boosted_D3PD_prodJobOFragment.py deleted file mode 100644 index 0f009185da7a7f4a610f3c8aa8b54bc60b761124..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/HSG5_gammaZbb_boosted_D3PD_prodJobOFragment.py +++ /dev/null @@ -1,66 +0,0 @@ -# -# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs. - -# This jobO should not be included more than once: -include.block( "HSG5DPDUtils/HSG5_gammaZbb_boosted_D3PD_prodJobOFragment.py" ) - -# Common import(s): -from AthenaCommon.JobProperties import jobproperties -prodFlags = jobproperties.D3PDProdFlags -from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName - - -# Set up a logger: -from AthenaCommon.Logging import logging -HSG5D3PD_msg = logging.getLogger( 'HSG5_gammaZbb_boosted_D3PD_prodJobOFragment' ) - -# Check if the configuration makes sense: -if prodFlags.WriteHSG5GAMZD3PD.isVirtual: - HSG5D3PD_msg.error( "The HSG5 GAMZ D3PD stream can't be virtual! " + - "It's a configuration error!" ) - raise NameError( "HSG5 GAMZ D3PD set to be a virtual stream" ) - pass - -# Create the D3PD streams: -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Construct the stream and file names for the HSG5 D3PD: -streamName = prodFlags.WriteHSG5GAMZD3PD.StreamName -fileName = buildFileName( prodFlags.WriteHSG5GAMZD3PD ) - -HSG5D3PD_msg.info( "Configuring HSG5D3PD with streamName '%s' and fileName '%s'" % \ - ( streamName, fileName ) ) - -HSG5D3PD_Stream = MSMgr.NewRootStream( streamName, fileName, "physics" ) - -# create stream -#from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD -#SMWZD3PD( HSG5D3PD_Stream ) -if 'IS_SIMULATION' in inputFileSummary['evt_type']: - from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - D3PDMakerFlags.TruthWriteHadrons.set_Value_and_Lock(True) - -# set flags -from HSG5DPDUtils.HSG5Flags import HSG5GAMZFlags -HSG5GAMZFlags.doPhotons = True - -from HSG5DPDUtils.HSG5D3PD import HSG5D3PD -HSG5D3PD( HSG5D3PD_Stream,flags=HSG5GAMZFlags ) - -include("HSG5DPDUtils/FatJetsConfig.py") - -from HSG5DPDUtils.JSD3PD import JSD3PD -for xx in myJetKeys: - if xx[0] != None and xx[1] != None: - JSD3PD(xx, HSG5D3PD_Stream ) - -# add filters -HSG5D3PD_Stream.AcceptAlgs=[] -HSG5D3PD_Stream.RequireAlgs=[] - -include ("HSG5DPDUtils/gammaZbb_boostedFilter.py") - -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig -HSG5D3PD_Stream.MetadataTools += [CutFlowMetadataConfig(HSG5D3PD_Stream)] - -ToolSvc.TrigDecisionTool.Navigation.OutputLevel=ERROR diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/WHlnubb_boostedFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/WHlnubb_boostedFilter.py deleted file mode 100644 index c8337a47ca790fe82e3e00c722a3b7e7d0ee67bc..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/WHlnubb_boostedFilter.py +++ /dev/null @@ -1,75 +0,0 @@ - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence,AthSequencer - -from ROOT import egammaPID - -sequencer = AthSequencer("HSG5WH_Sequencer", - StopOverride=False) - -from D2PDMaker.D2PDMakerConf import D2PDJetSelector -sequencer += D2PDJetSelector( "HSG5WH_BoostedJetFilter", - inputCollection = 'CamKt12LCTopoJets', - outputLinkCollection = 'HSG5WH_LooseBoostedJetLinkCollection', - minNumberPassed = 1, - ptMin = 150.0*Units.GeV) -HSG5D3PD_Stream.RequireAlgs.append("HSG5WH_BoostedJetFilter") - -from HSG5DPDUtils.HSG5DPDUtilsConf import HSG5__LeptonFilter -leptonFilter=HSG5__LeptonFilter("HSG5WH_SingleLeptonFilter", - ElectronFilterNameAndType="D2PDElectronSelector/HSG5WH_ElectronSelector", - MuonFilterNameAndTypeVec=["D2PDMuonSelector/HSG5WH_MuidMuonSelector", - "D2PDMuonSelector/HSG5WH_StacoMuonSelector", - "D2PDMuonSelector/HSG5WH_ThirdChainMuonSelector"]) - -# create electron and muon selectors -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -leptonFilter += D2PDElectronSelector( "HSG5WH_ElectronSelector", - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'HSG5WH_LooseElectronLinkCollection', - minNumberPassed = 1, - etMin = 15.0*Units.GeV, - clusterEtaMin = -2.5, - clusterEtaMax = 2.5 - #clusterEtaVetoRanges = "[-1.52, -1.37], [1.37, 1.52]" - ) - -from HSG5DPDUtils.HSG5Selectors import MuonSelector -muSelector = MuonSelector( minNumberPassed = 1, - ptMin = 18.0, - absEtaMax = 2.5, - requireIsLoose = True ) - -leptonFilter += muSelector.getMuonSelector('HSG5WH_MuidMuonSelector','MuidMuonCollection', - 'HSG5WH_LooseMuidMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5WH_StacoMuonSelector','StacoMuonCollection', - 'HSG5WH_LooseStacoMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5WH_ThirdChainMuonSelector','Muons', - 'HSG5WH_LooseThirdChainMuonLinkCollection') - -sequencer += leptonFilter - -HSG5D3PD_Stream.RequireAlgs.append("HSG5WH_SingleLeptonFilter") - -# MET selector -from D2PDMaker.D2PDMakerConf import D2PDMissingEtSelector -sequencer += D2PDMissingEtSelector( "HSG5WH_MissingEtFilter", - inputCollection = 'MET_RefFinal', - outputCollection = 'HSG5WH_NeutrinoRefFinal', - minNumberPassed = 1, - missingEtMin = 15.0*Units.GeV) -HSG5D3PD_Stream.RequireAlgs.append("HSG5WH_MissingEtFilter") - - -if False: - # (for private production ony) insert in beginning of PreD3PDSequencer - mainSequencer = AlgSequence(D3PDMakerFlags.PreD3PDAlgSeqName(), - StopOverride = False) - - if not hasattr( topSequence, D3PDMakerFlags.PreD3PDAlgSeqName() ): - topSequence += mainSequencer - - mainSequencer.insert(0,sequencer) - -else: - topSequence+=sequencer diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/WHlnubb_unboostedFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/WHlnubb_unboostedFilter.py deleted file mode 100644 index 69dbacd67322e40835a07d1666686ffe126c3050..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/WHlnubb_unboostedFilter.py +++ /dev/null @@ -1,86 +0,0 @@ -''' -Created on 28 Feb 2012 - -@author: wvazquez -''' - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence,AthSequencer - -from ROOT import egammaPID - -sequencer = AthSequencer("HSG5WHU_Sequencer", - StopOverride=False) - -from HSG5DPDUtils.HSG5DPDUtilsConf import HSG5__LeptonFilter -leptonFilter=HSG5__LeptonFilter("HSG5WHU_SingleLeptonFilter", - ElectronFilterNameAndType="D2PDElectronSelector/HSG5WHU_ElectronSelector", - MuonFilterNameAndTypeVec=["D2PDMuonSelector/HSG5WHU_MuidMuonSelector", - "D2PDMuonSelector/HSG5WHU_StacoMuonSelector", - "D2PDMuonSelector/HSG5WHU_ThirdChainMuonSelector" ]) - - -# create electron and muon selectors -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -leptonFilter += D2PDElectronSelector( "HSG5WHU_ElectronSelector", - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'HSG5WHU_LooseElectronLinkCollection', - minNumberPassed = 1, - ptMin = 20.0*Units.GeV, - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - electronIsEM = egammaPID.ElectronTight ) - -from HSG5DPDUtils.HSG5Selectors import MuonSelector -muSelector = MuonSelector( minNumberPassed = 1, - ptMin = 18.0, - absEtaMax = 2.5, - acceptIsCombined = True, - acceptIsSegmentTagged = True, - doRelPtCone20 = True, - relPtCone20Max = 0.15 ) - -leptonFilter += muSelector.getMuonSelector('HSG5WHU_MuidMuonSelector','MuidMuonCollection', - 'HSG5WHU_LooseMuidMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5WHU_StacoMuonSelector','StacoMuonCollection', - 'HSG5WHU_LooseStacoMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5WHU_ThirdChainMuonSelector','Muons', - 'HSG5WHU_LooseThirdChainMuonLinkCollection') - -sequencer += leptonFilter - -HSG5D3PD_Stream.RequireAlgs.append("HSG5WHU_SingleLeptonFilter") - -# jet selector -from AssociationComps.AssociationCompsConf import DeltaRAssociationTool -ToolSvc += DeltaRAssociationTool( "HSG5WHU_emDeltaRAssociationTool", - OutputLevel = INFO, - inputAssociateToCollection = 'HSG5WHU_LooseElectronLinkCollection', - deltaRMax = 0.3, - writeUserData = False) - -from D2PDMaker.D2PDMakerConf import D2PDJetSelector -sequencer += D2PDJetSelector( "HSG5WHU_JetFilter", - inputCollection = 'AntiKt4TopoEMJets', - outputLinkCollection = 'HSG5WHU_JetLinkCollection', - associationToolList = [ ToolSvc.HSG5WHU_emDeltaRAssociationTool ], - outputAssociationContainerList = [ "HSG5WHU_jetsMatchedToElectrons" ], - numberOfAssociationsMaxCutList = [ 0 ], - minNumberPassed = 1, - ptMin = 20.0*Units.GeV, - etaMax = 2.5) - -HSG5D3PD_Stream.RequireAlgs.append("HSG5WHU_JetFilter") - -if False: - # (for private production ony) insert in beginning of PreD3PDSequencer - mainSequencer = AlgSequence(D3PDMakerFlags.PreD3PDAlgSeqName(), - StopOverride = False) - - if not hasattr( topSequence, D3PDMakerFlags.PreD3PDAlgSeqName() ): - topSequence += mainSequencer - - mainSequencer.insert(0,sequencer) - -else: - topSequence+=sequencer diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/WHlnubb_unboostedFilterQCDbkg.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/WHlnubb_unboostedFilterQCDbkg.py deleted file mode 100644 index b9a744a74b861ca4855bd240796c4e044de96a89..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/WHlnubb_unboostedFilterQCDbkg.py +++ /dev/null @@ -1,86 +0,0 @@ -''' -Created on 28 Feb 2012 - -@author: wvazquez -''' - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence,AthSequencer -from ROOT import egammaPID - -sequencer = AthSequencer("HSG5WHQ_Sequencer", - StopOverride=False) - - - -from HSG5DPDUtils.HSG5DPDUtilsConf import HSG5__LeptonFilter -leptonFilter=HSG5__LeptonFilter("HSG5WHQ_SingleLeptonFilter", - ElectronFilterNameAndType="D2PDElectronSelector/HSG5WHQ_ElectronSelector", - MuonFilterNameAndTypeVec=["D2PDMuonSelector/HSG5WHQ_MuidMuonSelector", - "D2PDMuonSelector/HSG5WHQ_StacoMuonSelector", - "D2PDMuonSelector/HSG5WHQ_ThirdChainMuonSelector"]) - -# create electron and muon selectors -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -leptonFilter += D2PDElectronSelector( "HSG5WHQ_ElectronSelector", - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'HSG5WHQ_LooseElectronLinkCollection', - minNumberPassed = 1, - ptMin = 20.0*Units.GeV, - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - electronIsEM = egammaPID.ElectronMedium ) - -from HSG5DPDUtils.HSG5Selectors import MuonSelector -muSelector = MuonSelector( minNumberPassed = 1, - ptMin = 18.0, - absEtaMax = 2.5, - acceptIsCombined = True, - acceptIsSegmentTagged = True, - doRelPtCone20 = True, - relPtCone20Max = 0.5 ) - -leptonFilter += muSelector.getMuonSelector('HSG5WHQ_MuidMuonSelector','MuidMuonCollection', - 'HSG5WHQ_LooseMuidMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5WHQ_StacoMuonSelector','StacoMuonCollection', - 'HSG5WHQ_LooseStacoMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5WHQ_ThirdChainMuonSelector','Muons', - 'HSG5WHQ_LooseThirdChainMuonLinkCollection') - -sequencer += leptonFilter - -HSG5D3PD_Stream.RequireAlgs.append("HSG5WHQ_SingleLeptonFilter") - -# jet selector -from AssociationComps.AssociationCompsConf import DeltaRAssociationTool -ToolSvc += DeltaRAssociationTool( "HSG5WHQ_emDeltaRAssociationTool", - OutputLevel = INFO, - inputAssociateToCollection = 'HSG5WHQ_LooseElectronLinkCollection', - deltaRMax = 0.3, - writeUserData = False) - -from D2PDMaker.D2PDMakerConf import D2PDJetSelector -sequencer += D2PDJetSelector( "HSG5WHQ_JetFilter", - inputCollection = 'AntiKt4TopoEMJets', - outputLinkCollection = 'HSG5WHQ_JetLinkCollection', - associationToolList = [ ToolSvc.HSG5WHQ_emDeltaRAssociationTool ], - outputAssociationContainerList = [ "HSG5WHQ_jetsMatchedToElectrons" ], - numberOfAssociationsMaxCutList = [ 0 ], - minNumberPassed = 1, - ptMin = 20.0*Units.GeV, - etaMax = 2.5) - -HSG5D3PD_Stream.RequireAlgs.append("HSG5WHQ_JetFilter") - -if False: - # (for private production ony) insert in beginning of PreD3PDSequencer - mainSequencer = AlgSequence(D3PDMakerFlags.PreD3PDAlgSeqName(), - StopOverride = False) - - if not hasattr( topSequence, D3PDMakerFlags.PreD3PDAlgSeqName() ): - topSequence += mainSequencer - - mainSequencer.insert(0,sequencer) - -else: - topSequence+=sequencer diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHllbb_boostedFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHllbb_boostedFilter.py deleted file mode 100644 index 31c83a84faec929e2f1e5a7ebb004e5e4f77216c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHllbb_boostedFilter.py +++ /dev/null @@ -1,72 +0,0 @@ - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence,AthSequencer -from ROOT import egammaPID - -sequencer = AthSequencer("HSG5ZHLL_Sequencer", - StopOverride=False) - -from D2PDMaker.D2PDMakerConf import D2PDJetSelector -sequencer += D2PDJetSelector( "HSG5ZHLL_BoostedJetFilter", - inputCollection = 'CamKt12LCTopoJets', - outputLinkCollection = 'HSG5ZHLL_LooseBoostedJetLinkCollection', - minNumberPassed = 1, - ptMin = 150.0*Units.GeV) -HSG5D3PD_Stream.RequireAlgs.append("HSG5ZHLL_BoostedJetFilter") - -from HSG5DPDUtils.HSG5DPDUtilsConf import HSG5__LeptonFilter -leptonFilter=HSG5__LeptonFilter("HSG5ZHLL_DileptonFilter", - ElectronFilterNameAndType="D2PDElectronSelector/HSG5ZHLL_ElectronSelector", - MuonFilterNameAndTypeVec=["D2PDMuonSelector/HSG5ZHLL_MuidMuonSelector", - "D2PDMuonSelector/HSG5ZHLL_StacoMuonSelector"]) - -# create electron and muon selectors -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -leptonFilter += D2PDElectronSelector( "HSG5ZHLL_ElectronSelector", - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'HSG5ZHLL_LooseElectronLinkCollection', - minNumberPassed = 2, - etMin = 15.0*Units.GeV, - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - #clusterEtaVetoRanges = "[-1.52, -1.37], [1.37, 1.52]" - ) - -from HSG5DPDUtils.HSG5Selectors import MuonSelector -muSelector = MuonSelector( minNumberPassed = 2, - ptMin = 15.0, - absEtaMax = 2.6, - requireIsTight = True) - -leptonFilter += muSelector.getMuonSelector('HSG5ZHLL_MuidMuonSelector', 'MuidMuonCollection', - 'HSG5ZHLL_LooseMuidMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5ZHLL_StacoMuonSelector', 'StacoMuonCollection', - 'HSG5ZHLL_LooseStacoMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5ZHLL_ThirdChainMuonSelector', 'Muons', - 'HSG5ZHLL_LooseThirdChainMuonLinkCollection') - -sequencer += leptonFilter - -HSG5D3PD_Stream.AcceptAlgs.append("HSG5ZHLL_DileptonFilter") - - -from D2PDMaker.D2PDMakerConf import D2PDMissingEtSelector -sequencer += D2PDMissingEtSelector( "HSG5ZHLL_MissingEtFilter", - inputCollection = 'MET_RefFinal', - outputCollection = 'HSG5ZHLL_NeutrinoRefFinal', - minNumberPassed = 1, - missingEtMax = 50.0*Units.GeV) -HSG5D3PD_Stream.RequireAlgs.append("HSG5ZHLL_MissingEtFilter") - -if False: - # (for private production only) insert in beginning of PreD3PDSequencer - mainSequencer = AlgSequence(D3PDMakerFlags.PreD3PDAlgSeqName(), - StopOverride = False) - - if not hasattr( topSequence, D3PDMakerFlags.PreD3PDAlgSeqName() ): - topSequence += mainSequencer - - mainSequencer.insert(0,sequencer) - -else: - topSequence+=sequencer diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHllbb_unboostedFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHllbb_unboostedFilter.py deleted file mode 100644 index d9e7e13f239beda3025b73c29f2f6ef0a387ca80..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHllbb_unboostedFilter.py +++ /dev/null @@ -1,56 +0,0 @@ - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence,AthSequencer -from ROOT import egammaPID - -sequencer = AthSequencer("HSG5ZHLLunb_Sequencer", - StopOverride=False) - -from HSG5DPDUtils.HSG5DPDUtilsConf import HSG5__LeptonFilter -leptonFilter=HSG5__LeptonFilter("HSG5ZHLLunb_DileptonFilter", - ElectronFilterNameAndType="D2PDElectronSelector/HSG5ZHLLunb_ElectronSelector", - MuonFilterNameAndTypeVec=["D2PDMuonSelector/HSG5ZHLLunb_MuidMuonSelector", - "D2PDMuonSelector/HSG5ZHLLunb_StacoMuonSelector"]) - - -# create electron and muon selectors -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -leptonFilter += D2PDElectronSelector( "HSG5ZHLLunb_ElectronSelector", - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'HSG5ZHLLunb_LooseElectronLinkCollection', - minNumberPassed = 2, - clusterEtMin = 15.0*Units.GeV, - clusterEtaMin = -2.6, - clusterEtaMax = 2.6, - electronIsEM = egammaPID.ElectronLoose - ) - -from HSG5DPDUtils.HSG5Selectors import MuonSelector -muSelector = MuonSelector( minNumberPassed = 2, - ptMin = 15.0, - absEtaMax = 2.6, - requireIsTight = True) - -leptonFilter += muSelector.getMuonSelector('HSG5ZHLLunb_MuidMuonSelector', 'MuidMuonCollection', - 'HSG5ZHLLunb_LooseMuidMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5ZHLLunb_StacoMuonSelector', 'StacoMuonCollection', - 'HSG5ZHLLunb_LooseStacoMuonLinkCollection') -leptonFilter += muSelector.getMuonSelector('HSG5ZHLLunb_ThirdChainMuonSelector', 'Muons', - 'HSG5ZHLLunb_LooseThirdChainMuonLinkCollection') - -sequencer += leptonFilter - -HSG5D3PD_Stream.AcceptAlgs.append("HSG5ZHLLunb_DileptonFilter") - -if False: - # (for private production only) insert in beginning of PreD3PDSequencer - mainSequencer = AlgSequence(D3PDMakerFlags.PreD3PDAlgSeqName(), - StopOverride = False) - - if not hasattr( topSequence, D3PDMakerFlags.PreD3PDAlgSeqName() ): - topSequence += mainSequencer - - mainSequencer.insert(0,sequencer) - -else: - topSequence+=sequencer diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHnunubb_boostedFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHnunubb_boostedFilter.py deleted file mode 100644 index 2feb8ab76d1662f551f597dfa5509bf19512b98d..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHnunubb_boostedFilter.py +++ /dev/null @@ -1,40 +0,0 @@ - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence,AthSequencer - -sequencer = AthSequencer("HSG5ZHMET_Sequencer", - StopOverride=False) - -# boosted jet selector -from D2PDMaker.D2PDMakerConf import D2PDJetSelector -sequencer += D2PDJetSelector( "HSG5ZHMET_BoostedJetFilter", - inputCollection = 'CamKt12LCTopoJets', - outputLinkCollection = 'HSG5ZHMET_boosted_LooseBoostedJetLinkCollection', - minNumberPassed = 1, - ptMin = 20.0*Units.GeV) -HSG5D3PD_Stream.RequireAlgs.append("HSG5ZHMET_BoostedJetFilter") - - -# MET selector -from D2PDMaker.D2PDMakerConf import D2PDMissingEtSelector -sequencer += D2PDMissingEtSelector( "HSG5ZHMET_MissingEtFilter", - inputCollection = 'MET_RefFinal', - outputCollection = 'HSG5ZHMET_NeutrinoRefFinal', - minNumberPassed = 1, - missingEtMin = 40.0*Units.GeV) - #missingEtSignificanceMin = 5.0) -HSG5D3PD_Stream.RequireAlgs.append("HSG5ZHMET_MissingEtFilter") - - -if False: - # (for private production only) insert in beginning of PreD3PDSequencer - mainSequencer = AlgSequence(D3PDMakerFlags.PreD3PDAlgSeqName(), - StopOverride = False) - - if not hasattr( topSequence, D3PDMakerFlags.PreD3PDAlgSeqName() ): - topSequence += mainSequencer - - mainSequencer.insert(0,sequencer) - -else: - topSequence+=sequencer diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHnunubb_unboostedFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHnunubb_unboostedFilter.py deleted file mode 100644 index fe364512ae4a43045974df63b86e661dc0e73fc7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/ZHnunubb_unboostedFilter.py +++ /dev/null @@ -1,31 +0,0 @@ - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence,AthSequencer - -# create electron and muon selectors -sequencer = AthSequencer("HSG5ZHMETU_Sequencer", - StopOverride=False) - -# MET selector -from D2PDMaker.D2PDMakerConf import D2PDMissingEtSelector -sequencer += D2PDMissingEtSelector( "HSG5ZHMETU_MissingEtFilter", - inputCollection = 'MET_RefFinal', - outputCollection = 'HSG5ZHMETU_NeutrinoRefFinal', - minNumberPassed = 1, - missingEtMin = 40.0*Units.GeV) - #missingEtSignificanceMin = 5.0) -HSG5D3PD_Stream.RequireAlgs.append("HSG5ZHMETU_MissingEtFilter") - - -if False: - # (for private production only) insert in beginning of PreD3PDSequencer - mainSequencer = AlgSequence(D3PDMakerFlags.PreD3PDAlgSeqName(), - StopOverride = False) - - if not hasattr( topSequence, D3PDMakerFlags.PreD3PDAlgSeqName() ): - topSequence += mainSequencer - - mainSequencer.insert(0,sequencer) - -else: - topSequence+=sequencer diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/Zbb_boostedFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/Zbb_boostedFilter.py deleted file mode 100644 index 5f68fef1e364a3b83794eb37f7342a762e1c8006..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/Zbb_boostedFilter.py +++ /dev/null @@ -1,37 +0,0 @@ - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence,AthSequencer - -# create electron and muon selectors -sequencer = AthSequencer("HSG5ZBB_Sequencer", StopOverride=False) - -from D2PDMaker.D2PDMakerConf import D2PDJetSelector -boostedJetCollectionName = 'HSG5ZBB_boosted_LooseBoostedJetLinkCollection' -sequencer += D2PDJetSelector( "HSG5ZBB_BoostedJetFilter", - inputCollection = 'CamKt12LCTopoJets', - outputLinkCollection = boostedJetCollectionName, - minNumberPassed = 1, - ptMin = 150.0*Units.GeV) -HSG5D3PD_Stream.RequireAlgs.append("HSG5ZBB_BoostedJetFilter") - -from AssociationComps.AssociationCompsConf import DeltaRAssociationTool -ToolSvc += DeltaRAssociationTool( "HSG5ZBB_subjetBoostedJetDeltaRAssociationTool", - OutputLevel = INFO, - inputAssociateToCollection = boostedJetCollectionName, - deltaRMax = 1.3, - writeUserData = False) - -if not 'IS_SIMULATION' in inputFileSummary['evt_type']: - sequencer += D2PDJetSelector( "HSG5ZBB_btaggedSubjetFilter", - OutputLevel = DEBUG, - inputCollection = 'CamKt12LCTopoSplitFiltSubjetsminSplitR0Jets', - outputLinkCollection = 'HSG5ZBB_btaggedSubjetLinkCollection', - associationToolList = [ ToolSvc.HSG5ZBB_subjetBoostedJetDeltaRAssociationTool ], - outputAssociationContainerList = [ "HSG5ZBB_subjetsMatchedToBoostedJets" ], - numberOfAssociationsMinCutList = [ 2 ], - jetFlavourTagName = 'JetFitterCOMBNN', - jetFlavourTagWeightMin = -1.25, - minNumberPassed = 2) - HSG5D3PD_Stream.RequireAlgs.append("HSG5ZBB_btaggedSubjetFilter") - -topSequence+=sequencer diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/gammaHbb_boostedFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/gammaHbb_boostedFilter.py deleted file mode 100644 index 30838719c3452cf165f3de617be7d8667fc7c4a4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/gammaHbb_boostedFilter.py +++ /dev/null @@ -1,3 +0,0 @@ -include.block("HSG5DPDUtils/gammaHbb_boostedFilter.py") -print "OBSOLETE WARNING please use gammaZbb_boostedFilter.py" -include ("HSG5DPDUtils/gammaZbb_boostedFilter.py") diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/gammaZbb_boostedFilter.py b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/gammaZbb_boostedFilter.py deleted file mode 100644 index cc09f61141d495ee7dfdddc82cde93cc69640419..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/share/gammaZbb_boostedFilter.py +++ /dev/null @@ -1,89 +0,0 @@ - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -from AthenaCommon.AlgSequence import AlgSequence,AthSequencer - -outputLevel=INFO - -# create electron and muon selectors -sequencer = AthSequencer("HSG5GAMZ_Sequencer", StopOverride=False) - -if not 'IS_SIMULATION' in inputFileSummary['evt_type']: - print "applying trigger selection" - from PrimaryDPDMaker.TriggerFilter import TriggerFilter - sequencer += TriggerFilter( "HSG5GAMZ_triggerFilter", - OutputLevel = outputLevel, - trigger = "EF_g([2-9][0-9][0-9]|1[2-9][0-9]+).*") # 120 or higher - - HSG5D3PD_Stream.RequireAlgs.append("HSG5GAMZ_triggerFilter") -else: - print "no trigger selection" - -zbb_or_zllSequencer = AthSequencer("HSG5GAMZ_zbb_or_zllSequencer", StopOverride=True) - -zbbSequencer = AthSequencer("HSG5GAMZ_zbbSequencer", StopOverride=False) - -boostedJetCollectionName='HSG5GAMZ_boosted_LooseBoostedJetLinkCollection' -from D2PDMaker.D2PDMakerConf import D2PDJetSelector -zbbSequencer += D2PDJetSelector( "HSG5GAMZ_BoostedJetFilter", - OutputLevel = outputLevel, - inputCollection = 'CamKt12LCTopoJets', - outputLinkCollection = boostedJetCollectionName, - minNumberPassed = 1, - ptMin = 80.0*Units.GeV) - -from AssociationComps.AssociationCompsConf import DeltaRAssociationTool -ToolSvc += DeltaRAssociationTool( "HSG5GAMZ_subjetBoostedJetDeltaRAssociationTool", - OutputLevel = outputLevel, - inputAssociateToCollection = boostedJetCollectionName, - deltaRMax = 1.3, - writeUserData = False) - - -zbbSequencer += D2PDJetSelector( "HSG5GAMZ_btaggedSubjetFilter", - OutputLevel = outputLevel, - inputCollection = 'CamKt12LCTopoSplitFiltSubjetsminSplitR0Jets', - outputLinkCollection = 'HSG5GAMZ_btaggedSubjetLinkCollection', - associationToolList = [ ToolSvc.HSG5GAMZ_subjetBoostedJetDeltaRAssociationTool ], - outputAssociationContainerList = [ "HSG5GAMZ_subjetsMatchedToBoostedJets" ], - numberOfAssociationsMinCutList = [ 1 ], - jetFlavourTagName = 'JetFitterCOMBNN', - jetFlavourTagWeightMin = -1.25, - minNumberPassed = 1) -zbb_or_zllSequencer+=zbbSequencer - -HSG5D3PD_Stream.AcceptAlgs.append("HSG5GAMZ_btaggedSubjetFilter") - -# add muon and jet algs, but don't add to RequireAlgs (they're used for LeptonJetsFilter) -outputJetContainerName="HSG5GAMZ_jetLinkCollection" -zbb_or_zllSequencer += D2PDJetSelector( "HSG5GAMZ_jetFilter", - OutputLevel = outputLevel, - inputCollection = 'AntiKt4TopoEMJets', - outputLinkCollection = outputJetContainerName, - ptMin = 19.0*Units.GeV, - minNumberPassed = 0) - -from D2PDMaker.D2PDMakerConf import D2PDMuonSelector -outputMuonContainerName="HSG5GAMZ_muonLinkCollection" -zbb_or_zllSequencer += D2PDMuonSelector( "HSG5GAMZ_muonFilter", - OutputLevel = outputLevel, - inputCollection = 'StacoMuonCollection', - outputLinkCollection = outputMuonContainerName, - ptMin = 19.0*Units.GeV, - muonRequireIsLoose = True, - minNumberPassed = 0) - -# now add LeptonJetsSelector -from HSG5DPDUtils.HSG5DPDUtilsConf import HSG5__LeptonJetsFilter -zbb_or_zllSequencer += HSG5__LeptonJetsFilter("HSG5GAMZ_leptonJetsFilter", - OutputLevel = outputLevel, - SelectedJetContainerName = outputJetContainerName, - SelectedMuonContainerName = outputMuonContainerName, - MinSumJetsAndMuon=3) - -sequencer+=zbb_or_zllSequencer -HSG5D3PD_Stream.AcceptAlgs.append("HSG5GAMZ_leptonJetsFilter") - -topSequence+=sequencer - -print "printing topSequence" -print topSequence diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/src/LeptonFilter.cxx b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/src/LeptonFilter.cxx deleted file mode 100644 index 9df7fed9837a4a5b09b22f125cb67586c89cd43b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/src/LeptonFilter.cxx +++ /dev/null @@ -1,138 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "GaudiKernel/Algorithm.h" - -#include "HSG5DPDUtils/LeptonFilter.h" - -namespace HSG5 { - -//________________________________________________________________________ -LeptonFilter::LeptonFilter( const std::string& name, - ISvcLocator* pSvcLocator ) - : AthFilterAlgorithm(name,pSvcLocator), - m_electronFilter(0) -{ - - declareProperty("ElectronFilterNameAndType", m_electronFilterNameAndType="D2PDElectronSelector/ElectronSelector"); - - //declareProperty("MuonFilterNameAndType", m_muonFilterNameAndType="D2PDMuonSelector/MuonSelector"); - - std::vector<std::string> defaultFilters; - defaultFilters.push_back("D2PDMuonSelector/MuonSelector"); - declareProperty("MuonFilterNameAndTypeVec", m_muonFilterNameAndTypeVec=defaultFilters); - -} - -//________________________________________________________________________ -LeptonFilter::~LeptonFilter() -{ - -} - -//________________________________________________________________________ -StatusCode LeptonFilter::initialize() -{ - StatusCode sc = StatusCode::SUCCESS; - - // get electron sub-algorithm type and instance names - std::string elType = findType(m_electronFilterNameAndType); - std::string elName = findName(m_electronFilterNameAndType); - ATH_MSG_INFO("Electron filter sub-algorithm type="<<elType - <<" and instance name="<<elName); - sc = createSubAlgorithm(elType,elName,m_electronFilter); - if (sc.isFailure()) { - ATH_MSG_FATAL("Failed to create electron filter algorithm"); - return sc; - } - - // get muon sub-algorithms - int nfilters=m_muonFilterNameAndTypeVec.size(); - m_muonFilter.resize(nfilters); - - for (int ifilter=0;ifilter<nfilters;ifilter++) { - std::string muType = findType(m_muonFilterNameAndTypeVec[ifilter]); - std::string muName = findName(m_muonFilterNameAndTypeVec[ifilter]); - ATH_MSG_INFO("Muon filter sub-algorithm type="<<muType<<" and instance name=" - <<muName); - sc = createSubAlgorithm(muType,muName,m_muonFilter[ifilter]); - if (sc.isFailure()) { - ATH_MSG_FATAL("Failed to create muon filter algorithm"); - } - } - - return sc; -} - -//________________________________________________________________________ -StatusCode LeptonFilter::finalize() -{ - return StatusCode::SUCCESS; -} - -//________________________________________________________________________ -StatusCode LeptonFilter::execute() -{ - ATH_MSG_DEBUG("Start executing lepton filter"); - - StatusCode sc = StatusCode::SUCCESS; - - bool muonPassed=false; - for (int ifilter=0;ifilter<(int)m_muonFilter.size();ifilter++) { - sc = m_muonFilter[ifilter] -> execute(); - if (sc.isFailure()) { - ATH_MSG_FATAL("Failure in muonFilter execute"); - return sc; - } - if (m_muonFilter[ifilter]->filterPassed()) { - muonPassed=true; - break; - } - } - - if (msgLvl(MSG::DEBUG)) { - if (muonPassed) ATH_MSG_DEBUG("passed muon selection"); - else ATH_MSG_DEBUG("failed muon selection"); - } - - sc = m_electronFilter -> execute(); - if (sc.isFailure()) { - ATH_MSG_FATAL("Failure in electronFilter execute"); - return sc; - } - - bool electronPassed = m_electronFilter->filterPassed(); - if (msgLvl(MSG::DEBUG)) { - if (electronPassed) ATH_MSG_DEBUG("passed electron selection"); - else ATH_MSG_DEBUG("failed electron selection"); - } - - if (electronPassed || muonPassed) { - ATH_MSG_DEBUG("passed lepton selection"); - setFilterPassed(true); - } - else { - ATH_MSG_DEBUG("failed lepton selection"); - setFilterPassed(false); - } - return StatusCode::SUCCESS; -} - -//________________________________________________________________________ -std::string LeptonFilter::findType(std::string l_property) -{ - int slash_pos = l_property.find_first_of("/"); - std::string type = l_property.substr( 0, slash_pos ); - return type ; -} - -//________________________________________________________________________ -std::string LeptonFilter::findName(std::string l_property){ - int slash_pos = l_property.find_first_of("/"); - std::string type = l_property.substr( 0, slash_pos ); - std::string name = (slash_pos > 0) ? l_property.substr( slash_pos + 1) : type ; - return name ; -} - -} // end namespace diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/src/LeptonJetsFilter.cxx b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/src/LeptonJetsFilter.cxx deleted file mode 100644 index 96cdee9c7091dd4b3f3a122701462a89823eb78e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/src/LeptonJetsFilter.cxx +++ /dev/null @@ -1,125 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "GaudiKernel/Algorithm.h" - -#include "HSG5DPDUtils/LeptonJetsFilter.h" - -#include "JetEvent/JetCollection.h" -#include "muonEvent/MuonContainer.h" -#include "NavFourMom/INav4MomLinkContainer.h" - -namespace HSG5 { - -//________________________________________________________________________ -LeptonJetsFilter::LeptonJetsFilter( const std::string& name, - ISvcLocator* pSvcLocator ) - : AthFilterAlgorithm(name,pSvcLocator) - , m_nProcessed(0) - , m_nEventPassTrigger(0) -{ - declareProperty("SelectedJetContainerName", m_selectedJetContainerName="", "Name of output jet container from JetSelector"); - declareProperty("SelectedMuonContainerName", m_selectedMuonContainerName="", "Name of output muon container from MuonSelector"); - - declareProperty("MinSumJetsAndMuon", m_minSumJetsAndMuon=0, "Minimum number of jets and muons combined"); - declareProperty("MaxSumJetsAndMuon", m_maxSumJetsAndMuon=999, "Maximum number of jets and muons combined"); - -} - -//________________________________________________________________________ -LeptonJetsFilter::~LeptonJetsFilter() -{ - -} - -//________________________________________________________________________ -StatusCode LeptonJetsFilter::initialize() -{ - StatusCode sc = StatusCode::SUCCESS; - - - return sc; -} - -//________________________________________________________________________ -StatusCode LeptonJetsFilter::finalize() -{ - float effiPassTrigger = 100. * m_nEventPassTrigger / float(m_nProcessed); - float effiErrPassTrigger = 100. * std::sqrt(m_nEventPassTrigger) / float(m_nProcessed); - - ATH_MSG_INFO("==> finalize "<<this->name()<<"..."); - ATH_MSG_INFO("***************************************************************"); - ATH_MSG_INFO("Cut-flow table of "<<this->name()<<" skimming algorithm"); - ATH_MSG_INFO("-------------"); - ATH_MSG_INFO(" Number of processed events: "<<m_nProcessed); - std::stringstream effstr; - effstr<<" Events passing selection: "<<m_nEventPassTrigger<<" and resulting efficiency = (" - <<std::setw(3)<<effiPassTrigger<<" +/- "<<effiErrPassTrigger<<")"; - ATH_MSG_INFO(effstr.str()); - - ATH_MSG_INFO("***************************************************************"); - - return StatusCode::SUCCESS; -} - -//________________________________________________________________________ -StatusCode LeptonJetsFilter::execute() -{ - ATH_MSG_DEBUG("Start executing lepton-jet filter"); - - ++m_nProcessed; - - StatusCode sc = StatusCode::SUCCESS; - - int sumJetsAndMuon=0; - - // get number output jets from StoreGate - const INav4MomLinkContainer* outputJetContainer=0; - if (evtStore()->contains<INav4MomLinkContainer>(m_selectedJetContainerName)) { - sc = evtStore()->retrieve(outputJetContainer, m_selectedJetContainerName); - if (sc.isFailure()) { - ATH_MSG_WARNING("No collection with name "<<m_selectedJetContainerName<<" found in StoreGate"); - } - else { - ATH_MSG_DEBUG("found jet container, adding "<<outputJetContainer->size()<<" to sum"); - sumJetsAndMuon+=outputJetContainer->size(); - } - } - else - ATH_MSG_DEBUG("StoreGate does not contain collection with name "<<m_selectedJetContainerName); - - // get output muons from StoreGate - const INav4MomLinkContainer* outputMuonContainer=0; - if (evtStore()->contains<INav4MomLinkContainer>(m_selectedMuonContainerName)) { - sc = evtStore()->retrieve(outputMuonContainer, m_selectedMuonContainerName); - if (sc.isFailure()) { - ATH_MSG_WARNING("No collection with name "<<m_selectedMuonContainerName<<" found in StoreGate"); - } - else { - ATH_MSG_DEBUG("found muon container, adding "<<outputMuonContainer->size()<<" to sum"); - sumJetsAndMuon+=outputMuonContainer->size(); - } - } - else - ATH_MSG_DEBUG("StoreGate does not contain collection with name "<<m_selectedMuonContainerName); - - - // check if passed selection cuts - ATH_MSG_DEBUG("sumJetsAndMuon="<<sumJetsAndMuon<<", min: "<<m_minSumJetsAndMuon - <<", max: "<<m_maxSumJetsAndMuon); - if (sumJetsAndMuon>=m_minSumJetsAndMuon && - sumJetsAndMuon<=m_maxSumJetsAndMuon) { - ATH_MSG_DEBUG("passed lepton+jets filter"); - setFilterPassed(true); - ++m_nEventPassTrigger; - } - else { - ATH_MSG_DEBUG("failed lepton+jets filter"); - setFilterPassed(false); - } - - return StatusCode::SUCCESS; -} - -} // end namespace diff --git a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/src/components/HSG5DPDUtils_entries.cxx b/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/src/components/HSG5DPDUtils_entries.cxx deleted file mode 100644 index 8a73f998fe6dad57ec5893d6a36a28c9c1e29e01..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils/src/components/HSG5DPDUtils_entries.cxx +++ /dev/null @@ -1,6 +0,0 @@ -#include "HSG5DPDUtils/LeptonFilter.h" -#include "HSG5DPDUtils/LeptonJetsFilter.h" - -DECLARE_COMPONENT( HSG5::LeptonFilter ) -DECLARE_COMPONENT( HSG5::LeptonJetsFilter ) - diff --git a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/CMakeLists.txt b/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/CMakeLists.txt deleted file mode 100644 index 59e529f592b4b4fae514f8bf3f23e1de267546a0..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -################################################################################ -# Package: HiggsPhysTagTools -################################################################################ - -# Declare the package name: -atlas_subdir( HiggsPhysTagTools ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaBaseComps - Database/AthenaPOOL/AthenaPoolUtilities - GaudiKernel - PhysicsAnalysis/EventTag/TagEvent ) - -# External dependencies: -find_package( CLHEP ) - -# Component(s) in the package: -atlas_add_library( HiggsPhysTagToolsLib - src/*.cxx - PUBLIC_HEADERS HiggsPhysTagTools - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ) - -atlas_add_component( HiggsPhysTagTools - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent HiggsPhysTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/HiggsPhysTagTools/HiggsPhysTagTool.h b/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/HiggsPhysTagTools/HiggsPhysTagTool.h deleted file mode 100755 index 7f19809e5ab43d19d2aa15c605c518af6694206c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/HiggsPhysTagTools/HiggsPhysTagTool.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef HIGGSPHYSTAGTOOL_H -#define HIGGSPHYSTAGTOOL_H - -/***************************************************************************** -Name : HiggsPhysTagTool.h -Package : offline/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : build the HiggsPhys Tag object - AnalysisTag.h. - The HiggsPhys Analysis Tag fragment is built here - For example encoding the results of hypotheses on different channels -*****************************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -#include <map> - -/** Interface ID for HiggsPhysTagTool*/ -static const InterfaceID IID_HiggsPhysTagTool("HiggsPhysTagTool", 1, 0); - -class HiggsPhysTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - HiggsPhysTagTool(const std::string& type, const std::string& name, const IInterface* parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_HiggsPhysTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int max); - virtual StatusCode execute(TagFragmentCollection& higgsTagCol, const int max); - virtual StatusCode finalize(); - -private: - - /** Properties */ - std::string m_jetContainerName; - double m_jetPtCut; - }; - -#endif // HIGGSPHYSTAGTOOL_H - - - diff --git a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/doc/packagedoc.h b/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/doc/packagedoc.h deleted file mode 100644 index b9310a642b429c9bc434e0b7d15c387b1edbd22b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/doc/packagedoc.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page HiggsPhysTagTools_page HiggsPhysTagTools - -@section HiggsPhysTagTools_introductionHiggsPhysTagTools Introduction -This package contains the alg tools for building the TAG fragment for Higgs Physics Analysis - -@section HiggsPhysTagTools_packagecontentHiggsPhysTagTools Package Contents -HiggsPhysTagTools contains the following tools: - -- HiggsPhysTagTool ... tool for Higgs Physics Analysis TAG fragment - -- for questions and comments: ketevi@bnl.gov - - - -*/ diff --git a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/share/HiggsPhysTagTool_jobOptions.py b/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/share/HiggsPhysTagTool_jobOptions.py deleted file mode 100755 index 8819d8c347d0cf9b9a7c4aec17ac12235c7d095b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/share/HiggsPhysTagTool_jobOptions.py +++ /dev/null @@ -1,16 +0,0 @@ -include.block ("HiggsPhysTagTools/HiggsPhysTagTool_jobOptions.py") - -from EventTagAlgs.EventTagGlobal import EventTagGlobal - -if not EventTagGlobal.InitEventTagBuilder: - raise RunTimeError('EventTagBuilder has not been initialized') - -########### HiggsPhysics analysis tag options ################ - -from HiggsPhysTagTools.HiggsPhysTagToolsConf import \ -HiggsPhysTagTool as ConfiguredHiggsPhysTagTool -HiggsPhysTagTool=ConfiguredHiggsPhysTagTool( - JetContainer = "AntiKt4TopoJets", - EtCut = 15.*GeV) -ToolSvc += HiggsPhysTagTool - diff --git a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/src/HiggsPhysTagTool.cxx b/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/src/HiggsPhysTagTool.cxx deleted file mode 100755 index 86c2b35aae0b1a8aa39d89a7fe8c66a825404c9e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/src/HiggsPhysTagTool.cxx +++ /dev/null @@ -1,78 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : HiggsPhysTagTool.cxx -Package : offline/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : create a HiggsPhysTag - a word to encode HiggsPhys specific information such - as the results of hypotheses - -*****************************************************************************/ - -#include "Gaudi/Property.h" -#include "CLHEP/Units/SystemOfUnits.h" - -#include "HiggsPhysTagTools/HiggsPhysTagTool.h" -#include "TagEvent/HiggsPhysAttributeNames.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -/** the constructor */ -HiggsPhysTagTool::HiggsPhysTagTool (const std::string& type, const -std::string& name, const IInterface* parent) : - AthAlgTool( type, name, parent ) { - - /** Container Names */ - declareProperty("JetContainer", m_jetContainerName = "AntiKt4TopoJets"); - - /** Pt cut on jte - modifiable in job options */ - declareProperty("EtCut", m_jetPtCut = 15.0*CLHEP::GeV); - - declareInterface<HiggsPhysTagTool>( this ); -} - -/** initialization - called once at the begginning */ -StatusCode HiggsPhysTagTool::initialize() { - ATH_MSG_DEBUG( "in intialize()" ); - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode HiggsPhysTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, - const int max) { - - ATH_MSG_DEBUG( "in attributeSpecification()" ); - - /** specifiy the HiggsPhys the attributes */ - - attrMap[ HiggsAttributeNames[0] ] = AthenaAttributeType("unsigned int", HiggsAttributeUnitNames[0], HiggsAttributeGroupNames[0]); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** execute - called on every event */ -StatusCode HiggsPhysTagTool::execute(TagFragmentCollection& higgsTagCol, const int max) { - - ATH_MSG_DEBUG( "in execute()" ); - - /** fill the HiggsPhys analysis tag */ - - unsigned int fragment = 0x0; - higgsTagCol.insert( HiggsAttributeNames[0], fragment ); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** finalize - called once at the end */ -StatusCode HiggsPhysTagTool::finalize() { - ATH_MSG_DEBUG( "in finalize()" ); - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/src/components/HiggsPhysTagTools_entries.cxx b/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/src/components/HiggsPhysTagTools_entries.cxx deleted file mode 100644 index 918e80415400649186095f8c80c0d21b62f4aa84..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/HiggsPhys/HiggsPhysTagTools/src/components/HiggsPhysTagTools_entries.cxx +++ /dev/null @@ -1,6 +0,0 @@ -#include "HiggsPhysTagTools/HiggsPhysTagTool.h" - - -DECLARE_COMPONENT( HiggsPhysTagTool ) - - diff --git a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/CMakeLists.txt b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/CMakeLists.txt index 5963f3b0a3b48794c88103b07ca966421751a38f..f66377acc4698afa16361d8be73dfd72ba3e78bd 100644 --- a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/CMakeLists.txt +++ b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/CMakeLists.txt @@ -1,12 +1,23 @@ # The name of the package: atlas_subdir( FTagAnalysisInterfaces ) +# The dependencies of the package: +atlas_depends_on_subdirs( + PUBLIC + Control/AthToolSupport/AsgTools + Event/xAOD/xAODBTagging + Event/xAOD/xAODJet + PhysicsAnalysis/AnalysisCommon/PATCore + PhysicsAnalysis/AnalysisCommon/PATInterfaces + PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface + PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency ) + # Component(s) in the package: atlas_add_library( FTagAnalysisInterfacesLib FTagAnalysisInterfaces/*.h INTERFACE PUBLIC_HEADERS FTagAnalysisInterfaces - LINK_LIBRARIES AsgTools xAODBTagging xAODJet PATCoreLib CalibrationDataInterfaceLib PATInterfaces xAODBTaggingEfficiencyLib ) + LINK_LIBRARIES AsgTools xAODBTagging xAODJet PATCoreLib CalibrationDataInterfaceLib ) atlas_add_dictionary( FTagAnalysisInterfacesDict FTagAnalysisInterfaces/FTagAnalysisInterfacesDict.h diff --git a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/FTagAnalysisInterfacesDict.h b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/FTagAnalysisInterfacesDict.h index 82af707e72e1ff200b8e202825c581992107b215..8a00bd1d5312c8757bc0f95d16b9e04250354f5f 100644 --- a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/FTagAnalysisInterfacesDict.h +++ b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/FTagAnalysisInterfacesDict.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ @@ -15,5 +15,6 @@ #include "FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h" #include "FTagAnalysisInterfaces/IBTaggingSelectionTool.h" #include "FTagAnalysisInterfaces/IBTaggingTruthTaggingTool.h" +#include "FTagAnalysisInterfaces/IBTaggingEigenVectorRecompositionTool.h" #endif // FTAGANALYSISINTERFACES_FTAGANALYSISINTERFACESDICT_H diff --git a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h index 106f523b0decde966b92e42d989ea5c7eff10688..18cd37db05233cc780771e903bb401ef7710beca 100644 --- a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h +++ b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -76,6 +76,8 @@ class IBTaggingEfficiencyTool : virtual public CP::ISystematicsTool { // this merely passes on the request to the underlying CDI object (listSystematics() cannot be used here, as corresponding CP::SystematicVariation objects may not exist) virtual std::map<std::string, std::vector<std::string> > listScaleFactorSystematics(bool named = false) const = 0; + + virtual CP::CorrectionCode getEigenRecompositionCoefficientMap(const std::string &label, std::map<std::string, std::map<std::string, float>> & coefficientMap) = 0; }; #endif // CPIBTAGGINGEFFICIENCYTOOL_H diff --git a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingEigenVectorRecompositionTool.h b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingEigenVectorRecompositionTool.h new file mode 100644 index 0000000000000000000000000000000000000000..711f0a436a0b531e3dc4eeefc1b1d9474b55c385 --- /dev/null +++ b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingEigenVectorRecompositionTool.h @@ -0,0 +1,63 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +/////////////////////////////////////////////////////////////////// +// IBTaggingEfficiencyTool.h, (c) ATLAS Detector software +/////////////////////////////////////////////////////////////////// +/** +@class BTaggingEigenVectorRecompositionTool +Tool to help retrieving(from CDI) and providing coefficents values which +could be used for expressing eigen vector NPs by linear combination of +original uncertainty NPs in workspace level of the physics analysis. +Then eigenvector uncertainties are replaced by original uncertainties. +Replacement could help us correlate uncertainties between analyses +which are using different tagger algorighthms. +@author Y. Ke, Q. Buat +@contact yake@cern.ch, qbuat@cern.ch +**/ +#ifndef CPIBTAGGINGEIGENVECTORRECOMPOSITIONTOOL_H +#define CPIBTAGGINGEIGENVECTORRECOMPOSITIONTOOL_H + +#include "AsgTools/IAsgTool.h" +#include "PATInterfaces/ISystematicsTool.h" +#include "PATInterfaces/CorrectionCode.h" +#include "PATInterfaces/SystematicCode.h" +#include "PATInterfaces/SystematicSet.h" + +#include <vector> +#include <map> + +class IBTaggingEigenVectorRecompositionTool : virtual public CP::ISystematicsTool { + + /// Declare the interface that the class provides + ASG_TOOL_INTERFACE( IBTagEigenVectorRecompositionTool ) + + public: + /** + * Return a vector which contains a list of original vector uncertainties names. + * vector list is for the chosen flavour label. The order of the names is the same + * as the coefficient values given by getCoefficients() + **/ + virtual std::vector<std::string> getListOfOriginalNuisanceParameters(const std::string& label) const = 0; + /** + * Produce a coefficient map contains only eigenvectors that is showing in + * eigenIdxList and return it to user. If given empty evIdxList, the function + * returns a full map. Produced map is for the chosen flavour label. + **/ + virtual std::map<std::string, std::map<std::string, float>> getCoefficientMap(const std::string& label, const std::vector<unsigned int> eigenIdxList = std::vector<unsigned int>()) const = 0; + /** + * Returns a vector contains the coefficients value of the chosen label + * and the chosen eigenvector. The order of the value is the same as + * the order of original uncertainty names given by + * getListOfOriginalNuisanceParameters() + **/ + virtual std::vector<float> getCoefficients(const std::string & label, const unsigned int evIdx) const = 0; + // Return number of eigenvectors used for the chosen label. + virtual int getNumEigenVectors(const std::string & label) const = 0; + +}; + +#endif // CPIBTAGGINGEIGENVECTORRECOMPOSITIONTOOL_H diff --git a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingSelectionTool.h b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingSelectionTool.h index 4a2962e9912563c1402f153ccd3e30d85a2a4ea3..01f249278c851d790a114d67409cecc6f1a7bc79 100644 --- a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingSelectionTool.h +++ b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/IBTaggingSelectionTool.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/selection.xml b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/selection.xml index 0ca83586057e2ac71082c4616505608f9d868646..da7589e410ea809716db296417f176b935a6e4ba 100644 --- a/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/selection.xml +++ b/PhysicsAnalysis/Interfaces/FTagAnalysisInterfaces/FTagAnalysisInterfaces/selection.xml @@ -3,4 +3,5 @@ <class name="IBTaggingEfficiencyTool" /> <class name="IBTaggingSelectionTool" /> <class name="IBTaggingTruthTaggingTool" /> + <class name="IBTaggingEigenVectorRecompositionTool" /> </lcgdict> diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CMakeLists.txt b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CMakeLists.txt index 4fb473ce926d96247f45ac7182f85274e0cfacf0..1901242e9dea21f80be95642d9eb30b6369670d6 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CMakeLists.txt +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CMakeLists.txt @@ -31,3 +31,4 @@ atlas_add_library( CalibrationDataInterfaceLib # Install files from the package: atlas_install_joboptions( share/*.py ) + diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataBackend.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataBackend.h index 9e3a745a7da7846c8aa286aae6508833f3139a2d..7da15c5882ca096efdd0234a089c80caf694bc17 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataBackend.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataBackend.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataContainer.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataContainer.h index 1b922479b4f8d784871fe3abfab466e072e9e763..7de76d26c6a5b46f6485b440b75172a258c8801f 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataContainer.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataContainer.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataEigenVariations.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataEigenVariations.h index c2eb5e166a586c1c497779d48004f24de5a09618..9f9b8a3bb7a3c4d88255b71ea393b5b1f589e59d 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataEigenVariations.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataEigenVariations.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ ////////////////////////////////////////////////////////////////////// @@ -87,6 +87,10 @@ namespace Analysis /** matrix to remove unecessary rows and columns from covariance */ TMatrixD getJacobianReductionMatrix() const; + /** Eigenvector recomposition method.*/ + bool EigenVectorRecomposition(const std::string label, + std::map<std::string, std::map<std::string, float>> &coefficientMap) const; + private: /** container object containing the basic information */ const CalibrationDataHistogramContainer* m_cnt; diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceBase.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceBase.h index a35c2462babf9f241d6fb880ecce6c160c52c7ab..5e83f573253c044de4878317ea46ce5f0a2ac98b 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceBase.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceBase.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceROOT.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceROOT.h index 215d1e03076b70be74e9f8ccce7b15cfe574b549..96311d58e5b5d47bc8a90b31aa3ff3f2469196b4 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceROOT.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceROOT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -98,11 +98,8 @@ namespace Analysis const std::map<std::string, std::vector<std::string> >& EffNames, const std::map<std::string, std::vector<std::string> >& excludeFromEV, const std::map<std::string, Analysis::EVReductionStrategy> EVReductions, - - bool useEV = true, - bool useMCMCSF = true, - bool useTopologyRescaling = false, - bool useRecommendedEVExclusions = false, + bool useEV = true, bool useMCMCSF = true, + bool useTopologyRescaling = false, bool useRecommendedEVExclusions = false, bool verbose = true); /** default constructor for PROOF object retrieval */ @@ -306,6 +303,20 @@ namespace Analysis // ------------------------------------------------------------------------------------------ + /** run EigenVector Recomposition method */ + CalibrationStatus runEigenVectorRecomposition(const std::string& author, + const std::string& label, + const std::string& OP, + unsigned int mapindex = 0); + + CalibrationStatus runEigenVectorRecomposition(const std::string& label, + unsigned int mapindex = 0); + + /** Get Eigenvector recomposition map after running runEigenVectorRecomposition()*/ + std::map<std::string, std::map<std::string, float>> getEigenVectorRecompositionCoefficientMap(); + + // ------------------------------------------------------------------------------------------ + // Utilities /** retrieve the MC efficiency (central values) object for the given flavour label and operating point. @@ -439,6 +450,11 @@ namespace Analysis // ------------------------------------------------------------------------------------------ + // map storing coefficient calculated by EigenRecomposition. + std::map<std::string, std::map<std::string, float>> m_coefficientMap; + + // ------------------------------------------------------------------------------------------ + // Bounds checking functionality /** |eta| bounds and strategy for dealing with out-of-bounds conditions */ diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceTester.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceTester.h index b6172af5ea224ca0ece92b351d3f37750246a532..7f0856e26bca383d955a36e6264cabfb69821a73 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceTester.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceTester.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceTool.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceTool.h index 30bc56ac344381a02730acd7e7e46b512f2d5d0c..d0a1e87e9f6c1839835e4528e3073cc803722da5 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceTool.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInterfaceTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -56,7 +56,7 @@ namespace Analysis verify that the aliasing is appropriate! DB representation (all residing under a common root folder): - .../\<jet author\>/\<tagger\>/\<operating point\>/\<flavour\>/\<object name\> + .../<jet author>/<tagger>/<operating point>/<flavour>/<object name> @author Frank Filthaut <F.Filthaut@science.ru.nl> */ diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInternals.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInternals.h index b057529a26bce0cd28f921f242804c1f7c6e0589..779779c40eb7087596ffde95b751a555c9dc3bb7 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInternals.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataInternals.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ ////////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataUpdater.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataUpdater.h index 5b721f27f8a24bb4998d48d0903ad4b539e9265a..0cda9c22e6e745b0b4a654780f6d576eaa2e519f 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataUpdater.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataUpdater.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataUtilities.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataUtilities.h index 4c334edf114e1e402a9581a114686cb28b3a87ea..e9d74cc6a14a0d67c996e1b17a089398393d4d6d 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataUtilities.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataUtilities.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // CalibrationDataUtilities.h, (c) ATLAS Detector software diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataVariables.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataVariables.h index 8fb1b49ff84da94a5d3a95db114d4511b8b27f6c..f548030e07e2956d5a3cf1cea2ad3fa871e7b04c 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataVariables.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/CalibrationDataVariables.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ ////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/ICalibrationDataInterfaceTool.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/ICalibrationDataInterfaceTool.h index acb43e2034ded557a4d5aa4577d028118c02e552..f813f04639257a5c9e33b6fac5afd371abc06c61 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/ICalibrationDataInterfaceTool.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/CalibrationDataInterface/ICalibrationDataInterfaceTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataBackend.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataBackend.cxx index 3505ea574d3595c52a3331af0afd40b6d743481c..4e2cc51d005895134696342cc4cb3f6aa8b1eb5e 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataBackend.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataBackend.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ ////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataContainer.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataContainer.cxx index 5688046d1392ce14befae3cfd57653cd1ad062f6..a4282a8e0e9b9c1ce05cc070d82be6fb21427df1 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataContainer.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataContainer.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataEigenVariations.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataEigenVariations.cxx index 31375312c8240a29323360ea85055ddead9ff2c8..2210f43fa510939f31e1492d516a6135ca2afb3d 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataEigenVariations.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataEigenVariations.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////////// @@ -23,6 +23,7 @@ #include "TDecompSVD.h" #include "TMatrixDSymEigen.h" #include "TROOT.h" +#include "TFile.h" using Analysis::CalibrationDataEigenVariations; using Analysis::CalibrationDataInterface::split; @@ -1040,3 +1041,134 @@ CalibrationDataEigenVariations::isExtrapolationVariation(unsigned int nameIndex) return (m_namedExtrapolation == int(nameIndex)); } + +//________________________________________________________________________________ +bool +CalibrationDataEigenVariations::EigenVectorRecomposition(const std::string label, + std::map<std::string, std::map<std::string, float>> &coefficientMap) const +{ + // Calculating eigen vector recomposition coefficient map and pass to + // user by reference. Return true if method success. Return false and + // will not modify coefficientMap if function failed. + // + // label: flavour label + // coefficientMap: (reference to) coefficentMap which will be used as return value. + if (! m_initialized) const_cast<CalibrationDataEigenVariations*>(this)->initialize(); + + std::vector<TH1*> originSF_hvec; + std::vector<TH1*> eigenSF_hvec; + + // Retrieving information for calculation + std::vector<string>fullUncList = m_cnt->listUncertainties(); + std::vector<string> uncList; + for (unsigned int t = 0; t < fullUncList.size(); ++t) { + // entries that should never be included + if (fullUncList[t] == "comment" || fullUncList[t] == "result" || + fullUncList[t] == "combined" || fullUncList[t] == "statistics" || + fullUncList[t] == "systematics" || fullUncList[t] == "MCreference" || + fullUncList[t] == "MChadronisation" || fullUncList[t] == "extrapolation" || + fullUncList[t] == "ReducedSets" || fullUncList[t] == "excluded_set") continue; + // entries that can be excluded if desired + if (m_namedIndices.find(fullUncList[t]) != m_namedIndices.end()) continue; + + TH1* hunc = dynamic_cast<TH1*>(m_cnt->GetValue(fullUncList[t].c_str())); + + Int_t nx = hunc->GetNbinsX(); + Int_t ny = hunc->GetNbinsY(); + Int_t nz = hunc->GetNbinsZ(); + Int_t bin = 0; + bool retain = false; // Retain the histogram? + + // discard empty histograms + // Read all bins without underflow&overflow + for(Int_t binx = 1; binx <= nx; binx++) + for(Int_t biny = 1; biny <= ny; biny++) + for(Int_t binz = 1; binz <= nz; binz++){ + bin = hunc->GetBin(binx, biny, binz); + if (fabs(hunc->GetBinContent(bin)) > 1E-20){ + retain = true; + break; + } + }// end hist bin for-loop + if (!retain){ + std::cout<<"Eigenvector Recomposition: Empty uncertainty "<<fullUncList.at(t)<<" is discarded."<<std::endl; + continue; // discard the vector + } + + uncList.push_back(fullUncList.at(t)); + originSF_hvec.push_back(hunc); + } + + TH1* nom = dynamic_cast<TH1*>(m_cnt->GetValue("result")); // Nominal SF hist + int dim = nom->GetDimension(); + Int_t nx = nom->GetNbinsX(); + Int_t ny = nom->GetNbinsY(); + Int_t nz = nom->GetNbinsZ(); + Int_t nbins = nx; + if(dim > 1) nbins *= ny; + if(dim > 2) nbins *= nz; + TMatrixD matSF(uncList.size(), nbins); + Int_t col = 0; // mark the column number + // Fill the Delta SF Matrix + for(unsigned int i = 0; i < uncList.size(); i++){ + col = 0; + // Loop all bins except underflow&overflow bin + for(int binz = 1; binz <= nz; binz++) + for(int biny = 1; biny <= ny; biny++) + for(int binx = 1; binx <= nx; binx++){ + Int_t bin = originSF_hvec.at(i)->GetBin(binx, biny, binz); + TMatrixDRow(matSF,i)[col] = originSF_hvec[i]->GetBinContent(bin); + col++; + } + } + + // get eigen vectors of scale factors. Note that this is not the original eigen-vector. + int nEigen = getNumberOfEigenVariations(); + TH1* up = nullptr; + TH1* down = nullptr; + for (int i = 0; i < nEigen; i++){ + if (!getEigenvectorVariation(i, up, down)){ + std::cerr<<"EigenVectorRecomposition: Error on retrieving eigenvector "<<i<<std::endl; + return false; + } + //Need uncertainty value so subtract central calibration here. + up->Add(nom, -1); + eigenSF_hvec.push_back(up); + } + TMatrixD matEigen(nEigen, nbins); + + // Fill the Eigen Matrix + for(int i = 0; i < nEigen; i++){ + col = 0; + // Read 300 bins without underflow&overflow + for(int binz = 1; binz <= nz; binz++) + for(int biny = 1; biny <= ny; biny++) + for(int binx = 1; binx <= nx; binx++){ + Int_t bin = eigenSF_hvec.at(i)->GetBin(binx, biny, binz); + TMatrixDRow(matEigen,i)[col] = eigenSF_hvec[i]->GetBinContent(bin); + col++; + } + } + + // Sanity check: + TMatrixD matEigenOriginal = matEigen; + TMatrixD matEigenTranspose = matEigen; + matEigenTranspose = matEigenTranspose.T(); + TMatrixD matOriginalTimesTranspose = matEigenOriginal*matEigenTranspose; + TMatrixD matEigenInvert = matEigenTranspose*matOriginalTimesTranspose.Invert(); + //(matEigenOriginal*matEigenInvert).DrawClone("colz"); // This should give us an identity matrix + + TMatrixD matCoeff = matSF*matEigenInvert; + int nRows = matCoeff.GetNrows(); + int nCols = matCoeff.GetNcols(); + std::map<std::string, float> temp_map; + for (int col = 0; col < nCols; col++){ + temp_map.clear(); + for(int row = 0; row < nRows; row++){ + temp_map[uncList[row]] = TMatrixDRow(matCoeff, row)[col]; + } + coefficientMap["Eigen_"+label+"_"+std::to_string(col)] = temp_map; + } + + return true; +} diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataInterfaceBase.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataInterfaceBase.cxx index 70341de9510ceaebb9aaf58ddca238464c7f46e2..2acf618b10da806872f961376835a5d2775a8357 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataInterfaceBase.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataInterfaceBase.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataInterfaceROOT.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataInterfaceROOT.cxx index e541ff01dcebd2c2ca7dce1be60486adda47f529..8a1b5fd518fd11b7a039ecfa059554218b0bc67c 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataInterfaceROOT.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataInterfaceROOT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ ////////////////////////////////////////////////////////////////////////////////////////////// @@ -394,7 +394,6 @@ Analysis::CalibrationDataInterfaceROOT::CalibrationDataInterfaceROOT(const strin for (auto const& flavour : flavours) { m_excludeFromCovMatrix[flavour] = to_exclude; } - for (auto const& flavour : flavours) { test = "excludeFrom"; test += flavour; test += "CovMatrix"; to_exclude = split(env.GetValue(test.c_str(), "")); @@ -2158,6 +2157,72 @@ Analysis::CalibrationDataInterfaceROOT::getShiftedScaleFactors (const std::strin shifted->Add(hunc, sigmas); return shifted; } +//====================== run EigenVectorRecomposition method =========================== +Analysis::CalibrationStatus +Analysis::CalibrationDataInterfaceROOT::runEigenVectorRecomposition (const std::string& author, + const std::string& label, + const std::string& OP, + unsigned int mapIndex){ + // run eigen vector recomposition method. If success, stored the retrieved coefficient map + // in m_coefficientMap and return success. Otherwise return error and keep m_coefficientMap + // untouched. + // author: jet collection name + // label: jet flavour label + // OP: tagger working point + // mapIndex: index to the MC efficiency map to be used. Should be 0? + // Todo: What is mapindex? + // Todo: Check the way xAODBTaggingTool initialize CDI. Check if that is the as how we are initialize CDI. + if(!m_runEigenVectorMethod) { + cerr << "runEigenVectorRecomposition: Recomposition need to be ran with CalibrationDataInterfaceRoot initialized in eigenvector mode" << endl; + return Analysis::kError; + } + + unsigned int indexSF; + if (! retrieveCalibrationIndex (label, OP, author, true, indexSF, mapIndex)) { + cerr << "runEigenVectorRecomposition: unable to find SF calibration for object " + << fullName(author, OP, label, true) << endl; + return Analysis::kError; + } + + return runEigenVectorRecomposition (label, indexSF); +} + +Analysis::CalibrationStatus +Analysis::CalibrationDataInterfaceROOT::runEigenVectorRecomposition (const std::string& label, + unsigned int indexSF){ + // run eigen vector recomposition method. If success, stored the retrieved coefficient map + // in m_coefficientMap and return success. Otherwise return error and keep m_coefficientMap + // untouched. + // label: jet flavour label + // indexSF: index to scale factor calibration object + CalibrationDataContainer* container = m_objects[indexSF]; + if (! container) { + cerr << "runEigenVectorRecomposition: error retrieving container!" << endl; + return Analysis::kError; + } + + // Retrieve eigenvariation + const CalibrationDataEigenVariations* eigenVariation=m_eigenVariationsMap[container]; + if (! eigenVariation) { + cerr << "runEigenVectorRecomposition: Could not retrieve eigenvector variation, while it should have been there." << endl; + return Analysis::kError; + } + // Doing eigenvector recomposition + std::map<std::string, std::map<std::string, float>> coefficientMap; + if(!eigenVariation->EigenVectorRecomposition(label, coefficientMap)) + return Analysis::kError; + + m_coefficientMap = coefficientMap; + return Analysis::kSuccess; +} + +std::map<std::string, std::map<std::string, float>> +Analysis::CalibrationDataInterfaceROOT::getEigenVectorRecompositionCoefficientMap(){ + if(m_coefficientMap.empty()) + cerr << "getCoefficientMap: Call runEigenVectorRecomposition() before retrieving coefficient map! " <<endl; + return m_coefficientMap; +} + //====================== put some utility functions here =================================== diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataUtilities.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataUtilities.cxx index a0be063407b3094e0a6f67ca609c892bfdcbdc6d..d35793012794ff77cc3e0744f6f8929524a492df 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataUtilities.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/CalibrationDataUtilities.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ ////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/LinkDef.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/LinkDef.h index 5324dd345f25dde217198782598b570456ff1010..7fb4c793f1f21f50034144e1d742eaaed7939b58 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/LinkDef.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/Root/LinkDef.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "CalibrationDataInterface/CalibrationDataVariables.h" diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/src/components/CalibrationDataInterface_entries.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/src/components/CalibrationDataInterface_entries.cxx index 3958b728c9306cca846707a930439c695a67365d..6d2329172cd0b96fe9c6b7df7dd5ef3c9d6fe5e4 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/src/components/CalibrationDataInterface_entries.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/CalibrationDataInterface/src/components/CalibrationDataInterface_entries.cxx @@ -1,3 +1,5 @@ + + #include "CalibrationDataInterface/CalibrationDataInterfaceTool.h" #include "CalibrationDataInterface/CalibrationDataUpdater.h" #include "CalibrationDataInterface/CalibrationDataInterfaceTester.h" diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/CMakeLists.txt b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/CMakeLists.txt index 59ad17fb61f2600c0180b0fe90630cba18d3f9da..2d6618ffc57ea37daf080361679fe7a122eaa970 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/CMakeLists.txt +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/CMakeLists.txt @@ -3,6 +3,7 @@ # Declare the package name: atlas_subdir( xAODBTaggingEfficiency ) + # External dependencies: find_package( ROOT COMPONENTS Core Hist RIO ) @@ -11,15 +12,16 @@ atlas_add_library( xAODBTaggingEfficiencyLib xAODBTaggingEfficiency/*.h Root/*.cxx PUBLIC_HEADERS xAODBTaggingEfficiency INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODBTagging + LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools AsgMessagingLib xAODBTagging PATCoreAcceptLib PATInterfaces CalibrationDataInterfaceLib FTagAnalysisInterfacesLib - PRIVATE_LINK_LIBRARIES PathResolver ) + PRIVATE_LINK_LIBRARIES PathResolver AsgMessagingLib ) + if( NOT XAOD_STANDALONE ) atlas_add_component( xAODBTaggingEfficiency src/*.h src/*.cxx src/components/*.cxx - LINK_LIBRARIES xAODJet CalibrationDataInterfaceLib AthenaBaseComps + LINK_LIBRARIES AsgMessagingLib xAODJet CalibrationDataInterfaceLib AthenaBaseComps GaudiKernel FTagAnalysisInterfacesLib xAODBTaggingEfficiencyLib ) endif() @@ -28,15 +30,23 @@ atlas_add_dictionary( xAODBTaggingEfficiencyDict xAODBTaggingEfficiency/selection.xml LINK_LIBRARIES xAODBTaggingEfficiencyLib ) -# Executable(s) in the package: -if( XAOD_STANDALONE ) +# Executable(s) in the package (to be built only under AthAnalysis or in stand-alone mode): +if( XAOD_ANALYSIS OR XAOD_STANDALONE ) atlas_add_executable( BTaggingEfficiencyToolTester util/BTaggingEfficiencyToolTester.cxx LINK_LIBRARIES xAODBTaggingEfficiencyLib ) - atlas_add_executable( BTaggingSelectionToolTester + atlas_add_executable( BTaggingEigenVectorRecompositionToolTester + util/BTaggingEigenVectorRecompositionToolTester.cxx + LINK_LIBRARIES xAODBTaggingEfficiencyLib ) + + atlas_add_executable( BTaggingSelectionToolTester util/BTaggingSelectionToolTester.cxx LINK_LIBRARIES AsgMessagingLib xAODJet xAODBTagging xAODBTaggingEfficiencyLib ) + + atlas_add_executable( BTaggingTruthTaggingTester + util/BTaggingTruthTaggingTester.cxx + LINK_LIBRARIES AsgMessagingLib xAODJet xAODBTagging xAODBTaggingEfficiencyLib FTagAnalysisInterfacesLib ) endif() # Install files from the package: diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingEfficiencyTool.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingEfficiencyTool.cxx index 7082d2dd9803c302c004c12d2f65fe2188034bf2..6191e9cac88b7e09cf6ee98797141b96e9f32455 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingEfficiencyTool.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingEfficiencyTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "xAODBTaggingEfficiency/BTaggingEfficiencyTool.h" @@ -490,7 +490,7 @@ StatusCode BTaggingEfficiencyTool::initialize() { ATH_CHECK( m_selectionTool.setProperty("JetAuthor", m_jetAuthor) ); ATH_CHECK( m_selectionTool.setProperty("MinPt", m_minPt) ); ATH_CHECK( m_selectionTool.retrieve() ); - } + } // if the user decides to ignore these errors, at least make her/him aware of this if (m_ignoreOutOfValidityRange) { @@ -942,6 +942,33 @@ BTaggingEfficiencyTool::listScaleFactorSystematics(bool named) const { return uncertainties; } +CorrectionCode +BTaggingEfficiencyTool::getEigenRecompositionCoefficientMap(const std::string &label, std::map<std::string, std::map<std::string, float>> & coefficientMap){ + // Calling EigenVectorRecomposition method in CDI and retrieve recomposition map. + // If success, coefficientMap would be filled and return ok. + // If failed, return error. + // label : flavour label + // coefficientMap: store returned coefficient map. + if (! m_initialised) { + ATH_MSG_ERROR("BTaggingEfficiencyTool has not been initialised"); + return CorrectionCode::Error; + } + if(label.compare("B") != 0 && + label.compare("C") != 0 && + label.compare("T") != 0 && + label.compare("Light") != 0){ + ATH_MSG_ERROR("Flavour label is illegal! Label need to be B,C,T or Light."); + return CorrectionCode::Error; + } + CalibrationStatus status = m_CDI->runEigenVectorRecomposition(m_jetAuthor, label, m_OP); + if (status != Analysis::kSuccess){ + ATH_MSG_ERROR("Failure running EigenVectorRecomposition Method."); + return CorrectionCode::Error; + } + coefficientMap = m_CDI->getEigenVectorRecompositionCoefficientMap(); + return CorrectionCode::Ok; +} + // WARNING the behaviour of future calls to getEfficiency and friends are modified by this // method - it indicates which systematic shifts are to be applied for all future calls SystematicCode BTaggingEfficiencyTool::applySystematicVariation( const SystematicSet & systConfig) { diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingEigenVectorRecompositionTool.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingEigenVectorRecompositionTool.cxx new file mode 100644 index 0000000000000000000000000000000000000000..6a80f5835f5f6556443d02d934c860f058a66ce4 --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingEigenVectorRecompositionTool.cxx @@ -0,0 +1,233 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + + +#include "xAODBTaggingEfficiency/BTaggingEigenVectorRecompositionTool.h" + + +BTaggingEigenVectorRecompositionTool::BTaggingEigenVectorRecompositionTool( const std::string & name) : + asg::AsgTool( name ) +{ + declareProperty("BTaggingEfficiencyTool", m_btageffTool); +} + +BTaggingEigenVectorRecompositionTool::~BTaggingEigenVectorRecompositionTool() +{ + +} + +// Initialize BtaggingEfficiencyTool handle and retrieve coefficient map for +// all flavours. Also initialize vectors which contains all original sources +// uncertainties' names. One vector for each flavour. +StatusCode BTaggingEigenVectorRecompositionTool::initialize() +{ + ATH_MSG_INFO("Hello BTaggingEigenVectorRecompositionTool user... initializing"); + ATH_CHECK(m_btageffTool.retrieve()); + + if (m_btageffTool.empty()) { + ATH_MSG_ERROR("Failed to retrieve BTaggingEfficiencyTool handle"); + return StatusCode::FAILURE; + } + CP::CorrectionCode code1 = m_btageffTool->getEigenRecompositionCoefficientMap("B", m_coefficientMapB); + CP::CorrectionCode code2 = m_btageffTool->getEigenRecompositionCoefficientMap("C", m_coefficientMapC); + CP::CorrectionCode code3 = m_btageffTool->getEigenRecompositionCoefficientMap("T", m_coefficientMapT); + CP::CorrectionCode code4 = m_btageffTool->getEigenRecompositionCoefficientMap("Light", m_coefficientMapLight); + + if(code1 != CP::CorrectionCode::Ok) { + ATH_MSG_ERROR("Failed to retrieve coefficient map of B"); + return StatusCode::FAILURE; + } + if(code2 != CP::CorrectionCode::Ok) { + ATH_MSG_ERROR("Failed to retrieve coefficient map of C"); + return StatusCode::FAILURE; + } + if(code3 != CP::CorrectionCode::Ok) { + ATH_MSG_ERROR("Failed to retrieve coefficient map of T"); + return StatusCode::FAILURE; + } + if(code4 != CP::CorrectionCode::Ok) { + ATH_MSG_ERROR("Failed to retrieve coefficient map of Light"); + return StatusCode::FAILURE; + } + + std::map<std::string, std::map<std::string, float>>::iterator outter; + + outter = m_coefficientMapB.begin(); + for (std::map<std::string, float>::iterator inner=outter->second.begin(); + inner!=outter->second.end(); ++inner){ + m_NPnameListB.push_back(inner->first); + } + outter = m_coefficientMapC.begin(); + for (std::map<std::string, float>::iterator inner=outter->second.begin(); + inner!=outter->second.end(); ++inner){ + m_NPnameListC.push_back(inner->first); + } + outter = m_coefficientMapT.begin(); + for (std::map<std::string, float>::iterator inner=outter->second.begin(); + inner!=outter->second.end(); ++inner){ + m_NPnameListT.push_back(inner->first); + } + outter = m_coefficientMapLight.begin(); + for (std::map<std::string, float>::iterator inner=outter->second.begin(); + inner!=outter->second.end(); ++inner){ + m_NPnameListLight.push_back(inner->first); + } + + return StatusCode::SUCCESS; + +} + +// Return a vector which contains a list of original vector uncertainties names. +// vector list is for the chosen flavour label. The order of the names is the same +// as the coefficient values given by getCoefficients() +std::vector<std::string> BTaggingEigenVectorRecompositionTool::getListOfOriginalNuisanceParameters(const std::string & label) const +{ + ATH_MSG_INFO("getListOfOriginalNuisanceParameters()"); + + std::vector<std::string> dummy; + if(label.compare("B") == 0) + return m_NPnameListB; + else if(label.compare("C") == 0) + return m_NPnameListC; + else if(label.compare("T") == 0) + return m_NPnameListT; + else if(label.compare("Light") == 0) + return m_NPnameListLight; + else{ + ATH_MSG_ERROR("Label is illegal! Available label: B, C, T and Light."); + return dummy; + } + + return dummy; +} + +// Produce a coefficient map contains only eigenvectors that is showing in +// eigenIdxList and return it to user. If given empty evIdxList, the function +// returns a full map. Produced map is for the chosen flavour label. +std::map<std::string, std::map<std::string, float>> BTaggingEigenVectorRecompositionTool::getCoefficientMap(const std::string & label, const std::vector<unsigned int> evIdxList) const +{ + ATH_MSG_INFO("getCoefficientMap()"); + + std::map<std::string, std::map<std::string, float>> fullMap; + if(label.compare("B") == 0) + fullMap = m_coefficientMapB; + else if(label.compare("C") == 0) + fullMap = m_coefficientMapC; + else if(label.compare("T") == 0) + fullMap = m_coefficientMapT; + else if(label.compare("Light") == 0) + fullMap = m_coefficientMapLight; + else{ + ATH_MSG_ERROR("Label is illegal! Available label: B, C, T and Light."); + return fullMap; + } + + std::vector<std::string> evNameList; + for(unsigned int i : evIdxList){ + // Note: This eigenvector name convention has to be same with that in CalibrationDataEigenVariations. One way to avoid the naming convention is to change coefficient map structure into: map<unsigned int, map<string, float>> + evNameList.push_back("Eigen_"+label+"_"+std::to_string(i)); + } + + std::map<std::string, std::map<std::string, float>> resultMap; + for (std::map<std::string, std::map<std::string, float>>::iterator iter = fullMap.begin(); + iter != fullMap.end(); ++iter){ + if (evNameList.end() != std::find(evNameList.begin(), evNameList.end(), iter->first) || + evNameList.empty()) + resultMap[iter->first] = iter->second; + } + return resultMap; +} + +// Returns a vector contains the coefficients value of the chosen label +// and the chosen eigenvector. The order of the value is the same as +// the order of original uncertainty names given by +// getListOfOriginalNuisanceParameters() +std::vector<float> BTaggingEigenVectorRecompositionTool::getCoefficients(const std::string & label, const unsigned int evIdx) const +{ + ATH_MSG_INFO("getCoefficients()"); + std::vector<float> coefficients; // dummy to be replaced + std::map<std::string, std::map<std::string, float>> fullMap; + std::vector<std::string> NPnameList; + if(label.compare("B") == 0){ + fullMap = m_coefficientMapB; + NPnameList = m_NPnameListB; + } + else if(label.compare("C") == 0){ + fullMap = m_coefficientMapC; + NPnameList = m_NPnameListC; + } + else if(label.compare("T") == 0){ + fullMap = m_coefficientMapT; + NPnameList = m_NPnameListT; + } + else if(label.compare("Light") == 0){ + fullMap = m_coefficientMapLight; + NPnameList = m_NPnameListLight; + } + else{ + ATH_MSG_ERROR("Label is illegal! Available label: B, C, T and Light."); + return coefficients; + } + + std::string evName = "Eigen_"+label+"_"+std::to_string(evIdx); + if(fullMap.count(evName) <= 0){ + ATH_MSG_ERROR("Cannot find " << evName <<" in Eigen Vector coefficient map."); + return coefficients; + } + + std::map<std::string, float> oneEVmap = fullMap[evName]; + for(std::string NPname : NPnameList){ + coefficients.push_back(oneEVmap[NPname]); + } + return coefficients; +} + +// Return number of eigenvectors used for the chosen label. +int BTaggingEigenVectorRecompositionTool::getNumEigenVectors(const std::string & label)const{ + std::map<std::string, std::map<std::string, float>> fullMap; + if(label.compare("B") == 0) + fullMap = m_coefficientMapB; + else if(label.compare("C") == 0) + fullMap = m_coefficientMapC; + else if(label.compare("T") == 0) + fullMap = m_coefficientMapT; + else if(label.compare("Light") == 0) + fullMap = m_coefficientMapLight; + else{ + ATH_MSG_ERROR("Label is illegal! Available label: B, C, T and Light."); + return -1; + } + return fullMap.size(); +} + +// this returns a list of eigen vector systematics supported by the btaggingEfficiency tool handle +CP::SystematicSet BTaggingEigenVectorRecompositionTool::affectingSystematics() const { + return m_btageffTool->affectingSystematics(); +} + +// it indicates which systematic shifts are to be applied for all future calls +// no systematics for now, proxy for later +CP::SystematicCode BTaggingEigenVectorRecompositionTool::applySystematicVariation( const CP::SystematicSet & systConfig ) +{ + for (auto syst : systConfig) { + CP::SystematicSet myset; + ATH_MSG_WARNING("applySystematicVariation was called for " << syst.name() << " but BTaggingEigenVectorRecompositionTool does not apply Systematic Variations"); + //the truth tagging tool provides results for all possible systematic variations in its results objects, the user does not need to call each one seperatly. + } + return CP::SystematicCode::Ok; +} + +// returns true if the argument systematic is supported by the +// btaggingEfficiency tool handle +bool BTaggingEigenVectorRecompositionTool::isAffectedBySystematic( const CP::SystematicVariation & systematic ) const +{ + CP::SystematicSet sys = affectingSystematics(); + return sys.find(systematic) != sys.end(); +} + +// subset of Eigenvector systeamtics that are recommended by the +// btaggingEfficiency tool handle +CP::SystematicSet BTaggingEigenVectorRecompositionTool::recommendedSystematics() const { + return affectingSystematics(); +} diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingSelectionTool.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingSelectionTool.cxx index 6d4310cbb62a0696a2812c75e663f9df4f7855d2..d6fecd87342ec32d0d51455ab1b27efb3e77aafc 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingSelectionTool.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingSelectionTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "xAODBTaggingEfficiency/BTaggingSelectionTool.h" @@ -195,6 +195,7 @@ void BTaggingSelectionTool::ExtractTaggerProperties(taggerproperties &tagger, st } } + CorrectionCode BTaggingSelectionTool::getTaggerWeight( const xAOD::Jet& jet, double & tagweight, bool useVetoWP) const{ taggerproperties localtagger; @@ -238,7 +239,7 @@ CorrectionCode BTaggingSelectionTool::getTaggerWeight( const xAOD::Jet& jet, dou return CorrectionCode::Ok; } - else if(taggerName.find("DL1") != string::npos){ + else if(taggerName.find("DL1") != string::npos){ double dl1_pb(-10.); double dl1_pc(-10.); @@ -296,7 +297,7 @@ CorrectionCode BTaggingSelectionTool::getTaggerWeight( double pb, double pc, dou tagweight = -100.; if( taggerName.find("DL1") != string::npos ){ - bool valid_input = (!std::isnan(pu) && pb>0 && pc>0 && pu>0); + bool valid_input = (!std::isnan(pu) && pb>=0 && pc>=0 && pu>=0); if (!valid_input){ if(m_ErrorOnTagWeightFailure){ @@ -309,9 +310,10 @@ CorrectionCode BTaggingSelectionTool::getTaggerWeight( double pb, double pc, dou } if(OP.find("CTag") != string::npos){ - tagweight = log( pc/(localtagger.fraction*pb+(1.-localtagger.fraction)*pu) ); - }else{ - tagweight = log( pb/(localtagger.fraction*pc+(1.-localtagger.fraction)*pu) ); + tagweight = log(pc / (localtagger.fraction * pb + (1. - localtagger.fraction) * pu)); + } + else{ + tagweight = log(pb / (localtagger.fraction * pc + (1. - localtagger.fraction) * pu) ); } return CorrectionCode::Ok; @@ -326,20 +328,18 @@ CorrectionCode BTaggingSelectionTool::getTaggerWeight( double pb, double pc, dou asg::AcceptData BTaggingSelectionTool::accept( const xAOD::IParticle* p ) const { - // Reset the result: - asg::AcceptData acceptData(&m_acceptinfo); // Check if this is a jet: if( p->type() != xAOD::Type::Jet ) { ATH_MSG_ERROR( "accept(...) Function received a non-jet" ); - return acceptData; + return asg::AcceptData (&m_acceptinfo); } // Cast it to a jet: const xAOD::Jet* jet = dynamic_cast< const xAOD::Jet* >( p ); if( ! jet ) { ATH_MSG_FATAL( "accept(...) Failed to cast particle to jet" ); - return acceptData; + return asg::AcceptData (&m_acceptinfo); } // Let the specific function do the work: @@ -347,7 +347,7 @@ asg::AcceptData BTaggingSelectionTool::accept( const xAOD::IParticle* p ) const } asg::AcceptData BTaggingSelectionTool::accept( const xAOD::Jet& jet ) const { - asg::AcceptData acceptData(&m_acceptinfo); + asg::AcceptData acceptData (&m_acceptinfo); if (! m_initialised) { ATH_MSG_ERROR("BTaggingSelectionTool has not been initialised"); @@ -375,7 +375,6 @@ asg::AcceptData BTaggingSelectionTool::accept( const xAOD::Jet& jet ) const { double weight_mv2cl100(-10.); const xAOD::BTagging* btag = xAOD::BTaggingUtilities::getBTagging( jet ); - if ((!btag)){ ATH_MSG_ERROR("Failed to retrieve the BTagging information"); } @@ -421,7 +420,8 @@ asg::AcceptData BTaggingSelectionTool::accept( const xAOD::Jet& jet ) const { asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double tag_weight) const { - asg::AcceptData acceptData(&m_acceptinfo); + + asg::AcceptData acceptData (&m_acceptinfo); if (! m_initialised) { ATH_MSG_ERROR("BTaggingSelectionTool has not been initialised"); @@ -430,7 +430,7 @@ asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double tag_ eta = std::fabs(eta); - if (! checkRange(pT, eta, acceptData)) + if (! checkRange(pT, eta,acceptData)) return acceptData; // After initialization, either m_tagger.spline or m_tagger.constcut should be non-zero @@ -443,8 +443,8 @@ asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double tag_ if ( tag_weight < cutvalue ){ return acceptData; } + acceptData.setCutResult( "WorkingPoint", true ); - // Return the result: return acceptData; } @@ -453,7 +453,7 @@ asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double tag_ asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double weight_mv2cl100, double weight_mv2c100) const { - asg::AcceptData acceptData(&m_acceptinfo); + asg::AcceptData acceptData (&m_acceptinfo); if (! m_initialised) { ATH_MSG_ERROR("BTaggingSelectionTool has not been initialised"); @@ -462,7 +462,7 @@ asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double weig eta = std::fabs(eta); - if (! checkRange(pT, eta, acceptData)) + if (! checkRange(pT, eta,acceptData)) return acceptData; // After initialization, either m_tagger.spline or m_tagger.constcut should be non-zero @@ -511,7 +511,7 @@ asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double weig asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double pb, double pc, double pu) const { - asg::AcceptData acceptData(&m_acceptinfo); + asg::AcceptData acceptData (&m_acceptinfo); if (! m_initialised) { ATH_MSG_ERROR("BTaggingSelectionTool has not been initialised"); @@ -520,7 +520,7 @@ asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double pb, eta = std::fabs(eta); - if (! checkRange(pT, eta, acceptData)) + if (! checkRange(pT, eta,acceptData)) return acceptData; // After initialization, either m_tagger.spline or m_tagger.constcut should be non-zero @@ -550,6 +550,8 @@ asg::AcceptData BTaggingSelectionTool::accept(double pT, double eta, double pb, int BTaggingSelectionTool::getQuantile( const xAOD::IParticle* p ) const { // Check if this is a jet: + + if( p->type() != xAOD::Type::Jet ) { ATH_MSG_ERROR( "accept(...) Function received a non-jet" ); return -1; @@ -581,7 +583,7 @@ int BTaggingSelectionTool::getQuantile( const xAOD::Jet& jet ) const{ } -int BTaggingSelectionTool::getQuantile(double pT, double eta, double weight_mv2) const +int BTaggingSelectionTool::getQuantile(double pT, double eta, double weight_mv2 ) const { if (! m_initialised) { ATH_MSG_ERROR("BTaggingSelectionTool has not been initialised"); @@ -593,29 +595,28 @@ int BTaggingSelectionTool::getQuantile(double pT, double eta, double weight_mv2) // returns 3 if between 77% and 70% // returns 2 if between 85% and 77% // returns 1 if between 100% and 85% - // returns 0 if smaller than -1e4-> should never happen - // return -1 if bigger than 1e4 or not in b-tagging acceptance + // return -1 not in b-tagging acceptance ////////////////////// int bin_index(-1); - - asg::AcceptData acceptData(&m_acceptinfo); - if (! checkRange(pT, eta, acceptData)) return bin_index; + asg::AcceptData acceptData (&m_acceptinfo); + if (! checkRange(pT, eta,acceptData)) return bin_index; // If in b-tagging acceptance, cont.tagging - for (int i=0; i<=5; ++i) { + for (int i=1; i<=5; ++i) { if (weight_mv2 < m_continuouscuts[i]) { bin_index = i; break; } + else if (weight_mv2 >= m_continuouscuts[5]){ + bin_index = 5; + break; + } } - - if (0==bin_index) ATH_MSG_ERROR("B-tagging weight is smaller than 1e-4, this shouldn't happen!"); - return bin_index; } -bool BTaggingSelectionTool::checkRange(double pT, double eta, asg::AcceptData& acceptData) const +bool BTaggingSelectionTool::checkRange(double pT, double eta,asg::AcceptData& acceptData) const { // Do the |eta| cut: if( eta > m_maxEta ) { diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingTruthTaggingTool.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingTruthTaggingTool.cxx new file mode 100644 index 0000000000000000000000000000000000000000..584461fa8c6955215701b52c4d8dc344e1fcd0fd --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingTruthTaggingTool.cxx @@ -0,0 +1,1310 @@ +#include "xAODBTaggingEfficiency/BTaggingTruthTaggingTool.h" +#include "xAODBTaggingEfficiency/BTaggingEfficiencyTool.h" +#include "xAODBTagging/BTagging.h" +#include "xAODBTagging/BTaggingUtilities.h" +#include "CalibrationDataInterface/CalibrationDataInterfaceROOT.h" +#include "CalibrationDataInterface/CalibrationDataContainer.h" +#include "PATInterfaces/SystematicRegistry.h" +#include "PathResolver/PathResolver.h" +#include "PATCore/AcceptData.h" + +#include "TFile.h" + +#include <algorithm> +#include <numeric> + +using std::string; + +using CP::CorrectionCode; +using CP::SystematicSet; +using CP::SystematicVariation; +using CP::SystematicCode; +using CP::SystematicRegistry; + +using Analysis::Uncertainty; +using Analysis::CalibrationDataVariables; +using Analysis::CalibrationDataContainer; +using Analysis::CalibResult; +using Analysis::CalibrationStatus; +using Analysis::Total; +using Analysis::SFEigen; +using Analysis::SFNamed; +using Analysis::None; + +using xAOD::IParticle; + + +BTaggingTruthTaggingTool::BTaggingTruthTaggingTool( const std::string & name) + : asg::AsgTool( name ), + m_effTool ("BTaggingEfficiencyTool/effTool", this), + m_selTool ("BTaggingSelectionTool/selTool", this) + { + + m_initialised = false; + + + // properties of BTaggingTruthTaggingTool + declareProperty( "IgnoreScaleFactors", m_ignoreSF=true, "ignore scale factors in computation of TRF weight"); + declareProperty( "UsePermutations", m_usePerm=true, "if the chosen permutation is used, a reweighting is applied to the TRF weight for systematics"); + declareProperty( "UseQuantile", m_useQuntile=true, "if the chosen quantile is used, a reweighting is applied to the TRF weight for systematics"); + declareProperty( "UseSystematics", m_useSys=false, "will the results contain all systematic variations, or just the nominal"); + declareProperty( "MaxNtagged", m_nbtag=2, "what is the maximal possible number of tagged jets"); + + // properties of BtaggingSelectionTool + declareProperty( "MaxEta", m_maxEta = 2.5 ); + declareProperty( "MinPt", m_minPt = 20000 /*MeV*/); + declareProperty( "MaxRangePt", m_maxRangePt = 1000000 /*MeV*/); + + // properties of BTaggingEfficiencyTool + declareProperty("TaggerName", m_taggerName="MV2c10", "tagging algorithm name as specified in CDI file"); + declareProperty("OperatingPoint", m_OP="FixedCutBEff_77", "operating point as specified in CDI file"); + declareProperty("JetAuthor", m_jetAuthor="AntiKt4EMTopoJets", "jet collection & JVF/JVT specification in CDI file"); + declareProperty("ScaleFactorFileName", m_SFFile = "xAODBTaggingEfficiency/13TeV/2016-20_7-13TeV-MC15-CDI-July12_v1.root", "name of the official scale factor calibration CDI file (uses PathResolver)"); + declareProperty("UseDevelopmentFile", m_useDevFile = false, "specify whether or not to use the (PathResolver) area for temporary scale factor calibration CDI files"); + declareProperty("EfficiencyFileName", m_EffFile = "", "name of optional user-provided MC efficiency CDI file"); + declareProperty("ScaleFactorBCalibration", m_SFBName = "default", "name of b-jet scale factor calibration object"); + declareProperty("ScaleFactorCCalibration", m_SFCName = "default", "name of c-jet scale factor calibration object"); + declareProperty("ScaleFactorTCalibration", m_SFTName = "default", "name of tau-jet scale factor calibration object"); + declareProperty("ScaleFactorLightCalibration", m_SFLightName = "default", "name of light-flavour jet scale factor calibration object"); + declareProperty("EigenvectorReductionB", m_EVReductionB = "Loose", "b-jet scale factor Eigenvector reduction strategy; choose between 'Loose', 'Medium', 'Tight'"); + declareProperty("EigenvectorReductionC", m_EVReductionC = "Loose", "c-jet scale factor Eigenvector reduction strategy; choose between 'Loose', 'Medium', 'Tight'"); + declareProperty("EigenvectorReductionLight", m_EVReductionLight = "Loose","light-flavour jet scale factor Eigenvector reduction strategy; choose between 'Loose', 'Medium', 'Tight'"); + declareProperty("EfficiencyBCalibrations", m_EffBName = "default", "(semicolon-separated) name(s) of b-jet efficiency object(s)"); + declareProperty("EfficiencyCCalibrations", m_EffCName = "default", "(semicolon-separated) name(s) of c-jet efficiency object(s)"); + declareProperty("EfficiencyTCalibrations", m_EffTName = "default", "(semicolon-separated) name(s) of tau-jet efficiency object(s)"); + declareProperty("EfficiencyLightCalibrations", m_EffLightName = "default", "(semicolon-separated) name(s) of light-flavour-jet efficiency object(s)"); + declareProperty("ExcludeFromEigenVectorTreatment", m_excludeFromEV = "", "(semicolon-separated) names of uncertainties to be excluded from eigenvector decomposition (if used)"); + declareProperty("SystematicsStrategy", m_systStrategy = "SFEigen", "name of systematics model; presently choose between 'SFEigen' and 'Envelope'"); + declareProperty("ConeFlavourLabel", m_coneFlavourLabel = true, "specify whether or not to use the cone-based flavour labelling instead of the default ghost association based labelling"); + declareProperty("OldConeFlavourLabel", m_oldConeFlavourLabel = false, "when using cone-based flavour labelling, specify whether or not to use the (deprecated) Run-1 legacy labelling"); + declareProperty("CutBenchmark", m_cutBenchmark = "FixedCutBEff_70", "if you want to run in continuous you need to fix a benchmark - it does something only if running in Continuous OP"); + declareProperty("ExcludeSpecificEigens", m_excludeEV = "" , "(semicolon-separated) names of Eigens you want to exclude. in case of continuous some eigenvectors can be ignored to make the computation faster"); + declareProperty("StoreOnlyUpVariations", m_doOnlyUpVariations = false , "If set to true it processes only the __1up b-tagging variations. It speeds up the computation in case of symmetric variations."); + declareProperty("doDirectTagging", m_doDirectTag = false , "If set to true it also computes and stores the direct tagging choice and the related SFs for each jet"); +} + +StatusCode BTaggingTruthTaggingTool::setEffMapIndex(const std::string& flavour, unsigned int index){ + ANA_CHECK_SET_TYPE (StatusCode); + + ANA_CHECK(m_effTool->setMapIndex(flavour, index)); + if(m_useQuntile && !m_continuous){ + for(unsigned int iop=0; iop<m_availableOP.size(); iop++){ + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)]->setMapIndex(flavour, index)); + } + } + return StatusCode::SUCCESS; +} + +void BTaggingTruthTaggingTool::setUseSystematics(bool useSystematics){ + ATH_MSG_DEBUG("setting the use of systematics to: " <<useSystematics); + m_useSys = useSystematics; + ATH_MSG_DEBUG(" m_useSys = " << m_useSys); +} + +SystematicSet BTaggingTruthTaggingTool::affectingSystematics() const { + return m_effTool->affectingSystematics(); +} + +SystematicCode BTaggingTruthTaggingTool::applySystematicVariation( const CP::SystematicSet & systConfig ) +{ + for (auto syst : systConfig) { + CP::SystematicSet myset; + ATH_MSG_WARNING("applySystematicVariation was called for " << syst.name() << " but BTaggingTruthTaggingTool does not apply Systematic Variations"); + //the truth tagging tool provides results for all possible systematic variations in its results objects, the user does not need to call each one seperatly. + } + return SystematicCode::Ok; +} + +bool BTaggingTruthTaggingTool::isAffectedBySystematic( const CP::SystematicVariation & systematic ) const +{ + SystematicSet sys = affectingSystematics(); + return sys.find( systematic) != sys.end(); +} + +SystematicSet BTaggingTruthTaggingTool::recommendedSystematics() const { + return affectingSystematics(); +} + +StatusCode BTaggingTruthTaggingTool::initialize() { + + ANA_CHECK_SET_TYPE (StatusCode); + + m_initialised = true; + + ANA_CHECK(m_selTool.setProperty("MaxEta", m_maxEta)); + ANA_CHECK(m_selTool.setProperty("MaxRangePt", m_maxRangePt)); + ANA_CHECK(m_selTool.setProperty("MinPt", m_minPt)); + ANA_CHECK(m_selTool.setProperty("TaggerName", m_taggerName)); + ANA_CHECK(m_selTool.setProperty("OperatingPoint", m_OP)); + ANA_CHECK(m_selTool.setProperty("JetAuthor", m_jetAuthor)); + ANA_CHECK(m_selTool.setProperty("FlvTagCutDefinitionsFileName", m_SFFile)); + ANA_CHECK(m_selTool.initialize()); + + ANA_CHECK(m_effTool.setProperty("MinPt", m_minPt)); + ANA_CHECK(m_effTool.setProperty("TaggerName", m_taggerName)); + ANA_CHECK(m_effTool.setProperty("OperatingPoint", m_OP)); + ANA_CHECK(m_effTool.setProperty("JetAuthor", m_jetAuthor)); + ANA_CHECK(m_effTool.setProperty("ScaleFactorFileName", m_SFFile )); + ANA_CHECK(m_effTool.setProperty("UseDevelopmentFile", m_useDevFile )); + ANA_CHECK(m_effTool.setProperty("EfficiencyFileName", m_EffFile )); + ANA_CHECK(m_effTool.setProperty("ScaleFactorBCalibration", m_SFBName )); + ANA_CHECK(m_effTool.setProperty("ScaleFactorCCalibration", m_SFCName )); + ANA_CHECK(m_effTool.setProperty("ScaleFactorTCalibration", m_SFTName )); + ANA_CHECK(m_effTool.setProperty("ScaleFactorLightCalibration", m_SFLightName )); + ANA_CHECK(m_effTool.setProperty("EigenvectorReductionB", m_EVReductionB )); + ANA_CHECK(m_effTool.setProperty("EigenvectorReductionC", m_EVReductionC )); + ANA_CHECK(m_effTool.setProperty("EigenvectorReductionLight", m_EVReductionLight )); + ANA_CHECK(m_effTool.setProperty("EfficiencyBCalibrations", m_EffBName )); + ANA_CHECK(m_effTool.setProperty("EfficiencyCCalibrations", m_EffCName )); + ANA_CHECK(m_effTool.setProperty("EfficiencyTCalibrations", m_EffTName )); + ANA_CHECK(m_effTool.setProperty("EfficiencyLightCalibrations", m_EffLightName )); + ANA_CHECK(m_effTool.setProperty("ExcludeFromEigenVectorTreatment", m_excludeFromEV )); + ANA_CHECK(m_effTool.setProperty("SystematicsStrategy", m_systStrategy )); + ANA_CHECK(m_effTool.setProperty("ConeFlavourLabel", m_coneFlavourLabel )); + ANA_CHECK(m_effTool.setProperty("OldConeFlavourLabel", m_oldConeFlavourLabel )); + + ANA_CHECK(m_effTool.initialize()); + + m_continuous = false; + + if(m_OP.find("FlatBEff") != std::string::npos){ + m_availableOP.resize(m_availableOP_fixEff.size()); + m_availableOP=m_availableOP_fixEff; + } + else if(m_OP.find("FixedCutBEff") != std::string::npos){ + m_availableOP.resize(m_availableOP_fixCut.size()); + m_availableOP=m_availableOP_fixCut; + } + else if(m_OP.find("Continuous") != std::string::npos){ + ATH_MSG_INFO("You are running in Continuous and you choosed " << m_cutBenchmark <<" as benchmark" ); + m_continuous = true; + m_availableOP.resize(m_availableOP_fixCut.size()); + m_availableOP=m_availableOP_fixCut; + } + else if(m_useQuntile){ + ATH_MSG_ERROR(m_OP << " not in the list of available OPs"); + return StatusCode::FAILURE; + } + + if(m_continuous){ + m_OperatingPoint_index = find(m_availableOP.begin(), m_availableOP.end(), m_cutBenchmark) - m_availableOP.begin(); + } + else{ + if(m_useQuntile){ + m_OperatingPoint_index = find(m_availableOP.begin(), m_availableOP.end(), m_OP) - m_availableOP.begin(); + if(m_OperatingPoint_index >= m_availableOP.size()) { + ATH_MSG_ERROR(m_OP << " not in the list of available OPs"); + return StatusCode::FAILURE; + } + } + } + + m_eff_syst.clear(); + m_sys_name.clear(); + CP::SystematicSet def_set; + m_eff_syst.push_back(def_set); + m_sys_name.push_back("Nominal"); + + if(m_useSys){ + std::vector<std::string> excludeEV_vector; + if(m_excludeEV != "") + excludeEV_vector = split(m_excludeEV, ';'); + CP::SystematicSet systs = m_effTool->affectingSystematics(); + for (const auto & syst : systs) { + CP::SystematicSet myset; + string s = syst.name(); + if(m_doOnlyUpVariations && s.find("__1down") !=string::npos) continue; + if(std::any_of(excludeEV_vector.begin(), excludeEV_vector.end(), [&s](const std::string& str) { return str.find(s) != std::string::npos; })) continue; + + myset.insert(syst); + if(m_excludeEV != "") + ATH_MSG_INFO("Adding systematic " << syst.name() << "to the list "); + else + ATH_MSG_DEBUG("Adding systematic " << syst.name() << "to the list "); + m_eff_syst.push_back(myset); + m_sys_name.push_back(syst.name()); + } + } + if(m_useQuntile == true || m_continuous == true){ + ATH_MSG_INFO("m_useQuntile true"); + + //open the CDI file to get the cutvalues for all working points. + TString pathtofile = PathResolverFindCalibFile(m_SFFile); + m_inf = TFile::Open(pathtofile, "read"); + m_binEdges.clear(); + + for(unsigned int iop=0; iop<m_availableOP.size(); iop++){ + + if(!m_continuous){ + std::string toolname = name()+"_eff_"+m_availableOP.at(iop); + + m_effTool_allOP[m_availableOP.at(iop)] = asg::AnaToolHandle<IBTaggingEfficiencyTool>("BTaggingEfficiencyTool/"+toolname,this); + + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("OperatingPoint", m_availableOP.at(iop))); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("TaggerName", m_taggerName)); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("JetAuthor", m_jetAuthor)); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("ScaleFactorFileName", m_SFFile )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("UseDevelopmentFile", m_useDevFile )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("EfficiencyFileName", m_EffFile )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("ScaleFactorBCalibration", m_SFBName )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("ScaleFactorCCalibration", m_SFCName )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("ScaleFactorTCalibration", m_SFTName )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("ScaleFactorLightCalibration", m_SFLightName )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("EigenvectorReductionB", m_EVReductionB )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("EigenvectorReductionC", m_EVReductionC )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("EigenvectorReductionLight", m_EVReductionLight )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("EfficiencyBCalibrations", m_EffBName )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("EfficiencyCCalibrations", m_EffCName )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("EfficiencyTCalibrations", m_EffTName )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("EfficiencyLightCalibrations", m_EffLightName )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("ExcludeFromEigenVectorTreatment", m_excludeFromEV )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("SystematicsStrategy", m_systStrategy )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("ConeFlavourLabel", m_coneFlavourLabel )); + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].setProperty("OldConeFlavourLabel", m_oldConeFlavourLabel )); + + ANA_CHECK(m_effTool_allOP[m_availableOP.at(iop)].initialize()); + + if(m_OP.find("FixedCutBEff")!= std::string::npos){ + TString cutname = m_taggerName+"/"+m_jetAuthor+"/"+m_availableOP.at(iop)+"/cutvalue"; + float cutval = ((TVector*) m_inf->Get(cutname))[0](0); + m_binEdges.push_back(cutval); + } //FCBEff + } //!Continuous + + else{ + if(m_cutBenchmark.find("FixedCutBEff")!= std::string::npos){ + TString cutname = m_taggerName+"/"+m_jetAuthor+"/"+m_availableOP.at(iop)+"/cutvalue"; + float cutval = ((TVector*) m_inf->Get(cutname))[0](0); + m_binEdges.push_back(cutval); + } //FCBEff + } //Continuous + } //loop + } //quantile + + return StatusCode::SUCCESS; +} + + +StatusCode BTaggingTruthTaggingTool::setJets(TRFinfo &trfinf,std::vector<double>& pt, std::vector<double>& eta, std::vector<int>& flav, std::vector<double>& tagw){ + ANA_CHECK_SET_TYPE (StatusCode); + if(pt.size()!=eta.size() || pt.size()!=flav.size() || pt.size()!=tagw.size()){ + ATH_MSG_ERROR( "Vectors of pt, eta, flav and tagw should have same size" ); + return StatusCode::FAILURE; + } + + std::vector<Analysis::CalibrationDataVariables>* vars = new std::vector<Analysis::CalibrationDataVariables>(0); + for(unsigned int i =0; i<pt.size(); i++){ + Analysis::CalibrationDataVariables vars_appo; + if (!fillVariables(pt.at(i), eta.at(i), tagw.at(i), vars_appo)){ + ATH_MSG_ERROR("unable to fill variables"); + return StatusCode::FAILURE; + } + vars->push_back(vars_appo); + } + + ANA_CHECK(setJets(trfinf,flav, vars)); + delete vars; + return StatusCode::SUCCESS; +} + +StatusCode BTaggingTruthTaggingTool::setJets(TRFinfo &trfinf,const xAOD::JetContainer& jets){ + ANA_CHECK_SET_TYPE (StatusCode); + std::vector<int> flav; + std::vector<Analysis::CalibrationDataVariables>* vars = new std::vector<Analysis::CalibrationDataVariables>(0); + for(const auto jet : jets) { + Analysis::CalibrationDataVariables vars_appo; + if (!fillVariables(*jet, vars_appo)){ + ATH_MSG_ERROR("unable to fill variables"); + return StatusCode::FAILURE; + } + + vars->push_back(vars_appo); + flav.push_back(jetFlavourLabel(*jet)); + } + + ANA_CHECK(setJets(trfinf,flav, vars)); + delete vars; + flav.clear(); + return StatusCode::SUCCESS; +} + +StatusCode BTaggingTruthTaggingTool::setJets(TRFinfo &trfinf,std::vector<int>& flav, std::vector<Analysis::CalibrationDataVariables>* vars){ + if(flav.size()!=vars->size()){ + ATH_MSG_ERROR( "Vector of CalibrationDataVariables and flavour should have same size" ); + return StatusCode::FAILURE; + } + trfinf.jets.clear(); + for(unsigned int i =0; i<vars->size(); i++){ + jetVariable jetVar_appo; + jetVar_appo.flav=flav.at(i); + jetVar_appo.vars=vars->at(i); + trfinf.jets.push_back(jetVar_appo); + + } + trfinf.njets=trfinf.jets.size(); + return StatusCode::SUCCESS; +} + + + +bool BTaggingTruthTaggingTool::fillVariables( const xAOD::Jet& jet, CalibrationDataVariables& x){ + x.jetPt = jet.pt(); + x.jetEta = jet.eta(); + x.jetTagWeight = 0.; + x.jetAuthor = m_jetAuthor; + + const xAOD::BTagging* tagInfo = xAOD::BTaggingUtilities::getBTagging( jet ); + if (!tagInfo) return false; + + return tagInfo->MVx_discriminant(m_taggerName, x.jetTagWeight); + delete tagInfo; + +} + +bool BTaggingTruthTaggingTool::fillVariables( const double jetPt, const double jetEta, const double jetTagWeight, CalibrationDataVariables& x){ + x.jetPt = jetPt; + x.jetEta = jetEta; + x.jetTagWeight = jetTagWeight; + x.jetAuthor = m_jetAuthor; + return true; +} + +double BTaggingTruthTaggingTool::getPermutationRW(TRFinfo &trfinf,bool isIncl, unsigned int nbtag, int sys){ + double w = 1.; + if(nbtag < trfinf.njets && ((!isIncl && trfinf.permprob_ex.at(nbtag) == 0.) || (isIncl && trfinf.permprob_in.at(nbtag) == 0.)) ) { + ATH_MSG_ERROR("Permutations need to be chosen before computing reweighting"); + } + if(nbtag > trfinf.njets) return 1.; + if(isIncl) { + w = trfWeight(trfinf,trfinf.perm_in.at(nbtag)); + return w/trfinf.trfwsys_in[sys].at(nbtag)/trfinf.permprob_in.at(nbtag); + } + else { + w = trfWeight(trfinf,trfinf.perm_ex.at(nbtag)); + return w/trfinf.trfwsys_ex[sys].at(nbtag)/trfinf.permprob_ex.at(nbtag); + } +} + + + +StatusCode BTaggingTruthTaggingTool::GetTruthTagWeights(TRFinfo &trfinf, std::vector<double> &trf_weight_ex, std::vector<double> &trf_weight_in, int sys){ + + ANA_CHECK_SET_TYPE (StatusCode); + + if(sys==0) ANA_CHECK(getAllEffMC(trfinf)); + ANA_CHECK(check_syst_range(sys)); + if(trfinf.trfwsys_ex.size()==0) trfinf.trfwsys_ex.resize(m_eff_syst.size()); + if(trfinf.trfwsys_in.size()==0) trfinf.trfwsys_in.resize(m_eff_syst.size()); + + ANA_CHECK(getAllEffSF(trfinf,sys)); + ANA_CHECK(getTRFweight(trfinf,m_nbtag, true, sys)); + + if(sys==0){ // don't need permutation or tag bin reweighting + if(m_usePerm){ + // choice of the selected permutation + ANA_CHECK(chooseAllTagPermutation(trfinf,m_nbtag)); + } + if(m_useQuntile) { + // choice of the tagged bins + ANA_CHECK(chooseAllTagBins(trfinf)); + } + } + else { + if(m_usePerm) { + for(unsigned int ib = 0; ib < trfinf.trfwsys_ex[sys].size(); ib++) { + trfinf.trfwsys_ex[sys].at(ib) *= getPermutationRW(trfinf,false, ib, sys); + trfinf.trfwsys_in[sys].at(ib) *= getPermutationRW(trfinf,true, ib, sys); + if(m_useQuntile) { + trfinf.trfwsys_ex[sys].at(ib) *= getTagBinsRW(trfinf,false, ib); + trfinf.trfwsys_in[sys].at(ib) *= getTagBinsRW(trfinf,true, ib); + } + } + } + } + trf_weight_ex = trfinf.trfwsys_ex[sys]; + trf_weight_in = trfinf.trfwsys_in[sys]; + return StatusCode::SUCCESS; +} + + +StatusCode BTaggingTruthTaggingTool::CalculateResults(TRFinfo &trfinf,Analysis::TruthTagResults& results,int rand_seed){ + ANA_CHECK_SET_TYPE (StatusCode); + results.clear(); + + results.tagweight_bin_edges = m_binEdges; + + if(rand_seed!=-1){ + trfinf.rand.SetSeed(rand_seed); + } + + unsigned int n_systs = m_eff_syst.size(); + if(m_useSys){ + trfinf.trfwsys_ex.resize(m_eff_syst.size()); + trfinf.trfwsys_in.resize(m_eff_syst.size()); + } + else{ + n_systs = 1; //compute only the nominal + trfinf.trfwsys_ex.resize(1); + trfinf.trfwsys_in.resize(1); + } + std::vector<double> trf_weight_ex, trf_weight_in; + + for(unsigned int i =0; i< n_systs; i++){ + trf_weight_ex.clear(); + trf_weight_in.clear(); + + ANA_CHECK(GetTruthTagWeights(trfinf, trf_weight_ex, trf_weight_in, i)); + + } + + results.syst_names.clear(); + + for(unsigned int i=0; i<trfinf.trfwsys_ex.size(); i++){ + // for(unsigned int i=0; i<Nsysts; i++){ + + results.map_trf_weight_ex[m_sys_name.at(i)].resize(trfinf.trfwsys_ex.at(i).size()); + results.map_trf_weight_in[m_sys_name.at(i)].resize(trfinf.trfwsys_in.at(i).size()); + + //direct tagged SF + if(m_doDirectTag) + results.map_SF[m_sys_name.at(i)]=getEvtSF(trfinf,i); + + results.syst_names.push_back(m_sys_name.at(i)); + + for(unsigned int j=0; j< trfinf.trfwsys_ex.at(i).size(); j++){ + results.map_trf_weight_ex[m_sys_name.at(i)].at(j) = trfinf.trfwsys_ex.at(i).at(j); + results.map_trf_weight_in[m_sys_name.at(i)].at(j) = trfinf.trfwsys_in.at(i).at(j); + + } + } + + if(m_usePerm){ + ANA_CHECK(getTagPermutation(trfinf,results.trf_chosen_perm_ex,results.trf_chosen_perm_in)); + } + if(m_useQuntile){ + ANA_CHECK(getQuantiles(trfinf,results.trf_bin_ex, results.trf_bin_in)); + ANA_CHECK(generateRandomTaggerScores(results.trf_bin_ex, results.trf_bin_score_ex)); + ANA_CHECK(generateRandomTaggerScores(results.trf_bin_in, results.trf_bin_score_in)); + } + if(m_doDirectTag) + ANA_CHECK(getDirectTaggedJets(trfinf,results.is_tagged)); + + return StatusCode::SUCCESS; + +} + +StatusCode BTaggingTruthTaggingTool::CalculateResults(std::vector<double>& pt, std::vector<double>& eta, std::vector<int>& flav, std::vector<double>& tagw, Analysis::TruthTagResults& results,int rand_seed){ + + ANA_CHECK_SET_TYPE (StatusCode); + + TRFinfo trfinf; + + ANA_CHECK(setJets(trfinf,pt, eta, flav, tagw)); + + return CalculateResults(trfinf,results,rand_seed); +} + +StatusCode BTaggingTruthTaggingTool::CalculateResults(const xAOD::JetContainer& jets, Analysis::TruthTagResults& results,int rand_seed){ + + ANA_CHECK_SET_TYPE (StatusCode); + + TRFinfo trfinf; + + ANA_CHECK(setJets(trfinf,jets)); + + return CalculateResults(trfinf,results,rand_seed); +} + + +StatusCode BTaggingTruthTaggingTool::getAllEffMC(TRFinfo &trfinf){ + + float eff =1.; + float eff_all =1.; + trfinf.effMC.clear(); + if(m_useQuntile == true || m_continuous == true){ + for(auto op_appo: m_availableOP) + trfinf.effMC_allOP[op_appo].clear(); + } + for(size_t i=0; i < trfinf.jets.size(); i++){ + if(m_continuous){ + eff=1.; + // loop on OP + int OP_index = 0; + for(const auto & op_appo: m_availableOP){ + eff_all=1.; + //set a dumb value of the truth tag weight to get the different efficiency maps for each bin. to be improved.. + if(OP_index+1 < (int) m_availableOP.size()){ + trfinf.jets.at(i).vars.jetTagWeight = (m_binEdges.at(OP_index)+m_binEdges.at(OP_index+1))/2.; //to-do: make it fancy? random distribution inside the bin probably? + } + else{ + trfinf.jets.at(i).vars.jetTagWeight = (m_binEdges.at(OP_index)+1)/2.; //only for 60% WP + } + + CorrectionCode code = m_effTool->getMCEfficiency(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, eff_all) ; + + if(!(code==CorrectionCode::Ok || code==CorrectionCode::OutOfValidityRange)){ + ATH_MSG_ERROR("BTaggingEfficiencyTool::getMCEfficiency returned CorrectionCode::Error"); + return StatusCode::FAILURE; + } + trfinf.effMC_allOP[op_appo].push_back(eff_all); + OP_index++; + + } // end loop on OP + } //inside Continuous + else{ + eff=1.; + CorrectionCode code = m_effTool->getMCEfficiency(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, eff); + if(!(code==CorrectionCode::Ok || code==CorrectionCode::OutOfValidityRange)){ + ATH_MSG_ERROR("BTaggingEfficiencyTool::getMCEfficiency returned CorrectionCode::Error"); + return StatusCode::FAILURE;} + + trfinf.effMC.push_back(eff); + + if(m_useQuntile){ + // loop on OP + for(const auto & op_appo: m_availableOP){ + + if ( op_appo==m_OP) { + trfinf.effMC_allOP[op_appo].push_back(eff); + continue; + } + + eff_all=1.; + CorrectionCode code = m_effTool_allOP[op_appo]->getMCEfficiency(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, eff_all) ; + + if(!(code==CorrectionCode::Ok || code==CorrectionCode::OutOfValidityRange)){ + ATH_MSG_ERROR("BTaggingEfficiencyTool::getMCEfficiency returned CorrectionCode::Error"); + return StatusCode::FAILURE; + } + + trfinf.effMC_allOP[op_appo].push_back(eff_all); + } // end loop on OP + } // if useQuantile + } //!useContinuous + } // end loop on jets + return StatusCode::SUCCESS; +} + + +StatusCode BTaggingTruthTaggingTool::getAllEffSF(TRFinfo &trfinf,int sys){ + ANA_CHECK_SET_TYPE ( StatusCode ); + + trfinf.eff.clear(); + if(!m_continuous){ + trfinf.eff.resize(trfinf.effMC.size()); + if(m_useQuntile){ + for(const auto & op_appo: m_availableOP){ + trfinf.eff_allOP[op_appo].clear(); + trfinf.eff_allOP[op_appo].resize(trfinf.effMC.size()); + } + } + } + else{ + trfinf.eff.resize(trfinf.effMC_allOP[m_cutBenchmark].size()); + for(const auto & op_appo: m_availableOP){ + trfinf.eff_allOP[op_appo].clear(); + trfinf.eff_allOP[op_appo].resize(trfinf.effMC_allOP[op_appo].size()); + } + } + + if(m_ignoreSF && sys==0){ + if(m_continuous){ + for(int iop = (int) m_availableOP.size()-1; iop >= 0; iop--) { // loop on the tighter OPs + string op_appo = m_availableOP.at(iop); + if(!m_useQuntile && iop < (int) m_OperatingPoint_index) continue; + for(size_t ieff =0; ieff< trfinf.eff_allOP[op_appo].size(); ieff++){ //jets + trfinf.eff_allOP[op_appo].at(ieff)= 0; + for(unsigned int p = iop; p<m_availableOP.size(); p++){ //add all the eff above the WP + trfinf.eff_allOP[op_appo].at(ieff)+=trfinf.effMC_allOP[m_availableOP.at(p)].at(ieff); + } + if( op_appo == m_cutBenchmark) + trfinf.eff.at(ieff) = trfinf.eff_allOP[m_cutBenchmark].at(ieff); + } //jets + } //OP + } //continuous + else{ + for(size_t i =0; i< trfinf.effMC.size(); i++){ + trfinf.eff.at(i)=trfinf.effMC.at(i); + if(m_useQuntile){ + for(const auto & op_appo: m_availableOP){ + trfinf.eff_allOP[op_appo].at(i)=trfinf.effMC_allOP[op_appo].at(i); + } + } + } + } + return StatusCode::SUCCESS; + } + + if(m_ignoreSF && sys==0){ + ATH_MSG_ERROR("Tryig to access SF systematics but ignoring SF"); + return StatusCode::FAILURE; + } + + float SF =1.; + float SF_all =1.; + + if(sys!=0 && m_useSys){ + ATH_MSG_DEBUG("applying the syst: " <<m_sys_name[sys]); + ANA_CHECK_THROW( m_effTool->applySystematicVariation(m_eff_syst[sys]) ); + if(m_useQuntile && !m_continuous){ + for(const auto & op_appo: m_availableOP){ + if (op_appo==m_OP) continue; + ANA_CHECK( m_effTool_allOP[op_appo]->applySystematicVariation(m_eff_syst[sys]) ); + } + } + } + + if(m_continuous){ + for(int iop = (int) m_availableOP.size()-1; iop >= 0; iop--) { + std::string op_appo = m_availableOP.at(iop); + if(!m_useQuntile && iop < (int) m_OperatingPoint_index) continue; + for(size_t i=0; i<trfinf.jets.size(); i++){ + SF=1.; + //set a dumb value of the truth tag weight to get the different efficiency maps for each bin. to be improved.. + if(iop+1 < (int) m_availableOP.size()){ + trfinf.jets.at(i).vars.jetTagWeight = (m_binEdges.at(iop)+m_binEdges.at(iop+1))/2.; //to-do: make it fancy? random distribution for the tagger score + } + else{ + trfinf.jets.at(i).vars.jetTagWeight = (m_binEdges.at(iop)+1.)/2.; + } + + CorrectionCode code = m_effTool->getScaleFactor(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, SF) ; + if(!(code==CorrectionCode::Ok || code==CorrectionCode::OutOfValidityRange)){ + ATH_MSG_ERROR("BTaggingEfficiencyTool::getScaleFactor returned CorrectionCode::Error"); + return StatusCode::FAILURE; + } + + trfinf.eff_allOP[op_appo].at(i)=trfinf.effMC_allOP[op_appo].at(i)*SF; + + //now sum all the corrected MC Eff together + if(iop+1 < (int) m_availableOP.size()){ + trfinf.eff_allOP[op_appo].at(i)+=trfinf.eff_allOP[m_availableOP.at(iop+1)].at(i); //they are already corrected for SF + } + if( op_appo == m_cutBenchmark) + trfinf.eff.at(i) = trfinf.eff_allOP[m_cutBenchmark].at(i); + } //jets + } //OP + } //continuous + + else{ + for(unsigned int i=0; i<trfinf.jets.size(); i++){ + SF=1.; + CorrectionCode code = m_effTool->getScaleFactor(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, SF) ; + if(!(code==CorrectionCode::Ok || code==CorrectionCode::OutOfValidityRange)){ + ATH_MSG_ERROR("BTaggingEfficiencyTool::getScaleFactor returned CorrectionCode::Error"); + return StatusCode::FAILURE; + } + trfinf.eff.at(i) = trfinf.effMC.at(i)*SF; + if(m_useQuntile){ + // loop on OP + for(const auto & op_appo: m_availableOP){ + if (op_appo==m_OP) { + trfinf.eff_allOP[op_appo].at(i)=trfinf.effMC.at(i)*SF; + continue; + } + SF_all=1.; + CorrectionCode code = m_effTool_allOP[op_appo]->getScaleFactor(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, SF_all) ; + if(!(code==CorrectionCode::Ok || code==CorrectionCode::OutOfValidityRange)){ + ATH_MSG_ERROR("BTaggingEfficiencyTool::getScaleFactor returned CorrectionCode::Error"); + return StatusCode::FAILURE; + } + + trfinf.eff_allOP[op_appo].at(i) = trfinf.effMC_allOP[op_appo].at(i)*SF_all; + } // end loop on OP + } // if useQuantile + } //!Continuous + } //jets + + CP::SystematicSet defaultSet; + ANA_CHECK( m_effTool->applySystematicVariation(defaultSet) ); + if(m_useQuntile && !m_continuous){ + for(const auto & op_appo: m_availableOP){ + ANA_CHECK( m_effTool_allOP[op_appo]->applySystematicVariation(defaultSet) ); + } + } + + return StatusCode::SUCCESS; +} + +std::vector<std::vector<bool> > BTaggingTruthTaggingTool::generatePermutations(int njets, int tags, int start){ + std::vector<std::vector<bool> > perm; + std::vector<std::vector<bool> > temp_perm; + if(tags==0){ + std::vector<bool> tags(njets,false); + perm.push_back(tags); + } + else if(tags == njets) { + std::vector<bool> tags(njets,true); + perm.push_back(tags); + } + else { + for(int i=start; i<njets;i++){ + temp_perm = generatePermutations(njets,tags-1,i+1); + for(unsigned int j=0; j<temp_perm.size(); j++){ + temp_perm.at(j).at(i)=true; + perm.push_back(temp_perm.at(j)); + } + } + } + return perm; +} + + +double BTaggingTruthTaggingTool::trfWeight(TRFinfo &trfinf,const std::vector<bool> &tags){ + double weight = 1; + for (unsigned int j=0; j<tags.size();j++) { + double trf = 0.; + trf = trfinf.eff[j]; + if(trf>1.) { + ATH_MSG_WARNING("Truth Tagging weight > 1. --> setting it to 1. check maps!"); + trf = 1.; + } + if(tags.at(j)) weight *= trf; + else weight *= (1.-trf); + } // end loop over jets + return weight; +} + + +StatusCode BTaggingTruthTaggingTool::getTRFweight(TRFinfo &trfinf,unsigned int nbtag, bool isInclusive, int sys){ + + unsigned int njets = trfinf.njets; + // Consider permutations of njet jets with up to limit b-tags + unsigned int limit = (njets > 7) ? 8 : njets+1; + + // Permutations: njets, ntags, permutations + // From .h: std::map<int, std::vector<std::vector<std::vector<bool> > > > trfinf.perms; + + if (trfinf.perms.find(njets)==trfinf.perms.end()){ // if I don't have already saved the possible permutations for njet + trfinf.perms[njets] = std::vector<std::vector<std::vector<bool> > >(limit); + for(unsigned int i=0;i<limit;i++) + trfinf.perms[njets].at(i) = generatePermutations(njets,i); + } + + trfinf.permsWeight.clear(), trfinf.permsWeight.resize(limit); // trfinf.permsWeight.at(i).at(j): TRF weight of the j-th perm with i b-tags + trfinf.permsSumWeight.clear(), trfinf.permsSumWeight.resize(limit); // trfinf.permsSumWeight.at(i).at(j): partial sum of TRF weight of the permutations with i b-tags up to j (0,1,..,j-th) perm. Used in the choice of the selected permutation + + // compute TRF weight + unsigned int max = nbtag+1; // from 0 to nbtag b-tags --> nbtag+1 positions + trfinf.trfwsys_ex[sys].clear(), trfinf.trfwsys_in[sys].clear(); + trfinf.trfwsys_ex[sys].resize(max), trfinf.trfwsys_in[sys].resize(max); + + if(sys == 0) { // nominal case --> clear and resize elements of trfinf + trfinf.perm_ex.clear(), trfinf.perm_in.clear(); // vector<vector<bool>> --> for each number of tags the chosen permutation + trfinf.perm_ex.resize(max), trfinf.perm_in.resize(max); + trfinf.permprob_ex.clear(), trfinf.permprob_in.clear(); // probability of the perm in trfinf.perm_ex/in + trfinf.permprob_ex.resize(max), trfinf.permprob_in.resize(max); + } + if(isInclusive) { + for(unsigned int i=0; i<limit; i++) { // note: I consider maximum limit tags. It's an approximation + std::vector<double> weights; + double sum = 0., w = 0.; + trfinf.permsWeight.at(i).clear(); + trfinf.permsSumWeight.at(i).clear(); + trfinf.permsWeight.at(i).resize(trfinf.perms[njets].at(i).size()); + trfinf.permsSumWeight.at(i).resize(trfinf.perms[njets].at(i).size()); + + // loop on all the permutations with i tags + for(unsigned int p=0; p<trfinf.perms[njets].at(i).size(); p++) { + w = trfWeight(trfinf,trfinf.perms[njets].at(i).at(p)); + sum+=w; + //trfinf.permsWeight.at(i).push_back(w); //old way to do it without resizing, keep it for the moment + //trfinf.permsSumWeight.at(i).push_back(sum); + trfinf.permsWeight.at(i).at(p) = w; + trfinf.permsSumWeight.at(i).at(p) = sum; + + ATH_MSG_DEBUG("nbtag = " << i << " wei = " << w << " sum = " << sum); + } + if(i<limit && i<max) { + // note: I need to already have the exclusive weights filled to compite the inclusive + trfinf.trfwsys_ex[sys].at(i) = sum; // sum of TRF weights for all perm with i b-tags + if(i == 0) trfinf.trfwsys_in[sys].at(0) = 1.; + else trfinf.trfwsys_in[sys].at(i) = trfinf.trfwsys_in[sys].at(i-1) - trfinf.trfwsys_ex[sys].at(i-1); // P(>=4) = P(>=3) - P(==3) + ATH_MSG_DEBUG("i = " << i << " sum = " << sum << " TRF in " << trfinf.trfwsys_in[0].at(i) << " ex = " << trfinf.trfwsys_ex[0].at(i)); + } + } + ATH_MSG_DEBUG("before return, nbtag = " << nbtag << " size de trfinf.trfwsys_in[sys] = " << trfinf.trfwsys_in[sys].size()); + return StatusCode::SUCCESS; + } + else { // exclusive case, only one calculation needed + std::vector<double> weights; + double sum = 0., w = 0.; + size_t size = trfinf.perms[njets].at(nbtag).size(); + trfinf.permsWeight.at(nbtag).clear(); + trfinf.permsSumWeight.at(nbtag).clear(); + trfinf.permsWeight.at(nbtag).resize(size); + trfinf.permsSumWeight.at(nbtag).resize(size); + // loop on all the permutations with i tags + for(unsigned int p=0; p<trfinf.perms[njets].at(nbtag).size(); p++) { + + w = trfWeight(trfinf,trfinf.perms[njets].at(nbtag).at(p)); + sum+=w; + // trfinf.permsWeight.at(nbtag).push_back(w); //old way, before resizing: keep it for the moment + // trfinf.permsSumWeight.at(nbtag).push_back(sum); + trfinf.permsWeight.at(nbtag).at(p) = w; + trfinf.permsSumWeight.at(nbtag).at(p) = sum; + } + trfinf.trfwsys_ex[sys].at(nbtag) = sum; + return StatusCode::SUCCESS; + } + return StatusCode::SUCCESS; +} + + +StatusCode BTaggingTruthTaggingTool::getTagPermutation(TRFinfo &trfinf, std::vector<std::vector<bool> > &trf_chosen_perm_ex, std::vector<std::vector<bool> > &trf_chosen_perm_in){ + trf_chosen_perm_ex.resize(m_nbtag+1); + trf_chosen_perm_in.resize(m_nbtag+1); + trf_chosen_perm_ex = trfinf.perm_ex; + trf_chosen_perm_in = trfinf.perm_in; + std::string print_perm = "Permutation: "; + for(auto perm: trfinf.perm_ex){ + for(auto is: perm) { + if(is) print_perm+=std::to_string(1); + else print_perm+=std::to_string(0); + print_perm+=" "; + } + } + ATH_MSG_DEBUG(print_perm); + return StatusCode::SUCCESS; +} + +StatusCode BTaggingTruthTaggingTool::chooseAllTagPermutation(TRFinfo &trfinf,unsigned int nbtag){ + + ANA_CHECK_SET_TYPE (StatusCode); + + if(!m_usePerm){ + return StatusCode::FAILURE; + } + + unsigned int njets = trfinf.njets; + unsigned int limit = (njets > 7) ? 8 : njets+1; + unsigned int max = (njets < nbtag+1) ? limit : nbtag+1; + + trfinf.perm_ex.clear(), trfinf.perm_ex.resize(nbtag+1); + trfinf.perm_in.clear(), trfinf.perm_in.resize(nbtag+1); + + trfinf.permprob_ex.clear(), trfinf.permprob_ex.resize(nbtag+1); + trfinf.permprob_in.clear(), trfinf.permprob_in.resize(nbtag+1); + + for(unsigned int i=0; i<max; i++) { // need +1 as 0 is included + ANA_CHECK(chooseTagPermutation(trfinf,i,false)); + ANA_CHECK(chooseTagPermutation(trfinf,i,true)); + } + + return StatusCode::SUCCESS; +} + +StatusCode BTaggingTruthTaggingTool::chooseTagPermutation(TRFinfo &trfinf,unsigned int nbtag, bool isIncl){ + std::vector<double> incl; + std::vector<std::pair<unsigned int, unsigned int> > trackPerm; + double sum = 0; + if(isIncl) { + for(unsigned int itag=nbtag; itag < trfinf.permsWeight.size(); itag++) { + for(unsigned int ip = 0; ip < trfinf.permsWeight.at(itag).size(); ip++) { + sum += trfinf.permsWeight.at(itag).at(ip); + incl.push_back(sum); + trackPerm.push_back(std::make_pair(itag,ip)); + } + } + } + else { // in exclusive case + sum = trfinf.permsSumWeight.at(nbtag).back(); + incl = trfinf.permsSumWeight.at(nbtag); + for(unsigned int ip = 0; ip < trfinf.permsSumWeight.at(nbtag).size(); ip++) trackPerm.push_back(std::make_pair(nbtag,ip)); + } + double theX = trfinf.rand.Uniform(sum); + for(unsigned int ip=0; ip < incl.size(); ip++) { + ATH_MSG_DEBUG("incl.at(ip): " << incl.at(ip) << " theX: " << theX); + if(incl.at(ip) >= theX) { + if(isIncl) { + trfinf.perm_in.at(nbtag) = trfinf.perms[trfinf.njets].at(trackPerm.at(ip).first).at(trackPerm.at(ip).second); + trfinf.permprob_in.at(nbtag) = trfinf.permsWeight.at(trackPerm.at(ip).first).at(trackPerm.at(ip).second) / trfinf.trfwsys_in[0].at(nbtag); + } + else { + trfinf.perm_ex.at(nbtag) = trfinf.perms[trfinf.njets].at(trackPerm.at(ip).first).at(trackPerm.at(ip).second); + trfinf.permprob_ex.at(nbtag) = trfinf.permsWeight.at(trackPerm.at(ip).first).at(trackPerm.at(ip).second) / trfinf.trfwsys_ex[0].at(nbtag); + } + return StatusCode::SUCCESS; + } + } + return StatusCode::SUCCESS; +} + + + +///// tag bins ////////////////////// +// Cheatsheet: +// returns 5 if between 60% and 0% +// returns 4 if between 70% and 60% +// returns 3 if between 77% and 70% +// returns 2 if between 85% and 77% +// returns 1 if between 100% and 85% +// return -1 if not in b-tagging acceptance +////////////////////// + + +StatusCode BTaggingTruthTaggingTool::getQuantiles(TRFinfo &trfinf,std::vector<std::vector<int> > &trf_bin_ex, std::vector<std::vector<int> > &trf_bin_in){ + trf_bin_ex.resize(trfinf.tbins_ex.size()); + for(unsigned int i =0; i<trfinf.tbins_ex.size(); i++) + trf_bin_ex.at(i).resize(trfinf.tbins_ex.at(i).size()); + + trf_bin_in.resize(trfinf.tbins_in.size()); + for(unsigned int i =0; i<trfinf.tbins_in.size(); i++) + trf_bin_in.at(i).resize(trfinf.tbins_in.at(i).size()); + // increasing the value by 1 to match conventions in selectionTool + for(unsigned int i =0; i<trfinf.tbins_ex.size(); i++) + for(unsigned int j=0; j<trfinf.tbins_ex.at(i).size(); j++) + trf_bin_ex.at(i).at(j)=trfinf.tbins_ex.at(i).at(j) +1; + + for(unsigned int i =0; i<trfinf.tbins_in.size(); i++) + for(unsigned int j=0; j<trfinf.tbins_in.at(i).size(); j++) + trf_bin_in.at(i).at(j)=trfinf.tbins_in.at(i).at(j) +1; + + return StatusCode::SUCCESS; +} + +StatusCode BTaggingTruthTaggingTool::chooseAllTagBins(TRFinfo &trfinf){ + ANA_CHECK_SET_TYPE (StatusCode); + trfinf.tbins_ex.clear(); + trfinf.tbins_in.clear(); + trfinf.tbins_ex.resize( trfinf.trfwsys_ex[0].size()); + trfinf.tbins_in.resize( trfinf.trfwsys_in[0].size()); + + trfinf.binsprob_ex.clear(); + trfinf.binsprob_in.clear(); + trfinf.binsprob_ex.resize( trfinf.trfwsys_ex[0].size()); + trfinf.binsprob_in.resize( trfinf.trfwsys_in[0].size()); + + if(trfinf.perm_ex.size() != trfinf.perm_in.size()) ATH_MSG_WARNING("Different sizes in exclusive and inclusive permutation choices"); + + for(unsigned int nb=0; nb<trfinf.perm_ex.size(); nb++) { + ANA_CHECK(chooseTagBins_cum(trfinf,trfinf.perm_ex.at(nb), false, nb)); + ANA_CHECK(chooseTagBins_cum(trfinf,trfinf.perm_in.at(nb), true, nb)); + } + return StatusCode::SUCCESS; +} + + +// chiara: non posso uniformare il codice con getTagBinsConfProb?? +StatusCode BTaggingTruthTaggingTool::chooseTagBins_cum(TRFinfo &trfinf,std::vector<bool> &tagconf, bool isIncl, unsigned int nbtag){ + std::vector<int> btagops; + + std::vector<double> incl; + double prob = 1.; + + for(unsigned int j=0; j<tagconf.size(); j++) { + if(tagconf.at(j)) { // tagged jet + double sum=0.; + incl.clear(); + for(int iop = (int)trfinf.eff_allOP.size()-1; iop >= (int)m_OperatingPoint_index; iop--) { // loop on the tighter OPs + sum = trfinf.eff_allOP[m_availableOP.at(iop)][j]; + incl.push_back(sum); + } + double theX = trfinf.rand.Uniform(sum); + + for(unsigned int k=0; k<incl.size(); k++) { + double valm1 = 0.; + if(k!=0) valm1 = incl.at(k-1); + if(incl.at(k) >= theX) { + btagops.push_back(m_availableOP.size()-k); + prob *= (incl.at(k)-valm1) / sum; + break; + } + } + } + else { // untagged jet + double sum=0.; + incl.clear(); + incl.push_back(sum); // fill the "0_0" OP as no real value affected and start the loop at 1 + for(unsigned int iop=0; iop<=m_OperatingPoint_index; iop++) { // need to include the chosen tag cut to have the last MV1 bin of untagged jets filled, start at 0 with cumulative as iop = 0 = first OP + // sum = 1 - trf here + sum = 1 - trfinf.eff_allOP[m_availableOP.at(iop)][j]; + incl.push_back(sum); + } + + double theX = trfinf.rand.Uniform(sum); + for(unsigned int k=1; k<incl.size(); k++) { + if(incl.at(k) >= theX){ + btagops.push_back(k-1); + prob *= (incl.at(k) - incl.at(k-1)) / sum; + break; + } + } + } + } + if(btagops.size() != tagconf.size()) { + ATH_MSG_ERROR("You should not be here -> wrong size of tag bins vector"); + return StatusCode::FAILURE; + } + if(isIncl) { + trfinf.tbins_in.at(nbtag) = btagops; + trfinf.binsprob_in.at(nbtag) = prob; + ATH_MSG_DEBUG("incl, nbtag " << nbtag << " prob " << prob); + } + else { + trfinf.tbins_ex.at(nbtag) = btagops; + trfinf.binsprob_ex.at(nbtag) = prob; + ATH_MSG_DEBUG("excl, nbtag " << nbtag << " prob " << prob); + } + return StatusCode::SUCCESS; +} + + + +double BTaggingTruthTaggingTool::getTagBinsRW(TRFinfo &trfinf,bool isIncl, unsigned int nbtag){ + + if((!isIncl && trfinf.binsprob_ex.size() == 0) || (isIncl && trfinf.binsprob_in.size() == 0)) { + ATH_MSG_ERROR("Need to choose quantiles before computing the reweighting"); + exit(-1); + } + + double tbw = 0.; + double prob_sys=1.; + + if(isIncl) { + prob_sys=getTagBinsConfProb(trfinf,trfinf.tbins_in.at(nbtag)); + tbw = prob_sys/trfinf.binsprob_in.at(nbtag); + return tbw; + } + else { + prob_sys=getTagBinsConfProb(trfinf,trfinf.tbins_ex.at(nbtag)); + tbw = prob_sys/trfinf.binsprob_ex.at(nbtag); + return tbw; + } +} + + +double BTaggingTruthTaggingTool::getTagBinsConfProb(TRFinfo &trfinf,std::vector<int> &tagws){ + double prob = 1.; + for(unsigned int j=0; j<tagws.size(); j++) { + if((unsigned int)tagws.at(j) > m_OperatingPoint_index) { // tagged + double prevBinW = 0.; + int mOP = m_availableOP.size(); + if(tagws.at(j) != mOP) { // not the last tag-bin + prevBinW = trfinf.eff_allOP[m_availableOP.at(tagws.at(j))][j]; + } + // prob *= (eff*SF-exactly-that-bin)/(ef*SF-all-tagged-bins) + // (eff*SF-exactly-that-bin): eff(==60) = eff(70) - eff(60) --> eff(==5) = eff(4)-eff(5) + prob *= (trfinf.eff_allOP[m_availableOP.at(tagws.at(j)-1)][j] - prevBinW) / (trfinf.eff_allOP[m_availableOP.at(m_OperatingPoint_index)][j]); + ATH_MSG_DEBUG("prob " << prob); + } + else { // untagged + double prevBinW = 0.; + if(tagws.at(j) != 0) { + prevBinW = 1 - trfinf.eff_allOP[m_availableOP.at(tagws.at(j)-1)][j]; + } + prob *= ((1 - trfinf.eff_allOP[m_availableOP.at(tagws.at(j))][j]) - prevBinW) / (1 - trfinf.eff_allOP[m_availableOP.at(m_OperatingPoint_index)][j]); + ATH_MSG_DEBUG("prob " << prob); + } + } + return prob; +} + +StatusCode BTaggingTruthTaggingTool::getDirectTaggedJets(TRFinfo &trfinf,std::vector<bool> &is_tagged){ + + is_tagged.clear(); + std::vector<int> appo; + + for(const auto jet : trfinf.jets) { + ATH_MSG_DEBUG("pt " << jet.vars.jetPt << " eta " << jet.vars.jetEta << " wei " << jet.vars.jetTagWeight); + bool is_btagged = false; + if(!m_continuous) + is_btagged = static_cast<bool>(m_selTool->accept(jet.vars.jetPt, jet.vars.jetEta, jet.vars.jetTagWeight)); + else{ + int quantile = m_selTool->getQuantile(jet.vars.jetPt, jet.vars.jetEta, jet.vars.jetTagWeight); + is_btagged = quantile > (int) m_OperatingPoint_index ? true : false; + ATH_MSG_DEBUG("quantile " <<quantile <<" m_OperatingPoint_index " <<m_OperatingPoint_index <<" is_tagged? " <<is_btagged); + + } + + ATH_MSG_DEBUG("is tagged? " << is_btagged); + if(is_btagged) is_tagged.push_back(1); + else is_tagged.push_back(0); + } + + return StatusCode::SUCCESS; +} + + +double BTaggingTruthTaggingTool::getEvtSF(TRFinfo &trfinf,int sys){ + ANA_CHECK_SET_TYPE (StatusCode); + double SF = 1.; + std::vector<bool> is_tagged; + ANA_CHECK_THROW( getDirectTaggedJets(trfinf,is_tagged) ); + + if(sys!=0 && m_useSys) { + + ANA_CHECK_THROW( m_effTool->applySystematicVariation(m_eff_syst[sys]) ); + } + + for(unsigned int i =0; i< trfinf.jets.size(); i++) { + bool is_btagged = is_tagged.at(i); + float ineffSF =1; + float effSF=1; + + if(is_btagged){ // tagged --> look at sf + // CorrectionCode code = m_effTool->getScaleFactor(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, ineffSF); + // if(!(code==CorrectionCode::Ok || code==CorrectionCode::OutOfValidityRange)){ + // ATH_MSG_ERROR("BTaggingEfficiencyTool::getMCEfficiency returned CorrectionCode::Error"); + // return -1.0; + // } + ANA_CHECK_THROW(m_effTool->getScaleFactor(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, ineffSF)); + + SF*=ineffSF; + } + else{ // not tagged --> loop at ineff SF + // CorrectionCode code = m_effTool->getInefficiencyScaleFactor(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, effSF); + // if(!(code==CorrectionCode::Ok || code==CorrectionCode::OutOfValidityRange)){ + // ATH_MSG_ERROR("BTaggingEfficiencyTool::getMCEfficiency returned CorrectionCode::Error"); + // return -1.0; + // } + + ANA_CHECK_THROW(m_effTool->getInefficiencyScaleFactor(trfinf.jets.at(i).flav, trfinf.jets.at(i).vars, effSF)); + SF *= effSF; + } + } + + if(sys!=0 && m_useSys) { // reset syst to nominal + CP::SystematicSet defaultSet; + + ANA_CHECK_THROW( m_effTool->applySystematicVariation(defaultSet) ); + } + return SF; +} + + +StatusCode BTaggingTruthTaggingTool::check_syst_range(unsigned int sys){ + if(sys < m_eff_syst.size()) return StatusCode::SUCCESS; + ATH_MSG_ERROR(sys << " Out of range of available systematics"); + return StatusCode::FAILURE; +} + + + +BTaggingTruthTaggingTool::~BTaggingTruthTaggingTool(){ + + // delete trfinf.jets; + +} + + +int BTaggingTruthTaggingTool::jetFlavourLabel (const xAOD::Jet& jet){ + if (m_coneFlavourLabel) + return (m_oldConeFlavourLabel) ? ConeFinalPartonFlavourLabel(jet) : ExclusiveConeHadronFlavourLabel(jet); + else + return GAFinalHadronFlavourLabel(jet); +} + +int BTaggingTruthTaggingTool::GAFinalHadronFlavourLabel (const xAOD::Jet& jet) { + + const std::string labelB = "GhostBHadronsFinal"; + const std::string labelC = "GhostCHadronsFinal"; + const std::string labelTau = "GhostTausFinal"; + + std::vector<const IParticle*> ghostB; + if (jet.getAssociatedObjects<IParticle>(labelB, ghostB) && ghostB.size() > 0) return 5; + std::vector<const IParticle*> ghostC; + if (jet.getAssociatedObjects<IParticle>(labelC, ghostC) && ghostC.size() > 0) return 4; + std::vector<const IParticle*> ghostTau; + if (jet.getAssociatedObjects<IParticle>(labelTau, ghostTau) && ghostTau.size() > 0) return 15; + + + return 0; +} + +int BTaggingTruthTaggingTool::ConeFinalPartonFlavourLabel (const xAOD::Jet& jet){ + // default label means "invalid" + int label = -1; + // First try the new naming scheme + if (jet.getAttribute("ConeTruthLabelID",label)) return label; + // If that fails, revert to the old scheme. In this case, further testing is not very useful + jet.getAttribute("TruthLabelID", label); + return label; +} + +int BTaggingTruthTaggingTool::ExclusiveConeHadronFlavourLabel (const xAOD::Jet& jet){ + // default label means "invalid" + int label = -1; + // We don't check the return value, as we would not be able to handle it gracefully anyway + jet.getAttribute("HadronConeExclTruthLabelID",label); + return label; +} + +// local utility function: trim leading and trailing whitespace in the property strings +std::string trim(const std::string& str, + const std::string& whitespace = " \t") { + const auto strBegin = str.find_first_not_of(whitespace); + if (strBegin == std::string::npos) + return ""; // no content + + const auto strEnd = str.find_last_not_of(whitespace); + const auto strRange = strEnd - strBegin + 1; + + return str.substr(strBegin, strRange); +} + + +std::vector<std::string> BTaggingTruthTaggingTool::split(const std::string& str, char token) { + std::vector<std::string> result; + if (str.size() > 0) { + std::string::size_type end; + std::string tmp(str); + do { + end = tmp.find(token); + std::string entry = trim(tmp.substr(0,end)); + if (entry.size() > 0) result.push_back(entry); + if (end != std::string::npos) tmp = tmp.substr(end+1); + } while (end != std::string::npos); + } + return result; +} + +StatusCode BTaggingTruthTaggingTool::generateRandomTaggerScores(std::vector< std::vector<int> > &quantiles, std::vector< std::vector<double> > &scores){ + + //quantiles: + // returns 5 if between 60% and 0% + // returns 4 if between 70% and 60% + // returns 3 if between 77% and 70% + // returns 2 if between 85% and 77% + // returns 1 if between 100% and 85% + //m_binEdges + // 3 60% + // 2 70% + // 1 77% + // 0 85% + + scores.clear(); + + TRandom3 random; + + scores.resize(quantiles.size()); + for(unsigned int i=0; i <quantiles.size(); i++ ){ + + scores.at(i).resize(quantiles.at(i).size()); + + for(unsigned int j=0; j <quantiles.at(i).size(); j++ ){ + + int quantile = quantiles.at(i).at(j); + + if(quantile == 1){ + double lowTaggerScore = -1.0; + if(m_taggerName.find("MV2") != string::npos){ lowTaggerScore = -1.0; } + if(m_taggerName.find("DL1") != string::npos){ lowTaggerScore = -20.0;} + + scores.at(i).at(j) = lowTaggerScore + random.Uniform()*( m_binEdges.at(0)-lowTaggerScore ); + }else if(quantile == 5){ + double highTaggerScore = +1.0; + if(m_taggerName.find("MV2") != string::npos){ highTaggerScore = 1.0; } + if(m_taggerName.find("DL1") != string::npos){ highTaggerScore = 20.0; } + + scores.at(i).at(j) = m_binEdges.at(3) + random.Uniform()*( highTaggerScore-m_binEdges.at(3) ); + }else{ + scores.at(i).at(j) = m_binEdges.at(quantile-2) + random.Uniform()*( m_binEdges.at(quantile-1)-m_binEdges.at(quantile-2) ); + } + } + } + + return StatusCode::SUCCESS; + +} + diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/LinkDef.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/LinkDef.h new file mode 100644 index 0000000000000000000000000000000000000000..1ea08cfd6eb495650249d8a8cd0d40f6f3aef7b8 --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/LinkDef.h @@ -0,0 +1,18 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#include "xAODBTaggingEfficiency/TruthTagResults.h" + +#ifdef __CINT__ + +#pragma link off all globals; +#pragma link off all classes; +#pragma link off all functions; + +#pragma link C++ nestedclass; + +#pragma link C++ namespace Analysis; +#pragma link C++ class Analysis::TruthTagResults; + +#endif diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/src/ToolTester.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/src/ToolTester.cxx index 6e8d1936c7b3e68fec72f160764e3b1b054e21b6..daf681e37eab416c54420d3a6efa5c116c61495f 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/src/ToolTester.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/src/ToolTester.cxx @@ -5,7 +5,7 @@ // $Id$ #include "xAODJet/JetContainer.h" -#include "CalibrationDataInterface/CalibrationDataInterfaceROOT.h" +//#include "CalibrationDataInterface/CalibrationDataInterfaceROOT.h" #include "ToolTester.h" diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/src/components/xAODBTaggingEfficiency_entries.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/src/components/xAODBTaggingEfficiency_entries.cxx index 9322d19701c8eeb07d14dd2ac852b86b336b034d..3cedaaa3fb4808ed17ba0c68430314cbf56b6a23 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/src/components/xAODBTaggingEfficiency_entries.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/src/components/xAODBTaggingEfficiency_entries.cxx @@ -1,11 +1,18 @@ + + #include "xAODBTaggingEfficiency/BTaggingEfficiencyTool.h" #include "xAODBTaggingEfficiency/BTaggingSelectionTool.h" +#include "xAODBTaggingEfficiency/BTaggingTruthTaggingTool.h" +#include "xAODBTaggingEfficiency/BTaggingEigenVectorRecompositionTool.h" + #include "../ToolTester.h" -// Should probably alter the namespace +// Should probably alter the namespace DECLARE_COMPONENT( BTaggingEfficiencyTool ) DECLARE_COMPONENT( BTaggingSelectionTool ) +DECLARE_COMPONENT( BTaggingTruthTaggingTool ) +DECLARE_COMPONENT( BTaggingEigenVectorRecompositionTool ) DECLARE_COMPONENT( BTagToolTester ) diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingEfficiencyToolTester.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingEfficiencyToolTester.cxx index 87106c843d505bb91c373f08d873c934462b6616..3aebe5cec7bde09e01bf4c156a542badd52fd4fb 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingEfficiencyToolTester.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingEfficiencyToolTester.cxx @@ -3,11 +3,12 @@ */ -#ifdef ROOTCORE +//#ifdef XAOD_STANDALONE # include "xAODRootAccess/TStore.h" -#endif // ROOTCORE +//#endif // XAOD_STANDALONE -#include "xAODBTaggingEfficiency/BTaggingEfficiencyTool.h" +#include <AsgTools/AnaToolHandle.h> +#include "FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h" #include <string> #include <iomanip> @@ -16,49 +17,50 @@ using CP::CorrectionCode; using CP::SystematicCode; int main() { - + bool retval = true; xAOD::TStore store; + - BTaggingEfficiencyTool * tool = new BTaggingEfficiencyTool("BTagTest"); - // tagger name as specified in the CDI file - StatusCode code = tool->setProperty("TaggerName", "MV2c10"); - if (code != StatusCode::SUCCESS) std::cout << "error setting BTaggingEfficiencyTool TaggerName property" << std::endl; - // operating point as specified in the CDI file - code = tool->setProperty("OperatingPoint", "FixedCutBEff_77"); - if (code != StatusCode::SUCCESS) std::cout << "error setting BTaggingEfficiencyTool OperatingPoint property" << std::endl; - // jet collection name as specified in the CDI file (for 2012, this contains also the JVF specification) - code = tool->setProperty("JetAuthor", "AntiKt4EMTopoJets"); - if (code != StatusCode::SUCCESS) std::cout << "error setting BTaggingEfficiencyTool JetAuthor property" << std::endl; - // name of the CDI file - code = tool->setProperty("ScaleFactorFileName", "13TeV/2016-20_7-13TeV-MC15-CDI-2017-04-24_v1.root"); - if (code != StatusCode::SUCCESS) std::cout << "error setting BTaggingEfficiencyTool ScaleFactorFileName property" << std::endl; - // calibration specification (there should always be a "default" available so this doesn't need to be set - // tool->setProperty("ScaleFactorBCalibration", "ttbar_PDF_7b_SF"); + std::string taggerName = "DL1"; + std::string workingPointName = "FixedCutBEff_70"; + + asg::AnaToolHandle<IBTaggingEfficiencyTool> tool("BTaggingEfficiencyTool/BTagEffTest"); + StatusCode code1 = tool.setProperty("ScaleFactorFileName","xAODBTaggingEfficiency/13TeV/2019-21-13TeV-MC16-CDI-2019-10-07_v1.root" ); + StatusCode code2 = tool.setProperty("TaggerName", taggerName ); + StatusCode code3 = tool.setProperty("OperatingPoint", workingPointName); + StatusCode code4 = tool.setProperty("JetAuthor", "AntiKt4EMPFlowJets_BTagging201810" ); + + //provide a file which tells the tool which efficiency maps to use, and connects sample DSIDs to the right efficiency map. + //you can find a tool to automatically create this config file here: https://gitlab.cern.ch/mstamenk/automate-hadronisation-information + StatusCode code5 = tool.setProperty("EfficiencyConfig","/afs/cern.ch/work/j/jshlomi/public/example_eff_config.txt"); + // specify an aggressive ("Tight") or not-so-aggressive ("Medium") eigenvector suppression scheme - // (this needs information stored in the calibration objects which will not be available for older files) - // optionally, specify non-default and multiple efficiency objects - // tool->setProperty("EfficiencyBCalibrations", "410000;410004;410006;410021"); - // tool->setProperty("EfficiencyCCalibrations", "410000;410004;410006;410021"); - // tool->setProperty("EfficiencyTCalibrations", "410000;410004;410006;410021"); - // tool->setProperty("EfficiencyLightCalibrations", "410000;410004;410006;410021"); - // tool->setProperty("EigenvectorReductionB", "Medium"); - // tool->setProperty("EigenvectorReductionC", "Medium"); - // tool->setProperty("EigenvectorReductionLight", "Medium"); - // specify that the file is to be looked for in the PathResolver "development" area (don't use this for official productions) - // tool->setProperty("UseDevelopmentFile", true); - // specify the use of the cone-based labelling rather than the ghost association - code = tool->setProperty("ConeFlavourLabel", true); - if (code != StatusCode::SUCCESS) std::cout << "error setting BTaggingEfficiencyTool ConeFlavourLabel property" << std::endl; - // uncomment this to use the Run-1 style cone labelling (parton based, inclusive) instead of the Run-2 default (hadron based, exclusive) - // tool->setProperty("OldConeFlavourLabel", true); + // tool.setProperty("EigenvectorReductionB", "Medium"); + // tool.setProperty("EigenvectorReductionC", "Medium"); + // tool.setProperty("EigenvectorReductionLight", "Medium"); + // uncomment this if the "Envelope" systematics model is to be used instead of the eigenvector variations - // tool->setProperty("SystematicsStrategy", "Envelope"); - // A successful initialisation ought to be checked for - code = tool->initialize(); - if (code != StatusCode::SUCCESS) { - std::cout << "Initialization of tool " << tool->name() << " failed! Subsequent results may not make sense." << std::endl; + // code = tool.setProperty("SystematicsStrategy", "Envelope"); + + StatusCode code6 = tool.initialize(); + + if (code1 != StatusCode::SUCCESS || code2 != StatusCode::SUCCESS || code3 != StatusCode::SUCCESS || code4 != StatusCode::SUCCESS + || code5 != StatusCode::SUCCESS + || code6 != StatusCode::SUCCESS) { + std::cout << "Initialization of tool " << tool->name() << " failed! " << std::endl; + return -1; + } + else { + std::cout << "Initialization of tool " << tool->name() << " finished." << std::endl; } + + // select your efficiency map based on the DSID of your sample: + unsigned int sample_dsid = 410470; + + tool->setMapIndex(sample_dsid); + + std::cout << "-----------------------------------------------------" << std::endl; const std::map<CP::SystematicVariation, std::vector<std::string> > allowed_variations = tool->listSystematics(); std::cout << "Allowed systematics variations for tool " << tool->name() << ":" << std::endl; @@ -68,80 +70,35 @@ int main() { std::cout << std::endl; } std::cout << "-----------------------------------------------------" << std::endl; + - bool retval = true; std::cout << "Creating a jet" << std::endl; - xAOD::JetFourMom_t p4(25000.,0.7,0.3,1000.); + xAOD::JetFourMom_t p4(50000.,0.7,0.3,1000.); xAOD::Jet * jet = new xAOD::Jet(); jet->makePrivateStore(); std::cout << "Setting jet 4 momentum" << std::endl; jet->setJetP4(p4); std::cout << "Setting jet attribute" << std::endl; - // light quark. Note that here and in the following, we fill both the Run-1 and Run-2 style flavour label variables - jet->setAttribute("ConeTruthLabelID", 0); - jet->setAttribute("HadronConeExclTruthLabelID", 0); + // b jet (label==5) + jet->setAttribute("HadronConeExclTruthLabelID", 5); float sf=0; + float eff=0; CorrectionCode result; - std::cout << "\nTesting function calls without systematics..." << std::endl; - result = tool->getEfficiency(*jet,sf); - if( result!=CorrectionCode::Ok) { std::cout << "Light quark get efficiency failed"<<std::endl; retval=false;} + std::cout << "Testing function calls without systematics..." << std::endl; + result = tool->getEfficiency(*jet,eff); + if( result!=CorrectionCode::Ok) { std::cout << "b jet get efficiency failed"<<std::endl; retval=false;} else { - std::cout << "Light quark get efficiency succeeded: " << sf << std::endl; + std::cout << "b jet get efficiency succeeded: " << eff << std::endl; } result = tool->getScaleFactor(*jet,sf); - if( result!=CorrectionCode::Ok) { std::cout << "Light quark get scale factor failed"<<std::endl; retval=false;} + if( result!=CorrectionCode::Ok) { std::cout << "b jet get scale factor failed"<<std::endl; retval=false;} else { - std::cout << "Light quark get scale factor succeeded: " << sf << std::endl; + std::cout << "b jet get scale factor succeeded: " << sf << std::endl; } - jet->setAttribute("ConeTruthLabelID", 5); - jet->setAttribute("HadronConeExclTruthLabelID", 5); - sf=0; - result = tool->getEfficiency(*jet,sf); - if( result!=CorrectionCode::Ok) { std::cout << "Bottom quark get efficiency failed"<<std::endl; retval=false;} - else { - std::cout << "Bottom quark get efficiency succeeded: " << sf << std::endl; - } - result = tool->getScaleFactor(*jet,sf); - if( result!=CorrectionCode::Ok) { std::cout << "Bottom quark get scale factor failed"<<std::endl; retval=false;} - else { - std::cout << "Bottom quark get scale factor succeeded: " << sf << std::endl; - } - - jet->setAttribute("ConeTruthLabelID", 4); - jet->setAttribute("HadronConeExclTruthLabelID", 4); - sf=0; - result = tool->getEfficiency(*jet,sf); - if( result!=CorrectionCode::Ok) { std::cout << "Charm quark get efficiency failed"<<std::endl; retval=false;} - else { - std::cout << "Charm quark get efficiency succeeded: " << sf << std::endl; - } - result = tool->getScaleFactor(*jet,sf); - if( result!=CorrectionCode::Ok) { std::cout << "Charm quark get scale factor failed"<<std::endl; retval=false;} - else { - std::cout << "Charm quark get scale factor succeeded: " << sf << std::endl; - } - - jet->setAttribute("ConeTruthLabelID", 15); - jet->setAttribute("HadronConeExclTruthLabelID", 15); - sf=0; - result = tool->getEfficiency(*jet,sf); - if( result!=CorrectionCode::Ok) { std::cout << "Tau quark get efficiency failed"<<std::endl; retval=false;} - else { - std::cout << "Tau quark get efficiency succeeded: " << sf << std::endl; - } - result = tool->getScaleFactor(*jet,sf); - if( result!=CorrectionCode::Ok) { std::cout << "Tau quark get scale factor failed"<<std::endl; retval=false;} - else { - std::cout << "Tau quark get scale factor succeeded: " << sf << std::endl; - } - - // systematics interface - jet->setAttribute("ConeTruthLabelID", 5); - jet->setAttribute("HadronConeExclTruthLabelID", 5); - std::cout << "\nTesting application of systematics to b jets..." << std::endl; + std::cout << "Testing function calls with systematics..." << std::endl; CP::SystematicSet systs = tool->affectingSystematics(); for( CP::SystematicSet::const_iterator iter = systs.begin(); iter!=systs.end(); ++iter) { @@ -151,7 +108,7 @@ int main() { SystematicCode sresult = tool->applySystematicVariation(set); if( sresult !=SystematicCode::Ok) { std::cout << var.name() << " apply systematic variation FAILED " << std::endl; - } + } result = tool->getScaleFactor(*jet,sf); if( result!=CorrectionCode::Ok) { std::cout << var.name() << " getScaleFactor FAILED" << std::endl; @@ -165,68 +122,7 @@ int main() { if (dummyResult != SystematicCode::Ok) std::cout << "problem disabling systematics setting!" << std::endl; - // out-of-bounds tests: - // (1) b jet outside the calibration range (300 GeV, at present) but inside the extrapolation range - xAOD::JetFourMom_t p4Extrapolated(500000.,0.7,0.3,1000.); - xAOD::Jet* extrapolatedJet = new xAOD::Jet; - extrapolatedJet->makePrivateStore(); - std::cout << "\nSetting jet 4 momentum for b jet outside calibration but inside extrapolation range" << std::endl; - extrapolatedJet->setJetP4(p4Extrapolated); - extrapolatedJet->setAttribute("ConeTruthLabelID", 5); - extrapolatedJet->setAttribute("HadronConeExclTruthLabelID", 5); - result = tool->getScaleFactor(*extrapolatedJet,sf); - switch (result) { - case CorrectionCode::Error: - std::cout << "extrapolated b-jet get scale factor failed" << std::endl; break; - case CorrectionCode::OutOfValidityRange: - std::cout << "extrapolated b-jet get scale factor should not be flagged as out-of-validity!" << std::endl; break; - case CorrectionCode::Ok: - std::cout << "extrapolated b-jet get scale factor OK" << std::endl; break; - default: - break; - } - // (2) b jet outside the extrapolation range (3000 GeV, at present) - xAOD::JetFourMom_t p4Invalid(4000000.,0.7,0.3,1000.); - xAOD::Jet* invalidJet = new xAOD::Jet; - invalidJet->makePrivateStore(); - std::cout << "\nSetting jet 4 momentum for b jet outside extrapolation range" << std::endl; - invalidJet->setJetP4(p4Invalid); - invalidJet->setAttribute("ConeTruthLabelID", 5); - invalidJet->setAttribute("HadronConeExclTruthLabelID", 5); - result = tool->getScaleFactor(*invalidJet,sf); - if (result != CorrectionCode::OutOfValidityRange) { - std::cout << "invalid b-jet get scale factor should have been flagged as out-of-validity but is not!" << std::endl; - } else { - std::cout << "invalid b-jet get scale factor correctly flagged as out-of-validity" << std::endl; - } - // test tool copying - - // BTaggingEfficiencyTool* copiedTool = new BTaggingEfficiencyTool(*tool); - // std::cout << "-----------------------------------------------------" << std::endl; - // const std::map<CP::SystematicVariation, std::vector<std::string> > copied_variations = copiedTool->listSystematics(); - // std::cout << "Allowed systematics variations for tool " << copiedTool->name() << ":" << std::endl; - // for (auto var : copied_variations) { - // std::cout << std::setw(40) << std::left << var.first.name() << ":"; - // for (auto flv : var.second) std::cout << " " << flv; - // std::cout << std::endl; - // } - // std::cout << "-----------------------------------------------------" << std::endl; - // sf=0; - // result = copiedTool->getEfficiency(*jet,sf); - // if( result!=CorrectionCode::Ok) { std::cout << "Bottom quark get efficiency failed"<<std::endl; retval=false;} - // else { - // std::cout << "Bottom quark get efficiency succeeded: " << sf << std::endl; - // } - // result = copiedTool->getScaleFactor(*jet,sf); - // if( result!=CorrectionCode::Ok) { std::cout << "Bottom quark get scale factor failed"<<std::endl; retval=false;} - // else { - // std::cout << "Bottom quark get scale factor succeeded: " << sf << std::endl; - // } - - - // release our resources - delete tool; return retval; } diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingEigenVectorRecompositionToolTester.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingEigenVectorRecompositionToolTester.cxx new file mode 100644 index 0000000000000000000000000000000000000000..5b7ef7f2ca946dfe18bb577ce13f97c451e9136e --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingEigenVectorRecompositionToolTester.cxx @@ -0,0 +1,108 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + + +#include <AsgTools/AnaToolHandle.h> +#include <AsgTools/ToolHandle.h> +#include "FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h" +#include "FTagAnalysisInterfaces/IBTaggingEigenVectorRecompositionTool.h" + + +int main() { + bool retval = true; + + std::string taggerName = "MV2c10"; + std::string workingPointName = "Continuous"; + + asg::AnaToolHandle<IBTaggingEfficiencyTool> btag_eff_tool("BTaggingEfficiencyTool/BTagEffTest"); + StatusCode code1 = btag_eff_tool.setProperty("ScaleFactorFileName","xAODBTaggingEfficiency/13TeV/2017-21-13TeV-MC16-CDI-2019-07-30_v1.root" ); + StatusCode code2 = btag_eff_tool.setProperty("TaggerName", taggerName ); + StatusCode code3 = btag_eff_tool.setProperty("OperatingPoint", workingPointName); + StatusCode code4 = btag_eff_tool.setProperty("JetAuthor", "AntiKt4EMTopoJets" ); + StatusCode code5 = btag_eff_tool.setProperty("MinPt", 20. ); + // Exclude certain original uncertainties from Eigenvector scheme so that + // it these uncertainties will be exclude from eigen vector recomposition. + // The original uncertainty names are separated by semicolon. + // Here exclude two uncertainties as an example. + // StatusCode code0 = btag_eff_tool.setProperty("ExcludeFromEigenVectorBTreatment","FT_EFF_PDF4LHC_np_19;JET_EffectiveNP_Mixed3"); + StatusCode code6 = btag_eff_tool.initialize(); + if (code1 != StatusCode::SUCCESS + || code2 != StatusCode::SUCCESS + || code3 != StatusCode::SUCCESS + || code4 != StatusCode::SUCCESS + || code5 != StatusCode::SUCCESS + || code6 != StatusCode::SUCCESS ){ + std::cout << "Initialization of tool " << btag_eff_tool->name() << " failed! " << std::endl; + return -1; + } + else { + std::cout << "Initialization of tool " << btag_eff_tool->name() << " finished." << std::endl; + } + + asg::AnaToolHandle<IBTaggingEigenVectorRecompositionTool> evr_tool("BTaggingEigenVectorRecompositionTool/BTagEVRTest"); + StatusCode code7 = evr_tool.setProperty("BTaggingEfficiencyTool", btag_eff_tool); + StatusCode code8 = evr_tool.initialize(); + if (code7 != StatusCode::SUCCESS + ||code8 != StatusCode::SUCCESS ) { + std::cout << "Initialization of tool" << evr_tool->name() << " failed!" << std::endl; + } else { + std::cout << "Initialization of tool " << evr_tool->name() << " finished." << std::endl; + } + + const std::string label = "B"; + const unsigned int evIdx = 0; + + /** + getCoefficientMap(label, EigenIdxList) + + input value: + 1. label: falvor label in std::string format, could be one of B, C, T, Light + 2. EigenIdxList is user defined vector containing all eigenvector index + that user interested in. + output: + Map of format map<string, map<string, float>> containing decomposition + coefficient of the list of eigenvectors defined by EigenIdxList. + */ + std::vector<unsigned int> eigenIdxList = {1,2,3,4,5}; + std::map<std::string, std::map<std::string, float>> coefficientMap = evr_tool->getCoefficientMap(label, eigenIdxList); + + /** + getCoefficients(label, evIdx) + + input value: + 1. label: falvor label in std::string format, could be one of B, C, T, Light + 2. evIdx: The index of eigenvector user interested in. + output value: + vector of coefficient values. The order is the same as output given by + getListOfOriginalNuisanceParameters() + */ + std::vector<float> coeffs = evr_tool->getCoefficients(label, evIdx); + + /** + getListOfOriginalNuisanceParameters(label) + + input value: + 1. label: falvor label in std::string format, could be one of B, C, T, Light + output value: + List of original nuisance parameter names. + */ + std::vector<std::string> orig_nps = evr_tool->getListOfOriginalNuisanceParameters(label); + + /** + getNumEigenVectors(label) + + input value: + 1. label: falvor label in std::string format, could be one of B, C, T, Light + return value: + number of eigen vectors used for chosen label. Return 0 if error occured. + */ + int nEigen = evr_tool->getNumEigenVectors("B"); + if (nEigen >= 0){ + std::cout<<"There are "<<nEigen + <<" eigen vectors for flavour B."<<std::endl; + } + + return retval; + +} diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingSelectionToolTester.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingSelectionToolTester.cxx index d4a739656cbfa36935f6bdc3e5d35682b268323e..4df275359d44231dd1689e25cab6f38cd97d988a 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingSelectionToolTester.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingSelectionToolTester.cxx @@ -2,80 +2,230 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#include "xAODBTaggingEfficiency/BTaggingSelectionTool.h" - +#ifdef XAOD_STANDALONE +#include "xAODRootAccess/TEvent.h" +#else +#include "POOLRootAccess/TEvent.h" +#endif +#include <AsgTools/AnaToolHandle.h> +#include "FTagAnalysisInterfaces/IBTaggingSelectionTool.h" + +#include "PATInterfaces/CorrectionCode.h" #include "xAODJet/JetAuxContainer.h" #include "xAODJet/JetContainer.h" #include "xAODBTagging/BTaggingAuxContainer.h" +#include "xAODBTagging/BTagging.h" +#include "xAODBTagging/BTaggingUtilities.h" + -#include "AsgMessaging/MessageCheck.h" #include <string> #include <iomanip> +#include "TFile.h" + +using CP::CorrectionCode; int main() { - using namespace asg::msgUserCode; - ANA_CHECK_SET_TYPE (int); - BTaggingSelectionTool * tool = new BTaggingSelectionTool("BTagSelecTest"); - ANA_CHECK (tool->setProperty( "MaxEta", 2.5 )); - ANA_CHECK (tool->setProperty( "MinPt", 20000. )); - // ANA_CHECK (tool->setProperty( "FlvTagCutDefinitionsFileName","xAODBTaggingEfficiency/13TeV/2016-20_7-13TeV-MC15-CDI-May31_v1.root" )); - ANA_CHECK (tool->setProperty( "FlvTagCutDefinitionsFileName","xAODBTaggingEfficiency/share/AntiKt2TrackJets_20160615.root" )); - ANA_CHECK (tool->setProperty("TaggerName", "MV2c00_MV2c100" )); - ANA_CHECK (tool->setProperty("OperatingPoint", "2DFixedCutBEff_85" )); - ANA_CHECK (tool->setProperty("JetAuthor", "AntiKt2PV0TrackJets" )); + std::string taggerName = "DL1"; + std::string workingPointName = "HybBEff_77"; + + asg::AnaToolHandle<IBTaggingSelectionTool> tool("BTaggingSelectionTool/BTagSelecTest"); + StatusCode code1 = tool.setProperty( "FlvTagCutDefinitionsFileName","xAODBTaggingEfficiency/13TeV/2017-21-13TeV-MC16-CDI-2018-02-09_v1.root" ); + StatusCode code2 = tool.setProperty("TaggerName", taggerName ); + StatusCode code3 = tool.setProperty("OperatingPoint", workingPointName); + StatusCode code4 = tool.setProperty("JetAuthor", "AntiKt4EMTopoJets" ); // A successful initialisation ought to be checked for - StatusCode code = tool->initialize(); - if (code != StatusCode::SUCCESS) { - std::cout << "Initialization of tool " << tool->name() << " failed! Subsequent results may not make sense." << std::endl; + StatusCode code5 = tool.initialize(); + + if (code1 != StatusCode::SUCCESS || code2 != StatusCode::SUCCESS || code3 != StatusCode::SUCCESS || code4 != StatusCode::SUCCESS || code5 != StatusCode::SUCCESS) { + std::cout << "Initialization of tool " << tool->name() << " failed! " << std::endl; + return -1; } else { std::cout << "Initialization of tool " << tool->name() << " finished." << std::endl; } - bool retval = true; - std::cout << "\nTesting function calls for a large pT range..." << std::endl; - for (unsigned pt=15000; pt<1200000; pt+=100000){ - if (tool->accept(pt, 0.5, 0.5543, 0.)){ - std::cout << "Jet is tagged" << std::endl; - } else { - std::cout << "Jet is untagged" << std::endl; + //load some jets to show how to use the tool + + // xAOD::TEvent event; + #ifdef XAOD_STANDALONE + xAOD::TEvent event(xAOD::TEvent::kClassAccess); + #else + POOL::TEvent event(POOL::TEvent::kClassAccess); + #endif + + + TFile* m_file = TFile::Open("/afs/cern.ch/work/j/jshlomi/public/DAOD_FTAG2.root","read"); + + if(!event.readFrom(m_file).isSuccess()){ std::cout << "failed to load file" << std::endl; return -1; } + + event.getEntry(0); + + const xAOD::JetContainer* jets = 0; + + if (!event.retrieve( jets, "AntiKt4EMTopoJets" ).isSuccess() ){ std::cout << " error retrieving jets " << std::endl; return -1;} + + int jet_index = 0; + for (const xAOD::Jet* jet : *jets) { + + //getting a tagging decision, is the jet tagged or not + bool tagged = static_cast<bool>(tool->accept(*jet)); + + //you can get the tagger weight, + double tagweight; + if( tool->getTaggerWeight( *jet ,tagweight)!=CorrectionCode::Ok ){ std::cout << " error retrieving tagger weight " << std::endl; return -1; } + + std::cout << "jet " << jet_index << " " << taggerName << " " << workingPointName << " is tagged " << tagged << " tag weight " << tagweight << std::endl; + + + + + //if you have DL1 weights, you can get the tagger weight this way + const xAOD::BTagging *btag = xAOD::BTaggingUtilities::getBTagging( *jet ); + + double dl1_pb = btag->auxdata<double>("DL1_pb"); + double dl1_pc = btag->auxdata<double>("DL1_pc"); + double dl1_pu = btag->auxdata<double>("DL1_pu"); + + + if( tool->getTaggerWeight(dl1_pb,dl1_pc,dl1_pu, tagweight) !=CorrectionCode::Ok ){ std::cout << " error retrieving tagger weight " << std::endl; return -1; } + + std::cout << " tagweight " << tagweight << std::endl; + + double pT = jet->pt(); + double eta = jet->eta(); + + // you can see if the jet is tagged using its pt/eta and tagweight + + tagged = static_cast<bool>(tool->accept(pT,eta,tagweight)); + + //you can also extract the cut value (which may or may not depend on the jet pt) + + double cutval; + //provide the pt in MeV + if( tool->getCutValue( jet->pt() , cutval)!=CorrectionCode::Ok ){ std::cout << " error retrieving cut value " << std::endl; return -1; } + + std::cout << " tagged " << tagged << " cut value " << cutval << std::endl; + + jet_index++; + + } + + //Continuous working points + //************************* + //with a selection tool using the Continuous working point, + //you can get the jets tag weight bin (between the different fixedcutBEff working points, 60,70,77,85) + taggerName = "DL1"; + workingPointName = "Continuous"; + asg::AnaToolHandle<IBTaggingSelectionTool> tool_Continuous("BTaggingSelectionTool/BTagSelContinuousTest"); + code1 = tool_Continuous.setProperty( "FlvTagCutDefinitionsFileName","xAODBTaggingEfficiency/13TeV/2017-21-13TeV-MC16-CDI-2018-02-09_v1.root" ); + code2 = tool_Continuous.setProperty("TaggerName", taggerName ); + code3 = tool_Continuous.setProperty("OperatingPoint", workingPointName ); + code4 = tool_Continuous.setProperty("JetAuthor", "AntiKt4EMTopoJets" ); + code5 = tool_Continuous.initialize(); + + if (code1 != StatusCode::SUCCESS || code2 != StatusCode::SUCCESS || code3 != StatusCode::SUCCESS || code4 != StatusCode::SUCCESS || code5 != StatusCode::SUCCESS) { + std::cout << "Initialization of tool " << tool_Continuous->name() << " failed! " << std::endl; + return -1; + } + else { + std::cout << "Initialization of tool " << tool_Continuous->name() << " finished." << std::endl; + } + + jet_index = 0; + for (const xAOD::Jet* jet : *jets) { + + double tagweight; + if( tool->getTaggerWeight( *jet ,tagweight)!=CorrectionCode::Ok ){ + std::cout << " error retrieving tagger weight " << std::endl; return -1; } + int quantile = tool_Continuous->getQuantile(*jet); + + + std::cout << "jet " << jet_index << " " << taggerName << " " << workingPointName << " tag weight " << tagweight << " quantile " << quantile << std::endl; + + jet_index++; + } - // #### Trying to build a b-jet on the fly - // auto JetAuxContainer = new xAOD::JetAuxContainer(); - // auto JetContainer = new xAOD::JetContainer(); - // JetContainer->setStore(JetAuxContainer); - // auto tjet = new xAOD::Jet(); - // JetContainer->push_back(tjet); - - // std::cout << "jet container ready, now btagging ones" << std::endl; - - // auto BTaggingAuxContainer = new xAOD::BTaggingAuxContainer(); - // auto BTaggingContainer = new xAOD::BTaggingContainer(); - // BTaggingContainer->setStore(BTaggingAuxContainer); - // auto BTagging = new xAOD::BTagging(); - // BTaggingContainer->push_back(BTagging); - - // std::cout << "BTagging container ready, now the store" << std::endl; - // xAOD::TStore store; - // store.record(JetContainer, "JetTest"); - // store.record(JetAuxContainer, "JetTestAux."); - // store.record(BTaggingContainer, "BTagTest"); - // store.record(BTaggingAuxContainer, "BTagTestAux."); - // std::cout << "Store ready" << std::endl; - // std::cout << tjet << "\t\t" << BTaggingContainer << "\t\t" << BTagging << std::endl; - - // ElementLink< xAOD::BTaggingContainer> linkBTagger; - // linkBTagger.toContainedElement(*BTaggingContainer, BTagging); - // // tjet->setBTaggingLink(linkBTagger); - // // BTagging->setVariable("MV2c20", "discriminant", 0.20); - // ###### - - return retval; + + //Veto working points + //************************** + //by setting the OperatingPoint to a string with the format WP1_Veto_Tagger2_WP2 + //for example, FixedCutBEff_70_Veto_DL1_CTag_Loose + //the selection tool will require the jet to be + //tagged by the standard working point + //and to not be tagged by the secondary tagger and working point + + taggerName = "MV2c10"; + workingPointName = "FixedCutBEff_70_Veto_DL1_CTag_Loose"; + + asg::AnaToolHandle<IBTaggingSelectionTool> tool_veto("BTaggingSelectionTool/BTagSelecVetoTest"); + code1 = tool_veto.setProperty( "FlvTagCutDefinitionsFileName","xAODBTaggingEfficiency/13TeV/2017-21-13TeV-MC16-CDI-2018-02-09_v1.root" ); + code2 = tool_veto.setProperty("TaggerName", taggerName ); + code3 = tool_veto.setProperty("OperatingPoint", workingPointName ); + code4 = tool_veto.setProperty("JetAuthor", "AntiKt4EMTopoJets" ); + code5 = tool_veto.initialize(); + + if (code1 != StatusCode::SUCCESS || code2 != StatusCode::SUCCESS || code3 != StatusCode::SUCCESS || code4 != StatusCode::SUCCESS || code5 != StatusCode::SUCCESS) { + std::cout << "Initialization of tool " << tool_veto->name() << " failed! " << std::endl; + return -1; + } + else { + std::cout << "Initialization of tool " << tool_veto->name() << " finished." << std::endl; + } + + + jet_index = 0; + for (const xAOD::Jet* jet : *jets) { + + //getting a tagging decision, is the jet tagged or not + bool tagged = static_cast<bool>(tool_veto->accept(*jet)); + + + // if you are using a format without xAOD::Jets or where the jet does not have a properly filled b-tagging object, + // you need the two tagger weights, for the nominal tagger and the veto tagger. + + //you can get the tagger weight, + double tagweight_nominal; + double tagweight_veto_tagger; + + if( tool_veto->getTaggerWeight( *jet ,tagweight_nominal)!=CorrectionCode::Ok ){ std::cout << " error retrieving nominal tagger weight " << std::endl; return -1; } + //use a third argument set to true to getTaggerWeight for the veto tagger weight + if( tool_veto->getTaggerWeight( *jet ,tagweight_veto_tagger,true)!=CorrectionCode::Ok ){ std::cout << " error retrieving veto tagger weight " << std::endl; return -1; } + + + //if you have DL1 weights, you can get the tagger weight this way + const xAOD::BTagging *btag = xAOD::BTaggingUtilities::getBTagging( *jet ); + + double dl1_pb = btag->auxdata<double>("DL1_pb"); + double dl1_pc = btag->auxdata<double>("DL1_pc"); + double dl1_pu = btag->auxdata<double>("DL1_pu"); + + //the 5th argument tells it to retrive the veto tagger weight + if( tool_veto->getTaggerWeight(dl1_pb,dl1_pc,dl1_pu, tagweight_veto_tagger,true) !=CorrectionCode::Ok ){ std::cout << " error retrieving tagger weight " << std::endl; return -1; } + + + + double pT = jet->pt(); + double eta = jet->eta(); + + bool tagged_withtagweights = static_cast<bool>(tool_veto->accept(pT,eta,tagweight_nominal,tagweight_veto_tagger)); + + + std::cout << "jet " << jet_index << " " << taggerName << " " << workingPointName << " is tagged " << tagged << " tagged (with tagweights) "<< tagged_withtagweights << std::endl; + + jet_index++; + + } + + + + + + return 0; } diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingTruthTaggingTester.cxx b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingTruthTaggingTester.cxx new file mode 100644 index 0000000000000000000000000000000000000000..960db42f713b7deb485e8576330a3edbbd8ed5e9 --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/util/BTaggingTruthTaggingTester.cxx @@ -0,0 +1,99 @@ +#include "AsgTools/AsgTool.h" +#include "AsgMessaging/MessageCheck.h" +#include "AsgMessaging/MsgStream.h" +#include <AsgTools/AnaToolHandle.h> +#include "FTagAnalysisInterfaces/IBTaggingTruthTaggingTool.h" + + +#include <string> +#include <iomanip> +#include <vector> + +int main() { + + asg::AnaToolHandle<IBTaggingTruthTaggingTool> tool("BTaggingTruthTaggingTool/BtagTT_Tool"); + + + //choose working point and CDI file + StatusCode code = tool.setProperty("TaggerName", "MV2c10"); + StatusCode code2 = tool.setProperty("OperatingPoint", "FixedCutBEff_77"); + StatusCode code3 = tool.setProperty("JetAuthor", "AntiKt4EMTopoJets"); + StatusCode code4 = tool.setProperty("ScaleFactorFileName", "xAODBTaggingEfficiency/13TeV/2017-21-13TeV-MC16-CDI-2018-02-09_v1.root"); + + + //truth tagging settings + StatusCode code5 = tool.setProperty("IgnoreScaleFactors", false); //use the data/MC and MC/MC scale factors when computing event weights + StatusCode code6 = tool.setProperty("UseSystematics", true); // store event weights for all systematic variations in the results object + StatusCode code7 = tool.setProperty("MaxNtagged", 3); + StatusCode code8 = tool.setProperty("UsePermutations", true); + StatusCode code9 = tool.setProperty("UseQuantile", true); + + StatusCode code10 = tool.initialize(); + + if (code != StatusCode::SUCCESS || code2 != StatusCode::SUCCESS || code3 != StatusCode::SUCCESS || code4 != StatusCode::SUCCESS || code5 != StatusCode::SUCCESS || + code6 != StatusCode::SUCCESS || code7 != StatusCode::SUCCESS || code8 != StatusCode::SUCCESS || code9 != StatusCode::SUCCESS || code10 != StatusCode::SUCCESS ) { + std::cout << "Initialization of tool " << tool->name() << " failed! " << std::endl; + return -1; + } + else { + std::cout << "Initialization of tool " << tool->name() << " finished." << std::endl; + } + + //Set the jets to be used in the tool. + std::vector<double> pt = {44000., 66000., 77000.}; + std::vector<double> eta = {2.2, 1.6, 1.7}; + std::vector<int> flav = {0,4,5}; + std::vector<double> tagw = {0.3, 0.55, 0.99}; + + Analysis::TruthTagResults results; + + if(StatusCode::SUCCESS!=tool->CalculateResults( pt,eta,flav,tagw, results) ){ + std::cout << "failed to compute truth tagging results! " << std::endl; + return -1; + }; + + //direct tagged results: + std::cout << "Direct tagged results: "<< std::endl; + for(unsigned int i=0; i< results.is_tagged.size();i++) + { + std::cout << "jet "<< i << " is direct tagged: " << results.is_tagged.at(i) << std::endl; + } + //print the results for each of the systematic variations + + for(unsigned int systindex=0; systindex< results.syst_names.size(); systindex++){ + std::string syst_name = results.syst_names.at(systindex); + + std::cout << "direct tag Event SF ( "<< syst_name <<" ) = " <<results.getEvtDirectTagSF(syst_name) << std::endl; + + } + + + //truth tagging results: + for(int ntags=1; ntags<=3;ntags++){ + + std::cout << " for " << ntags << " tagged jets: " << std::endl; + std::cout << " --------------------------------- " << std::endl; + //print chosen premutation, tagweight bin assinment and event weight + + std::vector<bool> exclusive_permuation = results.getEventPermutation(ntags,true); + std::vector<int> exclusive_tagweightBin = results.getEventQuantiles(ntags,true); + + std::vector<bool> inclusive_permuation = results.getEventPermutation(ntags,false); + std::vector<int> inclusive_tagweightBin = results.getEventQuantiles(ntags,false); + + std::cout << " exclusive || inclusive" << std::endl; + std::cout << " tagged | bin || tagged | bin" << std::endl; + for(unsigned int i=0; i< exclusive_permuation.size();i++) + { + std::cout << "jet "<< i << " " << exclusive_permuation.at(i) << " " << exclusive_tagweightBin.at(i) + << " || " << inclusive_permuation.at(i) << " " << inclusive_tagweightBin.at(i) << std::endl; + } + + std::cout << " Nominal event weight exclusive: " << results.getEventWeight(ntags,true,"Nominal") << std::endl; + std::cout << " Nominal event weight inclusive: " << results.getEventWeight(ntags,false,"Nominal") << std::endl; + std::cout << " ---------------------------------\n\n " << std::endl; + + } + + return 0; +} diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingEfficiencyTool.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingEfficiencyTool.h index 0a1e9b595d4447bceef93e04fa6cf8cc53e33569..08daa349783d8147662c9a5ec6f56d722397582f 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingEfficiencyTool.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingEfficiencyTool.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -196,6 +196,20 @@ class BTaggingEfficiencyTool: public asg::AsgTool, std::map<std::string, std::vector<std::string> > listScaleFactorSystematics(bool named = false) const; /// @} + /** + * Run EigenvectorRecomposition method and get the coefficient map. + * Calling EigenVectorRecomposition method in CDI and retrieve recomposition map. + * If success, coefficientMap would be filled and return ok. + * If failed, return error. + * label : flavour label + * coefficientMap: store returned coefficient map. This map could help expressing eigenvector NPs by linear + * combination of original uncertainty NPs in workspace level of physics analysis. The coefficient value + * is stored in the map in the format of: + * map<"Eigen_B_0", map<"[original uncertainty name]", [corresponding coefficient value]>> + */ + CP::CorrectionCode getEigenRecompositionCoefficientMap(const std::string &label, std::map<std::string, std::map<std::string, float>> & coefficientMap); + /// @} + private: struct SystInfo { @@ -344,7 +358,6 @@ private: /// actual information identifying efficiency calibration objects std::map<unsigned int, unsigned int> m_EffIndices; - //cache for efficiency map config file that maps from a sample DSID to the correct efficiency map std::map<unsigned int, unsigned int> m_DSID_to_MapIndex; /// @} diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingEigenVectorRecompositionTool.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingEigenVectorRecompositionTool.h new file mode 100644 index 0000000000000000000000000000000000000000..2e8b1f2084343ab4685e17ae4d54d65d8ae85fe5 --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingEigenVectorRecompositionTool.h @@ -0,0 +1,130 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +/////////////////////////////////////////////////////////////////// +// BTaggingEigenVectorRecomposition.h, (c) ATLAS Detector software +/////////////////////////////////////////////////////////////////// +/** +@class BTaggingEigenVectorRecompositionTool +Tool to help retrieving(from CDI) and providing coefficents values which +could be used for expressing eigen vector NPs by linear combination of +original uncertainty NPs in workspace level of the physics analysis. +Then eigenvector uncertainties are replaced by original uncertainties. +Replacement could help us correlate uncertainties between analyses +which are using different tagger algorighthms. +@author Y. Ke, Q. Buat +@contact yake@cern.ch, qbuat@cern.ch +**/ +#ifndef CPBTAGGINGEIGENVECTORRECOMPOSITIONTOOL_H +#define CPBTAGGINGEIGENVECTORRECOMPOSITIONTOOL_H + +#include "FTagAnalysisInterfaces/IBTaggingEigenVectorRecompositionTool.h" +#include "FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h" +#include "PATInterfaces/ISystematicsTool.h" +#include "PATInterfaces/SystematicCode.h" + +#include <string> +#include <vector> +#include <map> + +#include "AsgTools/AsgTool.h" +#include "AsgTools/ToolHandle.h" +#include "AsgTools/AnaToolHandle.h" + +class BTaggingEigenVectorRecompositionTool: public asg::AsgTool, + public virtual IBTaggingEigenVectorRecompositionTool +{ + /// Create a proper constructor for Athena + ASG_TOOL_CLASS2( BTaggingEigenVectorRecompositionTool, IBTaggingEigenVectorRecompositionTool, ISystematicsTool) + + public: + + + /// Create a constructor for standalone usage + BTaggingEigenVectorRecompositionTool( const std::string& name ); + + /// Create a constructor for standalone usage + virtual ~BTaggingEigenVectorRecompositionTool(); + + /** + * Return a vector which contains a list of original vector uncertainties names. + * vector list is for the chosen flavour label. The order of the names is the same + * as the coefficient values given by getCoefficients() + **/ + std::vector<std::string> getListOfOriginalNuisanceParameters(const std::string& label) const; + + /** + * Produce a coefficient map contains only eigenvectors that is showing in + * eigenIdxList and return it to user. If given empty evIdxList, the function + * returns a full map. Produced map is for the chosen flavour label. + **/ + std::map<std::string, std::map<std::string, float>> getCoefficientMap(const std::string & label, + const std::vector<unsigned int> eigenIdxList = + std::vector<unsigned int>()) const; + + /** + * Returns a vector contains the coefficients value of the chosen label + * and the chosen eigenvector. The order of the value is the same as + * the order of original uncertainty names given by + * getListOfOriginalNuisanceParameters() + **/ + std::vector<float> getCoefficients(const std::string & label, const unsigned int evIdx) const; + + // Return number of eigenvectors used for the chosen label. + int getNumEigenVectors(const std::string & label)const; + + /** + * Initialize BtaggingEfficiencyTool handle and retrieve coefficient map for + * all flavours. Also initialize vectors which contains all original sources + * uncertainties' names. One vector for each flavour. + **/ + StatusCode initialize(); + + // this returns a list of systematics supported by the btaggingEfficiency tool handle + CP::SystematicSet affectingSystematics() const; + + /** it indicates which systematic shifts are to be applied for all future calls + * no systematics for now, proxy for later + **/ + CP::SystematicCode applySystematicVariation( const CP::SystematicSet & systConfig); + + /** + * subset of systematics that are recommended by the + * btaggingEfficiency tool handle + **/ + CP::SystematicSet recommendedSystematics() const; + + /** + * returns true if the argument systematic is supported by the + * btaggingEfficiency tool handle + **/ + bool isAffectedBySystematic( const CP::SystematicVariation & systematic ) const; + + + private: + + // memeber variable maps which has format: + // map<"Eigen_[flavour]_[index]", map<"[original uncertainty name]", coefficent value> + // One map for each flavour. + std::map<std::string, std::map<std::string, float>> m_coefficientMapB; + std::map<std::string, std::map<std::string, float>> m_coefficientMapC; + std::map<std::string, std::map<std::string, float>> m_coefficientMapT; + std::map<std::string, std::map<std::string, float>> m_coefficientMapLight; + + // contains list of original uncertainty names. The aim for having this + // is to keep the order of uncertainty names. + // One list for each flavour. + std::vector<std::string> m_NPnameListB; + std::vector<std::string> m_NPnameListC; + std::vector<std::string> m_NPnameListT; + std::vector<std::string> m_NPnameListLight; + + // BtaggingEfficiencyTool handle. + ToolHandle<IBTaggingEfficiencyTool> m_btageffTool; + +}; + +#endif // CPBTAGGINGEIGENVECTORRECOMPOSITIONTOOL_H diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingSelectionTool.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingSelectionTool.h index 3f9fc8f3eb5cc163af40af8c51512e50da72b3a8..b57be79b68e07815770108486bc2002c45912af2 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingSelectionTool.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingSelectionTool.h @@ -1,8 +1,7 @@ - // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -44,7 +43,7 @@ class BTaggingSelectionTool: public asg::AsgTool, /// Create a constructor for standalone usage BTaggingSelectionTool( const std::string& name ); StatusCode initialize() override; - + /// Get the decision using a generic IParticle pointer virtual asg::AcceptData accept( const xAOD::IParticle* p ) const override; virtual asg::AcceptData accept( const xAOD::Jet& jet ) const override; @@ -56,9 +55,9 @@ class BTaggingSelectionTool: public asg::AsgTool, /// Decide in which quantile of the MV2c20 weight distribution the jet belongs (continuous tagging) /// The return value represents the bin index of the quantile distribution - virtual int getQuantile( const xAOD::IParticle*) const override; - virtual int getQuantile( const xAOD::Jet&) const override; - virtual int getQuantile( double /* jet pt */, double /* jet eta */, double /* mv2c20 weight */) const override; + virtual int getQuantile( const xAOD::IParticle* ) const override; + virtual int getQuantile( const xAOD::Jet& ) const override; + virtual int getQuantile( double /* jet pt */, double /* jet eta */, double /* mv2c20 weight */ ) const override; virtual CP::CorrectionCode getCutValue(double /* jet pt */, double & cutval, bool useVetoWP = false) const override; virtual CP::CorrectionCode getTaggerWeight( const xAOD::Jet& jet, double & weight ,bool useVetoWP = false) const override; @@ -67,13 +66,13 @@ class BTaggingSelectionTool: public asg::AsgTool, const asg::AcceptInfo& getAcceptInfo( ) const override {return m_acceptinfo;} private: /// Helper function that decides whether a jet belongs to the correct jet selection for b-tagging - virtual bool checkRange( double /* jet pt */, double /* jet eta */, asg::AcceptData& ) const; + virtual bool checkRange( double /* jet pt */, double /* jet eta */ , asg::AcceptData& ) const; //fill the spline or vector that store the cut values for a particular working point void InitializeTaggerVariables(std::string taggerName,std::string OP, TSpline3 *spline, TVector *constcut, double &fraction); bool m_initialised; - bool m_ErrorOnTagWeightFailure; + bool m_ErrorOnTagWeightFailure; /// Object used to store the last decision asg::AcceptInfo m_acceptinfo; diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingTruthTaggingTool.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingTruthTaggingTool.h new file mode 100644 index 0000000000000000000000000000000000000000..0be22b4cb31a39bbd980d47ac0f7deff24a0009d --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/BTaggingTruthTaggingTool.h @@ -0,0 +1,266 @@ +// Dear emacs, this is -*- c++ -*- +/////////////////////////////////////////////////////////////////// +// BTaggingTruthTaggingTool.h, (c) ATLAS Detector software +/////////////////////////////////////////////////////////////////// +/** + @class BTaggingTruthTaggingTool + Tool to apply flavour-tagging requirements on jets + @author C. Rizzi, M. Ughetto + @contact chiara.rizzi@cern.ch, mughetto@cern.ch +**/ + +#ifndef CPBTAGGINGTRUTHTAGGINGTOOL_H +#define CPBTAGGINGTRUTHTAGGINGTOOL_H + +#include "FTagAnalysisInterfaces/IBTaggingTruthTaggingTool.h" +#include "xAODBTagging/BTagging.h" + +#include "AsgTools/AsgTool.h" +#include "AsgMessaging/MessageCheck.h" + +#include "TFile.h" +#include "TRandom3.h" +#include "TVector.h" +#include "TFile.h" +#include <string> +#include <vector> +#include <map> + +// include xAODBtaggingEfficiency classes +#include "FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h" +#include "FTagAnalysisInterfaces/IBTaggingSelectionTool.h" +#include "xAODBTaggingEfficiency/BTaggingEfficiencyTool.h" +#include "AsgTools/AnaToolHandle.h" + +// calibration data variable +#include "CalibrationDataInterface/CalibrationDataVariables.h" +#include "xAODBTaggingEfficiency/TruthTagResults.h" + +// xAOD jet +#include "xAODJet/JetContainer.h" + +class BTaggingTruthTaggingTool: public asg::AsgTool, + public virtual IBTaggingTruthTaggingTool { + //typedef double (xAOD::BTagging::* tagWeight_member_t)() const; + + /// Create a proper constructor for Athena + ASG_TOOL_CLASS2( BTaggingTruthTaggingTool , IBTaggingTruthTaggingTool, ISystematicsTool ) + + private: + struct jetVariable{ + Analysis::CalibrationDataVariables vars; + int flav; + }; + + // all the results about a single event are stored in this object + struct TRFinfo { + + std::vector<jetVariable> jets; + unsigned int njets; + + TRandom3 rand; + + std::vector<std::vector<bool> > perm_ex; // for each tag mult, vector of bool: is the i-th jet tagged or not? + std::vector<std::vector<bool> > perm_in; + std::vector<std::vector<double> > trfwsys_ex; // map between syst and vecot with truth-tag weights (pos = # of b-tags) + std::vector<std::vector<double> > trfwsys_in; + std::vector<std::vector<int> > tbins_ex; //for each tag mult, vector of int: quantile of each jet + std::vector<std::vector<int> > tbins_in; + + std::vector<double> effMC; // map between syst and vector of eff*SF for each jet + std::vector<double> eff; // map between syst and vector of eff*SF for each jet + + std::map<std::string,std::vector<double>> eff_allOP; // same but map for each OP + std::map<std::string,std::vector<double>> effMC_allOP; // same but map for each OP + std::vector<double> permprob_ex; // probablity of chosen perm with nominal SF + std::vector<double> permprob_in; + std::vector<double> binsprob_ex; // probability of chosen quantile with nominal SF + std::vector<double> binsprob_in; + + std::map<int,std::vector<std::vector<std::vector<bool> > > > perms; + std::vector<std::vector<double> > permsWeight; + std::vector<std::vector<double> > permsSumWeight; + + }; + + public: + /// Create a constructor for standalone usage + BTaggingTruthTaggingTool( const std::string& name ); + + private: + StatusCode CalculateResults(TRFinfo &trfinf, Analysis::TruthTagResults& results,int rand_seed = -1); + + public: + StatusCode CalculateResults( std::vector<double>& pt, std::vector<double>& eta, std::vector<int>& flav, std::vector<double>& tagw, Analysis::TruthTagResults& results,int rand_seed = -1); + StatusCode CalculateResults( const xAOD::JetContainer& jets, Analysis::TruthTagResults& results,int rand_seed = -1); + StatusCode setEffMapIndex(const std::string& flavour, unsigned int index); + void setUseSystematics(bool useSystematics); + + virtual ~BTaggingTruthTaggingTool(); + + StatusCode initialize(); + + CP::SystematicSet affectingSystematics() const; + CP::SystematicCode applySystematicVariation( const CP::SystematicSet & systConfig); + CP::SystematicSet recommendedSystematics() const; + bool isAffectedBySystematic( const CP::SystematicVariation & systematic ) const; + + + private: + + // set the jets in the event (pass same jets that satisfy kinematic criteria for b-tagging in pT and eta) + StatusCode setJets(TRFinfo &trfinf,std::vector<double>& pt, std::vector<double>& eta, std::vector<int>& flav, std::vector<double>& tagw); + StatusCode setJets(TRFinfo &trfinf,const xAOD::JetContainer& jets); + StatusCode setJets(TRFinfo &trfinf,std::vector<int>& flav, std::vector<Analysis::CalibrationDataVariables>* vars); + + // get truth tagging weights + // for one single systematic (including "Nominal") + StatusCode GetTruthTagWeights(TRFinfo &trfinf, std::vector<double> &trf_weight_ex, std::vector<double> &trf_weight_in, int sys=0); + + // tag permutation: trf_chosen_perm_ex.at(ntag).at(i) tells if the i-th jet is tagged in a selection requiring == ntag tags + StatusCode getTagPermutation(TRFinfo &trfinf, std::vector<std::vector<bool> > &trf_chosen_perm_ex, std::vector<std::vector<bool> > &trf_chosen_perm_in); + + // chosen quantile: trf_bin_ex.at(ntag).at(i) tells the quantile in which the i-th jet falls in a selection requiring == ntag tags + // returns 5 if between 60% and 0% + // returns 4 if between 70% and 60% + // returns 3 if between 77% and 70% + // returns 2 if between 85% and 77% + // returns 1 if between 100% and 85% + // returns 0 if smaller than -1e4-> should never happen --> not currently implemented + // return -1 if bigger than 1e4 or not in b-tagging acceptance --> not currently implemented + StatusCode getQuantiles(TRFinfo &trfinf,std::vector<std::vector<int> > &trf_bin_ex, std::vector<std::vector<int> > &trf_bin_in); + + // functions to make comparison with direct-tagging easier + double getEvtSF(TRFinfo &trfinf,int syst=0); + StatusCode getDirectTaggedJets(TRFinfo &trfinf,std::vector<bool> &is_tagged); + + //These WP must be listed in ascending order of cut value, meaning 85 to 60 + std::vector<std::string> m_availableOP_fixCut= {"FixedCutBEff_85", "FixedCutBEff_77","FixedCutBEff_70","FixedCutBEff_60"}; + std::vector<std::string> m_availableOP_fixEff= {"FlatBEff_85", "FlatBEff_77", "FlatBEff_70", "FlatBEff_60"}; + std::vector<std::string> m_availableOP_HybEff= {"HybBEff_85", "HybBEff_77", "HybBEff_70", "HybBEff_60"}; + std::vector<std::string> m_availableOP; + + //this vector gets filled automatically when you initialize the tool, and given to the user. + std::vector<float> m_binEdges = {}; + TFile *m_inf; //file for reading the cut values from the CDI. + + bool m_initialised; + + StatusCode getTRFweight(TRFinfo &trfinf,unsigned int nbtag, bool isInclusive, int sys); + StatusCode getAllEffMC(TRFinfo &trfinf); + StatusCode getAllEffSF(TRFinfo &trfinf,int =0); + std::vector<CP::SystematicSet> m_eff_syst; + std::vector<std::string> m_sys_name; + + // flav labelling + int jetFlavourLabel (const xAOD::Jet& jet); + + int GAFinalHadronFlavourLabel(const xAOD::Jet& jet); + int ConeFinalPartonFlavourLabel (const xAOD::Jet& jet); + int ExclusiveConeHadronFlavourLabel (const xAOD::Jet& jet); + std::vector<std::string> split(const std::string& str, char token); + //*********************************// + // Prop. of BTaggingEfficiencyTool // + //*********************************// + + /// name of the data/MC efficiency scale factor calibration file (may be changed by the @c PathResolver) + std::string m_SFFile; + /// name of the optional MC efficiency file (may be changed by the @c PathResolver) + std::string m_EffFile; + /// name of the data/MC scale factor calibration for b jets + std::string m_SFBName; + /// name of the data/MC scale factor calibration for charm jets + std::string m_SFCName; + /// name of the data/MC scale factor calibration for tau jets + std::string m_SFTName; + /// name of the data/MC scale factor calibration for light-flavour jets + std::string m_SFLightName; + /// specification of the eigenvector reduction strategy for b jets (if eigenvectors are used) + std::string m_EVReductionB; + /// specification of the eigenvector reduction strategy for c jets (if eigenvectors are used) + std::string m_EVReductionC; + /// specification of the eigenvector reduction strategy for light-flavour jets (if eigenvectors are used) + std::string m_EVReductionLight; + /// semicolon-separated list of MC efficiency parametrisation names for b jets + std::string m_EffBName; + /// semicolon-separated list of MC efficiency parametrisation names for charm jets + std::string m_EffCName; + /// semicolon-separated list of MC efficiency parametrisation names for tau jets + std::string m_EffTName; + /// semicolon-separated list of MC efficiency parametrisation names for light-flavour jets + std::string m_EffLightName; + /// semicolon-separated list of uncertainties to be excluded from the eigenvector variation procedure + std::string m_excludeFromEV; + /// tagger name + std::string m_taggerName; + /// operating point + std::string m_OP; + /// operating point when running in Continuous + std::string m_cutBenchmark; + /// jet collection name + std::string m_jetAuthor; + /// systematics model to be used (current choices are "SFEigen" and "Envelope") + std::string m_systStrategy; + /// if true, attempt to retrieve the data/MC efficiency scale factor calibration files from the @PathResolver development area + bool m_useDevFile; + /// if true, use cone-based labelling (as opposed to ghost association) + bool m_coneFlavourLabel; + /// when using cone-based labelling (see above), if true, use the "traditional" (parton-based) labelling instead of the current default (hadron-based, exclusive) + bool m_oldConeFlavourLabel; + /// in case of continuous WP you can choose to ignore some of the eigenvectors + std::string m_excludeEV; + ///possibility to compute the direct tagging SFs map directly from the TruthTaggingTool + bool m_doDirectTag; + + //*********************************// + // Prop. of BTaggingSelectionTool // + //*********************************// + + double m_maxEta; + double m_minPt; + double m_maxRangePt; + // std::string m_CutFileName; + + // properties of truth tagging + bool m_doOnlyUpVariations; + bool m_ignoreSF; + bool m_usePerm; + bool m_useQuntile; + bool m_continuous; + bool m_useSys; + int m_nbtag; + + unsigned int m_OperatingPoint_index; + + std::map<std::string, asg::AnaToolHandle<IBTaggingEfficiencyTool> > m_effTool_allOP; + + + asg::AnaToolHandle<IBTaggingEfficiencyTool> m_effTool; + asg::AnaToolHandle<IBTaggingSelectionTool> m_selTool; //! + + StatusCode check_syst_range(unsigned int sys); + + std::vector<std::vector<bool> > generatePermutations(int njets, int tags, int start=0); + + double trfWeight(TRFinfo &trfinf,const std::vector<bool> &tags); + + StatusCode chooseAllTagPermutation(TRFinfo &trfinf,unsigned int nbtag); + StatusCode chooseTagPermutation(TRFinfo &trfinf,unsigned int nbtag, bool isIncl); + double getPermutationRW(TRFinfo &trfinf,bool isIncl,unsigned int nbtag, int sys); + + + StatusCode chooseAllTagBins(TRFinfo &trfinf); + StatusCode chooseTagBins_cum(TRFinfo &trfinf,std::vector<bool> &tagconf, bool isIncl, unsigned int nbtag); + StatusCode generateRandomTaggerScores(std::vector< std::vector<int> > &quantiles, std::vector< std::vector<double> > &scores); + double getTagBinsConfProb(TRFinfo &trfinf,std::vector<int> &tagws); + double getTagBinsRW(TRFinfo &trfinf,bool isIncl, unsigned int nbtag); + + + bool fillVariables(const xAOD::Jet& jet, Analysis::CalibrationDataVariables& x); + bool fillVariables(const double jetPt, const double jetEta, const double jetTagWeight, Analysis::CalibrationDataVariables& x); + + +}; + +#endif // CPBTAGGINGTRUTHTAGGINGTOOL_H + diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/IBTaggingEfficiencyTool.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/IBTaggingEfficiencyTool.h new file mode 100644 index 0000000000000000000000000000000000000000..bc478ba0f68d140238da3daecc19f838d8ec17c6 --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/IBTaggingEfficiencyTool.h @@ -0,0 +1,8 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ +#pragma message "The IBTaggingEfficiencyTool has moved to FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h . Please update your code." +#include <FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h> + diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/IBTaggingSelectionTool.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/IBTaggingSelectionTool.h new file mode 100644 index 0000000000000000000000000000000000000000..909e70a7ca0631bcc461360c81204087c107e6c3 --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/IBTaggingSelectionTool.h @@ -0,0 +1,8 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#pragma message "The IBTaggingSelectionTool has moved to FTagAnalysisInterfaces/IBTaggingSelectionTool.h . Please update your code." +#include <FTagAnalysisInterfaces/IBTaggingSelectionTool.h> diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/IBTaggingTruthTaggingTool.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/IBTaggingTruthTaggingTool.h new file mode 100644 index 0000000000000000000000000000000000000000..594b019d030c7f59b9299b6affedd032ed711b92 --- /dev/null +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/IBTaggingTruthTaggingTool.h @@ -0,0 +1,8 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#pragma message "The IBTaggingTruthTaggingTool has moved to FTagAnalysisInterfaces/IBTaggingTruthTaggingTool.h . Please update your code." +#include <FTagAnalysisInterfaces/IBTaggingTruthTaggingTool.h> diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/selection.xml b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/selection.xml index 071e1453f681170bfd4b8d5b17bdcf69c27ba87a..ed6cc9f04fbfc81a9e43c3d277878193d66df033 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/selection.xml +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/selection.xml @@ -2,4 +2,6 @@ <lcgdict> <class name="BTaggingEfficiencyTool" /> <class name="BTaggingSelectionTool" /> + <class name="BTaggingTruthTaggingTool" /> + <class name="BTaggingEigenVectorRecompositionTool" /> </lcgdict> diff --git a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/xAODBTaggingEfficiencyDict.h b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/xAODBTaggingEfficiencyDict.h index 3caca03f85580c68d5e8881336a357d1651492aa..18952ec7a5edffd4953a5b153726fddf15697bcc 100644 --- a/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/xAODBTaggingEfficiencyDict.h +++ b/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/xAODBTaggingEfficiency/xAODBTaggingEfficiencyDict.h @@ -13,5 +13,6 @@ #include "xAODBTaggingEfficiency/BTaggingEfficiencyTool.h" #include "xAODBTaggingEfficiency/BTaggingSelectionTool.h" - +#include "xAODBTaggingEfficiency/BTaggingTruthTaggingTool.h" +#include "xAODBTaggingEfficiency/BTaggingEigenVectorRecompositionTool.h" #endif // XAODBTAGGINGEFFICIENCY_XAODBTAGGINGEFFICIENCYDICT_H diff --git a/PhysicsAnalysis/PATJobTransforms/share/skeleton.AODtoDAOD_tf.py b/PhysicsAnalysis/PATJobTransforms/share/skeleton.AODtoDAOD_tf.py index 95545c85dceab9224ffb6e09335ff8ef1f9daa46..6a7f35948b2b301061d3c2b66976619dff00927b 100644 --- a/PhysicsAnalysis/PATJobTransforms/share/skeleton.AODtoDAOD_tf.py +++ b/PhysicsAnalysis/PATJobTransforms/share/skeleton.AODtoDAOD_tf.py @@ -52,9 +52,13 @@ elif hasattr(runArgs,'inputEVNTFile') or hasattr(runArgs,'jobConfig'): rec.doForwardDet.set_Value_and_Lock(False) rec.doFileMetaData.set_Value_and_Lock(False) rec.doTruth.set_Value_and_Lock( True ) + rec.doTrigger.set_Value_and_Lock( False ) + rec.doWriteTAG.set_Value_and_Lock( False ) from AthenaCommon.DetFlags import DetFlags DetFlags.detdescr.BField_setOff() athenaCommonFlags.FilesInput = runArgs.inputEVNTFile + # Do not load conditions; this is running on EVNT + globalflags.ConditionsTag = '' # Leave the remainder for the internal setup else: msg.error('AOD Reduction job started, but with no AOD inputs - aborting') diff --git a/PhysicsAnalysis/PATJobTransforms/share/skeleton.ESDtoDPD_tf.py b/PhysicsAnalysis/PATJobTransforms/share/skeleton.ESDtoDPD_tf.py index d4c8788bc2210caad74935856e0fb6b111d7f506..995cee0bfd60bfe61a4e65fe48f4f969bd67b948 100644 --- a/PhysicsAnalysis/PATJobTransforms/share/skeleton.ESDtoDPD_tf.py +++ b/PhysicsAnalysis/PATJobTransforms/share/skeleton.ESDtoDPD_tf.py @@ -152,11 +152,6 @@ try: except(ImportError): print("WARNING D3PDMakerFlags not available. ") pass -try: - from SUSYD3PDMaker.SUSYD3PDFlags import SUSYD3PDFlags -except(ImportError): - print("WARNING SUSYD3PDFlags not available. ") - pass ## Pre-exec if hasattr(runArgs,"preExec"): diff --git a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValSUSY_jobOptions.py b/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValSUSY_jobOptions.py deleted file mode 100644 index e0e5a93a8576bfb4c292501995397c74daa85c7b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/PhysicsValidation/PhysValMonitoring/share/PhysValSUSY_jobOptions.py +++ /dev/null @@ -1,125 +0,0 @@ -### configuration -run_default_rel19 = True -run_migrated_rel17_tools = True -rel17_use_separate_output = False -run_other_tools = { - 'MET' : True, - 'Muon' : True, - 'Tau' : True, - 'InDet': False, -} - - -### print configuration -print "PhysValSUSY job options:" -print " Running default release 19 tool : %s" % str(run_default_rel19) -print " Running migrated release 17 tool : %s" % str(run_migrated_rel17_tools) -print " output in separate file : %s" % str(rel17_use_separate_output) -print " Running following other tools : %s" % str(run_other_tools) - - -### consistency checks - -# avoid tools being added twice -for other_tool_name in [other_tool for other_tool, run_this in run_other_tools.items() if run_this is True]: - if "do" + other_tool_name in vars(): - if vars()["do" + other_tool_name] is True: - print "Configuration warning: do%s was already set active, removing from configuration." % other_tool_name - run_other_tools[other_tool_name] = False - - -### perform initialization / add tools - -if run_default_rel19: - # add default tool - from SUSYPhysValMonitoring.SUSYPhysValMonitoringConf import SUSYPhysVal__SUSYPhysValMonitoring - - tool1 = SUSYPhysVal__SUSYPhysValMonitoring() - tool1.EnableLumi = False - tool1.OutputLevel = INFO - tool1.DetailLevel = 10 - tool1.UseTruthInformation = True - - from AthenaCommon.AppMgr import ToolSvc - - monMan = CfgMgr.AthenaMonManager("PhysValMonManager") - monMan.AthenaMonTools += [ tool1 ] - - -for run_other_tool in [other_tool for other_tool, run_this in run_other_tools.items() if run_this is True]: - # add "external tools" - include("PhysValMonitoring/PhysVal" + run_other_tool + "_jobOptions.py") - - -if run_migrated_rel17_tools: - # add migrated tool (main part of old release 17 validation package) - - ### imports - from SUSYPhysValMonitoring.SUSYPhysValMonitoringConf import * - - doTrigger = False - doTruth = False - - # specify input container names - TrigDecisionTool = "TrigDecisionTool" - McEventCollection = "GEN_AOD" - TrackParticleContainer = "TrackParticleCandidate" - JetContainer = "AntiKt4EMTopoJets" ##leave off the suffix "Jets" - ElectronContainer = "ElectronCollection" - MuonContainer = "Muons" - TauJetContainer = "TauRecContainer" - MissingET = "MET_RefFinal" - # for 17.2.1 (SUSYD3PDMaker-00-12-00) - # SUSY_MET_name = "MET_RefFinal_Simplified20" # MET name to be used by SUSYSusyRec.cxx - # SUSY_MET_muons_name = "MET_Muon_Total_Staco_Simplified20" # MET muons contribution name to be used by SUSYSusyRec.cxx - # for 17.2.7.5.9 (SUSYD3PDMaker-00-12-36) - #SUSY_MET_name = "MET_RefFinal_Egamma10NoTau" # MET name to be used by SUSYSusyRec.cxx - #SUSY_MET_muons_name = "MET_Muon_Staco_Egamma10NoTau" # MET muons contribution name to be used by SUSYSusyRec.cxx - SUSY_MET_name = "Final" - SUSY_MET_muons_name = "Muons" - - # init and add tool - SusyPlot = SUSYPlot("SusyPlot") - SusyPlot.DoTrigger = doTrigger - SusyPlot.DoTruth = doTruth - SusyPlot.HistToolKeys = [ "SUSYSusyRec/susyTool" ] - SusyPlot += SUSYSusyRec("susyTool") - SusyPlot.susyTool.ElectronName = ElectronContainer - SusyPlot.susyTool.MuonName = MuonContainer - SusyPlot.susyTool.TauName = TauJetContainer - SusyPlot.susyTool.JetName = JetContainer - SusyPlot.susyTool.MetName = MissingET - SusyPlot.susyTool.SUSYMissingET = SUSY_MET_name - SusyPlot.susyTool.SUSYMissingETMuons = SUSY_MET_muons_name - SusyPlot.susyTool.McEventName = McEventCollection - SusyPlot.susyTool.OutputLevel = INFO - if doTrigger: - SusyPlot.TrigDecisionTool = ToolSvc.TrigDecisionTool - SusyPlot.susyTool.PtLeptonCut = 20*GeV - SusyPlot.susyTool.PtLeptonPreCut = 20*GeV - SusyPlot.susyTool.EtIsolCut = 10*GeV - SusyPlot.susyTool.EtMissCut = 80*GeV - SusyPlot.susyTool.etaJetCut = 3 - SusyPlot.susyTool.PtJetCut = 20*GeV - SusyPlot.susyTool.PtJet0Cut = 60*GeV - SusyPlot.susyTool.PtJet1Cut = 30*GeV - SusyPlot.susyTool.MeffCut = 500*GeV - SusyPlot.susyTool.MTCut = 100*GeV - SusyPlot.susyTool.STCut = 0.2 - - topSequence += SusyPlot - - if rel17_use_separate_output: - ### if you want to write histograms to separate file use this: - from AthenaCommon.AppMgr import theApp - theApp.HistogramPersistency = "ROOT" - from AthenaCommon.AppMgr import ServiceMgr - ## The string "TestMon" in the argument below is the 'FileKey' - ## used by Athena to access the output file internally - svcMgr.THistSvc.Output += ["PhysVal2 DATAFILE='hist.root' OPT='RECREATE'"] - svcMgr.THistSvc.PrintAll = True - svcMgr.THistSvc.OutputLevel = DEBUG - else: - SusyPlot.susyTool.HistBaseDirectory = "/PhysVal/SUSY/ETmiss/" - - diff --git a/PhysicsAnalysis/PrimaryDPDMaker/python/PrimaryDPDFlags.py b/PhysicsAnalysis/PrimaryDPDMaker/python/PrimaryDPDFlags.py index bde8beb00ab826cd7818ae7fef32edf8008f5350..c086a7c36e3a594f5a299cd977c27b39caa2a449 100644 --- a/PhysicsAnalysis/PrimaryDPDMaker/python/PrimaryDPDFlags.py +++ b/PhysicsAnalysis/PrimaryDPDMaker/python/PrimaryDPDFlags.py @@ -515,19 +515,6 @@ class WriteDAOD_SCTVALIDStream(JobProperty): jobproperties.PrimaryDPDFlags.add_JobProperty(WriteDAOD_SCTVALIDStream) listRAWtoDPD.append(WriteDAOD_SCTVALIDStream.StreamName) -class WriteDAOD_PIXELVALIDStream(JobProperty): - """ Produce the DPD for DAOD_PIXELVALID - AOD with PrepRawData """ - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "StreamDAOD_PIXELVALID" - FileName = "" - isVirtual = False - DPDMakerScript = "InDetPrepRawDataToxAOD/PixelxAOD.py" - pass -jobproperties.PrimaryDPDFlags.add_JobProperty(WriteDAOD_PIXELVALIDStream) -listRAWtoDPD.append(WriteDAOD_PIXELVALIDStream.StreamName) - class WriteDAOD_IDTIDEStream(JobProperty): """ Produce the DPD for DAOD_IDTIDE - AOD with PrepRawData """ statusOn = True diff --git a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/CMakeLists.txt b/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/CMakeLists.txt deleted file mode 100644 index 6a435952794fce4b7369a0cb7201b49a2e1f08e7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -################################################################################ -# Package: SUSYPhysTagTools -################################################################################ - -# Declare the package name: -atlas_subdir( SUSYPhysTagTools ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaBaseComps - Database/AthenaPOOL/AthenaPoolUtilities - GaudiKernel - PhysicsAnalysis/EventTag/TagEvent - PRIVATE - Reconstruction/Jet/JetEvent ) - -# External dependencies: -find_package( CLHEP ) - -# Component(s) in the package: -atlas_add_library( SUSYPhysTagToolsLib - src/*.cxx - PUBLIC_HEADERS SUSYPhysTagTools - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} JetEvent ) - -atlas_add_component( SUSYPhysTagTools - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent JetEvent SUSYPhysTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/SUSYPhysTagTools/SUSYPhysTagTool.h b/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/SUSYPhysTagTools/SUSYPhysTagTool.h deleted file mode 100755 index d7cf7ece5196ea986486254b1ff684967045a4b8..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/SUSYPhysTagTools/SUSYPhysTagTool.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef SUSYPHYSTAGTOOL_H -#define SUSYPHYSTAGTOOL_H - -/***************************************************************************** -Name : SUSYPhysTagTool.h -Package : offline/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : build the SUSYPhys Tag object - AnalysisTag.h. - The SUSYPhys Analysis Tag fragment is built here - For example encoding the results of hypotheses on different channels -*****************************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -#include <map> - -/** Interface ID for SUSYPhysTagTool*/ -static const InterfaceID IID_SUSYPhysTagTool("SUSYPhysTagTool", 1, 0); - -class SUSYPhysTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - SUSYPhysTagTool(const std::string& type, const std::string& name, const IInterface* -parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_SUSYPhysTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string, AthenaAttributeType>& attrMap, const int max); - virtual StatusCode execute(TagFragmentCollection& susyTagCol, const int max); - virtual StatusCode finalize(); - -private: - - /** Properties */ - std::string m_jetContainerName; - double m_jetPtCut; - }; - -#endif // BPHYSTAGTOOL_H - - - diff --git a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/doc/packagedoc.h b/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/doc/packagedoc.h deleted file mode 100644 index 6de8154ee0cfabacf57cb7ac614575c7e24a79c0..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/doc/packagedoc.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page SUSYPhysTagTools_page SUSYPhysTagTools - -@section SUSYPhysTagTools_introductionSUSYPhysTagTools Introduction -This package contains the alg tools for building the TAG fragment for SUSY Physics Analysis - -@section SUSYPhysTagTools_packagecontentSUSYPhysTagTools Package Contents -SUSYPhysTagTools contains the following tools: - -- SUSYPhysTagTool ... tool for SUSY Physics Analysis TAG fragment - -- for questions and comments: ketevi@bnl.gov - - - -*/ diff --git a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/share/SUSYPhysTagTool_jobOptions.py b/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/share/SUSYPhysTagTool_jobOptions.py deleted file mode 100755 index 42d629b62cd76cda2a87807a4187a0cbfb663a86..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/share/SUSYPhysTagTool_jobOptions.py +++ /dev/null @@ -1,14 +0,0 @@ -include.block ("SUSYPhysTagTools/SUSYPhysTagTool_jobOptions.py") - -########### SUSYPhysics analysis Tag options ################ - -from SUSYPhysTagTools.SUSYPhysTagToolsConf import \ -SUSYPhysTagTool as ConfiguredSUSYPhysTagTool -SUSYPhysTagTool=ConfiguredSUSYPhysTagTool( - JetContainer = "AntiKt4TopoJets", - EtCut = 15.0*GeV) -ToolSvc += SUSYPhysTagTool - - - - diff --git a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/src/SUSYPhysTagTool.cxx b/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/src/SUSYPhysTagTool.cxx deleted file mode 100755 index 0d81bda279a3c7b111ad822c600c513edcc1533e..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/src/SUSYPhysTagTool.cxx +++ /dev/null @@ -1,81 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : SUSYPhysTagTool.cxx -Package : offline/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : create a SUSYPhysTag - a word to encode SUSYPhys specific information such - as the results of hypotheses - -*****************************************************************************/ - -#include "Gaudi/Property.h" -#include "CLHEP/Units/SystemOfUnits.h" - - -#include "JetEvent/JetCollection.h" - -#include "SUSYPhysTagTools/SUSYPhysTagTool.h" -#include "TagEvent/SUSYPhysAttributeNames.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -/** the constructor */ -SUSYPhysTagTool::SUSYPhysTagTool (const std::string& type, const -std::string& name, const IInterface* parent) : - AthAlgTool( type, name, parent ) { - - /** AOD Container Names */ - declareProperty("JetContainer", m_jetContainerName = "AntiKt4TopoJets"); - - /** Pt cut on jte - modifiable in job options */ - declareProperty("EtCut", m_jetPtCut = 15.0*CLHEP::GeV); - - declareInterface<SUSYPhysTagTool>( this ); -} - -/** initialization - called once at the begginning */ -StatusCode SUSYPhysTagTool::initialize() { - ATH_MSG_DEBUG( "in intialize()" ); - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode SUSYPhysTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, - const int max) { - - ATH_MSG_DEBUG( "in attributeSpecification()" ); - - /** specifiy the SUSYPhys the attributes */ - - attrMap[ SusyAttributeNames[0] ] = AthenaAttributeType("unsigned int", SusyAttributeUnitNames[0] , SusyAttributeGroupNames[0]); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** execute - called on every event */ -StatusCode SUSYPhysTagTool::execute(TagFragmentCollection& susyTagCol, const int max) { - - ATH_MSG_DEBUG( "in execute()" ); - - /** fill the SUSYPhys analysis tag */ - - unsigned int fragment = 0x0; - susyTagCol.insert( SusyAttributeNames[0], fragment ); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** finialize - called once at the end */ -StatusCode SUSYPhysTagTool::finalize() { - ATH_MSG_DEBUG( "in finalize()" ); - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/src/components/SUSYPhysTagTools_entries.cxx b/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/src/components/SUSYPhysTagTools_entries.cxx deleted file mode 100644 index ad6f3c5d298c05ca4295c22cb4f4e27249e64e3c..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/SUSYPhys/SUSYPhysTagTools/src/components/SUSYPhysTagTools_entries.cxx +++ /dev/null @@ -1,6 +0,0 @@ -#include "SUSYPhysTagTools/SUSYPhysTagTool.h" - - -DECLARE_COMPONENT( SUSYPhysTagTool ) - - diff --git a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/CMakeLists.txt b/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/CMakeLists.txt deleted file mode 100644 index f6898917e652c91f626def4af85466c98a226497..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -################################################################################ -# Package: StandardModelPhysTagTools -################################################################################ - -# Declare the package name: -atlas_subdir( StandardModelPhysTagTools ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaBaseComps - Database/AthenaPOOL/AthenaPoolUtilities - GaudiKernel - PhysicsAnalysis/EventTag/TagEvent - PRIVATE - Reconstruction/Jet/JetEvent ) - -# External dependencies: -find_package( CLHEP ) - -# Component(s) in the package: -atlas_add_library( StandardModelPhysTagToolsLib - src/*.cxx - PUBLIC_HEADERS StandardModelPhysTagTools - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} JetEvent ) - -atlas_add_component( StandardModelPhysTagTools - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps AthenaPoolUtilities GaudiKernel TagEvent JetEvent StandardModelPhysTagToolsLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/StandardModelPhysTagTools/StandardModelPhysTagTool.h b/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/StandardModelPhysTagTools/StandardModelPhysTagTool.h deleted file mode 100755 index fcdbb1b80758c4f3a53c01868df0e1c19909338d..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/StandardModelPhysTagTools/StandardModelPhysTagTool.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef STANDARDMODELPHYSTAGTOOL_H -#define STANDARDMODELPHYSTAGTOOL_H - -/***************************************************************************** -Name : StandardModelPhysTagTool.h -Package : offline/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : build the StandardModelPhys Tag object - AnalysisTag.h. - The StandardModelPhys Analysis Tag fragment is built here - For example encoding the results of hypotheses on different channels -*****************************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" -#include "TagEvent/TagFragmentCollection.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -#include <map> - -/** Interface ID for StandardModelPhysTagTool*/ -static const InterfaceID IID_StandardModelPhysTagTool("StandardModelPhysTagTool", 1, 0); - -class StandardModelPhysTagTool : public AthAlgTool { - -public: - - /** Standard Constructor */ - StandardModelPhysTagTool(const std::string& type, const std::string& name, const IInterface* parent); - - /** AlgTool and IAlgTool interface methods */ - static const InterfaceID& interfaceID( ) { return IID_StandardModelPhysTagTool; }; - - /** Overriding initialize, finalize and execute */ - virtual StatusCode initialize(); - virtual StatusCode attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, const int max); - virtual StatusCode execute(TagFragmentCollection& smTagCol, const int max); - virtual StatusCode finalize(); - -private: - - /** Properties */ - std::string m_jetContainerName; - double m_jetPtCut; - }; - -#endif // STANDARDMODELPHYSTAGTOOL_H - - - diff --git a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/doc/packagedoc.h b/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/doc/packagedoc.h deleted file mode 100644 index 8f47eae703628d7730431097d5480553e59a3b9f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/doc/packagedoc.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page StandardModelPhysTagTools_page StandardModelPhysTagTools - -@section StandardModelPhysTagTools_introductionStandardModelPhysTagTools Introduction -This package contains the alg tools for building the TAG fragment for Standard Model Physics Analysis - -@section StandardModelPhysTagTools_packagecontentStandardModelPhysTagTools Package Contents -StandardModelPhysTagTools contains the following tools: - -- StandardModelPhysTagTool ... tool for Standard Model Physics Analysis TAG fragment - -- for questions and comments: ketevi@bnl.gov - - - -*/ diff --git a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/share/StandardModelPhysTagTool_jobOptions.py b/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/share/StandardModelPhysTagTool_jobOptions.py deleted file mode 100755 index 185133f97a0d9a0975f8f0c82f8ef618b2cb3429..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/share/StandardModelPhysTagTool_jobOptions.py +++ /dev/null @@ -1,14 +0,0 @@ -include.block ("StandardModelPhysTagTools/StandardModelPhysTagTool_jobOptions.py") - -########### StandardModelPhysics analysis tag options ################ - -from StandardModelPhysTagTools.StandardModelPhysTagToolsConf import \ -StandardModelPhysTagTool as ConfiguredSMTagTool -StandardModelPhysTagTool=ConfiguredSMTagTool( - JetContainer = "AntiKt4TopoJets", - EtCut = 15.0*GeV) -ToolSvc += StandardModelPhysTagTool - - - - diff --git a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/src/StandardModelTagTool.cxx b/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/src/StandardModelTagTool.cxx deleted file mode 100755 index 33efb0d5cb5d4ec5321c5a3141ee4fac7f6d75ef..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/src/StandardModelTagTool.cxx +++ /dev/null @@ -1,81 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/***************************************************************************** -Name : StandardModelPhysTagTool.cxx -Package : offline/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools -Author : Ketevi A. Assamagan -Created : January 2006 -Purpose : create a StandardModelPhysTag - a word to encode StandardModelPhys specific information such - as the results of hypotheses - -*****************************************************************************/ - -#include "Gaudi/Property.h" -#include "CLHEP/Units/SystemOfUnits.h" -#include "GaudiKernel/GaudiException.h" - -#include "JetEvent/JetCollection.h" - -#include "StandardModelPhysTagTools/StandardModelPhysTagTool.h" -#include "TagEvent/StandardModelPhysAttributeNames.h" -#include "AthenaPoolUtilities/AthenaAttributeSpecification.h" - -/** the constructor */ -StandardModelPhysTagTool::StandardModelPhysTagTool (const std::string& type, const -std::string& name, const IInterface* parent) : - AthAlgTool( type, name, parent ) { - - /** AOD Container Names */ - declareProperty("JetContainer", m_jetContainerName = "AntiKt4TopoJets"); - - /** Pt cut on jte - modifiable in job options */ - declareProperty("EtCut", m_jetPtCut = 15.0*CLHEP::GeV); - - declareInterface<StandardModelPhysTagTool>( this ); -} - -/** initialization - called once at the begginning */ -StatusCode StandardModelPhysTagTool::initialize() { - ATH_MSG_DEBUG( "in intialize()" ); - return StatusCode::SUCCESS; -} - -/** build the attribute list - called in initialize */ -StatusCode StandardModelPhysTagTool::attributeSpecification(std::map<std::string,AthenaAttributeType>& attrMap, - const int max) { - - ATH_MSG_DEBUG( "in attributeSpecification()" ); - - /** specifiy the StandardModelPhys the attributes */ - - attrMap[ SmAttributeNames[0] ] = AthenaAttributeType("unsigned int", SmAttributeUnitNames[0], SmAttributeGroupNames[0]) ; - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** execute - called on every event */ -StatusCode StandardModelPhysTagTool::execute(TagFragmentCollection& smTagCol, const int max) { - - ATH_MSG_DEBUG( "in execute()" ); - - /** fill the StandardModelPhys analysis tag */ - - unsigned int fragment = 0x0; - smTagCol.insert( SmAttributeNames[0], fragment ); - - /** add more stuff if necessary */ - for (int i=0; i<max; ++i) {} - - return StatusCode::SUCCESS; -} - -/** finialize - called once at the end */ -StatusCode StandardModelPhysTagTool::finalize() { - ATH_MSG_DEBUG( "in finalize()" ); - return StatusCode::SUCCESS; -} diff --git a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/src/components/StandardModelPhysTagTools_entries.cxx b/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/src/components/StandardModelPhysTagTools_entries.cxx deleted file mode 100644 index db1570d0cb00541dd52ca466fafb72d912175cd2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/StandardModelPhysTagTools/src/components/StandardModelPhysTagTools_entries.cxx +++ /dev/null @@ -1,6 +0,0 @@ -#include "StandardModelPhysTagTools/StandardModelPhysTagTool.h" - - -DECLARE_COMPONENT( StandardModelPhysTagTool ) - - diff --git a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/CMakeLists.txt b/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/CMakeLists.txt deleted file mode 100644 index 21051da08efde6a6293b20013d98e61cdc39a9db..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -################################################################################ -# Package: WZSkims -################################################################################ - -# Declare the package name: -atlas_subdir( WZSkims ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaBaseComps - Control/AthenaKernel - Control/StoreGate - GaudiKernel - Reconstruction/Jet/JetEvent - Reconstruction/MissingETEvent - Reconstruction/MuonIdentification/muonEvent - Reconstruction/Particle - Reconstruction/egamma/egammaEvent - Trigger/TrigAnalysis/TrigDecisionTool - PRIVATE - Trigger/TrigEvent/TrigSteeringEvent ) - -# Component(s) in the package: -atlas_add_component( WZSkims - src/*.cxx - src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps AthenaKernel StoreGateLib SGtests GaudiKernel JetEvent MissingETEvent muonEvent Particle egammaEvent TrigDecisionToolLib TrigSteeringEvent ) - -# Install files from the package: -atlas_install_headers( WZSkims ) -atlas_install_joboptions( share/*.py ) - diff --git a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/WZSkims/WZSkimsMain.h b/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/WZSkims/WZSkimsMain.h deleted file mode 100644 index 866e08ea8ca26316a6c37819b3d27af510bf027b..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/WZSkims/WZSkimsMain.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include <string> - -#include "AthenaBaseComps/AthFilterAlgorithm.h" - -#include "GaudiKernel/MsgStream.h" // Athena stuff -#include "GaudiKernel/ISvcLocator.h" -#include "GaudiKernel/ToolHandle.h" -#include "GaudiKernel/ObjectVector.h" - -#include "StoreGate/StoreGateSvc.h" // Storegate stuff -#include "StoreGate/DataHandle.h" -#include "AthenaKernel/DefaultKey.h" - -#include "GaudiKernel/ToolHandle.h" -#include "GaudiKernel/Algorithm.h" -#include "GaudiKernel/ObjectVector.h" - -#include "muonEvent/MuonContainer.h" // Physics objects containers -#include "egammaEvent/ElectronContainer.h" -#include "MissingETEvent/MissingET.h" -#include "Particle/TrackParticle.h" - -#include "JetEvent/Jet.h" -#include "JetEvent/JetCollection.h" - -#include "TrigDecisionTool/TrigDecisionTool.h" // Trigger tool -class TriggerAnalysisTool; - -using namespace Analysis; - -///////////////////////////////////////////////////////////////////////////// -class WZSkimsMain:public AthFilterAlgorithm { - - public: - WZSkimsMain (const std::string& name, ISvcLocator* pSvcLocator); - StatusCode initialize(); - StatusCode execute(); - StatusCode finalize(); - - bool CheckCuts(); - bool SetCuts(std::string thisSkim); - bool performSkim(std::string thisSkim); - - std::vector<const Jet*> OpenJets(); - std::vector<const Electron*> OpenElectrons(); - std::vector<const Analysis::Muon*> OpenMuons(std::string l_muonContainerName); - - std::vector<bool> CheckElectronVector(std::vector<const Electron*> AllElectronsVector, double l_electronPtCut, double l_electronEtaCut, std::string l_electronType); - std::vector<bool> CheckMuonVector(std::vector<const Analysis::Muon*> AllMuonsVector, double l_muonPtCut, double l_muonEtaCut, std::string l_muonType); - bool CheckLeptonCuts(unsigned int l_electronNumber, unsigned int l_electronNumber2, std::vector<bool> l_GoodElectronsFlag1, std::vector<bool> l_GoodElectronsFlag2); - - struct lepton - { - bool medium; - bool tight; - double eta; - double phi; - double pt; - }; - - void ReadMuons(const std::vector<const Analysis::Muon*> & muons, std::vector<struct lepton> & leptons); - void ReadElectrons(const std::vector<const Electron*> & electrons, std::vector<struct lepton> & leptons); - bool CheckJetLeptonOverlap(const std::vector<const Jet*> & jets, const std::vector<struct lepton> & leptons); - - bool CheckInvMass(std::vector<const Electron*> ElectronV, std::vector<bool> l_GoodElectronsFlag1, std::vector<bool> l_GoodElectronsFlag2); - bool CheckInvMass(std::vector<const Analysis::Muon*> MuonV, std::vector<bool> l_GoodMuonsFlag1, std::vector<bool> l_GoodMuonsFlag2); - - bool Prescale(); - - bool SelectTrack(); - bool SelectEtmiss(std::string l_missingEtObjectName); - bool SelectEtmiss(); - bool SelectTrigger(); -// bool SelectEvent(); - - enum SkimTypes { Jpsiee, Jpsimumu, Zee, Zmumu, Wenu, Wmunu, TagAndProbeElec, TagAndProbeMuon, - BackgroundElec, BackgroundMuon, Ztautau, TwoElectrons, TwoMuons, - eee, eemu, emumu, mumumu, Wenujj, Wmunujj, Custom }; - - - private: - /** a handle on Store Gate for access to the Event Store */ - StoreGateSvc* m_storeGate; - - long m_n_events; - long m_n_good_events; - - bool m_doSkim; - - bool m_doJpsieeSkim; - bool m_doJpsimumuSkim; - bool m_doZeeSkim; - bool m_doZmumuSkim; - bool m_doWenuSkim; - bool m_doWmunuSkim; - bool m_doZtautauSkim; - bool m_doTagAndProbeElecSkim; - bool m_doTagAndProbeMuonSkim; - bool m_doBackgroundElecSkim; - bool m_doBackgroundMuonSkim; - bool m_doZeeWithTagAndProbeSkim; - bool m_doZmumuWithTagAndProbeSkim; - bool m_doTwoLeptonsSkim; - bool m_doThreeLeptonsSkim; - bool m_doWenujjSkim; - bool m_doWmunujjSkim; - bool m_doCustomSkim; - - bool m_skimVec[20]; // 20 = Number of existing skims ; additive skims like doZeeWithTagAndProbeSkim dont count - - - std::string m_electronContainerName; - std::string m_muonContainerName; - std::string m_trackContainerName; - std::string m_missingEtObjectName; - std::string m_jetContainerName; - - - unsigned int m_electronNumber; - unsigned int m_electronNumber2; - double m_electronPtCut; - double m_electronPtCut2; - double m_electronEtaCut; - double m_electronEtaCut2; - std::string m_electronType; - std::string m_electronType2; - - - unsigned int m_muonNumber; - unsigned int m_muonNumber2; - double m_muonPtCut; - double m_muonPtCut2; - double m_muonEtaCut; - double m_muonEtaCut2; - std::string m_muonType; - std::string m_muonType2; - - - unsigned int m_jetNumber; - double m_jetPtCut; - double m_jetEtaCut; - bool m_jetOverlapRemovalWithTight; - bool m_jetOverlapRemovalWithMedium; - bool m_jetOverlapRemovalWithMediumIfNoTight; - std::vector<double> m_jetOverlapEtaRange; - double m_jetOverlapDrCut; - - - bool m_doTrackCut; - double m_TrackPtCut; - double m_TrackEtaCut; - - - bool m_doEtmissCut; - double m_EtmissCut; - - bool m_doInvMassCut; - double m_Mmin; - double m_Mmax; - - bool m_doTriggerCut; - std::string m_triggerName; - std::string m_triggerName2; - Trig::TrigDecisionTool* m_trigDec; - - bool m_doPrescale; - unsigned int m_prescaleRate; - unsigned int m_prescaleCounter; -}; diff --git a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions.py b/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions.py deleted file mode 100644 index c52d3a5e9f1fbcf33c643884306113986546af85..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions.py +++ /dev/null @@ -1,279 +0,0 @@ -# WZSkims Athena Job Options file for various skims -# Homero Martinez, Bernardo Resende, Sanya Solodkov -# 17/02/12 - -################################################### - -# new light Skim (keep only high-pt objects and much less details) -if not 'LightSkim' in dir(): - LightSkim = False; - -# use old full Skim, but less details for MET and Jets and keep only high-pt objects -if not 'MediumSkim' in dir(): - MediumSkim = False; - -# enable or disable GSF electrons -from RecExConfig.RecAlgsFlags import recAlgs -if not 'doGSF' in dir(): - doGSF = recAlgs.doEgammaBremReco(); - -# enable or disable trigger fillers (to speed-up tests) -if not 'doTrig' in dir(): - doTrig = True; # can not use global variable doTrigger - -# global output level (1=VERBOSE, 2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL) -if not 'OL' in dir(): - OL = WARNING; # can not use global variable OutputLevel - -# special output level for WZSkim algorithm -if not 'SkimOL' in dir(): - SkimOL = min(INFO,OL) - -if not 'EvtMAX' in dir(): - EvtMAX = -1; # can not use global variable EvtMax - -if not 'EvtMIN' in dir(): - EvtMIN = 0; - -# Set up a logger: -from AthenaCommon.Logging import logging -WZSkims_msg = logging.getLogger( 'WZSkims' ) -WZSkims_msg.setLevel(OL) -WZSkims_msg.info("LightSkim = %s " % LightSkim) -WZSkims_msg.info("MediumSkim = %s " % MediumSkim) -WZSkims_msg.info("doGSF = %s " % doGSF) -WZSkims_msg.info("doTrig = %s " % doTrig) -WZSkims_msg.info("OL = %s " % OL) -WZSkims_msg.info("SkimOL = %s " % SkimOL) -WZSkims_msg.info("EvtMIN = %s " % EvtMIN) -WZSkims_msg.info("EvtMAX = %s " % EvtMAX) - -################################################### - -# Debug output -from AthenaCommon.AppMgr import theApp -svcMgr = theApp.serviceMgr() -svcMgr.MessageSvc.OutputLevel = OL -svcMgr.MessageSvc.defaultLimit = 1000000 -svcMgr.MessageSvc.Format = "% F%80W%S%7W%R%T %0W%M" -svcMgr.MessageSvc.useColors = False - -# Input file -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput= ["AOD.pool.root"] - -# Output file -if not globals().get('tupleFileOutput'): - tupleFileOutput = 'WZSkimsD3PD.root' - -# Configure RecExCommon -from RecExConfig.RecFlags import rec -rec.doCBNT.set_Value_and_Lock(False) -rec.doWriteESD.set_Value_and_Lock(False) -rec.doWriteAOD.set_Value_and_Lock(False) -rec.doAOD.set_Value_and_Lock(False) -rec.doESD.set_Value_and_Lock(False) -rec.doDPD.set_Value_and_Lock(False) -rec.doWriteTAG.set_Value_and_Lock(False) -rec.doForwardDet.set_Value_and_Lock(False) -rec.OutputLevel = OL - -# Example of changing D3PD maker flags. -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags -D3PDMakerFlags.DoTrigger = doTrig - -if LightSkim: - rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMWZLightD3PD.py") -else: - rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMWZD3PD.py") - -if doGSF: - include ("RecExCond/RecExCommon_flags.py") - DetFlags.ID_setOn() - DetFlags.geometry.Calo_setOn() - recAlgs.doEgammaBremReco.set_Value_and_Lock(True) - -# Main jobOption - must always be included!!! -include ("RecExCommon/RecExCommon_topOptions.py") - -# Number of events to be processed -theApp.EvtMax = EvtMAX -svcMgr.EventSelector.SkipEvents = EvtMIN - - -# Stops writing of monitoring ntuples -from PerfMonComps.PerfMonFlags import jobproperties as jp -jp.PerfMonFlags.doMonitoring = False -jp.PerfMonFlags.doFastMon = False - - - - -# Configure WZSkims -from WZSkims.WZSkimsConf import WZSkimsMain - -# Select skim to do (please select only one!) -if ('doJpsiee' in dir() and doJpsiee): - WZSkimsMain.doJpsieeSkim = True -elif ('doJpsimumu' in dir() and doJpsimumu): - WZSkimsMain.doJpsimumuSkim = True -elif ('doZee' in dir() and doZee): - WZSkimsMain.doZeeSkim = True -elif ('doZmumu' in dir() and doZmumu): - WZSkimsMain.doZmumuSkim = True -elif ('doWenu' in dir() and doWenu): - WZSkimsMain.doWenuSkim = True -elif ('doWmunu' in dir() and doWmunu): - WZSkimsMain.doWmunuSkim = True -elif ('doTagAndProbeElec' in dir() and doTagAndProbeElec): - WZSkimsMain.doTagAndProbeElecSkim = True -elif ('doTagAndProbeMuon' in dir() and doTagAndProbeMuon): - WZSkimsMain.doTagAndProbeMuonSkim = True -elif ('doBackgroundElec' in dir() and doBackgroundElec): - WZSkimsMain.doBackgroundElecSkim = True -elif ('doBackgroundMuon' in dir() and doBackgroundMuon): - WZSkimsMain.doBackgroundMuonSkim = True -elif ('doZtautau' in dir() and doZtautau): - WZSkimsMain.doZtautauSkim = True -elif ('doZeeWithTagAndProbe' in dir() and doZeeWithTagAndProbe): - WZSkimsMain.doZeeWithTagAndProbeSkim = True -elif ('doZmumuWithTagAndProbe' in dir() and doZmumuWithTagAndProbe): - WZSkimsMain.doZmumuWithTagAndProbeSkim = True -elif ('doTwoLeptons' in dir() and doTwoLeptons): - WZSkimsMain.doTwoLeptonsSkim = True -elif ('doThreeLeptons' in dir() and doThreeLeptons): - WZSkimsMain.doThreeLeptonsSkim = True -elif ('doWenujj' in dir() and doWenujj): - WZSkimsMain.doWenujjSkim = True -elif ('doWmunujj' in dir() and doWmunujj): - WZSkimsMain.doWmunujjSkim = True -else: - WZSkimsMain.doCustomSkim = True - -## By default, no other WZSkims properties need to be changed. Uncomment following lines only if needed. - -# Containers to read (all skims) - -#WZSkimsMain.electronContainerName = "ElectronAODCollection" -#WZSkimsMain.muonContainerName = "BOTH" # options: StacoMuonCollection, MuidMuonCollection, BOTH -#WZSkimsMain.trackContainerName = "TrackParticleCandidate" -#WZSkimsMain.missingEtObjectName = "MET_RefFinal" - -# Custom skim configuration (only valid if doCustomSkim = True) - -#WZSkimsMain.electronNumber = 2 -#WZSkimsMain.electronNumber2 = 0 -#WZSkimsMain.electronPtCut = 5000.0 -#WZSkimsMain.electronPtCut2 = 1000.0 -#WZSkimsMain.electronEtaCut = 2.5 -#WZSkimsMain.electronEtaCut2 = 2.5 -#WZSkimsMain.electronType = "NOCHECK" # options: LOOSE, MEDIUM, TIGHT, NOCHECK -#WZSkimsMain.electronType2 = "NOCHECK" - -#WZSkimsMain.muonNumber = 0 -#WZSkimsMain.muonNumber2 = 0 -#WZSkimsMain.muonPtCut = 8000.0 -#WZSkimsMain.muonPtCut2 = 15000.0 -#WZSkimsMain.muonEtaCut = 2.5 -#WZSkimsMain.muonEtaCut2 = 2.5 -#WZSkimsMain.muonType = "NOCHECK" -#WZSkimsMain.muonType2 = "NOCHECK" - -#WZSkimsMain.doTrackCut = False -#WZSkimsMain.TrackPtCut = 10000.0 -#WZSkimsMain.TrackEtaCut = 2.5 - - -#WZSkimsMain.doEtmissCut = False -#WZSkimsMain.EtmissCut = 30000.0 - -#WZSkimsMain.doInvMassCut = True -#WZSkimsMain.Mmin = 50000.0 -#WZSkimsMain.Mmax = 200000.0 - -#WZSkimsMain.doTriggerCut = False -#WZSkimsMain.TriggerName = "" -#WZSkimsMain.TriggerName2 = "" - -#WZSkimsMain.doPrescale = False -#WZSkimsMain.prescaleRate = 1 - -# Output level -WZSkimsMain.OutputLevel = SkimOL - - - - -# D3PD stream, handled by MultipleStreamManager -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr -from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig - -SkimD3PDStream = MSMgr.NewRootStream( "OutStream", tupleFileOutput, "physics" ) - -# add specific truth jets -include ("PhysicsD3PDMaker/MyJetMake.py") - -#configure MuonScatteringAngleSignificanceTool -include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") - -if LightSkim or MediumSkim: - #### add specific containers - include ("PhysicsD3PDMaker/ElectronSelector.py") - include ("PhysicsD3PDMaker/PhotonSelector.py") - include ("PhysicsD3PDMaker/MuonSelector.py") - include ("PhysicsD3PDMaker/JetSelector.py") - include ("PhysicsD3PDMaker/TauSelector.py") - - if doGSF: - gsfCont = 'HighPtGSFElectrons' - else: - gsfCont = 'None' - - if LightSkim: - from PhysicsD3PDMaker.SMWZLightD3PD import SMWZLightD3PD - SMWZLightD3PD( SkimD3PDStream, - stdElectronContainer = 'HighPtElectrons', - gsfElectronContainer = gsfCont, - stacoMuonContainer = 'HighPtStacoMuons', - muidMuonContainer = 'HighPtMuidMuons', - photonContainer = 'HighPtPhotons', - tauContainer = 'HighPtTaus', - jetContainer = 'HighPtJets' ) - - else: - from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD - SMWZD3PD( SkimD3PDStream, - stdElectronContainer = 'HighPtElectrons', - gsfElectronContainer = gsfCont, - stacoMuonContainer = 'HighPtStacoMuons', - muidMuonContainer = 'HighPtMuidMuons', - caloMuonContainer = 'None', - photonContainer = 'HighPtPhotons', - tauContainer = 'HighPtTaus', - jetEM4Container = 'HighPtJets', - jetEM6Container = 'HighPtJetsEM6', - jetLC4Container = 'HighPtJetsLC4', - jetLC6Container = 'HighPtJetsLC6', - jetDetails = 2, - METDetails = 2) - -else: - from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD - SMWZD3PD( SkimD3PDStream ) - -SkimD3PDStream.filterSeq += WZSkimsMain("WZSkimsMain") -SkimD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SkimD3PDStream ) ] - - -# additional branch selection for W -> l nu j j -if ('doWenujj' in dir() and doWenujj) or ('doWmunujj' in dir() and doWmunujj): - include("WZSkims/Wlnujj_branchSelection.py") - - -# Debug output once again -from AthenaCommon.AppMgr import theApp -svcMgr = theApp.serviceMgr() -svcMgr.MessageSvc.OutputLevel = OL -svcMgr.MessageSvc.defaultLimit = 1000000 -svcMgr.MessageSvc.Format = "% F%80W%S%7W%R%T %0W%M" -svcMgr.MessageSvc.useColors = False diff --git a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions_Egamma.py b/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions_Egamma.py deleted file mode 100644 index b5d448d37ecde4d98fac04bf04fd919c1e907608..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions_Egamma.py +++ /dev/null @@ -1,57 +0,0 @@ -# WZSkims Athena Job Options file -# Homero Martinez, Bernardo Resende -# 30/12/10 - -# Input file -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput= ["AOD.pool.root"] - -# Skim selection -from D3PDMakerConfig.D3PDProdFlags import prodFlags -prodFlags.WriteSMDYEED3PD = True -prodFlags.WriteSMDYEED3PD.FileName = 'WZSkimsD3PD_Jpsiee.root' -prodFlags.WriteSMDYEED3PD.lock() - -prodFlags.WriteSMZEED3PD = True -prodFlags.WriteSMZEED3PD.FileName = 'WZSkimsD3PD_Zee.root' -prodFlags.WriteSMZEED3PD.lock() - -prodFlags.WriteSMWENUD3PD = True -prodFlags.WriteSMWENUD3PD.FileName = 'WZSkimsD3PD_Wenu.root' -prodFlags.WriteSMWENUD3PD.lock() - -prodFlags.WriteSMBKGED3PD = True -prodFlags.WriteSMBKGED3PD.FileName = 'WZSkimsD3PD_BackgroundElec.root' -prodFlags.WriteSMBKGED3PD.lock() - -prodFlags.WriteSMDILEPD3PD = True -prodFlags.WriteSMDILEPD3PD.FileName = 'WZSkimsD3PD_TwoLeptons_Egamma.root' -prodFlags.WriteSMDILEPD3PD.lock() - -prodFlags.WriteSMTRILEPD3PD = True -prodFlags.WriteSMTRILEPD3PD.FileName = 'WZSkimsD3PD_ThreeLeptons_Egamma.root' -prodFlags.WriteSMTRILEPD3PD.lock() - -# Configure RecExCommon -from RecExConfig.RecFlags import rec -rec.doCBNT.set_Value_and_Lock(False) -rec.doWriteTAG.set_Value_and_Lock(False) - -# Needed for MSMgr -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMDYEED3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMWENUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMZEED3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMBKGED3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMDILEPD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMTRILEPD3PD_prodJobOFragment.py") - -# Main jobOption - must always be included!!! -include ("RecExCommon/RecExCommon_topOptions.py") - -# Number of events to be processed -theApp.EvtMax = -1 - -# Stops writing of monitoring ntuples -from PerfMonComps.PerfMonFlags import jobproperties as jp -jp.PerfMonFlags.doMonitoring = False -jp.PerfMonFlags.doFastMon = False diff --git a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions_Muons.py b/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions_Muons.py deleted file mode 100644 index 644910ec3625624a2dd992b65a1cbc0d4ce4aaad..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions_Muons.py +++ /dev/null @@ -1,57 +0,0 @@ -# WZSkims Athena Job Options file -# Homero Martinez, Bernardo Resende -# 30/12/10 - -# Input file -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput= ["AOD.pool.root"] - -# Skim selection -from D3PDMakerConfig.D3PDProdFlags import prodFlags -prodFlags.WriteSMDYMUMUD3PD = True -prodFlags.WriteSMDYMUMUD3PD.FileName = 'WZSkimsD3PD_Jpsimumu.root' -prodFlags.WriteSMDYMUMUD3PD.lock() - -prodFlags.WriteSMZMUMUD3PD = True -prodFlags.WriteSMZMUMUD3PD.FileName = 'WZSkimsD3PD_Zmumu.root' -prodFlags.WriteSMZMUMUD3PD.lock() - -prodFlags.WriteSMWMUNUD3PD = True -prodFlags.WriteSMWMUNUD3PD.FileName = 'WZSkimsD3PD_Wmunu.root' -prodFlags.WriteSMWMUNUD3PD.lock() - -prodFlags.WriteSMBKGMUD3PD = True -prodFlags.WriteSMBKGMUD3PD.FileName = 'WZSkimsD3PD_BackgroundMuon.root' -prodFlags.WriteSMBKGMUD3PD.lock() - -prodFlags.WriteSMDILEPD3PD = True -prodFlags.WriteSMDILEPD3PD.FileName = 'WZSkimsD3PD_TwoLeptons_Muons.root' -prodFlags.WriteSMDILEPD3PD.lock() - -prodFlags.WriteSMTRILEPD3PD = True -prodFlags.WriteSMTRILEPD3PD.FileName = 'WZSkimsD3PD_ThreeLeptons_Muons.root' -prodFlags.WriteSMTRILEPD3PD.lock() - -# Configure RecExCommon -from RecExConfig.RecFlags import rec -rec.doCBNT.set_Value_and_Lock(False) -rec.doWriteTAG.set_Value_and_Lock(False) - -# Needed for MSMgr -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMDYMUMUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMWMUNUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMZMUMUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMBKGMUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMDILEPD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMTRILEPD3PD_prodJobOFragment.py") - -# Main jobOption - must always be included!!! -include ("RecExCommon/RecExCommon_topOptions.py") - -# Number of events to be processed -theApp.EvtMax = -1 - -# Stops writing of monitoring ntuples -from PerfMonComps.PerfMonFlags import jobproperties as jp -jp.PerfMonFlags.doMonitoring = False -jp.PerfMonFlags.doFastMon = False diff --git a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions_all.py b/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions_all.py deleted file mode 100644 index d98acf00a867dff507bb68613f7d0e8d21a81983..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/WZSkims_jobOptions_all.py +++ /dev/null @@ -1,77 +0,0 @@ -# WZSkims Athena Job Options file -# Homero Martinez, Bernardo Resende -# 30/12/10 - -# Input file -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput= ["AOD.pool.root"] - -# Skim selection -from D3PDMakerConfig.D3PDProdFlags import prodFlags -prodFlags.WriteSMDYEED3PD = True -prodFlags.WriteSMDYEED3PD.FileName = 'WZSkimsD3PD_Jpsiee.root' -prodFlags.WriteSMDYEED3PD.lock() - -prodFlags.WriteSMZEED3PD = True -prodFlags.WriteSMZEED3PD.FileName = 'WZSkimsD3PD_Zee.root' -prodFlags.WriteSMZEED3PD.lock() - -prodFlags.WriteSMWENUD3PD = True -prodFlags.WriteSMWENUD3PD.FileName = 'WZSkimsD3PD_Wenu.root' -prodFlags.WriteSMWENUD3PD.lock() - -prodFlags.WriteSMBKGED3PD = True -prodFlags.WriteSMBKGED3PD.FileName = 'WZSkimsD3PD_BackgroundElec.root' -prodFlags.WriteSMBKGED3PD.lock() - -prodFlags.WriteSMDYMUMUD3PD = True -prodFlags.WriteSMDYMUMUD3PD.FileName = 'WZSkimsD3PD_Jpsimumu.root' -prodFlags.WriteSMDYMUMUD3PD.lock() - -prodFlags.WriteSMZMUMUD3PD = True -prodFlags.WriteSMZMUMUD3PD.FileName = 'WZSkimsD3PD_Zmumu.root' -prodFlags.WriteSMZMUMUD3PD.lock() - -prodFlags.WriteSMWMUNUD3PD = True -prodFlags.WriteSMWMUNUD3PD.FileName = 'WZSkimsD3PD_Wmunu.root' -prodFlags.WriteSMWMUNUD3PD.lock() - -prodFlags.WriteSMBKGMUD3PD = True -prodFlags.WriteSMBKGMUD3PD.FileName = 'WZSkimsD3PD_BackgroundMuon.root' -prodFlags.WriteSMBKGMUD3PD.lock() - -prodFlags.WriteSMDILEPD3PD = True -prodFlags.WriteSMDILEPD3PD.FileName = 'WZSkimsD3PD_TwoLeptons.root' -prodFlags.WriteSMDILEPD3PD.lock() - -prodFlags.WriteSMTRILEPD3PD = True -prodFlags.WriteSMTRILEPD3PD.FileName = 'WZSkimsD3PD_ThreeLeptons.root' -prodFlags.WriteSMTRILEPD3PD.lock() - -# Configure RecExCommon -from RecExConfig.RecFlags import rec -rec.doCBNT.set_Value_and_Lock(False) -rec.doWriteTAG.set_Value_and_Lock(False) - -# Needed for MSMgr -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMDYEED3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMWENUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMZEED3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMBKGED3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMDYMUMUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMWMUNUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMZMUMUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMBKGMUD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMDILEPD3PD_prodJobOFragment.py") -rec.DPDMakerScripts.append("PhysicsD3PDMaker/SMTRILEPD3PD_prodJobOFragment.py") - -# Main jobOption - must always be included!!! -include ("RecExCommon/RecExCommon_topOptions.py") - -# Number of events to be processed -theApp.EvtMax = -1 - -# Stops writing of monitoring ntuples -from PerfMonComps.PerfMonFlags import jobproperties as jp -jp.PerfMonFlags.doMonitoring = False -jp.PerfMonFlags.doFastMon = False diff --git a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/Wlnujj_branchSelection.py b/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/Wlnujj_branchSelection.py deleted file mode 100644 index c628585a65f4b69460b933d62a5d6b7061cad5d4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/share/Wlnujj_branchSelection.py +++ /dev/null @@ -1,177 +0,0 @@ -# Set up a logger: -from AthenaCommon.Logging import logging -Wlnujj_msg = logging.getLogger( 'Wlnujj_branchSelection' ) -if 'SkimOL' in dir(): - Wlnujj_msg.setLevel(SkimOL) - -# name of the stream which should be modified -if 'streamName' in dir(): - Wlnujj_msg.info("Looking for output stream with name '%s' " % streamName) - from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - try: - SkimD3PDStream = MSMgr.GetStream(streamName) - except: - Wlnujj_msg.error("Output stream with name '%s' does not exist " % streamName) - -# do all manipulations only if stream is defined -if 'SkimD3PDStream' in dir(): - - # - # additional fillers for W->lnujj stream - # - - def _args (level, name, kwin, **kw): - kw = kw.copy() - kw['level'] = level - for (k, v) in kwin.items(): - if k.startswith (name + '_'): - kw[k[len(name)+1:]] = v - return kw - - def WlnujjD3PD (alg = None, - doTrackJet = True, - **kw): - - # never create new alg - use existing one - if alg: - # extra blocks with TrackJets - if doTrackJet: - - # trrack jets from QcdD3PDMaker do not work in rel 17.0.6.4.11 and later - #include ("QcdD3PDMaker/TrackJet_jobOptions.py") - # setting empty TrackSummaryTool to avoid error during initialization - #ToolSvc.MyDetailedTrackSelectorTool.TrackSummaryTool = "" - - level = 2; # level = 3 is crashing for the moment - Wlnujj_msg.info("TrackJets are added to D3PD") - Wlnujj_msg.info("Level for TrackJets in D3PD is %d" % level) - - # this filtering doesn't work - commented out - #from D2PDMaker.D2PDMakerConf import D2PDJetSelector - #from AthenaCommon.AlgSequence import AlgSequence - #preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - #preseq += D2PDJetSelector( "SMWZ_HighPtJetTZ4Filter", - # inputCollection = 'AntiKt4TrackZJets', - # outputCollection = 'HighPtJetsTZ4', - # ptMin = 20.0*Units.GeV ) - - #from JetD3PDMaker.JetD3PDObject import JetD3PDObject - #alg += JetD3PDObject (**_args ( level, 'AntiKt4TrackJetsZ', kw, - # sgkey = 'AntiKt4TrackZJets', prefix = 'jet_AntiKt4TrackZ_', - # JetVertexFraction_FromUD=True, - # JetVertexFraction_FillFullJVF=True, - # allowMissing = True)) - - include("TopInputsD3PDMaker/PrepareTrackJets.py") - from JetD3PDMaker.JetD3PDObject import JetD3PDObject - alg += JetD3PDObject (**_args ( level, 'AntiKt4TrackJetsZ', kw, - sgkey = 'AntiKtZ4TrackJets', prefix = 'jet_AntiKt4TrackZ_', - JetVertexFraction_FromUD=True, - JetVertexFraction_FillFullJVF=True, - allowMissing = True)) - - return alg - - # adding TrackJets by default - if not 'doTrackJet' in dir() or doTrackJet: - TheAlg = WlnujjD3PD(SkimD3PDStream, doTrackJet=True) - - # - # end of additional fillers block - # - - # - # removing some fillers in W->lnujj stream - # - - # removal of top-level fillers - # - # removal of AntiKt6 LC jets: - exclusion=['jet_AntiKt6LC','jet_antikt6LC','jet_AntiKt6Track'] - # removal of photons, taus, clusters, extra muon collections: - exclusion+=['ph_','mu_muid_','mu_calo_','tau_','hr_','cl_','clpt10_','emclpt10_'] - # removal of tracks (if needed): - #exclusion+=['trk_','trkpt4_'] - # trigger: - exclusion+=['trig_roidescriptor_', - 'trig_L1_esum_','trig_L1_jet_', - 'trig_RoI_L2_b_','trig_RoI_L2_TileMu_', - 'trig_RoI_EF_b_','trig_RoI_EF_TileMu_', - 'trig_L2_idscan_','trig_L2_sitrack_','trig_L2_trk_','trig_L2_tile', - 'trig_L2_bjet_','trig_L2_emcl_','trig_L2_ph_','trig_L2_met_', - 'trig_EF_bjet_','trig_EF_emcl_','trig_EF_ph_','trig_EF_met_'] - - # removal of private fillers from top-level fillers - # - exclist={'el_':['RawCluster','EMTrackFit'],'mu_staco_':['MuonTiming']} - - # keep only few trigger bits - # - # keep L1,L2,EF bits for single electron and single muon only - triglist={'TriggerBits':['L1_E.*','L1_MU.*','L2_e.*','L2_mu.*','EF_e.*','EF_mu.*'],'MBTSTriggerBits':[]} - #all bits: 'L1','L2','EF_e','EF_mu','EF_L1','EF_b','EF_g','EF_j','EF_tau','tau','EF_2','EF_3','EF.*_xe','EF.*_XE','EF_.*' - - Wlnujj_msg.debug("Modifying %s D3PD stream with %d filler tools" % (SkimD3PDStream.name(),len(SkimD3PDStream.Tools))) - - nrm=0 - nch=0 - nst=0 - ntr=0 - for tool in reversed(SkimD3PDStream.Tools): - name=tool.name() - tool2=vars(SkimD3PDStream.Stream)[name] - deja=False - - for key in exclusion: - if name.startswith(key): - nrm+=1 - Wlnujj_msg.debug("removing %s",name) - del SkimD3PDStream.Tools[name] - del tool2 - deja=True - break - if deja: continue - - for key in exclist: - if name.startswith(key): - Wlnujj_msg.debug("changing %s",name) - for block in reversed(tool.BlockFillers): - for exc in exclist[key]: - if exc in block.name(): - nst+=1 - Wlnujj_msg.debug(" removing sub-tool %s",block.name()) - try: - del tool.BlockFillers[block.name()] - del tool2.BlockFillers[block.name()] - except: - Wlnujj_msg.debug(" removing of sub-tool %s failed - continue anyway",block.name()) - deja=True - if deja: - nch+=1 - else: - Wlnujj_msg.debug(" nothing changed") - break - - for key in triglist: - if name.startswith(key): - ntr+=1 - Wlnujj_msg.debug("changing %s",name) - for block in tool.BlockFillers: - Wlnujj_msg.debug(" changing %s",block.name()) - Wlnujj_msg.debug(" old trigger bits: %s",block.Triggers) - block.Triggers[:]=triglist[key] - tool2.BlockFillers[block.name()].Triggers[:]=triglist[key] - Wlnujj_msg.debug(" keeping trigger bits: %s",block.Triggers) - - Wlnujj_msg.debug("%d tools remains, %d removed, %d sub-tools removed in %d tools, %d triggers changed" % (len(SkimD3PDStream.Tools),nrm,nst,nch,ntr)) - for tool in SkimD3PDStream.Tools: - Wlnujj_msg.verbose("%s" % tool.name()) - for block in tool.BlockFillers: - Wlnujj_msg.verbose(" %s" % block.name()) - - # - # end of removal block - # - -else: - Wlnujj_msg.error("Output stream not defined - nothing to do") diff --git a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/src/WZSkimsMain.cxx b/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/src/WZSkimsMain.cxx deleted file mode 100644 index 5448a8106f3eadd6c06dcc890e015582a5e13d2a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/src/WZSkimsMain.cxx +++ /dev/null @@ -1,1833 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "WZSkims/WZSkimsMain.h" -#include "GaudiKernel/MsgStream.h" - -///////////////////////////////////////////////////////////////////////////// - -WZSkimsMain::WZSkimsMain(const std::string& name, ISvcLocator* pSvcLocator) : AthFilterAlgorithm(name, pSvcLocator) -{ - declareProperty("doJpsieeSkim" , m_doJpsieeSkim = false); - declareProperty("doJpsimumuSkim" , m_doJpsimumuSkim = false); - declareProperty("doZeeSkim" , m_doZeeSkim = false); - declareProperty("doZmumuSkim" , m_doZmumuSkim = false); - declareProperty("doWenuSkim" , m_doWenuSkim = false); - declareProperty("doWmunuSkim" , m_doWmunuSkim = false); - declareProperty("doWenujjSkim" , m_doWenujjSkim = false); - declareProperty("doWmunujjSkim" , m_doWmunujjSkim = false); - declareProperty("doZtautauSkim" , m_doZtautauSkim = false); - declareProperty("doTagAndProbeElecSkim" , m_doTagAndProbeElecSkim = false); - declareProperty("doTagAndProbeMuonSkim" , m_doTagAndProbeMuonSkim = false); - declareProperty("doBackgroundElecSkim" , m_doBackgroundElecSkim = false); - declareProperty("doBackgroundMuonSkim" , m_doBackgroundMuonSkim = false); - declareProperty("doZeeWithTagAndProbeSkim" , m_doZeeWithTagAndProbeSkim = false); - declareProperty("doZmumuWithTagAndProbeSkim" , m_doZmumuWithTagAndProbeSkim = false); - declareProperty("doTwoLeptonsSkim" , m_doTwoLeptonsSkim = false); - declareProperty("doThreeLeptonsSkim" , m_doThreeLeptonsSkim = false); - declareProperty("doCustomSkim" , m_doCustomSkim = false); - - declareProperty("electronContainerName" , m_electronContainerName = "ElectronAODCollection"); - declareProperty("muonContainerName" , m_muonContainerName = "BOTH"); - declareProperty("trackContainerName" , m_trackContainerName = "TrackParticleCandidate"); - declareProperty("missingEtObjectName" , m_missingEtObjectName = "ALL"); - declareProperty("jetContainerName" , m_jetContainerName = "AntiKt4TopoEMJets"); - - declareProperty("electronNumber" , m_electronNumber = 0); - declareProperty("electronNumber2" , m_electronNumber2 = 0); - declareProperty("electronPtCut" , m_electronPtCut = 0.); - declareProperty("electronPtCut2" , m_electronPtCut2 = 0.); - declareProperty("electronEtaCut" , m_electronEtaCut = 0.); - declareProperty("electronEtaCut2" , m_electronEtaCut2 = 0.); - declareProperty("electronType" , m_electronType = "NOCHECK"); - declareProperty("electronType2" , m_electronType2 = "NOCHECK"); - - declareProperty("muonNumber" , m_muonNumber = 0); - declareProperty("muonNumber2" , m_muonNumber2 = 0); - declareProperty("muonPtCut" , m_muonPtCut = 0.); - declareProperty("muonPtCut2" , m_muonPtCut2 = 0.); - declareProperty("muonEtaCut" , m_muonEtaCut = 0.); - declareProperty("muonEtaCut2" , m_muonEtaCut2 = 0.); - declareProperty("muonType" , m_muonType = "NOCHECK"); - declareProperty("muonType2" , m_muonType2 = "NOCHECK"); - - declareProperty("jetNumber" , m_jetNumber = 0); - declareProperty("jetPtCut" , m_jetPtCut = 0.); - declareProperty("jetEtaCut" , m_jetEtaCut = 0.); - declareProperty("jetOverlapRemovalWithTight", m_jetOverlapRemovalWithTight = false); - declareProperty("jetOverlapRemovalWithMedium", m_jetOverlapRemovalWithMedium = false); - declareProperty("jetOverlapRemovalWithMediumIfNoTight", m_jetOverlapRemovalWithMediumIfNoTight = false); - declareProperty("jetOverlapRemovalEtaRange", m_jetOverlapEtaRange); - declareProperty("jetOverlapRemovalDrCut", m_jetOverlapDrCut = 0.); - - declareProperty("doTrackCut" , m_doTrackCut = false); - declareProperty("TrackPtCut" , m_TrackPtCut = 0.); - declareProperty("TrackEtaCut" , m_TrackEtaCut = 0.); - - declareProperty("doEtmissCut" , m_doEtmissCut = false); - declareProperty("EtmissCut" , m_EtmissCut = 0.); - - declareProperty("doInvMassCut" , m_doInvMassCut = false); - declareProperty("Mmin" , m_Mmin = 0.); - declareProperty("Mmax" , m_Mmax = 1000000.0); - - declareProperty("doTriggerCut" , m_doTriggerCut = false); - declareProperty("TriggerName" , m_triggerName = ""); - declareProperty("TriggerName2" , m_triggerName2 = ""); - - declareProperty("doPrescale" , m_doPrescale = false); - declareProperty("prescaleRate" , m_prescaleRate = 1); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -StatusCode WZSkimsMain::initialize(){ - - ATH_MSG_DEBUG ("initialize()"); - - //locate the StoreGateSvc and initialize our local ptr - StatusCode sc = service("StoreGateSvc", m_storeGate); - if (!sc.isSuccess() || 0 == m_storeGate) - ATH_MSG_ERROR("Could not find StoreGateSvc"); - - if ( (m_doWenujjSkim || m_doWmunujjSkim) && m_muonContainerName == "BOTH" ) { - m_muonContainerName = "StacoMuonCollection"; - ATH_MSG_INFO("For Wlnujj skims changing name of muon container from BOTH to " << m_muonContainerName); - } - - ATH_MSG_DEBUG("** WZSkim input parameters **"); - - ATH_MSG_DEBUG("doing Jpsiee Skim : " << m_doJpsieeSkim); - ATH_MSG_DEBUG("doing Jpsimumu Skim : " << m_doJpsimumuSkim); - ATH_MSG_DEBUG("doing Zee Skim : " << m_doZeeSkim); - ATH_MSG_DEBUG("doing Zmumu Skim : " << m_doZmumuSkim); - ATH_MSG_DEBUG("doing Wenu Skim : " << m_doWenuSkim); - ATH_MSG_DEBUG("doing Wmunu Skim : " << m_doWmunuSkim); - ATH_MSG_DEBUG("doing Wenujj Skim : " << m_doWenujjSkim); - ATH_MSG_DEBUG("doing Wmunujj Skim : " << m_doWmunujjSkim); - ATH_MSG_DEBUG("doing Ztautau Skim : " << m_doZtautauSkim); - ATH_MSG_DEBUG("doing T&P Electron Skim : " << m_doTagAndProbeElecSkim); - ATH_MSG_DEBUG("doing T&P Muon Skim : " << m_doTagAndProbeMuonSkim); - ATH_MSG_DEBUG("doing backgd Electron Skim : " << m_doBackgroundElecSkim); - ATH_MSG_DEBUG("doing backgd Muon Skim : " << m_doBackgroundMuonSkim); - ATH_MSG_DEBUG("doing Zee + T&P Elec Skim : " << m_doZeeWithTagAndProbeSkim); - ATH_MSG_DEBUG("doing Zmumu + T&P Muon Skim : " << m_doZmumuWithTagAndProbeSkim); - ATH_MSG_DEBUG("doing TwoLeptons Skim : " << m_doTwoLeptonsSkim); - ATH_MSG_DEBUG("doing ThreeLeptons Skim : " << m_doThreeLeptonsSkim); - ATH_MSG_DEBUG("doing custom Skim : " << m_doCustomSkim); - - ATH_MSG_DEBUG("electron container name : " << m_electronContainerName); - ATH_MSG_DEBUG("muon container name : " << m_muonContainerName); - ATH_MSG_DEBUG("track container name :" << m_trackContainerName); - ATH_MSG_DEBUG("missing Et object name : " << m_missingEtObjectName); - ATH_MSG_DEBUG("jet container name : " << m_jetContainerName); - - ATH_MSG_DEBUG("* For custom skim *"); - ATH_MSG_DEBUG("electron number : " << m_electronNumber); - ATH_MSG_DEBUG("electron number 2 : " << m_electronNumber2); - ATH_MSG_DEBUG("electron Pt cut : " << m_electronPtCut); - ATH_MSG_DEBUG("electron Pt cut 2 : " << m_electronPtCut2); - ATH_MSG_DEBUG("electron Eta cut : " << m_electronEtaCut); - ATH_MSG_DEBUG("electron Eta cut 2 : " << m_electronEtaCut2); - ATH_MSG_DEBUG("electron Type : " << m_electronType); - ATH_MSG_DEBUG("electron Type 2 : " << m_electronType2); - - ATH_MSG_DEBUG("muon number : " << m_muonNumber); - ATH_MSG_DEBUG("muon number 2 : " << m_muonNumber2); - ATH_MSG_DEBUG("muon Pt cut : " << m_muonPtCut); - ATH_MSG_DEBUG("muon Pt cut 2 : " << m_muonPtCut2); - ATH_MSG_DEBUG("muon Eta cut : " << m_muonEtaCut); - ATH_MSG_DEBUG("muon Eta cut 2 : " << m_muonEtaCut2); - ATH_MSG_DEBUG("muon Type : " << m_muonType); - ATH_MSG_DEBUG("muon Type 2 : " << m_muonType2); - - ATH_MSG_DEBUG("jet number : " << m_jetNumber); - ATH_MSG_DEBUG("jet Pt cut : " << m_jetPtCut); - ATH_MSG_DEBUG("jet Eta cut : " << m_jetEtaCut); - ATH_MSG_DEBUG("Overlap removal with tight lepton : " << m_jetOverlapRemovalWithTight); - ATH_MSG_DEBUG("Overlap removal with medium lepton : " << m_jetOverlapRemovalWithMedium); - ATH_MSG_DEBUG("Overlap removal with medium if no tight : " << m_jetOverlapRemovalWithMediumIfNoTight); - ATH_MSG_DEBUG("DR for jet-lepton pverlap removal : " << m_jetOverlapDrCut); - for (size_t q=0; q<m_jetOverlapEtaRange.size(); ++q) { - if (q%2) ATH_MSG_DEBUG("Lepton abs(eta) for overlap removal : to " << m_jetOverlapEtaRange[q]); - else ATH_MSG_DEBUG("Lepton abs(eta) for overlap removal : from " << m_jetOverlapEtaRange[q]); - } - - ATH_MSG_DEBUG("doing track cut : " << m_doTrackCut); - ATH_MSG_DEBUG("Track Pt cut : " << m_TrackPtCut); - ATH_MSG_DEBUG("Track Eta cut : " << m_TrackEtaCut); - - ATH_MSG_DEBUG("doing Etmiss cut : " << m_doEtmissCut); - ATH_MSG_DEBUG("Etmiss cut : " << m_EtmissCut); - - ATH_MSG_DEBUG("doing Inv mass cut : " << m_doInvMassCut); - ATH_MSG_DEBUG("Inv mass cut minimum : " << m_Mmin); - ATH_MSG_DEBUG("Inv mass cut maximum : " << m_Mmax); - - ATH_MSG_DEBUG("doing trigger cut : " << m_doTriggerCut); - ATH_MSG_DEBUG("Trigger type : " << m_triggerName); - ATH_MSG_DEBUG("Trigger type 2 : " << m_triggerName2); - - ATH_MSG_DEBUG("Prescaling : " << m_doPrescale); - ATH_MSG_DEBUG("Prescale rate : " << m_prescaleRate); - - m_n_events = 0; - m_n_good_events = 0; - m_prescaleCounter = 0; - - bool CutsOk = CheckCuts(); - if (!CutsOk) { - ATH_MSG_WARNING("SKIM NOT PERFORMED, all events accepted !"); - m_doSkim = false; - } - else { - m_doSkim = true; - ATH_MSG_INFO("** WZSkim object containers **"); - ATH_MSG_INFO("electron container name : " << m_electronContainerName); - ATH_MSG_INFO("muon container name : " << m_muonContainerName); - ATH_MSG_INFO("track container name :" << m_trackContainerName); - ATH_MSG_INFO("missing Et object name : " << m_missingEtObjectName); - ATH_MSG_INFO("jet container name : " << m_jetContainerName); - } - - return StatusCode::SUCCESS; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -StatusCode WZSkimsMain::execute() { - - m_n_events++; - ATH_MSG_DEBUG("*************** Event number " << m_n_events << " ****************"); - - if (!m_doSkim) { - setFilterPassed(true); - return StatusCode::SUCCESS; - } - - bool isGoodEvent = false; - - if (m_skimVec[Jpsiee]) isGoodEvent = isGoodEvent || performSkim("JpsieeSkim"); - - if (m_skimVec[Jpsimumu]) isGoodEvent = isGoodEvent || performSkim("JpsimumuSkim"); - - if (m_skimVec[Zee]) isGoodEvent = isGoodEvent || performSkim("ZeeSkim"); - - if (m_skimVec[Zmumu]) isGoodEvent = isGoodEvent || performSkim("ZmumuSkim"); - - if (m_skimVec[Wenu]) isGoodEvent = isGoodEvent || performSkim("WenuSkim"); - - if (m_skimVec[Wmunu]) isGoodEvent = isGoodEvent || performSkim("WmunuSkim"); - - if (m_skimVec[Wenujj]) isGoodEvent = isGoodEvent || performSkim("WenujjSkim"); - - if (m_skimVec[Wmunujj]) isGoodEvent = isGoodEvent || performSkim("WmunujjSkim"); - - if (m_skimVec[TagAndProbeElec]) isGoodEvent = isGoodEvent || performSkim("TagAndProbeElecSkim"); - - if (m_skimVec[TagAndProbeMuon]) isGoodEvent = isGoodEvent || performSkim("TagAndProbeMuonSkim"); - - if (m_skimVec[BackgroundElec]) isGoodEvent = isGoodEvent || performSkim("BackgroundElecSkim"); - - if (m_skimVec[BackgroundMuon]) isGoodEvent = isGoodEvent || performSkim("BackgroundMuonSkim"); - - if (m_skimVec[Ztautau]) isGoodEvent = isGoodEvent || performSkim("ZtautauSkim"); - - if (m_skimVec[TwoElectrons]) isGoodEvent = isGoodEvent || performSkim("TwoElectronsSkim"); - - if (m_skimVec[TwoMuons]) isGoodEvent = isGoodEvent || performSkim("TwoMuonsSkim"); - - if (m_skimVec[eee]) isGoodEvent = isGoodEvent || performSkim("eeeSkim"); - - if (m_skimVec[eemu]) isGoodEvent = isGoodEvent || performSkim("eemuSkim"); - - if (m_skimVec[emumu]) isGoodEvent = isGoodEvent || performSkim("emumuSkim"); - - if (m_skimVec[mumumu]) isGoodEvent = isGoodEvent || performSkim("mumumuSkim"); - - if (m_skimVec[Custom]) isGoodEvent = isGoodEvent || performSkim("CustomSkim"); - - setFilterPassed(isGoodEvent); - - if (isGoodEvent) { - ATH_MSG_DEBUG("Event accepted"); - m_n_good_events++; - } - - - return StatusCode::SUCCESS; - -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::performSkim(std::string thisSkim = "") { - - bool isGoodEvent = false; - - bool CutsOK = SetCuts(thisSkim); - if (!CutsOK) return true; // If cuts are wrong, event is always kept - - bool passElectrons = true, passMuons = true, passJets = true, passTrack = true, passInvMass = true, passEtmiss = true, passTrigger = true, passEvent = true; - std::vector<struct lepton> leptons; - - if ((m_electronNumber > 0) || (m_electronNumber2 > 0)) { - - std::vector<const Electron*> AllElectronsVector = OpenElectrons(); - - if (AllElectronsVector.size() > 0) { - ReadElectrons(AllElectronsVector,leptons); - std::vector<bool> GoodElectronsFlag1, GoodElectronsFlag2; - - GoodElectronsFlag1.clear(); - GoodElectronsFlag2.clear(); - - if (m_electronNumber > 0) GoodElectronsFlag1 = CheckElectronVector(AllElectronsVector, m_electronPtCut, m_electronEtaCut, m_electronType); - if (m_electronNumber2 > 0) GoodElectronsFlag2 = CheckElectronVector(AllElectronsVector, m_electronPtCut2, m_electronEtaCut2, m_electronType2); - - passElectrons = CheckLeptonCuts(m_electronNumber, m_electronNumber2, GoodElectronsFlag1, GoodElectronsFlag2); - - if (m_doInvMassCut) passInvMass = CheckInvMass(AllElectronsVector, GoodElectronsFlag1, GoodElectronsFlag2); - } - else passElectrons = false; - - } - - if ((m_muonNumber > 0) || (m_muonNumber2 > 0)) { - - bool passMuonsStaco = false, passMuonsMuid = false, passInvMassStaco = false, passInvMassMuid = false; - std::vector<const Analysis::Muon*> AllMuonsVector; - - if (m_muonContainerName == "BOTH" || m_muonContainerName == "StacoMuonCollection") { - - AllMuonsVector = OpenMuons("StacoMuonCollection"); - - if (AllMuonsVector.size() > 0) { - ReadMuons(AllMuonsVector,leptons); - std::vector<bool> GoodMuonsFlag1, GoodMuonsFlag2; - - GoodMuonsFlag1.clear(); - GoodMuonsFlag2.clear(); - - if (m_muonNumber > 0) GoodMuonsFlag1 = CheckMuonVector(AllMuonsVector, m_muonPtCut, m_muonEtaCut, m_muonType); - if (m_muonNumber2 > 0) GoodMuonsFlag2 = CheckMuonVector(AllMuonsVector, m_muonPtCut2, m_muonEtaCut2, m_muonType2); - - passMuonsStaco = CheckLeptonCuts(m_muonNumber, m_muonNumber2, GoodMuonsFlag1, GoodMuonsFlag2); - - if (m_doInvMassCut) passInvMassStaco = CheckInvMass(AllMuonsVector, GoodMuonsFlag1, GoodMuonsFlag2); - } - else passMuonsStaco = false; - AllMuonsVector.clear(); - } - - if (m_muonContainerName == "BOTH" || m_muonContainerName == "MuidMuonCollection") { - - AllMuonsVector = OpenMuons("MuidMuonCollection"); - - if (AllMuonsVector.size() > 0) { - if (m_muonContainerName != "BOTH") ReadMuons(AllMuonsVector,leptons); - std::vector<bool> GoodMuonsFlag1, GoodMuonsFlag2; - - GoodMuonsFlag1.clear(); - GoodMuonsFlag2.clear(); - - if (m_muonNumber > 0) GoodMuonsFlag1 = CheckMuonVector(AllMuonsVector, m_muonPtCut, m_muonEtaCut, m_muonType); - if (m_muonNumber2 > 0) GoodMuonsFlag2 = CheckMuonVector(AllMuonsVector, m_muonPtCut2, m_muonEtaCut2, m_muonType2); - - passMuonsMuid = CheckLeptonCuts(m_muonNumber, m_muonNumber2, GoodMuonsFlag1, GoodMuonsFlag2); - - if (m_doInvMassCut) passInvMassMuid = CheckInvMass(AllMuonsVector, GoodMuonsFlag1, GoodMuonsFlag2); - } - else passMuonsMuid = false; - AllMuonsVector.clear(); - } - - passMuons = passMuonsStaco || passMuonsMuid; - if (m_doInvMassCut) passInvMass = passInvMassStaco || passInvMassMuid; - - } - - if (m_jetNumber > 0) { - - std::vector<const Jet*> jets = OpenJets(); - - passJets = (jets.size() >= leptons.size()+m_jetNumber || CheckJetLeptonOverlap(jets, leptons)); - //passJets = CheckJetLeptonOverlap(jets, leptons); // use this line to see DEBUG messages for all events - - } - - if (m_doTrackCut) passTrack = SelectTrack(); - - if (m_doEtmissCut) { - if (m_missingEtObjectName == "ALL") { passEtmiss = SelectEtmiss(); } - else { passEtmiss = SelectEtmiss(m_missingEtObjectName); } - } - - if (m_doTriggerCut) passTrigger = SelectTrigger(); - - //if (m_doGlobalCut) passEvent = SelectEvent(); - - isGoodEvent = passElectrons && passMuons && passJets && passInvMass && passTrack && passEtmiss && passTrigger && passEvent; - - if (m_doPrescale && isGoodEvent) isGoodEvent = Prescale(); - - return isGoodEvent; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -StatusCode WZSkimsMain::finalize() { - - ATH_MSG_DEBUG ("finalize()"); - - ATH_MSG_INFO ("Skimmable events " << m_n_events); - ATH_MSG_INFO ("Skimmed events " << m_n_good_events); - - - return StatusCode::SUCCESS; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::CheckCuts() { - - for (int i = 0; i < 20; i++) m_skimVec[i] = false; - - int check_skims = m_doJpsieeSkim + m_doJpsimumuSkim + m_doZeeSkim + m_doZmumuSkim + m_doWenuSkim + m_doWmunuSkim + m_doTagAndProbeElecSkim + m_doTagAndProbeMuonSkim - + m_doBackgroundElecSkim + m_doBackgroundMuonSkim + m_doZtautauSkim + m_doZeeWithTagAndProbeSkim + m_doZmumuWithTagAndProbeSkim - + m_doTwoLeptonsSkim + m_doThreeLeptonsSkim + m_doWenujjSkim + m_doWmunujjSkim + m_doCustomSkim; - - ATH_MSG_DEBUG ("Number of active skims: " << check_skims); - - if (check_skims > 1) { - ATH_MSG_WARNING ("More than one active skim, will not skim. Please check the job options file"); - return false; - } - - if (check_skims == 0) { - ATH_MSG_WARNING ("No skim active, will not skim. Please check the job options file"); - return false; - } - - m_skimVec[Jpsiee] = m_doJpsieeSkim; - m_skimVec[Jpsimumu] = m_doJpsimumuSkim; - m_skimVec[Zee] = m_doZeeSkim; - m_skimVec[Zmumu] = m_doZmumuSkim; - m_skimVec[Wenu] = m_doWenuSkim; - m_skimVec[Wmunu] = m_doWmunuSkim; - m_skimVec[Wenujj] = m_doWenujjSkim; - m_skimVec[Wmunujj] = m_doWmunujjSkim; - m_skimVec[TagAndProbeElec] = m_doTagAndProbeElecSkim; - m_skimVec[TagAndProbeMuon] = m_doTagAndProbeMuonSkim; - m_skimVec[BackgroundElec] = m_doBackgroundElecSkim; - m_skimVec[BackgroundMuon] = m_doBackgroundMuonSkim; - m_skimVec[Ztautau] = m_doZtautauSkim; - m_skimVec[Custom] = m_doCustomSkim; - - if (m_doZeeWithTagAndProbeSkim) { - m_skimVec[Zee] = true; - m_skimVec[TagAndProbeElec] = true; - } - if (m_doZmumuWithTagAndProbeSkim) { - m_skimVec[Zmumu] = true; - m_skimVec[TagAndProbeMuon] = true; - } - if (m_doTwoLeptonsSkim) { - m_skimVec[Ztautau] = true; - m_skimVec[TwoElectrons] = true; - m_skimVec[TwoMuons] = true; - } - if (m_doThreeLeptonsSkim) { - m_skimVec[eee] = true; - m_skimVec[eemu] = true; - m_skimVec[emumu] = true; - m_skimVec[mumumu] = true; - } - - if (m_skimVec[Jpsiee]) ATH_MSG_INFO ("**** Doing Jpsiee skim ****"); - if (m_skimVec[Jpsimumu]) ATH_MSG_INFO ("**** Doing Jpsimumu skim ****"); - if (m_skimVec[Zee]) ATH_MSG_INFO ("**** Doing Zee skim ****"); - if (m_skimVec[Zmumu]) ATH_MSG_INFO ("**** Doing Zmumu skim ****"); - if (m_skimVec[Wenu]) ATH_MSG_INFO ("**** Doing Wenu skim ****"); - if (m_skimVec[Wmunu]) ATH_MSG_INFO ("**** Doing Wmunu skim ****"); - if (m_skimVec[Wenujj]) ATH_MSG_INFO ("**** Doing Wenujj skim ****"); - if (m_skimVec[Wmunujj]) ATH_MSG_INFO ("**** Doing Wmunujj skim ****"); - if (m_skimVec[TagAndProbeElec]) ATH_MSG_INFO ("**** Doing TagAndProbeElec skim ****"); - if (m_skimVec[TagAndProbeMuon]) ATH_MSG_INFO ("**** Doing TagAndProbeMuon skim ****"); - if (m_skimVec[BackgroundElec]) ATH_MSG_INFO ("**** Doing BackgroundElec skim ****"); - if (m_skimVec[BackgroundMuon]) ATH_MSG_INFO ("**** Doing BackgroundMuon skim ****"); - if (m_skimVec[Ztautau]) ATH_MSG_INFO ("**** Doing Ztautau skim ****"); - if (m_skimVec[TwoElectrons]) ATH_MSG_INFO ("**** Doing TwoElectrons skim ****"); - if (m_skimVec[TwoMuons]) ATH_MSG_INFO ("**** Doing TwoMuons skim ****"); - if (m_skimVec[eee]) ATH_MSG_INFO ("**** Doing eee skim ****"); - if (m_skimVec[eemu]) ATH_MSG_INFO ("**** Doing eemu skim ****"); - if (m_skimVec[emumu]) ATH_MSG_INFO ("**** Doing emumu skim ****"); - if (m_skimVec[mumumu]) ATH_MSG_INFO ("**** Doing mumumu skim ****"); - if (m_skimVec[Custom]) ATH_MSG_INFO ("**** Doing Custom skim ****"); - - return true; - -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::SetCuts(std::string thisSkim = "") { - - // clean all jet variables, since they are dummy most of the time - if (thisSkim != "CustomSkim") { - m_jetNumber = 0; - m_jetPtCut = 0.; - m_jetEtaCut = 0.; - m_jetOverlapRemovalWithTight = false; - m_jetOverlapRemovalWithMedium = false; - m_jetOverlapRemovalWithMediumIfNoTight = false; - m_jetOverlapEtaRange.clear(); - m_jetOverlapDrCut = 0.; - } - - if (thisSkim == "JpsieeSkim") { - ATH_MSG_VERBOSE ("**** Doing Jpsiee skim ****"); - m_electronNumber = 2; - m_electronNumber2 = 0; - m_electronPtCut = 4000.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 9.9; - m_electronType = "MEDIUM"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 0; - m_muonNumber2 = 0; - m_muonPtCut = 0.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "NOCHECK"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "ZeeSkim") { - ATH_MSG_VERBOSE ("**** Doing Zee skim ****"); - m_electronNumber = 2; - m_electronNumber2 = 0; - m_electronPtCut = 20000.; - m_electronPtCut2 = 20000.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 9.9; - m_electronType = "LOOSE"; - m_electronType2 = "LOOSE"; - m_muonNumber = 0; - m_muonNumber2 = 0; - m_muonPtCut = 0.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "NOCHECK"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 60000.0; - m_Mmax = 120000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "WenuSkim") { - ATH_MSG_VERBOSE ("**** Doing Wenu skim ****"); - m_electronNumber = 1; - m_electronNumber2 = 0; - m_electronPtCut = 20000.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 9.9; - m_electronType = "MEDIUM"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 0; - m_muonNumber2 = 0; - m_muonPtCut = 0.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "NOCHECK"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = true; - m_EtmissCut = 20000.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "WenujjSkim") { - ATH_MSG_VERBOSE ("**** Doing Wenujj skim ****"); - m_electronNumber = 1; - m_electronNumber2 = 0; - m_electronPtCut = 17000.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 9.9; - m_electronType = "MEDIUM"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 0; - m_muonNumber2 = 0; - m_muonPtCut = 0.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "NOCHECK"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 150000.0; // use it for high-pt jet cut - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - m_jetNumber = 2; - m_jetPtCut = 20000.; - m_jetEtaCut = 2.8; - m_jetOverlapRemovalWithTight = false; - m_jetOverlapRemovalWithMedium = true; - m_jetOverlapRemovalWithMediumIfNoTight = false; - m_jetOverlapEtaRange.push_back(-0.001); - m_jetOverlapEtaRange.push_back(1.37); - m_jetOverlapEtaRange.push_back(1.52); - m_jetOverlapEtaRange.push_back(2.47); - m_jetOverlapDrCut = 0.2; - } - - if (thisSkim == "TagAndProbeElecSkim") { - ATH_MSG_VERBOSE ("**** Doing Tag and Probe skim, electrons ****"); - m_electronNumber = 1; - m_electronNumber2 = 1; - m_electronPtCut = 25000.; - m_electronPtCut2 = 15000.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 9.9; - m_electronType = "MEDIUM"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 0; - m_muonNumber2 = 0; - m_muonPtCut = 0.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "NOCHECK"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "BackgroundElecSkim") { - ATH_MSG_VERBOSE ("**** Doing Background skim, electrons ****"); - m_electronNumber = 0; - m_electronNumber2 = 0; - m_electronPtCut = 0.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 0.0; - m_electronEtaCut2 = 0.0; - m_electronType = "NOCHECK"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 0; - m_muonNumber2 = 0; - m_muonPtCut = 0.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "NOCHECK"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = true; - m_triggerName = "EF_g20_etcut||EF_g20_loose"; - m_triggerName2 = "EF_e20_loose||EF_e20_loose1||EF_e20_looseTrk||EF_e22_loose||EF_e22_loose1||EF_e22_looseTrk||EF_e22vh_loose||EF_e22vh_loose1||EF_e22vh_looseTrk"; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "JpsimumuSkim") { - ATH_MSG_VERBOSE ("**** Doing Jpsimumu skim ****"); - m_electronNumber = 0; - m_electronNumber2 = 0; - m_electronPtCut = 0.0; - m_electronPtCut2 = 0.0; - m_electronEtaCut = 0.0; - m_electronEtaCut2 = 0.0; - m_electronType = "NOCHECK"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 2; - m_muonNumber2 = 0; - m_muonPtCut = 6000.; - m_muonPtCut2 = 0.; - m_muonEtaCut = 9.9; - m_muonEtaCut2 = 9.9; - m_muonType = "TIGHT"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "ZmumuSkim") { - ATH_MSG_VERBOSE ("**** Doing Zmumu skim ****"); - m_electronNumber = 0; - m_electronNumber2 = 0; - m_electronPtCut = 0.0; - m_electronPtCut2 = 0.0; - m_electronEtaCut = 0.0; - m_electronEtaCut2 = 0.0; - m_electronType = "NOCHECK"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 2; - m_muonNumber2 = 0; - m_muonPtCut = 20000.; - m_muonPtCut2 = 0.; - m_muonEtaCut = 9.9; - m_muonEtaCut2 = 9.9; - m_muonType = "LOOSE"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 60000.0; - m_Mmax = 120000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "WmunuSkim") { - ATH_MSG_VERBOSE ("**** Doing Wmunu skim ****"); - m_electronNumber = 0; - m_electronNumber2 = 0; - m_electronPtCut = 0.0; - m_electronPtCut2 = 0.0; - m_electronEtaCut = 0.0; - m_electronEtaCut2 = 0.0; - m_electronType = "NOCHECK"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 1; - m_muonNumber2 = 0; - m_muonPtCut = 20000.; - m_muonPtCut2 = 0.; - m_muonEtaCut = 9.9; - m_muonEtaCut2 = 9.9; - m_muonType = "TIGHT"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = true; - m_EtmissCut = 20000.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "WmunujjSkim") { - ATH_MSG_VERBOSE ("**** Doing Wmunujj skim ****"); - m_electronNumber = 0; - m_electronNumber2 = 0; - m_electronPtCut = 0.0; - m_electronPtCut2 = 0.0; - m_electronEtaCut = 0.0; - m_electronEtaCut2 = 0.0; - m_electronType = "NOCHECK"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 1; - m_muonNumber2 = 0; - m_muonPtCut = 17000.; - m_muonPtCut2 = 0.; - m_muonEtaCut = 9.9; - m_muonEtaCut2 = 9.9; - m_muonType = "TIGHT"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 150000.0; // use it for high-pt jet cut - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - m_jetNumber = 2; - m_jetPtCut = 20000.; - m_jetEtaCut = 2.8; - m_jetOverlapRemovalWithTight = true; - m_jetOverlapRemovalWithMedium = false; - m_jetOverlapRemovalWithMediumIfNoTight = false; - m_jetOverlapEtaRange.push_back(-0.001); - m_jetOverlapEtaRange.push_back(2.4); - m_jetOverlapDrCut = 0.2; - } - - if (thisSkim == "TagAndProbeMuonSkim") { - ATH_MSG_VERBOSE ("**** Doing Tag and Probe skim, muons ****"); - m_electronNumber = 0; - m_electronNumber2 = 0; - m_electronPtCut = 0.0; - m_electronPtCut2 = 0.0; - m_electronEtaCut = 0.0; - m_electronEtaCut2 = 0.0; - m_electronType = "NOCHECK"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 1; - m_muonNumber2 = 0; - m_muonPtCut = 25000.; - m_muonPtCut2 = 0.; - m_muonEtaCut = 9.9; - m_muonEtaCut2 = 9.9; - m_muonType = "TIGHT"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = true; - m_TrackPtCut = 15000.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "BackgroundMuonSkim") { - ATH_MSG_VERBOSE ("**** Doing Background skim, muons ****"); - m_electronNumber = 0; - m_electronNumber2 = 0; - m_electronPtCut = 0.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 0.0; - m_electronEtaCut2 = 0.0; - m_electronType = "NOCHECK"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 1; - m_muonNumber2 = 0; - m_muonPtCut = 15000.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 9.9; - m_muonEtaCut2 = 0.0; - m_muonType = "NOCHECK"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = true; - m_prescaleRate = 10; - } - - if (thisSkim == "ZtautauSkim") { - ATH_MSG_VERBOSE ("**** Doing Ztautau skim ****"); - m_electronNumber = 1; - m_electronNumber2 = 0; - m_electronPtCut = 10000.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 0.0; - m_electronType = "MEDIUM"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 1; - m_muonNumber2 = 0; - m_muonPtCut = 10000.; - m_muonPtCut2 = 0.; - m_muonEtaCut = 9.9; - m_muonEtaCut2 = 0.0; - m_muonType = "LOOSE"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "TwoElectronsSkim") { - ATH_MSG_VERBOSE ("**** Doing TwoElectrons skim ****"); - m_electronNumber = 2; - m_electronNumber2 = 0; - m_electronPtCut = 10000.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 0.0; - m_electronType = "MEDIUM"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 0; - m_muonNumber2 = 0; - m_muonPtCut = 0.; - m_muonPtCut2 = 0.; - m_muonEtaCut = 9.9; - m_muonEtaCut2 = 0.0; - m_muonType = "NOCHECK"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "TwoMuonsSkim") { - ATH_MSG_VERBOSE ("**** Doing TwoMuons skim ****"); - m_electronNumber = 0; - m_electronNumber2 = 0; - m_electronPtCut = 0.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 0.0; - m_electronType = "MEDIUM"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 2; - m_muonNumber2 = 0; - m_muonPtCut = 10000.; - m_muonPtCut2 = 0.; - m_muonEtaCut = 9.9; - m_muonEtaCut2 = 0.0; - m_muonType = "LOOSE"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "eeeSkim") { - ATH_MSG_VERBOSE ("**** Doing eee skim ****"); - m_electronNumber = 3; - m_electronNumber2 = 0; - m_electronPtCut = 10000.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 9.9; - m_electronType = "LOOSE"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 0; - m_muonNumber2 = 0; - m_muonPtCut = 10000.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "LOOSE"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "eemuSkim") { - ATH_MSG_VERBOSE ("**** Doing eemu skim ****"); - m_electronNumber = 2; - m_electronNumber2 = 0; - m_electronPtCut = 10000.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 9.9; - m_electronType = "LOOSE"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 1; - m_muonNumber2 = 0; - m_muonPtCut = 10000.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "LOOSE"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "emumuSkim") { - ATH_MSG_VERBOSE ("**** Doing emumu skim ****"); - m_electronNumber = 1; - m_electronNumber2 = 0; - m_electronPtCut = 10000.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 9.9; - m_electronType = "LOOSE"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 2; - m_muonNumber2 = 0; - m_muonPtCut = 10000.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "LOOSE"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "mumumuSkim") { - ATH_MSG_VERBOSE ("**** Doing mumumu skim ****"); - m_electronNumber = 0; - m_electronNumber2 = 0; - m_electronPtCut = 10000.; - m_electronPtCut2 = 0.; - m_electronEtaCut = 9.9; - m_electronEtaCut2 = 9.9; - m_electronType = "LOOSE"; - m_electronType2 = "NOCHECK"; - m_muonNumber = 3; - m_muonNumber2 = 0; - m_muonPtCut = 10000.0; - m_muonPtCut2 = 0.0; - m_muonEtaCut = 0.0; - m_muonEtaCut2 = 0.0; - m_muonType = "LOOSE"; - m_muonType2 = "NOCHECK"; - m_doTrackCut = false; - m_TrackPtCut = 0.0; - m_TrackEtaCut = 9.9; - m_doInvMassCut = false; - m_Mmin = 0.0; - m_Mmax = 20000000.0; - m_doEtmissCut = false; - m_EtmissCut = 0.0; - m_doTriggerCut = false; - m_triggerName = ""; - m_triggerName2 = ""; - m_doPrescale = false; - m_prescaleRate = 1; - } - - if (thisSkim == "CustomSkim") { - ATH_MSG_VERBOSE ("**** Doing custom skim ****"); - } - - if ( (m_doTriggerCut) && (m_triggerName == "") && (m_triggerName2 == "") ) { - ATH_MSG_DEBUG("No trigger name selected, will not cut on trigger"); - m_doTriggerCut = false; - } - - if ( (m_doPrescale) && (m_prescaleRate <= 1) ) { - ATH_MSG_DEBUG("Improper prescale rate selected (" << m_prescaleRate << "), will not prescale"); - m_doPrescale = false; - } - - if ( (m_doInvMassCut) && (m_electronNumber == 0) && (m_electronNumber2 == 0) && (m_muonNumber == 0) && (m_muonNumber2 == 0)) { - ATH_MSG_DEBUG("No cuts selected for leptons, invariant mass cut will have no effect"); - m_doInvMassCut = false; - } - - if ( (m_doInvMassCut) && ((m_electronNumber > 0) || (m_electronNumber2 > 0)) && ((m_muonNumber > 0) || (m_muonNumber2 > 0))) { - ATH_MSG_DEBUG("Electron and muon cuts selected, invariant mass cut will have no effect"); - m_doInvMassCut = false; - } - - if ( (m_electronNumber == 0) && (m_electronNumber2 == 0) && (m_muonNumber == 0) && (m_muonNumber2 == 0) && !m_doTrackCut && !m_doEtmissCut && !m_doTriggerCut && !m_doPrescale) { - ATH_MSG_DEBUG("No cuts set at all ! Will not skim"); - return false; - } - - ATH_MSG_VERBOSE("**** Skim will be performed with parameters: ****"); - ATH_MSG_VERBOSE("electron number : " << m_electronNumber); - ATH_MSG_VERBOSE("electron number 2 : " << m_electronNumber2); - ATH_MSG_VERBOSE("electron Pt cut : " << m_electronPtCut); - ATH_MSG_VERBOSE("electron Pt cut 2 : " << m_electronPtCut2); - ATH_MSG_VERBOSE("electron Eta cut : " << m_electronEtaCut); - ATH_MSG_VERBOSE("electron Eta cut 2 : " << m_electronEtaCut2); - ATH_MSG_VERBOSE("electron Type : " << m_electronType); - ATH_MSG_VERBOSE("electron Type 2 : " << m_electronType2); - - ATH_MSG_VERBOSE("muon number : " << m_muonNumber); - ATH_MSG_VERBOSE("muon number 2 : " << m_muonNumber2); - ATH_MSG_VERBOSE("muon Pt cut : " << m_muonPtCut); - ATH_MSG_VERBOSE("muon Pt cut 2 : " << m_muonPtCut2); - ATH_MSG_VERBOSE("muon Eta cut : " << m_muonEtaCut); - ATH_MSG_VERBOSE("muon Eta cut 2 : " << m_muonEtaCut2); - ATH_MSG_VERBOSE("muon Type : " << m_muonType); - ATH_MSG_VERBOSE("muon Type 2 : " << m_muonType2); - - ATH_MSG_VERBOSE("jet number : " << m_jetNumber); - ATH_MSG_VERBOSE("jet Pt cut : " << m_jetPtCut); - ATH_MSG_VERBOSE("jet Eta cut : " << m_jetEtaCut); - ATH_MSG_VERBOSE("Overlap removal with tight lepton : " << m_jetOverlapRemovalWithTight); - ATH_MSG_VERBOSE("Overlap removal with medium lepton : " << m_jetOverlapRemovalWithMedium); - ATH_MSG_VERBOSE("Overlap removal with medium if no tight : " << m_jetOverlapRemovalWithMediumIfNoTight); - ATH_MSG_VERBOSE("DR for jet-lepton pverlap removal : " << m_jetOverlapDrCut); - for (size_t q=0; q<m_jetOverlapEtaRange.size(); ++q) { - if (q%2) ATH_MSG_VERBOSE("Lepton abs(eta) for overlap removal : to " << m_jetOverlapEtaRange[q]); - else ATH_MSG_VERBOSE("Lepton abs(eta) for overlap removal : from " << m_jetOverlapEtaRange[q]); - } - - ATH_MSG_VERBOSE("doing track cut : " << m_doTrackCut); - ATH_MSG_VERBOSE("Track Pt cut : " << m_TrackPtCut); - ATH_MSG_VERBOSE("Track Eta cut : " << m_TrackEtaCut); - - ATH_MSG_VERBOSE("doing Etmiss cut : " << m_doEtmissCut); - ATH_MSG_VERBOSE("Etmiss cut : " << m_EtmissCut); - - ATH_MSG_VERBOSE("doing Inv mass cut : " << m_doInvMassCut); - ATH_MSG_VERBOSE("Inv mass cut minimum : " << m_Mmin); - ATH_MSG_VERBOSE("Inv mass cut maximum : " << m_Mmax); - - ATH_MSG_VERBOSE("doing trigger cut : " << m_doTriggerCut); - ATH_MSG_VERBOSE("Trigger type : " << m_triggerName); - ATH_MSG_VERBOSE("Trigger type 2 : " << m_triggerName2); - - ATH_MSG_VERBOSE("Prescaling : " << m_doPrescale); - ATH_MSG_VERBOSE("Prescale rate : " << m_prescaleRate); - - return true; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -std::vector<const Electron*> WZSkimsMain::OpenElectrons() { - ATH_MSG_DEBUG("Opening electron container: " << m_electronContainerName); - - std::vector<const Electron*> l_Electrons; - l_Electrons.clear(); - - const ElectronContainer* importedElectronColl; - StatusCode sc = m_storeGate->retrieve(importedElectronColl, m_electronContainerName); - if (sc.isFailure() ) { - ATH_MSG_WARNING("No Electron Collection of type " << m_electronContainerName << " found in StoreGate"); - return l_Electrons; - } - else ATH_MSG_DEBUG("You have " << importedElectronColl->size() << " electrons in this event"); - - ElectronContainer::const_iterator electronIter; - - for (electronIter=importedElectronColl->begin(); electronIter!=importedElectronColl->end(); ++electronIter) { - l_Electrons.push_back(*electronIter); - } - - return l_Electrons; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -std::vector<const Analysis::Muon*> WZSkimsMain::OpenMuons(std::string l_muonContainerName) { - ATH_MSG_DEBUG("Opening muon container: " << l_muonContainerName); - - std::vector<const Analysis::Muon*> l_Muons; - l_Muons.clear(); - - const MuonContainer* importedMuonColl; - StatusCode sc = m_storeGate->retrieve(importedMuonColl, l_muonContainerName); - if (sc.isFailure() ) { - ATH_MSG_WARNING("No Muon Collection of type " << l_muonContainerName << " found in StoreGate"); - return l_Muons; - } - else ATH_MSG_DEBUG("You have " << importedMuonColl->size() << " muons in this event"); - - MuonContainer::const_iterator muonIter; - - for (muonIter=importedMuonColl->begin(); muonIter!=importedMuonColl->end(); ++muonIter) { - l_Muons.push_back(*muonIter); - } - - return l_Muons; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -std::vector<const Jet*> WZSkimsMain::OpenJets() { - ATH_MSG_DEBUG("Opening jet container: " << m_jetContainerName); - - std::vector<const Jet*> l_Jets; - - const JetCollection* jetcol; - StatusCode sc = m_storeGate->retrieve(jetcol,m_jetContainerName); - if (sc.isFailure() ) { - ATH_MSG_WARNING("No Jet Collection of type " << m_jetContainerName << " found in StoreGate"); - return l_Jets; - } - else ATH_MSG_DEBUG("You have " << jetcol->size() << " jets in this event"); - - for (JetCollection::const_iterator jetIter=jetcol->begin(); jetIter!=jetcol->end(); ++jetIter) { - double jetPt = (*jetIter)->pt(); - double jetEta = (*jetIter)->eta(); - if (jetPt > m_jetPtCut && fabs(jetEta) < m_jetEtaCut){ - l_Jets.push_back(*jetIter); - ATH_MSG_DEBUG("jet Pt, Eta: " << jetPt << " " << jetEta << " - accepted "); - } else { - ATH_MSG_DEBUG("jet Pt, Eta: " << jetPt << " " << jetEta << " - rejected "); - } - } - ATH_MSG_DEBUG("You have " << l_Jets.size() << " jets which passed Pt and Eta cuts "); - - return l_Jets; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -void WZSkimsMain::ReadElectrons(const std::vector<const Electron*> & electrons, std::vector<struct lepton> & leptons) -{ - struct lepton l; - for (std::vector<const Electron*>::const_iterator electronIter=electrons.begin(); electronIter!=electrons.end(); ++electronIter) { - l.medium = (*electronIter)->isElectron(egammaPIDObs::ElectronMedium); - if (l.medium) { // keep only medium leptons - l.pt = (*electronIter)->cluster()->pt(); - if (l.pt>m_electronPtCut) { // keep only leptons with good pt - l.eta = (*electronIter)->cluster()->eta(); - l.phi = (*electronIter)->cluster()->phi(); - l.tight = (*electronIter)->isElectron(egammaPIDObs::ElectronTight); - leptons.push_back(l); - } - } - } -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -void WZSkimsMain::ReadMuons(const std::vector<const Analysis::Muon*> & muons, std::vector<struct lepton> & leptons) -{ - struct lepton l; - for (std::vector<const Analysis::Muon*>::const_iterator muonIter=muons.begin(); muonIter!=muons.end(); ++muonIter) { - l.medium = (*muonIter)->isMedium(); - if (l.medium) { // keep only medium leptons - l.pt = (*muonIter)->pt(); - if (l.pt>m_muonPtCut) { // keep only leptons with good pt - l.eta = (*muonIter)->eta(); - l.phi = (*muonIter)->phi(); - l.tight = (*muonIter)->isTight(); - leptons.push_back(l); - } - } - } -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::CheckJetLeptonOverlap(const std::vector<const Jet*> & jets, const std::vector<struct lepton> & leptons) -{ - const struct lepton * firstMedium = NULL; - std::vector<const struct lepton *> goodleptons; - bool ok = false; - - ATH_MSG_DEBUG("Check eta range of " << leptons.size() << " leptons for overlap removal with jets"); - - for (std::vector<struct lepton>::const_iterator lepIter=leptons.begin(); lepIter!=leptons.end(); ++lepIter) { - double eta=fabs(lepIter->eta); - // look for leptons with special eta range - if (m_jetOverlapEtaRange.size()>1) { - ok=false; - for (size_t q=1; q<m_jetOverlapEtaRange.size(); q+=2) { - if (eta<m_jetOverlapEtaRange[q] && eta>m_jetOverlapEtaRange[q-1]) { - ok=true; - break; - } - } - if (!ok) { - ATH_MSG_DEBUG("lepton eta is "<<eta<<" do not use it for overlap removal"); - continue; // can't use this lepton - it's outside valid eta range - } - } - if (m_jetOverlapRemovalWithMedium && lepIter->medium) { - goodleptons.push_back(&(*lepIter)); - } else if (m_jetOverlapRemovalWithTight && lepIter->tight) { - goodleptons.push_back(&(*lepIter)); - } - if (!lepIter->tight && !firstMedium) { - firstMedium=&(*lepIter); - } - } - - size_t nlep=goodleptons.size(); - if (m_jetOverlapRemovalWithMediumIfNoTight && nlep == 0 && firstMedium) { - goodleptons.push_back(firstMedium); - nlep=1; - ATH_MSG_DEBUG("lepton-jet overlap removal with 'one medium because no tight' lepton"); - } else { - ATH_MSG_DEBUG("lepton-jet overlap removal with "<<nlep - <<((m_jetOverlapRemovalWithMedium)?" medium leptons":" tight leptons")); - } - - if (nlep>0) { - // we are looking here for at least one combination - // of one lepton and N jets which do not overlap with this lepton - // we don't care if those jets overlap with other leptons - ok = false; - for (std::vector<const struct lepton *>::const_iterator lep=goodleptons.begin(); - lep!=goodleptons.end(); ++lep) { - unsigned int nj = 0; - for (std::vector<const Jet *>::const_iterator jetIter=jets.begin(); jetIter!=jets.end(); ++jetIter){ - double dphi = fabs((*jetIter)->phi() - (*lep)->phi); - if (dphi>M_PI) dphi -= 2*M_PI; - double deta = (*jetIter)->eta() - (*lep)->eta; - double dr = hypot(dphi,deta); - if (dr<m_jetOverlapDrCut) continue; - if (++nj >= m_jetNumber) { - ok = true; - break; - } - } - if (ok) break; - } - } else { // no leptons for overlap removal - ok = ( jets.size() >= m_jetNumber ); - } - - // check if there is one high-pt jet - // use m_EtmissCut as a threshold (since Et miss cut is not applied) - if (! (ok || m_doEtmissCut) ) { - for (std::vector<const Jet *>::const_iterator jetIter=jets.begin(); jetIter!=jets.end(); ++jetIter){ - if ( (*jetIter)->pt() > m_EtmissCut) { - ok = true; - ATH_MSG_DEBUG("Found one high-pt jet, pt "<<(*jetIter)->pt()); - break; - } - } - } - - if (ok) - ATH_MSG_DEBUG("Passed CheckJetLeptonOverlap"); - else - ATH_MSG_DEBUG("Not enough good jets in event"); - - return ok; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -std::vector<bool> WZSkimsMain::CheckElectronVector(std::vector<const Electron*> AllElectronsVector, double l_electronPtCut, double l_electronEtaCut, std::string l_electronType) { - ATH_MSG_DEBUG("Checking electron vector with cuts: Pt: " << l_electronPtCut << ", Eta: " << l_electronEtaCut << ", type: " << l_electronType); - - std::vector<bool> l_GoodElectronsFlag; - l_GoodElectronsFlag.clear(); - - std::vector<const Electron*>::iterator electronIter; - - for (electronIter=AllElectronsVector.begin(); electronIter!=AllElectronsVector.end(); ++electronIter) { - double electronPt = fabs((*electronIter)->cluster()->pt()); - double electronEta = fabs((*electronIter)->cluster()->eta()); - bool isElecLoose = (*electronIter)->isElectron(egammaPIDObs::ElectronLoose); - bool isElecMedium = (*electronIter)->isElectron(egammaPIDObs::ElectronMedium); - bool isElecTight = (*electronIter)->isElectron(egammaPIDObs::ElectronTight); - bool isFwdElecLoose = (*electronIter)->isElectron(egammaPIDObs::frwdElectronLoose); - bool isFwdElecTight = (*electronIter)->isElectron(egammaPIDObs::frwdElectronTight); - ATH_MSG_DEBUG("electron Pt, Eta, Type: " << electronPt << " " << electronEta << " " << isElecLoose << isElecMedium << isElecTight << isFwdElecLoose << isFwdElecTight); - // if (isFwdElecLoose) isElecLoose = true; // Loose forward electrons bring too many events: not included in LOOSE - if (isFwdElecTight) isElecTight = true; - if ((electronPt >= l_electronPtCut) && (electronEta <= l_electronEtaCut) - && ((l_electronType == "NOCHECK") || ((l_electronType == "LOOSE") && isElecLoose) || ((l_electronType == "MEDIUM") && isElecMedium) || ((l_electronType == "TIGHT") && isElecTight))) { - l_GoodElectronsFlag.push_back(true); - } - else l_GoodElectronsFlag.push_back(false); - } - - return l_GoodElectronsFlag; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -std::vector<bool> WZSkimsMain::CheckMuonVector(std::vector<const Analysis::Muon*> AllMuonsVector, double l_muonPtCut, double l_muonEtaCut, std::string l_muonType) { - ATH_MSG_DEBUG("Checking muon vector with cuts: Pt: " << l_muonPtCut << ", Eta: " << l_muonEtaCut << ", type: " << l_muonType); - - std::vector<bool> l_GoodMuonsFlag; - l_GoodMuonsFlag.clear(); - - std::vector<const Analysis::Muon*>::iterator muonIter; - - for (muonIter=AllMuonsVector.begin(); muonIter!=AllMuonsVector.end(); ++muonIter) { - double muonPt = fabs((*muonIter)->pt()); - double muonEta = fabs((*muonIter)->eta()); - - bool isMuonLoose = (*muonIter)->isLoose(); - bool isMuonMedium = (*muonIter)->isMedium(); - bool isMuonTight = (*muonIter)->isTight(); - - ATH_MSG_DEBUG("muon Pt, Eta, Type: " << muonPt << " " << muonEta << " " << isMuonLoose << isMuonMedium << isMuonTight); - if ((muonPt >= l_muonPtCut) && (muonEta <= l_muonEtaCut) - && ((l_muonType == "NOCHECK") || ((l_muonType == "LOOSE") && isMuonLoose) || ((l_muonType == "MEDIUM") && isMuonMedium) || ((l_muonType == "TIGHT") && isMuonTight))) { - l_GoodMuonsFlag.push_back(true); - } - else l_GoodMuonsFlag.push_back(false); - } - - return l_GoodMuonsFlag; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::CheckLeptonCuts(unsigned int l_leptonNumber1, unsigned int l_leptonNumber2, std::vector<bool> l_GoodLeptonsFlag1, std::vector<bool> l_GoodLeptonsFlag2) { - - bool hasPassed = false; - - if ((l_leptonNumber1 > 0) && (l_leptonNumber2 == 0)) { - ATH_MSG_DEBUG ("Checking only 1st set of cuts for leptons"); - unsigned int number_good_leptons = 0; - for (unsigned int iter = 0; iter < l_GoodLeptonsFlag1.size(); iter++) { - if (l_GoodLeptonsFlag1[iter]) number_good_leptons++; - } - if (number_good_leptons >= l_leptonNumber1) hasPassed = true; - } - - else if ((l_leptonNumber1 == 0) && (l_leptonNumber2 > 0)){ - ATH_MSG_DEBUG ("Checking only 2nd set of cuts for leptons"); - unsigned int number_good_leptons = 0; - for (unsigned int iter = 0; iter < l_GoodLeptonsFlag2.size(); iter++) { - if (l_GoodLeptonsFlag2[iter]) number_good_leptons++; - } - if (number_good_leptons >= l_leptonNumber2) hasPassed = true; - - } - - else { - ATH_MSG_DEBUG ("Checking both sets of cuts for leptons"); - int number_leptons_only_1st_cut = 0; - int number_leptons_only_2nd_cut = 0; - int number_leptons_both_cuts = 0; - - for (unsigned int iter = 0; iter < l_GoodLeptonsFlag1.size(); iter++) { - if ((l_GoodLeptonsFlag1[iter]) && !(l_GoodLeptonsFlag2[iter])) number_leptons_only_1st_cut++; - if (!(l_GoodLeptonsFlag1[iter]) && (l_GoodLeptonsFlag2[iter])) number_leptons_only_2nd_cut++; - if ((l_GoodLeptonsFlag1[iter]) && (l_GoodLeptonsFlag2[iter])) number_leptons_both_cuts++; - } - - int number_leptons_rem_1st_cut = (int) l_leptonNumber1 - number_leptons_only_1st_cut; - int number_leptons_rem_2nd_cut = (int) l_leptonNumber2 - number_leptons_only_2nd_cut; - - if (number_leptons_rem_1st_cut < 0) number_leptons_rem_1st_cut = 0; - if (number_leptons_rem_2nd_cut < 0) number_leptons_rem_2nd_cut = 0; - - if (number_leptons_both_cuts >= (number_leptons_rem_1st_cut + number_leptons_rem_2nd_cut)) hasPassed = true; - - } - - if (hasPassed) ATH_MSG_DEBUG ("Passed CheckLeptonCuts"); - return hasPassed; - -} - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::CheckInvMass(std::vector<const Electron*> ElectronV, std::vector<bool> l_GoodElectronsFlag1, std::vector<bool> l_GoodElectronsFlag2) { - ATH_MSG_DEBUG("Checking invariant mass for electrons"); - - ATH_MSG_DEBUG(ElectronV.size() << ", " << l_GoodElectronsFlag1.size() << ", " << l_GoodElectronsFlag2.size()); - - bool hasPassed = false; - - unsigned int sizeV = ElectronV.size(); - - if (l_GoodElectronsFlag1.size() == 0) l_GoodElectronsFlag1.assign(sizeV, false); - if (l_GoodElectronsFlag2.size() == 0) l_GoodElectronsFlag2.assign(sizeV, false); - - std::vector<const Electron*>::iterator electronIter_1, electronIter_2; - std::vector<bool>::iterator Flag1_Iter_1, Flag1_Iter_2, Flag2_Iter_1, Flag2_Iter_2; - - if (sizeV >= 2) { - - for (electronIter_1 = ElectronV.begin(), Flag1_Iter_1 = l_GoodElectronsFlag1.begin(), Flag2_Iter_1 = l_GoodElectronsFlag2.begin(); electronIter_1 !=ElectronV.end(); ++electronIter_1, ++Flag1_Iter_1, ++Flag2_Iter_1) { - //double electronCharge_1 = (*electronIter_1)->charge(); - for (electronIter_2 = electronIter_1 + 1, Flag1_Iter_2 = Flag1_Iter_1 + 1, Flag2_Iter_2 = Flag2_Iter_1 + 1; electronIter_2 !=ElectronV.end(); ++electronIter_2, ++Flag1_Iter_2, ++Flag2_Iter_2) { - //double electronCharge_2 = (*electronIter_2)->charge(); - - if ( ((*Flag1_Iter_1) || (*Flag2_Iter_1)) && ((*Flag1_Iter_2) || (*Flag2_Iter_2)) ) { // && ((electronCharge_1*electronCharge_2) == -1.0) ) { // opp. sign leptons not required - - double pxSum = (*electronIter_1)->px() + (*electronIter_2)->px(); - double pySum = (*electronIter_1)->py() + (*electronIter_2)->py(); - double pzSum = (*electronIter_1)->pz() + (*electronIter_2)->pz(); - double eSum = (*electronIter_1)->e() + (*electronIter_2)->e(); - - double invMass = sqrt(eSum*eSum - pxSum*pxSum - pySum*pySum - pzSum*pzSum); - - if ((invMass >= m_Mmin) && (invMass <= m_Mmax)) { - ATH_MSG_DEBUG ("Good electron pair found with invariant mass: " << invMass); - hasPassed = true; - break; - - } - } - } - if (hasPassed == true) break; - } - } - - return hasPassed; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::CheckInvMass(std::vector<const Analysis::Muon*> MuonV, std::vector<bool> l_GoodMuonsFlag1, std::vector<bool> l_GoodMuonsFlag2) { - ATH_MSG_DEBUG("Checking invariant mass for muons"); - - ATH_MSG_DEBUG(MuonV.size() << ", " << l_GoodMuonsFlag1.size() << ", " << l_GoodMuonsFlag2.size()); - - bool hasPassed = false; - - unsigned int sizeV = MuonV.size(); - - if (l_GoodMuonsFlag1.size() == 0) l_GoodMuonsFlag1.assign(sizeV, false); - if (l_GoodMuonsFlag2.size() == 0) l_GoodMuonsFlag2.assign(sizeV, false); - - std::vector<const Analysis::Muon*>::iterator muonIter_1, muonIter_2; - std::vector<bool>::iterator Flag1_Iter_1, Flag1_Iter_2, Flag2_Iter_1, Flag2_Iter_2; - - if (sizeV >= 2) { - - for (muonIter_1 = MuonV.begin(), Flag1_Iter_1 = l_GoodMuonsFlag1.begin(), Flag2_Iter_1 = l_GoodMuonsFlag2.begin(); muonIter_1 !=MuonV.end(); ++muonIter_1, ++Flag1_Iter_1, ++Flag2_Iter_1) { - //double muonCharge_1 = (*muonIter_1)->charge(); - for (muonIter_2 = muonIter_1 + 1, Flag1_Iter_2 = Flag1_Iter_1 + 1, Flag2_Iter_2 = Flag2_Iter_1 + 1; muonIter_2 !=MuonV.end(); ++muonIter_2, ++Flag1_Iter_2, ++Flag2_Iter_2) { - //double muonCharge_2 = (*muonIter_2)->charge(); - - if ( ((*Flag1_Iter_1) || (*Flag2_Iter_1)) && ((*Flag1_Iter_2) || (*Flag2_Iter_2)) ) { // && ((muonCharge_1*muonCharge_2) == -1.0) ) { // opp. sign leptons not required - - double pxSum = (*muonIter_1)->px() + (*muonIter_2)->px(); - double pySum = (*muonIter_1)->py() + (*muonIter_2)->py(); - double pzSum = (*muonIter_1)->pz() + (*muonIter_2)->pz(); - double eSum = (*muonIter_1)->e() + (*muonIter_2)->e(); - - double invMass = sqrt(eSum*eSum - pxSum*pxSum - pySum*pySum - pzSum*pzSum); - - if ((invMass >= m_Mmin) && (invMass <= m_Mmax)) { - ATH_MSG_DEBUG ("Good muon pair found with invariant mass: " << invMass); - hasPassed = true; - break; - - } - } - } - if (hasPassed == true) break; - } - } - - return hasPassed; -} - - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::Prescale() { - bool keeping = false; - m_prescaleCounter++; - if (m_prescaleCounter == 1) { - ATH_MSG_DEBUG("Prescaling : event 1 out of " << m_prescaleRate << ", keeping"); - keeping = true; - } - else { - ATH_MSG_DEBUG("Prescaling : event " << m_prescaleCounter << " out of " << m_prescaleRate << ", rejecting"); - if (m_prescaleCounter > m_prescaleRate) { - ATH_MSG_WARNING("Prescale counter (" << m_prescaleCounter << ") above prescale rate (" << m_prescaleRate << ") ! This should not happen, STOP prescaling from now on"); - m_prescaleCounter = 0; - m_doPrescale = false; - } - if (m_prescaleCounter == m_prescaleRate) m_prescaleCounter = 0; - keeping = false; - } - - return keeping; - -} - - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::SelectTrack() { - ATH_MSG_DEBUG("Checking tracks with cuts: Pt: " << m_TrackPtCut << ", Eta: " << m_TrackEtaCut); - - bool hasPassed = false; - - const Rec::TrackParticleContainer* importedTrackColl; - StatusCode sc = m_storeGate->retrieve(importedTrackColl, m_trackContainerName); - if (sc.isFailure()) { - ATH_MSG_WARNING("No track collection of type " << m_trackContainerName); - return hasPassed; - } - else ATH_MSG_DEBUG("You have " << importedTrackColl->size() << " tracks in this event"); - - Rec::TrackParticleContainer::const_iterator trackIter; - - for (trackIter=importedTrackColl->begin(); trackIter!=importedTrackColl->end(); ++trackIter) { - double trackPt = fabs((*trackIter)->pt()); - double trackEta = fabs((*trackIter)->eta()); - - ATH_MSG_DEBUG("track Pt, Eta: " << trackPt << " " << trackEta); - - if ( (trackPt >= m_TrackPtCut) && (trackEta <= m_TrackEtaCut) ) { - ATH_MSG_DEBUG("Good track found"); - hasPassed = true; - break; - } - } - - if (hasPassed == true) ATH_MSG_DEBUG ("Passed SelectTrack"); - - return hasPassed; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::SelectEtmiss(std::string l_missingEtObjectName) { - ATH_MSG_DEBUG("Checking missing Et"); - bool hasPassed = false; - - const MissingET* missEt; - - StatusCode sc = m_storeGate->retrieve(missEt, l_missingEtObjectName); - if (sc.isFailure()) { - ATH_MSG_WARNING("No Missing Et object of type " << l_missingEtObjectName); - return hasPassed; - } - double ExMiss=missEt->etx(); - double EyMiss=missEt->ety(); - //double EtSum=missEt->sumet(); - - double etmiss = sqrt(ExMiss*ExMiss + EyMiss*EyMiss); - - ATH_MSG_DEBUG("Etmiss (from " << l_missingEtObjectName << "): " << etmiss ); - - if (etmiss >= m_EtmissCut) { - ATH_MSG_DEBUG (" --> cut passed for this Etmiss"); - hasPassed = true; - } - - - return hasPassed; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::SelectEtmiss() { - ATH_MSG_DEBUG("Checking missing Et (ALL)"); - bool hasPassed = false; - - const MissingET* missEt; - StatusCode sc = m_storeGate->retrieve(missEt, "MET_RefFinal"); - if (sc.isFailure()) { - ATH_MSG_WARNING("No Missing Et object of type MET_RefFinal"); - return hasPassed; - } - double ExMiss=missEt->etx(); - double EyMiss=missEt->ety(); - //double EtSum=missEt->sumet(); - - double etmiss = sqrt(ExMiss*ExMiss + EyMiss*EyMiss); - - ATH_MSG_DEBUG("Etmiss (from MET_RefFinal): " << etmiss ); - - if (etmiss >= m_EtmissCut) { - ATH_MSG_DEBUG (" --> cut passed for this Etmiss"); - hasPassed = true; - } - - if (hasPassed) return hasPassed; - - - - const MissingET* MET_LocHadTopo; - sc = m_storeGate->retrieve(MET_LocHadTopo, "MET_LocHadTopo"); - if (sc.isFailure()) { - ATH_MSG_WARNING("No Missing Et object of type MET_LocHadTopo"); - return hasPassed; - } - - const MissingET* MET_MuonBoy; - sc = m_storeGate->retrieve(MET_MuonBoy, "MET_MuonBoy"); - if (sc.isFailure()) { - ATH_MSG_WARNING("No Missing Et object of type MET_MuonBoy"); - return hasPassed; - } - - const MissingET* MET_RefMuon_Track; - sc = m_storeGate->retrieve(MET_RefMuon_Track, "MET_RefMuon_Track"); - if (sc.isFailure()) { - ATH_MSG_WARNING("No Missing Et object of type MET_RefMuon_Track"); - return hasPassed; - } - - ExMiss = MET_LocHadTopo->etx() + MET_MuonBoy->etx() - MET_RefMuon_Track->etx(); - EyMiss = MET_LocHadTopo->ety() + MET_MuonBoy->ety() - MET_RefMuon_Track->ety(); - - etmiss = sqrt(ExMiss*ExMiss + EyMiss*EyMiss); - - ATH_MSG_DEBUG("Etmiss (from MET_LocHadTopo + MET_MuonBoy - MET_RefMuon_Track): " << etmiss ); - - if (etmiss >= m_EtmissCut) { - ATH_MSG_DEBUG (" --> cut passed for this Etmiss"); - hasPassed = true; - } - - return hasPassed; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -bool WZSkimsMain::SelectTrigger() { - ATH_MSG_DEBUG("Checking trigger"); - - bool hasPassed = false; - - // get the trigger tool - if (m_doTriggerCut) { - StatusCode sc = toolSvc()->retrieveTool("Trig::TrigDecisionTool/TrigDecisionTool",m_trigDec); - if (sc != StatusCode::SUCCESS) { - ATH_MSG_ERROR("Can't get handle on the trigger decision tool - will not cut on trigger"); - m_doTriggerCut = false; - } - } - - bool trigpass = false, trigpass2 = false; - if (m_triggerName != "") trigpass = m_trigDec->isPassed(m_triggerName); - if (m_triggerName2 != "") trigpass2 = m_trigDec->isPassed(m_triggerName2); - - if (trigpass) ATH_MSG_DEBUG("Passes trigger " << m_triggerName); - if (trigpass2) ATH_MSG_DEBUG("Passes trigger " << m_triggerName2); - - hasPassed = trigpass || trigpass2; - - if (hasPassed == true) ATH_MSG_DEBUG ("Passed SelectTrigger"); - - return hasPassed; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -//bool WZSkimsMain::SelectEvent() { -//} diff --git a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/src/components/WZSkims_entries.cxx b/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/src/components/WZSkims_entries.cxx deleted file mode 100644 index 647633abb643cb2878ef2b9d0597cc82ed717025..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/StandardModelPhys/WZBenchmarks/WZSkims/src/components/WZSkims_entries.cxx +++ /dev/null @@ -1,3 +0,0 @@ -#include "WZSkims/WZSkimsMain.h" -DECLARE_COMPONENT( WZSkimsMain ) - diff --git a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/RecoTauPlots.h b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/RecoTauPlots.h index 514df2351995c110928547dea7e7df3d06f23571..261e18e73bc3e14b9c8c27eb22328717ab74b9cb 100644 --- a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/RecoTauPlots.h +++ b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/RecoTauPlots.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TAUHISTUTILS_RECOTAUPLOTS_H @@ -23,11 +23,6 @@ class RecoTauPlots: public PlotBase { Tau::ParamPlots m_oParamPlots; //Here I try to include CellBased substructure variables, from the Particle FLow Object (PFO), begining with basic charged and neutral PFO 4-vector. - TH1* m_cellBased_charPFO_Pt; - TH1* m_cellBased_charPFO_Eta; - TH1* m_cellBased_charPFO_Phi; - TH1* m_cellBased_charPFO_E; - TH1* m_cellBased_neuPFO_Pt; TH1* m_cellBased_neuPFO_Eta; TH1* m_cellBased_neuPFO_Phi; diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/Migration.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/Migration.cxx index 8aff22a1adf797dfd1b71af1c111653708de03d0..339915de29da2e5c9a0f4c421a14655a825a7c40 100644 --- a/PhysicsAnalysis/TauID/TauHistUtils/src/Migration.cxx +++ b/PhysicsAnalysis/TauID/TauHistUtils/src/Migration.cxx @@ -1,196 +1,186 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "TauHistUtils/Migration.h" namespace Tau{ -Migration::Migration(PlotBase* pParent, std::string sDir, std::string sTauJetContainerName): - PlotBase(pParent, sDir), - m_migration_panTau(nullptr), - m_migration_panTauProto(nullptr), - m_migration_cellBased(nullptr), - m_sTauJetContainerName(sTauJetContainerName) -{ -} + Migration::Migration(PlotBase* pParent, std::string sDir, std::string sTauJetContainerName): + PlotBase(pParent, sDir), + m_migration_panTau(nullptr), + m_migration_panTauProto(nullptr), + m_migration_cellBased(nullptr), + m_sTauJetContainerName(sTauJetContainerName) + { + } -Migration::~Migration() -{ -} + Migration::~Migration() + { + } -void Migration::initializePlots() -{ - m_migration_panTau = Book1D("panTau_migration",m_sTauJetContainerName + " panTau migration",DECAYSIZE,0,DECAYSIZE); - m_migration_panTauProto = Book1D("panTauProto_migration",m_sTauJetContainerName + " panTau proto migration",DECAYSIZE,0,DECAYSIZE); - m_migration_cellBased = Book1D("cellBased_migration",m_sTauJetContainerName + " cellBased migration",DECAYSIZE,0,DECAYSIZE); - m_migration_panTau->GetXaxis()->SetLabelSize(0.05); - m_migration_panTauProto->GetXaxis()->SetLabelSize(0.05); - m_migration_cellBased->GetXaxis()->SetLabelSize(0.05); - for(int i=1; i<= DECAYSIZE;i++){ + void Migration::initializePlots() + { + m_migration_panTau = Book1D("panTau_migration",m_sTauJetContainerName + " panTau migration",DECAYSIZE,0,DECAYSIZE); + m_migration_panTauProto = Book1D("panTauProto_migration",m_sTauJetContainerName + " panTau proto migration",DECAYSIZE,0,DECAYSIZE); + m_migration_cellBased = Book1D("cellBased_migration",m_sTauJetContainerName + " cellBased migration",DECAYSIZE,0,DECAYSIZE); + m_migration_panTau->GetXaxis()->SetLabelSize(0.05); + m_migration_panTauProto->GetXaxis()->SetLabelSize(0.05); + m_migration_cellBased->GetXaxis()->SetLabelSize(0.05); + for(int i=1; i<= DECAYSIZE;i++){ m_migration_panTauProto->GetXaxis()->SetBinLabel(i,m_lable[i-1]); m_migration_panTau->GetXaxis()->SetBinLabel(i,m_lable[i-1]); m_migration_cellBased->GetXaxis()->SetBinLabel(i,m_lable[i-1]); - } -} + } + } -void Migration::fill( - const xAOD::TauJet& thisTau, - xAOD::TauJetParameters::DecayMode trueMode) -{ + void Migration::fill(const xAOD::TauJet& thisTau, + xAOD::TauJetParameters::DecayMode trueMode) + { - int isPanTauCandidate = 0; - bool foundDetail = thisTau.panTauDetail( - xAOD::TauJetParameters::PanTauDetails::PanTau_isPanTauCandidate, - isPanTauCandidate); - if ( !foundDetail || !isPanTauCandidate ) return; + int isPanTauCandidate = 0; + bool foundDetail = thisTau.panTauDetail(xAOD::TauJetParameters::PanTauDetails::PanTau_isPanTauCandidate, isPanTauCandidate); + if ( !foundDetail || !isPanTauCandidate ) return; - // panTau - int recMode = xAOD::TauJetParameters::DecayMode::Mode_Error; - foundDetail = thisTau.panTauDetail( - xAOD::TauJetParameters::PanTauDetails::PanTau_DecayMode, - recMode); - if ( foundDetail ) decayModeFill(trueMode, recMode, m_migration_panTau); + // panTau + int recMode = xAOD::TauJetParameters::DecayMode::Mode_Error; + foundDetail = thisTau.panTauDetail(xAOD::TauJetParameters::PanTauDetails::PanTau_DecayMode, recMode); + if ( foundDetail ) decayModeFill(trueMode, recMode, m_migration_panTau); - // panTauProto - recMode = xAOD::TauJetParameters::DecayMode::Mode_Error; - foundDetail = thisTau.panTauDetail( - xAOD::TauJetParameters::PanTauDetails::PanTau_DecayModeProto, - recMode); - if ( foundDetail ) { + // panTauProto + recMode = xAOD::TauJetParameters::DecayMode::Mode_Error; + foundDetail = thisTau.panTauDetail(xAOD::TauJetParameters::PanTauDetails::PanTau_DecayModeProto, recMode); + if ( foundDetail ) { decayModeFill(trueMode, recMode, m_migration_panTauProto); - } + } + + int cellP = thisTau.nTracks(); - // Cellbased - // Get number of charged pions - std::vector<ElementLink<xAOD::PFOContainer>> cellBased_chargedPFO - = thisTau.protoChargedPFOLinks(); - int cellP = cellBased_chargedPFO.size(); - // Get number of neutral pions - int nPi0_tau = 0; - std::vector<ElementLink<xAOD::PFOContainer>> cellBased_neutralPFO + // Get number of neutral pions + int nPi0_tau = 0; + std::vector<ElementLink<xAOD::PFOContainer>> cellBased_neutralPFO = thisTau.protoNeutralPFOLinks(); - std::vector<ElementLink<xAOD::PFOContainer>>::iterator + std::vector<ElementLink<xAOD::PFOContainer>>::iterator first_cellBased_neutralPFO = cellBased_neutralPFO.begin(); - std::vector<ElementLink<xAOD::PFOContainer>>::iterator + std::vector<ElementLink<xAOD::PFOContainer>>::iterator last_cellBased_neutralPFO = cellBased_neutralPFO.end(); - for ( ; first_cellBased_neutralPFO != last_cellBased_neutralPFO; - ++first_cellBased_neutralPFO ) { + for ( ; first_cellBased_neutralPFO != last_cellBased_neutralPFO; + ++first_cellBased_neutralPFO ) { ElementLink<xAOD::PFOContainer> thisLink = *first_cellBased_neutralPFO; const xAOD::PFO* thisPFO = *thisLink; int myNPi0Proto = 0; if ( thisPFO->attribute(xAOD::PFODetails::nPi0Proto, myNPi0Proto) ) { - nPi0_tau+=myNPi0Proto; + nPi0_tau+=myNPi0Proto; } - } - decayModeFill(trueMode, cellP, nPi0_tau, m_migration_cellBased); -} + } + decayModeFill(trueMode, cellP, nPi0_tau, m_migration_cellBased); + } -void Migration::decayModeFill(int trueMode, int recMode, TH1 *histo) -{ - if ( recMode >= xAOD::TauJetParameters::DecayMode::Mode_Other - || trueMode >= xAOD::TauJetParameters::DecayMode::Mode_Other ) return; + void Migration::decayModeFill(int trueMode, int recMode, TH1 *histo) + { + if ( recMode >= xAOD::TauJetParameters::DecayMode::Mode_Other + || trueMode >= xAOD::TauJetParameters::DecayMode::Mode_Other ) return; - switch ( trueMode ) { - case xAOD::TauJetParameters::DecayMode::Mode_1p0n: + switch ( trueMode ) { + case xAOD::TauJetParameters::DecayMode::Mode_1p0n: switch ( recMode ) { case xAOD::TauJetParameters::DecayMode::Mode_1p0n: - histo->Fill(t10r10 + 0.5); - break; + histo->Fill(t10r10 + 0.5); + break; case xAOD::TauJetParameters::DecayMode::Mode_1p1n: - histo->Fill(t10r11 + 0.5); - break; + histo->Fill(t10r11 + 0.5); + break; case xAOD::TauJetParameters::DecayMode::Mode_1pXn: - histo->Fill(t10r1x + 0.5); - break; + histo->Fill(t10r1x + 0.5); + break; default: - histo->Fill(t1r3 + 0.5); - break; + histo->Fill(t1r3 + 0.5); + break; } break; - case xAOD::TauJetParameters::DecayMode::Mode_1p1n: + case xAOD::TauJetParameters::DecayMode::Mode_1p1n: switch ( recMode ) { case xAOD::TauJetParameters::DecayMode::Mode_1p0n: - histo->Fill(t11r10 + 0.5); - break; + histo->Fill(t11r10 + 0.5); + break; case xAOD::TauJetParameters::DecayMode::Mode_1p1n: - histo->Fill(t11r11 + 0.5); - break; + histo->Fill(t11r11 + 0.5); + break; case xAOD::TauJetParameters::DecayMode::Mode_1pXn: - histo->Fill(t11r1x + 0.5); - break; + histo->Fill(t11r1x + 0.5); + break; default: - histo->Fill(t1r3 + 0.5); - break; + histo->Fill(t1r3 + 0.5); + break; } break; - case xAOD::TauJetParameters::DecayMode::Mode_1pXn: + case xAOD::TauJetParameters::DecayMode::Mode_1pXn: switch ( recMode ) { case xAOD::TauJetParameters::DecayMode::Mode_1p0n: - histo->Fill(t1xr10 + 0.5); - break; + histo->Fill(t1xr10 + 0.5); + break; case xAOD::TauJetParameters::DecayMode::Mode_1p1n: - histo->Fill(t1xr11 + 0.5); - break; + histo->Fill(t1xr11 + 0.5); + break; case xAOD::TauJetParameters::DecayMode::Mode_1pXn: - histo->Fill(t1xr1x + 0.5); - break; + histo->Fill(t1xr1x + 0.5); + break; default: - histo->Fill(t1r3 + 0.5); - break; + histo->Fill(t1r3 + 0.5); + break; } break; - case xAOD::TauJetParameters::DecayMode::Mode_3p0n: + case xAOD::TauJetParameters::DecayMode::Mode_3p0n: switch ( recMode ) { case xAOD::TauJetParameters::DecayMode::Mode_3p0n: - histo->Fill(t30r30 + 0.5); - break; + histo->Fill(t30r30 + 0.5); + break; case xAOD::TauJetParameters::DecayMode::Mode_3pXn: - histo->Fill(t30r3x + 0.5); - break; + histo->Fill(t30r3x + 0.5); + break; default: - histo->Fill(t3r1 + 0.5); - break; + histo->Fill(t3r1 + 0.5); + break; } break; - case xAOD::TauJetParameters::DecayMode::Mode_3pXn: + case xAOD::TauJetParameters::DecayMode::Mode_3pXn: switch ( recMode ) { case xAOD::TauJetParameters::DecayMode::Mode_3p0n: - histo->Fill(t3xr30 + 0.5); - break; + histo->Fill(t3xr30 + 0.5); + break; case xAOD::TauJetParameters::DecayMode::Mode_3pXn: - histo->Fill(t3xr3x + 0.5); - break; + histo->Fill(t3xr3x + 0.5); + break; default: - histo->Fill(t3r1 + 0.5); - break; + histo->Fill(t3r1 + 0.5); + break; } break; - } - return; -} + } + return; + } -void Migration::decayModeFill(int trueMode, int recP, int recN, TH1 *histo) -{ - xAOD::TauJetParameters::DecayMode recMode + void Migration::decayModeFill(int trueMode, int recP, int recN, TH1 *histo) + { + xAOD::TauJetParameters::DecayMode recMode = xAOD::TauJetParameters::DecayMode::Mode_Error; - if ( recP == 1 && recN == 0 ) { + if ( recP == 1 && recN == 0 ) { recMode = xAOD::TauJetParameters::DecayMode::Mode_1p0n; - } - if ( recP == 1 && recN == 1 ) { + } + if ( recP == 1 && recN == 1 ) { recMode = xAOD::TauJetParameters::DecayMode::Mode_1p1n; - } - if ( recP == 1 && recN > 1 ) { + } + if ( recP == 1 && recN > 1 ) { recMode = xAOD::TauJetParameters::DecayMode::Mode_1pXn; - } - if ( recP == 3 && recN == 0 ) { + } + if ( recP == 3 && recN == 0 ) { recMode = xAOD::TauJetParameters::DecayMode::Mode_3p0n; - } - if ( recP == 3 && recN >= 1 ){ + } + if ( recP == 3 && recN >= 1 ){ recMode = xAOD::TauJetParameters::DecayMode::Mode_3pXn; - } - this->decayModeFill(trueMode, recMode, histo); -} + } + this->decayModeFill(trueMode, recMode, histo); + } } diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/RecoTauPlots.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/RecoTauPlots.cxx index 59e1469235a7bd07599ff5040e71b23b2a6d318c..d95f0ebd73ee969ef2d9e2eafd49f79571fb4d9a 100644 --- a/PhysicsAnalysis/TauID/TauHistUtils/src/RecoTauPlots.cxx +++ b/PhysicsAnalysis/TauID/TauHistUtils/src/RecoTauPlots.cxx @@ -1,50 +1,46 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "TauHistUtils/RecoTauPlots.h" namespace Tau{ -RecoTauPlots::RecoTauPlots(PlotBase* pParent, std::string sDir, std::string sTauJetContainerName): - PlotBase(pParent, sDir), - m_oParamPlots(this, "", sTauJetContainerName), - m_cellBased_charPFO_Pt(nullptr), - m_cellBased_charPFO_Eta(nullptr), - m_cellBased_charPFO_Phi(nullptr), - m_cellBased_charPFO_E(nullptr), - m_cellBased_neuPFO_Pt(nullptr), - m_cellBased_neuPFO_Eta(nullptr), - m_cellBased_neuPFO_Phi(nullptr), - m_cellBased_neuPFO_E(nullptr), - m_cellBased_neuPFO_bdtPi0Score(nullptr), - m_pantau_CellBasedInput_isPanTauCandidate(nullptr), - m_pantau_CellBasedInput_DecayMode(nullptr), - m_pantau_CellBasedInput_BDTValue_1p0n_vs_1p1n(nullptr), - m_pantau_CellBasedInput_BDTValue_1p1n_vs_1pXn(nullptr), - m_pantau_CellBasedInput_BDTValue_3p0n_vs_3pXn(nullptr), - m_pantau_CellBasedInput_BDTVar_Basic_NNeutralConsts(nullptr), - m_pantau_CellBasedInput_BDTVar_Charged_JetMoment_EtDRxTotalEt(nullptr), - m_pantau_CellBasedInput_BDTVar_Charged_StdDev_Et_WrtEtAllConsts(nullptr), - m_pantau_CellBasedInput_BDTVar_Charged_HLV_SumM(nullptr), - m_pantau_CellBasedInput_BDTVar_Neutral_HLV_SumM(nullptr), - m_pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_1(nullptr), - m_pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2(nullptr), - m_pantau_CellBasedInput_BDTVar_Neutral_Ratio_1stBDTEtOverEtAllConsts(nullptr), - m_pantau_CellBasedInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts(nullptr), - m_pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed(nullptr), - m_pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged(nullptr), - m_id_BDTJetScore(nullptr), - m_id_BDTEleScore(nullptr), - m_sTauJetContainerName(sTauJetContainerName) -{ -} + RecoTauPlots::RecoTauPlots(PlotBase* pParent, std::string sDir, std::string sTauJetContainerName): + PlotBase(pParent, sDir), + m_oParamPlots(this, "", sTauJetContainerName), + m_cellBased_neuPFO_Pt(nullptr), + m_cellBased_neuPFO_Eta(nullptr), + m_cellBased_neuPFO_Phi(nullptr), + m_cellBased_neuPFO_E(nullptr), + m_cellBased_neuPFO_bdtPi0Score(nullptr), + m_pantau_CellBasedInput_isPanTauCandidate(nullptr), + m_pantau_CellBasedInput_DecayMode(nullptr), + m_pantau_CellBasedInput_BDTValue_1p0n_vs_1p1n(nullptr), + m_pantau_CellBasedInput_BDTValue_1p1n_vs_1pXn(nullptr), + m_pantau_CellBasedInput_BDTValue_3p0n_vs_3pXn(nullptr), + m_pantau_CellBasedInput_BDTVar_Basic_NNeutralConsts(nullptr), + m_pantau_CellBasedInput_BDTVar_Charged_JetMoment_EtDRxTotalEt(nullptr), + m_pantau_CellBasedInput_BDTVar_Charged_StdDev_Et_WrtEtAllConsts(nullptr), + m_pantau_CellBasedInput_BDTVar_Charged_HLV_SumM(nullptr), + m_pantau_CellBasedInput_BDTVar_Neutral_HLV_SumM(nullptr), + m_pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_1(nullptr), + m_pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2(nullptr), + m_pantau_CellBasedInput_BDTVar_Neutral_Ratio_1stBDTEtOverEtAllConsts(nullptr), + m_pantau_CellBasedInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts(nullptr), + m_pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed(nullptr), + m_pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged(nullptr), + m_id_BDTJetScore(nullptr), + m_id_BDTEleScore(nullptr), + m_sTauJetContainerName(sTauJetContainerName) + { + } -RecoTauPlots::~RecoTauPlots() -{ -} + RecoTauPlots::~RecoTauPlots() + { + } -void RecoTauPlots::initializePlots(){ + void RecoTauPlots::initializePlots(){ // m_oParamPlots.initialize(); @@ -53,62 +49,44 @@ void RecoTauPlots::initializePlots(){ +++++++++++++++++++CellBased+++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++*/ - m_cellBased_charPFO_Pt = Book1D("cellBased_PFO_c_Pt",m_sTauJetContainerName + " Charged PFO pt; pt; # PFO",200,0.,200000.); - m_cellBased_charPFO_Eta = Book1D("cellBased_PFO_c_Eta",m_sTauJetContainerName + " Charged PFO eta; eta; # PFO",128,-3.2,3.2); - m_cellBased_charPFO_Phi = Book1D("cellBased_PFO_c_Phi",m_sTauJetContainerName + " Charged PFO phi; phi; # PFO",128,-3.2,3.2); - m_cellBased_charPFO_E = Book1D("cellBased_PFO_c_E",m_sTauJetContainerName + " Charged PFO E; E; # PFO",200,0.,200000.); - m_cellBased_neuPFO_Pt = Book1D("cellBased_PFO_n_Pt",m_sTauJetContainerName + " Neutral PFO pt; pt; # PFO",200,0.,200000.); - m_cellBased_neuPFO_Eta = Book1D("cellBased_PFO_n_Eta",m_sTauJetContainerName + " Neutral PFO eta; eta; # PFO",128,-3.2,3.2); - m_cellBased_neuPFO_Phi = Book1D("cellBased_PFO_n_Phi",m_sTauJetContainerName + " Neutral PFO phi; phi; # PFO",64,-3.2,3.2); - m_cellBased_neuPFO_E = Book1D("cellBased_PFO_n_E",m_sTauJetContainerName + " Neutral PFO E; E; # PFO",200,0.,200000.); - m_cellBased_neuPFO_bdtPi0Score = Book1D("cellBased_PFO_n_bdtPi0Score",m_sTauJetContainerName + " Neutral PFO BDT Pi0 Score; Score; # PFO",60,-1.0,1.0); + m_cellBased_neuPFO_Pt = Book1D("cellBased_PFO_n_Pt",m_sTauJetContainerName + " Neutral PFO pt; pt; # PFO",200,0.,200000.); + m_cellBased_neuPFO_Eta = Book1D("cellBased_PFO_n_Eta",m_sTauJetContainerName + " Neutral PFO eta; eta; # PFO",128,-3.2,3.2); + m_cellBased_neuPFO_Phi = Book1D("cellBased_PFO_n_Phi",m_sTauJetContainerName + " Neutral PFO phi; phi; # PFO",64,-3.2,3.2); + m_cellBased_neuPFO_E = Book1D("cellBased_PFO_n_E",m_sTauJetContainerName + " Neutral PFO E; E; # PFO",200,0.,200000.); + m_cellBased_neuPFO_bdtPi0Score = Book1D("cellBased_PFO_n_bdtPi0Score",m_sTauJetContainerName + " Neutral PFO BDT Pi0 Score; Score; # PFO",60,-1.0,1.0); /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++PANTAU++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++*/ - m_pantau_CellBasedInput_isPanTauCandidate = Book1D("pantau_CellBasedInput_isPanTauCandidate",m_sTauJetContainerName +"pantau_CellBasedInput_isPanTauCandidate", 2 ,0 ,2); - m_pantau_CellBasedInput_DecayMode = Book1D("pantau_CellBasedInput_DecayMode",m_sTauJetContainerName +"pantau_CellBasedInput_DecayMode", 6, -0.5, 5.5); - m_pantau_CellBasedInput_BDTValue_1p0n_vs_1p1n = Book1D("pantau_CellBasedInput_BDTValue_1p0n_vs_1p1n",m_sTauJetContainerName + "pantau_CellBasedInput_BDTValue_1p0n_vs_1p1n",30,-1.,1.); - m_pantau_CellBasedInput_BDTValue_1p1n_vs_1pXn = Book1D("pantau_CellBasedInput_BDTValue_1p1n_vs_1pXn",m_sTauJetContainerName + "pantau_CellBasedInput_BDTValue_1p1n_vs_1pXn",30,-1.,1.); - m_pantau_CellBasedInput_BDTValue_3p0n_vs_3pXn = Book1D("pantau_CellBasedInput_BDTValue_3p0n_vs_3pXn",m_sTauJetContainerName + "pantau_CellBasedInput_BDTValue_3p0n_vs_3pXn",30,-1.,1.); - m_pantau_CellBasedInput_BDTVar_Basic_NNeutralConsts = Book1D("pantau_CellBasedInput_BDTVar_Basic_NNeutralConsts",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Basic_NNeutralConsts",10.,-0.5,9.5); - m_pantau_CellBasedInput_BDTVar_Charged_JetMoment_EtDRxTotalEt = Book1D("pantau_CellBasedInput_BDTVar_Charged_JetMoment_EtDRxTotalEt",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Charged_JetMoment_EtDRxTotalEt", 30, 0.0, 4000.0); - m_pantau_CellBasedInput_BDTVar_Charged_StdDev_Et_WrtEtAllConsts = Book1D("pantau_CellBasedInput_BDTVar_Charged_StdDev_Et_WrtEtAllConsts",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Charged_StdDev_Et_WrtEtAllConsts",30,0.,0.6); - m_pantau_CellBasedInput_BDTVar_Charged_HLV_SumM = Book1D("pantau_CellBasedInput_BDTVar_Charged_HLV_SumM",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Charged_HLV_SumM", 30, 0.0, 4000.0); - m_pantau_CellBasedInput_BDTVar_Neutral_HLV_SumM = Book1D("pantau_CellBasedInput_BDTVar_Neutral_HLV_SumM",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_HLV_SumM", 30, 0.0, 4000.0); - m_pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_1 = Book1D("pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_1",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_1",30,-1.5,1.5); - m_pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2 = Book1D("pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2",30,-1.5,1.5); - m_pantau_CellBasedInput_BDTVar_Neutral_Ratio_1stBDTEtOverEtAllConsts = Book1D("pantau_CellBasedInput_BDTVar_Neutral_Ratio_1stBDTEtOverEtAllConsts",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_Ratio_1stBDTEtOverEtAllConsts",30,0.,1.); - m_pantau_CellBasedInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts = Book1D("pantau_CellBasedInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts",30,-0.5,1.2); - m_pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed = Book1D("pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed",10,-0.5,9.5); - m_pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged = Book1D("pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged",30,0.,0.6); + m_pantau_CellBasedInput_isPanTauCandidate = Book1D("pantau_CellBasedInput_isPanTauCandidate",m_sTauJetContainerName +"pantau_CellBasedInput_isPanTauCandidate", 2 ,0 ,2); + m_pantau_CellBasedInput_DecayMode = Book1D("pantau_CellBasedInput_DecayMode",m_sTauJetContainerName +"pantau_CellBasedInput_DecayMode", 6, -0.5, 5.5); + m_pantau_CellBasedInput_BDTValue_1p0n_vs_1p1n = Book1D("pantau_CellBasedInput_BDTValue_1p0n_vs_1p1n",m_sTauJetContainerName + "pantau_CellBasedInput_BDTValue_1p0n_vs_1p1n",30,-1.,1.); + m_pantau_CellBasedInput_BDTValue_1p1n_vs_1pXn = Book1D("pantau_CellBasedInput_BDTValue_1p1n_vs_1pXn",m_sTauJetContainerName + "pantau_CellBasedInput_BDTValue_1p1n_vs_1pXn",30,-1.,1.); + m_pantau_CellBasedInput_BDTValue_3p0n_vs_3pXn = Book1D("pantau_CellBasedInput_BDTValue_3p0n_vs_3pXn",m_sTauJetContainerName + "pantau_CellBasedInput_BDTValue_3p0n_vs_3pXn",30,-1.,1.); + m_pantau_CellBasedInput_BDTVar_Basic_NNeutralConsts = Book1D("pantau_CellBasedInput_BDTVar_Basic_NNeutralConsts",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Basic_NNeutralConsts",10.,-0.5,9.5); + m_pantau_CellBasedInput_BDTVar_Charged_JetMoment_EtDRxTotalEt = Book1D("pantau_CellBasedInput_BDTVar_Charged_JetMoment_EtDRxTotalEt",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Charged_JetMoment_EtDRxTotalEt", 30, 0.0, 4000.0); + m_pantau_CellBasedInput_BDTVar_Charged_StdDev_Et_WrtEtAllConsts = Book1D("pantau_CellBasedInput_BDTVar_Charged_StdDev_Et_WrtEtAllConsts",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Charged_StdDev_Et_WrtEtAllConsts",30,0.,0.6); + m_pantau_CellBasedInput_BDTVar_Charged_HLV_SumM = Book1D("pantau_CellBasedInput_BDTVar_Charged_HLV_SumM",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Charged_HLV_SumM", 30, 0.0, 4000.0); + m_pantau_CellBasedInput_BDTVar_Neutral_HLV_SumM = Book1D("pantau_CellBasedInput_BDTVar_Neutral_HLV_SumM",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_HLV_SumM", 30, 0.0, 4000.0); + m_pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_1 = Book1D("pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_1",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_1",30,-1.5,1.5); + m_pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2 = Book1D("pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2",30,-1.5,1.5); + m_pantau_CellBasedInput_BDTVar_Neutral_Ratio_1stBDTEtOverEtAllConsts = Book1D("pantau_CellBasedInput_BDTVar_Neutral_Ratio_1stBDTEtOverEtAllConsts",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_Ratio_1stBDTEtOverEtAllConsts",30,0.,1.); + m_pantau_CellBasedInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts = Book1D("pantau_CellBasedInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts",30,-0.5,1.2); + m_pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed = Book1D("pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed",10,-0.5,9.5); + m_pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged = Book1D("pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged",30,0.,0.6); } - void RecoTauPlots::fill(const xAOD::TauJet& thisTau) { + void RecoTauPlots::fill(const xAOD::TauJet& thisTau) { - //Access Particle Flow Object + //Access Particle Flow Object /*+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++CellBased+++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++*/ - //Charged Pions - std::vector< ElementLink< xAOD::PFOContainer > > cellBased_chargedPFO = thisTau.protoChargedPFOLinks(); - std::vector< ElementLink< xAOD::PFOContainer > >::iterator first_cellBased_chargedPFO = cellBased_chargedPFO.begin(); - std::vector< ElementLink< xAOD::PFOContainer > >::iterator last_cellBased_chargedPFO = cellBased_chargedPFO.end(); - - for (; first_cellBased_chargedPFO != last_cellBased_chargedPFO; ++first_cellBased_chargedPFO){ - ElementLink<xAOD::PFOContainer> thisLink = *first_cellBased_chargedPFO; - const xAOD::PFO* thisPFO = *thisLink; - m_cellBased_charPFO_Pt->Fill( thisPFO->pt()); - m_cellBased_charPFO_Eta->Fill( thisPFO->eta()); - m_cellBased_charPFO_Phi->Fill( thisPFO->phi()); - m_cellBased_charPFO_E->Fill( thisPFO->e()); - } - //Neutral Pions std::vector< ElementLink< xAOD::PFOContainer > > cellBased_neutralPFO = thisTau.protoNeutralPFOLinks(); std::vector< ElementLink< xAOD::PFOContainer > >::iterator first_cellBased_neutralPFO = cellBased_neutralPFO.begin(); diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/CMakeLists.txt index 04ec018efe4934d35f6b7e094e6b83c9c6158c42..02591aab3d2c977048afa98fa63fa1c97fc0426d 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/CMakeLists.txt @@ -1,36 +1,11 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopAnalysis ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - xAODCore - xAODRootAccess - xAODEgamma - xAODMuon - xAODJet - xAODMissingET - xAODCutFlow - xAODMetaData - AsgTools - AthContainers - PATInterfaces - TopCPTools - TopEventSelectionTools - TopConfiguration - TopCorrections - TopEvent - TopParticleLevel - TopPartons - TopObjectSelectionTools - TopSystematicObjectMaker - TopDataPreparation - #TopHLUpgrade - Tools/PathResolver - #FakeBkgTools - ) - -# This package uses ROOT: -find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO MathCore Graf ) +# External dependencies: +find_package( Boost COMPONENTS regex ) +find_package( ROOT REQUIRED COMPONENTS Core ) # Generate a CINT dictionary source file: atlas_add_root_dictionary( TopAnalysis _cintDictSource @@ -42,32 +17,33 @@ atlas_add_library( TopAnalysis Root/*.cxx Root/*.h Root/*.icc TopAnalysis/*.h TopAnalysis/*.icc TopAnalysis/*/*.h TopAnalysis/*/*.icc ${_cintDictSource} PUBLIC_HEADERS TopAnalysis - LINK_LIBRARIES xAODCore - xAODRootAccess - xAODEgamma - xAODMuon - xAODJet - xAODMissingET - xAODCutFlow - xAODMetaData + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} + AsgMessagingLib AsgTools AthContainers - PATInterfaces - TopCPTools - TopEventSelectionTools TopConfiguration TopCorrections - TopEvent - TopParticleLevel - TopPartons - TopObjectSelectionTools - TopSystematicObjectMaker - TopDataPreparation - #TopHLUpgrade - PathResolver - #FakeBkgToolsLib - ${ROOT_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ) + TopEventSelectionTools + xAODCutFlow + xAODRootAccess + PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} + PATInterfaces + TopEvent + TopObjectSelectionTools + TopParticleLevel + TopPartons + xAODBTagging + xAODCore + xAODEgamma + xAODJet + xAODMetaData + xAODMissingET + xAODMuon + xAODTau + xAODTracking + xAODTruth ) # Install data files from the package: atlas_install_data( share/* ) @@ -78,59 +54,31 @@ atlas_install_scripts( scripts/* ) # Build the executables of the package: atlas_add_executable( top-xaod util/top-xaod.cxx - LINK_LIBRARIES xAODCore - xAODRootAccess - xAODEgamma - xAODMuon - xAODJet - xAODMissingET - xAODCutFlow - xAODMetaData - AsgTools - AthContainers - PATInterfaces + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} + PathResolver + TopAnalysis TopCPTools - TopEventSelectionTools TopConfiguration TopCorrections + TopDataPreparation TopEvent + TopObjectSelectionTools TopParticleLevel TopPartons - TopObjectSelectionTools TopSystematicObjectMaker - TopDataPreparation - #TopHLUpgrade - PathResolver - ${ROOT_LIBRARIES} - TopAnalysis - #FakeBkgToolsLib - ) + xAODCore + xAODCutFlow + xAODRootAccess ) atlas_add_executable( top-tool-ftag util/top-tool-ftag.cxx - LINK_LIBRARIES xAODCore - xAODRootAccess - xAODEgamma - xAODMuon - xAODJet - xAODMissingET - xAODCutFlow - xAODMetaData - AsgTools - AthContainers - PATInterfaces + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} + TopAnalysis TopCPTools - TopEventSelectionTools TopConfiguration TopCorrections TopEvent - TopParticleLevel - TopPartons TopObjectSelectionTools - TopSystematicObjectMaker - TopDataPreparation - #TopHLUpgrade - PathResolver - ${ROOT_LIBRARIES} - TopAnalysis ) - + xAODRootAccess ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/CMakeLists.txt index 83394cfc539c73fd6f11952b4bbafdfff68dbf39..59fa7620ccfe43a8b27f1dae267b0e3c9dfbaa67 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/CMakeLists.txt @@ -1,117 +1,59 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopCPTools ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - xAODRootAccess - AsgTools - AthContainers - PATCore - PATInterfaces - TrigBunchCrossingTool - TrigConfInterfaces - TrigConfxAOD - TrigDecisionTool - TriggerMatchingTool - TrigTauMatching - GoodRunsLists - EgammaAnalysisInterfaces - ElectronPhotonFourMomentumCorrection - ElectronPhotonSelectorTools - ElectronEfficiencyCorrection - ElectronPhotonShowerShapeFudgeTool - PhotonEfficiencyCorrection - MuonMomentumCorrections - MuonSelectorTools - MuonEfficiencyCorrections - TauAnalysisTools - CalibrationDataInterface - xAODBTaggingEfficiency - JetCalibTools - JetCPInterfaces - JetUncertainties - JetInterface - JetMomentTools - JetSelectorTools - METInterface - METUtilities - IsolationSelection - IsolationCorrections - PathResolver - TopConfiguration - TopEvent - PileupReweighting - AssociationUtils - JetJvtEfficiency - PMGTools - InDetTrackSelectionTool - InDetTrackSystematicsTools - #BoostedJetTaggers - FTagAnalysisInterfaces - MuonAnalysisInterfaces - #TriggerAnalysisInterfaces - #TrigGlobalEfficiencyCorrection - PMGAnalysisInterfaces - JetAnalysisInterfaces) - -# This package uses ROOT: -find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO MathCore Graf ) +# External depdendencies: +find_package( Boost ) # Build a library that other components can link against: atlas_add_library( TopCPTools Root/*.cxx Root/*.h Root/*.icc TopCPTools/*.h TopCPTools/*.icc TopCPTools/*/*.h TopCPTools/*/*.icc PUBLIC_HEADERS TopCPTools - LINK_LIBRARIES xAODRootAccess + LINK_LIBRARIES AsgAnalysisInterfaces AsgTools - AthContainers - PATCoreLib - PATInterfaces - TrigBunchCrossingTool - TrigConfInterfaces - TrigConfxAODLib - TrigDecisionToolLib - TriggerMatchingToolLib - TrigTauMatchingLib - GoodRunsListsLib + AssociationUtilsLib EgammaAnalysisInterfacesLib - ElectronPhotonFourMomentumCorrectionLib - ElectronPhotonSelectorToolsLib - ElectronEfficiencyCorrectionLib - ElectronPhotonShowerShapeFudgeToolLib - PhotonEfficiencyCorrectionLib - MuonMomentumCorrectionsLib - MuonSelectorToolsLib - MuonEfficiencyCorrectionsLib - TauAnalysisToolsLib - CalibrationDataInterfaceLib - xAODBTaggingEfficiencyLib - JetCalibToolsLib + FTagAnalysisInterfacesLib + InDetTrackSelectionToolLib + InDetTrackSystematicsToolsLib + IsolationCorrectionsLib + IsolationSelectionLib + JetAnalysisInterfacesLib JetCPInterfaces - JetUncertaintiesLib + JetCalibToolsLib JetInterface - JetMomentToolsLib JetSelectorToolsLib METInterface - METUtilitiesLib - IsolationSelectionLib - IsolationCorrectionsLib - PathResolver - TopConfiguration - TopEvent - PileupReweightingLib - AssociationUtilsLib - JetJvtEfficiencyLib + MuonAnalysisInterfacesLib + MuonMomentumCorrectionsLib + PMGAnalysisInterfacesLib PMGToolsLib - InDetTrackSelectionToolLib - InDetTrackSystematicsToolsLib - #BoostedJetTaggersLib - FTagAnalysisInterfacesLib - MuonAnalysisInterfacesLib - #TriggerAnalysisInterfacesLib - #TrigGlobalEfficiencyCorrectionLib - PMGAnalysisInterfacesLib - JetAnalysisInterfacesLib - ${ROOT_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ) - + TauAnalysisToolsLib + TopConfiguration + TrigConfInterfaces + TrigDecisionToolLib + TrigTauMatchingLib + TriggerMatchingToolLib + xAODBTaggingEfficiencyLib + PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} + ElectronEfficiencyCorrectionLib + ElectronPhotonFourMomentumCorrectionLib + ElectronPhotonSelectorToolsLib + ElectronPhotonShowerShapeFudgeToolLib + GoodRunsListsLib + JetJvtEfficiencyLib + JetMomentToolsLib + JetUncertaintiesLib + METUtilitiesLib + MuonEfficiencyCorrectionsLib + MuonSelectorToolsLib + PATCoreAcceptLib + PathResolver + PhotonEfficiencyCorrectionLib + PileupReweightingLib + TopEvent + TrigConfxAODLib + xAODBase ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/CMakeLists.txt index cf7eef726ca3068f5aca1fea56babe848bdeba6d..001d73001cd1caff7256deb28181ff19fc17fe51 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/CMakeLists.txt @@ -1,18 +1,10 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopConfiguration ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - xAODCore - Tools/PathResolver - TopDataPreparation - PATInterfaces ) - -# This package uses ROOT: -find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO MathCore Graf ) -find_package( Boost REQUIRED COMPONENTS iostreams regex ) - -message( STATUS "${Boost_LIBRARIES}" ) +# External dependencies: +find_package( Boost REQUIRED COMPONENTS iostreams ) # Generate a CINT dictionary source file: atlas_add_root_dictionary( TopConfiguration _cintDictSource @@ -24,14 +16,14 @@ atlas_add_library( TopConfiguration Root/*.cxx Root/*.h Root/*.icc TopConfiguration/*.h TopConfiguration/*.icc TopConfiguration/*/*.h TopConfiguration/*/*.icc ${_cintDictSource} PUBLIC_HEADERS TopConfiguration - LINK_LIBRARIES xAODCore + INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + LINK_LIBRARIES ${Boost_LIBRARIES} + AsgMessagingLib + AsgTools PATInterfaces - PathResolver TopDataPreparation - ${ROOT_LIBRARIES} - ${Boost_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - ${Boost_INCLUDE_DIRS}) + xAODCore + PRIVATE_LINK_LIBRARIES PathResolver ) # Install data files from the package: atlas_install_data( share/* ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/CMakeLists.txt index 9b933124d83e407b7a7a27f2c48fdf6b60c53218..eaf692520162c8d16ccbb08748b6836f86510501 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/CMakeLists.txt @@ -1,28 +1,11 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopCorrections ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - xAODEgamma - xAODMuon - TopEvent - PileupReweighting - ElectronEfficiencyCorrection - TauAnalysisTools - JetJvtEfficiency - PhotonEfficiencyCorrection - PMGTools - PATInterfaces - FTagAnalysisInterfaces - MuonAnalysisInterfaces - TriggerAnalysisInterfaces - PMGAnalysisInterfaces - EgammaAnalysisInterfaces) - -# This package uses LHAPDF: +# External dependencies: find_package( Lhapdf ) -# This package uses ROOT: -find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO MathCore Graf ) +find_package( ROOT REQUIRED COMPONENTS Core ) # Add a ROOT dictionary atlas_add_root_dictionary( TopCorrections _cintDictSource @@ -34,25 +17,35 @@ atlas_add_library( TopCorrections Root/*.cxx Root/*.h Root/*.icc TopCorrections/*.h TopCorrections/*.icc TopCorrections/*/*.h TopCorrections/*/*.icc ${_cintDictSource} PUBLIC_HEADERS TopCorrections - LINK_LIBRARIES xAODEgamma - xAODMuon - TopEvent - PileupReweightingLib + INCLUDE_DIRS ${LHAPDF_INCLUDE_DIRS} + LINK_LIBRARIES ${LHAPDF_LIBRARIES} + AsgAnalysisInterfaces + AsgMessagingLib + AsgTools + AthContainers + EgammaAnalysisInterfacesLib ElectronEfficiencyCorrectionLib - TauAnalysisToolsLib - JetJvtEfficiencyLib - PhotonEfficiencyCorrectionLib + FTagAnalysisInterfacesLib + JetAnalysisInterfacesLib + MuonAnalysisInterfacesLib + PATInterfaces + PMGAnalysisInterfacesLib PMGToolsLib - PATInterfaces - FTagAnalysisInterfacesLib - MuonAnalysisInterfacesLib - #TriggerAnalysisInterfacesLib - PMGAnalysisInterfacesLib - EgammaAnalysisInterfacesLib - ${LHAPDF_LIBRARIES} - ${ROOT_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - ${LHAPDF_INCLUDE_DIRS}) + TauAnalysisToolsLib + TopConfiguration + TopEvent + TriggerAnalysisInterfaces + xAODEgamma + xAODMuon + xAODTau + PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} + CalibrationDataInterfaceLib + PathResolver + xAODEventInfo + xAODJet + xAODRootAccess + xAODTruth ) # Install data files from the package: atlas_install_data( share/* ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopEventReconstructionTools/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopEventReconstructionTools/CMakeLists.txt index 8eb186314d2ca1c9a3917b38a2695efba667647e..ec806ed61ac2a6fc116be3c8c1e121fbb5e27981 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopEventReconstructionTools/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopEventReconstructionTools/CMakeLists.txt @@ -1,15 +1,8 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopEventReconstructionTools ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - xAODCore - AthContainers - AsgTools - TopEvent - TopEventSelectionTools - TopAnalysis ) - # This package uses ROOT: find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO Math MathMore MathCore Graf Minuit Minuit2 ) @@ -27,15 +20,20 @@ atlas_add_library( TopEventReconstructionTools Root/*.cxx Root/*.h Root/*.icc TopEventReconstructionTools/*.h TopEventReconstructionTools/*.icc TopEventReconstructionTools/*/*.h TopEventReconstructionTools/*/*.icc ${_cintDictSource} PUBLIC_HEADERS TopEventReconstructionTools - LINK_LIBRARIES xAODCore - AthContainers + INCLUDE_DIRS ${KLFITTER_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${KLFITTER_LIBRARIES} + ${ROOT_LIBRARIES} AsgTools - TopEvent + FTagAnalysisInterfacesLib + TopConfiguration TopEventSelectionTools - TopAnalysis - ${KLFITTER_LIBRARIES} - ${ROOT_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${KLFITTER_INCLUDE_DIRS} ) + TopParticleLevel + xAODJet + PRIVATE_LINK_LIBRARIES PathResolver + TopAnalysis + TopEvent + xAODCore + xAODTruth ) # Install data files from the package: atlas_install_data( share/* ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopEventSelectionTools/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopEventSelectionTools/CMakeLists.txt index 9c4ed1d2e3606c99f09b24cd74ecdc3addd88dc3..6af3304873163912d6c0bb7cb3886bd7ba6c3c9c 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopEventSelectionTools/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopEventSelectionTools/CMakeLists.txt @@ -1,17 +1,8 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopEventSelectionTools ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - EventLoop - AsgTools - JetInterface - TopEvent - TopCorrections - TopParticleLevel - TriggerAnalysisInterfaces - JetSelectorTools ) - # This package uses ROOT: find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO MathCore Graf ) @@ -25,15 +16,28 @@ atlas_add_library( TopEventSelectionTools Root/*.cxx Root/*.h Root/*.icc TopEventSelectionTools/*.h TopEventSelectionTools/*.icc TopEventSelectionTools/*/*.h TopEventSelectionTools/*/*.icc ${_cintDictSource} PUBLIC_HEADERS TopEventSelectionTools - LINK_LIBRARIES EventLoop + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} + AsgMessagingLib AsgTools - JetInterface - TopEvent + FTagAnalysisInterfacesLib + JetInterface JetSelectorToolsLib + MuonAnalysisInterfacesLib + PMGAnalysisInterfacesLib + PMGToolsLib TopCorrections + TopEvent TopParticleLevel - JetSelectorToolsLib - ${ROOT_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ) + TriggerAnalysisInterfaces + PRIVATE_LINK_LIBRARIES EventLoop + PATInterfaces + TopConfiguration + xAODBTagging + xAODBase + xAODEgamma + xAODEventInfo + xAODJet + xAODMuon ) # Install data files from the package: atlas_install_data( share/* ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopExamples/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopExamples/CMakeLists.txt index f4694ce281f46ea49f0b1877d4956b7a35ef5632..a21d9da1fc371573cef4cbe7e81bfa856ac73f3b 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopExamples/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopExamples/CMakeLists.txt @@ -1,41 +1,36 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopExamples ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - AsgTools - xAODCore - xAODRootAccess - TopCPTools - TopCorrections - TopAnalysis - TopEvent - TopEventSelectionTools - TopEventReconstructionTools - TopConfiguration - PathResolver ) - -# This package uses ROOT: -find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO Math MathMore MathCore Graf Physics ) +find_package( ROOT REQUIRED COMPONENTS Core Hist RIO Tree ) # Build a library that other components can link against: atlas_add_library( TopExamples Root/*.cxx Root/*.h Root/*.icc TopExamples/*.h TopExamples/*.icc TopExamples/*/*.h TopExamples/*/*.icc PUBLIC_HEADERS TopExamples + PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} LINK_LIBRARIES AsgTools - xAODCore - xAODRootAccess + TopAnalysis TopCPTools TopCorrections - TopAnalysis TopEvent - TopEventSelectionTools TopEventReconstructionTools - TopConfiguration - PathResolver - ${ROOT_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ) + TopEventSelectionTools + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} + PathResolver + TopConfiguration + TopDataPreparation + xAODBTagging + xAODEgamma + xAODEventInfo + xAODJet + xAODMissingET + xAODMuon + xAODRootAccess + xAODTau + xAODTruth ) # Install the Python modules of the package: atlas_install_python_modules( python/*.py ) @@ -46,52 +41,37 @@ atlas_install_data( share/* ) # Build the executables of the package: atlas_add_executable( mini-to-flat util/mini-to-flat.cxx - LINK_LIBRARIES AsgTools - xAODCore - xAODRootAccess - TopCPTools - TopCorrections + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} TopAnalysis - TopEvent - TopEventSelectionTools - TopEventReconstructionTools TopConfiguration - PathResolver - ${ROOT_LIBRARIES} - TopExamples ) + TopEvent + TopExamples + xAODCore + xAODRootAccess ) + atlas_add_executable( mini-xaod util/mini-xaod.cxx - LINK_LIBRARIES AsgTools - xAODCore - xAODRootAccess - TopCPTools - TopCorrections + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} TopAnalysis TopEvent - TopEventSelectionTools - TopEventReconstructionTools - TopConfiguration - PathResolver - ${ROOT_LIBRARIES} - TopExamples ) + TopExamples + xAODCore + xAODRootAccess ) + atlas_add_executable( mini-to-plots util/mini-to-plots.cxx - LINK_LIBRARIES AsgTools - xAODCore - xAODRootAccess - TopCPTools - TopCorrections + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} TopAnalysis TopEvent - TopEventSelectionTools - TopEventReconstructionTools - TopConfiguration - PathResolver - ${ROOT_LIBRARIES} - TopExamples ) + TopExamples + xAODRootAccess ) + atlas_add_executable( combineATOutputs util/combineATOutputs.cxx - LINK_LIBRARIES ${ROOT_LIBRARIES} - TopExamples ) + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ) atlas_install_scripts( scripts/* ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopJetSubstructure/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopJetSubstructure/CMakeLists.txt index cf1ffff012eeecb08c7e05b452ae3b92c4a2dd06..688d322836fb7b7b45bcabfd8f05f5aaaa3f8dda 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopJetSubstructure/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopJetSubstructure/CMakeLists.txt @@ -1,22 +1,10 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopJetSubstructure ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - xAODPrimitives - xAODBase - GeoPrimitives - xAODCaloEvent - xAODJet - xAODBTagging - EventPrimitives - xAODTracking - CaloGeoHelpers - xAODEgamma) - - # This package uses ROOT: -find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO MathCore Graf ) +find_package( ROOT REQUIRED COMPONENTS Core Physics ) # This package uses FastJet: find_package( FastJet ) @@ -27,20 +15,11 @@ atlas_add_library( TopJetSubstructure Root/*.cxx Root/*.h Root/*.icc TopJetSubstructure/*.h TopJetSubstructure/*.icc TopJetSubstructure/*/*.h TopJetSubstructure/*/*.icc PUBLIC_HEADERS TopJetSubstructure - LINK_LIBRARIES xAODPrimitives - xAODBase - GeoPrimitives - xAODCaloEvent - xAODJet - xAODBTagging - EventPrimitives - xAODTracking - CaloGeoHelpers - xAODEgamma + INCLUDE_DIRS ${FASTJET_INCLUDE_DIRS} + ${FASTJETCONTRIB_INCLUDE_DIRS} + ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${FASTJET_LIBRARIES} + ${FASTJETCONTRIB_LIBRARIES} ${ROOT_LIBRARIES} - ${FASTJET_LIBRARIES} - ${FASTJETCONTRIB_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - ${FASTJET_INCLUDE_DIRS} - ${FASTJETCONTRIB_INCLUDE_DIRS}) - + xAODEgamma + xAODJet ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/CMakeLists.txt index 01859319de129ef871cf115eab56cb534f0e3509..713db11f8e6eebbbeba291ee1fd251ce3e340f46 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/CMakeLists.txt @@ -20,4 +20,4 @@ atlas_add_library( TopObjectSelectionTools TopSystematicObjectMaker PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} xAODEventInfo xAODMissingET - PATInterfaces FourMomUtils TopParticleLevel TopDataPreparation ) + AthContainers PATInterfaces FourMomUtils TopParticleLevel TopDataPreparation ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopParticleLevel/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopParticleLevel/CMakeLists.txt index 4ca1c02bfcaacb1f8c85a17ed25befb1834bf5eb..a2accd3a9a95d883198de2f74d45d8c7bb9d3b1d 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopParticleLevel/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopParticleLevel/CMakeLists.txt @@ -1,29 +1,8 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopParticleLevel ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - xAODBase - xAODTruth - xAODJet - xAODMissingET - xAODCore - xAODRootAccess - FourMomUtils - TopEvent - TopConfiguration - TopDataPreparation - TruthUtils - MCTruthClassifier - JetReclustering - JetSubStructureUtils - AsgTools - - ) - -# This package uses ROOT: -find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO MathCore Graf ) - # Need fast jet for the RC jet substructure code find_package( FastJet COMPONENTS fastjetplugins fastjettools ) find_package( FastJetContrib COMPONENTS EnergyCorrelator Nsubjettiness ) @@ -33,24 +12,25 @@ atlas_add_library( TopParticleLevel Root/*.cxx Root/*.h Root/*.icc TopParticleLevel/*.h TopParticleLevel/*.icc TopParticleLevel/*/*.h TopParticleLevel/*/*.icc PUBLIC_HEADERS TopParticleLevel - LINK_LIBRARIES + PRIVATE_INCLUDE_DIRS ${FASTJET_INCLUDE_DIRS} ${FASTJETCONTRIB_INCLUDE_DIRS} + LINK_LIBRARIES AsgMessagingLib + AsgTools + JetReclusteringLib + MCTruthClassifierLib + TopDataPreparation + TopEvent xAODBase - xAODTruth + xAODCore + xAODEventInfo xAODJet xAODMissingET - xAODCore + xAODMuon xAODRootAccess - FourMomUtils - TopEvent - TopConfiguration - TopDataPreparation - MCTruthClassifierLib - TruthUtils - JetReclusteringLib - JetSubStructureUtils - AsgTools - ${ROOT_LIBRARIES} - ${FASTJET_LIBRARIES} - ${FASTJETCONTRIB_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ) - + xAODTruth + PRIVATE_LINK_LIBRARIES ${FASTJET_LIBRARIES} + ${FASTJETCONTRIB_LIBRARIES} + AthContainers + FourMomUtils + JetSubStructureUtils + TopConfiguration + TruthUtils ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopPartons/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopPartons/CMakeLists.txt index d434650d2ff0a1ce1a113b9238945a4efde170b1..960407e7c8ae21d7ca26f55ae6b846a926cda48d 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopPartons/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopPartons/CMakeLists.txt @@ -1,17 +1,10 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + # Declare the name of this package: atlas_subdir( TopPartons ) -# This package depends on other packages: -atlas_depends_on_subdirs( PUBLIC - xAODCore - AthContainers - AthLinks - AsgTools - xAODTruth - TopConfiguration ) - # This package uses ROOT: -find_package( ROOT REQUIRED COMPONENTS Core Gpad Tree Hist RIO MathCore TMVA Graf ) +find_package( ROOT REQUIRED COMPONENTS Core Physics ) # Generate a CINT dictionary source file: atlas_add_root_dictionary( TopPartons _cintDictSource @@ -23,12 +16,10 @@ atlas_add_library( TopPartons Root/*.cxx Root/*.h Root/*.icc TopPartons/*.h TopPartons/*.icc TopPartons/*/*.h TopPartons/*/*.icc ${_cintDictSource} PUBLIC_HEADERS TopPartons - LINK_LIBRARIES xAODCore - AthContainers - AthLinks + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools + AthContainers + xAODCore xAODTruth - TopConfiguration - ${ROOT_LIBRARIES} - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ) - + PRIVATE_LINK_LIBRARIES TopConfiguration ) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopSystematicObjectMaker/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopSystematicObjectMaker/CMakeLists.txt index 14c217e095d0a60ba4e50ada8c7545ba14bdeeea..bc8164ef7478d11c13c01e04046c0341b1e6c7b4 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopSystematicObjectMaker/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopSystematicObjectMaker/CMakeLists.txt @@ -12,6 +12,6 @@ atlas_add_library( TopSystematicObjectMaker IsolationSelectionLib IsolationCorrectionsLib JetCalibToolsLib JetCPInterfaces JetInterface METInterface xAODEgamma xAODJet xAODTracking TopJetSubstructure MuonMomentumCorrectionsLib TauAnalysisToolsLib - PRIVATE_LINK_LIBRARIES AthContainers xAODBase xAODCore xAODEventInfo + PRIVATE_LINK_LIBRARIES AthContainers xAODBTagging xAODBase xAODCore xAODEventInfo xAODMissingET xAODMuon xAODTau TopConfiguration TopEvent InDetTrackSystematicsToolsLib METUtilitiesLib ) diff --git a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/InDetTrackSystematicsTools/InDetTrackTruthOriginDefs.h b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/InDetTrackSystematicsTools/InDetTrackTruthOriginDefs.h index a106b2c8a4338ee620425078748d08d5deb6f169..405f9bf3fbb1aee7e3591d3c52f2fd9e3572f182 100644 --- a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/InDetTrackSystematicsTools/InDetTrackTruthOriginDefs.h +++ b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/InDetTrackSystematicsTools/InDetTrackTruthOriginDefs.h @@ -103,7 +103,7 @@ namespace InDet { return false; } - /** from D but not from B-->D */ + /** not from B, D, or any secondary */ inline bool isFragmentation(int origin) { if (origin & (0x1 << Fragmentation)) return true; return false; diff --git a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthOriginTool.cxx b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthOriginTool.cxx index 29fb22b835343994cb680bea855f8a0aae7ae464..dbbcc0f611e79c64c7f7ed8d20f1c581bca27077 100644 --- a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthOriginTool.cxx +++ b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthOriginTool.cxx @@ -40,7 +40,7 @@ namespace InDet { static SG::AuxElement::ConstAccessor< Link_t > linkAcc( m_truthParticleLinkName.data() ); const Link_t& link = linkAcc( *track ); if( link.isValid() ) { - truth = *link; + truth = *link; } } @@ -49,86 +49,84 @@ namespace InDet { int origin = 0; - // not matched to truth: call it fake + // truth link is broken: call it from pileup (not true for < 100 MeV!) + if (!truth){ + origin = origin | (0x1 << InDet::TrkOrigin::Pileup); + } + + // low TruthMatchProbability: call it fake (also includes poorly reconstructed tracks) if(truthProb < m_matchingProbabilityCut) { origin = origin | (0x1 << InDet::TrkOrigin::Fake); } - // matched to truth: find truth origin - else{ - // matched but truth link is broken: call it from pileup (not true for < 100 MeV!) - if (!truth){ - origin = origin | (0x1 << InDet::TrkOrigin::Pileup); + + // truth link is present: find truth origin + if (truth) { + + // is it fragmentation? yes until proven otherwise + bool isFragmentation = true; + + // from B decay chain? + if(isFrom(truth, 5)) { + origin = origin | (0x1 << InDet::TrkOrigin::BHadronDecay); + isFragmentation = false; } - // matched and link is present: find trutn origin - else{ - - // is it fragmentation? yes until proven otherwise - bool isFragmentation = true; - - // from B decay chain? - if(isFrom(truth, 5)) { - origin = origin | (0x1 << InDet::TrkOrigin::BHadronDecay); - isFragmentation = false; - } - - // from D decay chain? - if(isFrom(truth, 4)) { - origin = origin | (0x1 << InDet::TrkOrigin::DHadronDecay); - isFragmentation = false; - } - - // Secondary? check based on barcode: secondaries are produced by G4. - int truthBarcode = truth->barcode(); - if (truthBarcode > m_barcodeG4) { - // sub-categorize secondaries... - int parentID = getParentID(truth); - - // photon conversions - if(parentID == 22) { - origin = origin | (0x1 << InDet::TrkOrigin::GammaConversion); - } - - // K-short - else if(parentID == 310) { - origin = origin | (0x1 << InDet::TrkOrigin::KshortDecay); - } - - // Lambda - else if(abs(parentID) == 3122){ - origin = origin | (0x1 << InDet::TrkOrigin::LambdaDecay); - } - - // other long living particle decays - else if(abs(parentID) > 3) { - origin = origin | (0x1 << InDet::TrkOrigin::OtherDecay); - } - - // hadronic interactions - else if(parentID == -1) { - origin = origin | (0x1 << InDet::TrkOrigin::HadronicInteraction); - } - - // other secondaries? - // ---> Not sure what if anything should be here... - else if(parentID == -2) { - origin = origin | (0x1 << InDet::TrkOrigin::OtherSecondary); - } - - // other unknown origin (e.g. parent not in the record:) - // ---> Not sure what if anything should be here... - else{ - origin = origin | (0x1 << InDet::TrkOrigin::OtherOrigin); - } - - isFragmentation = false; - } - - // uncategorized: call it fragmentation - if(isFragmentation) { - origin = origin | (0x1 << InDet::TrkOrigin::Fragmentation); - } + // from D decay chain? + if(isFrom(truth, 4)) { + origin = origin | (0x1 << InDet::TrkOrigin::DHadronDecay); + isFragmentation = false; + } + + // Secondary? check based on barcode: secondaries are produced by G4, + // and have barcodes > 2e5. + int truthBarcode = truth->barcode(); + if (truthBarcode > m_barcodeG4) { + // sub-categorize secondaries... + int parentID = getParentID(truth); + + // photon conversions + if(parentID == 22) { + origin = origin | (0x1 << InDet::TrkOrigin::GammaConversion); + } + + // K-short + else if(parentID == 310) { + origin = origin | (0x1 << InDet::TrkOrigin::KshortDecay); + } + + // Lambda + else if(abs(parentID) == 3122){ + origin = origin | (0x1 << InDet::TrkOrigin::LambdaDecay); + } + + // other long living particle decays + else if(abs(parentID) > 3) { + origin = origin | (0x1 << InDet::TrkOrigin::OtherDecay); + } + + // hadronic interactions + else if(parentID == -1) { + origin = origin | (0x1 << InDet::TrkOrigin::HadronicInteraction); + } + + // other secondaries? + // ---> Not sure what if anything should be here... + else if(parentID == -2) { + origin = origin | (0x1 << InDet::TrkOrigin::OtherSecondary); + } + + // other unknown origin (e.g. parent not in the record:) + // ---> Not sure what if anything should be here... + else{ + origin = origin | (0x1 << InDet::TrkOrigin::OtherOrigin); + } + + isFragmentation = false; + } + // uncategorized: call it fragmentation + if(isFragmentation) { + origin = origin | (0x1 << InDet::TrkOrigin::Fragmentation); } } @@ -141,8 +139,6 @@ namespace InDet { if( flav != 5 && flav != 4 ) return false; - if( ! part->isHadron() ) return false; - if( flav == 5 && part->isBottomHadron() ) return true; if( flav == 4 && part->isCharmHadron() ) return true; diff --git a/PhysicsAnalysis/TruthParticleID/McParticleAlgs/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleAlgs/CMakeLists.txt index b5ee2298e2c3360878dac44622e1b991e5ead3e2..436756877607eb4d4cc8fa4b1e97d1da69a289a8 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleAlgs/CMakeLists.txt +++ b/PhysicsAnalysis/TruthParticleID/McParticleAlgs/CMakeLists.txt @@ -1,21 +1,8 @@ -################################################################################ -# Package: McParticleAlgs -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( McParticleAlgs ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - GaudiKernel - PRIVATE - Control/AthenaBaseComps - Control/StoreGate - Event/NavFourMom - PhysicsAnalysis/TruthParticleID/McParticleEvent - PhysicsAnalysis/TruthParticleID/McParticleKernel - PhysicsAnalysis/TruthParticleID/McParticleUtils ) - # External dependencies: find_package( CLHEP ) @@ -24,9 +11,9 @@ atlas_add_component( McParticleAlgs src/*.cxx src/components/*.cxx INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} GaudiKernel AthenaBaseComps StoreGateLib SGtests NavFourMom McParticleEvent McParticleKernel McParticleUtils ) + LINK_LIBRARIES ${CLHEP_LIBRARIES} GaudiKernel AthenaBaseComps NavFourMom McParticleEvent McParticleKernel McParticleUtils ) # Install files from the package: -atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) atlas_install_joboptions( share/*.py ) diff --git a/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/JobOptCfg.py b/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/JobOptCfg.py index 5810f1dffa24d6e16d2955a1894fc7257719c21b..555c5381cd05a7f43967597dd3dca14014ce96a3 100755 --- a/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/JobOptCfg.py +++ b/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/JobOptCfg.py @@ -7,9 +7,8 @@ __doc__ = "hold a set of customized configurables and factory functions" __author__ = "Sebastien Binet <binet@cern.ch>" __version__= "$Revision: 1.14 $" -import EventKernel.ParticleDataType from .McParticleAlgsConf import TruthParticleBuilder - +from AthenaCommon import CfgMgr class PileUpClassification(object): # same order as in McParticleEvent/PileUpClassification.h # PLEASE keep in sync with this header !! @@ -52,7 +51,6 @@ class McAodBuilder( TruthParticleBuilder ): return from .McAodFlags import jobproperties as jp - from AthenaCommon.AppMgr import ToolSvc from AthenaCommon.Configurable import Configurable if not hasattr(hdl, 'FilterTool'): @@ -108,7 +106,6 @@ def createMcAodBuilder( name = "McAodBuilder", Factory function to create a fully and correctly configured customized TruthParticleBuilder algorithm """ - from AthenaCommon import CfgMgr if doTruthEtIsolations is None: from .McAodFlags import jobproperties as jp doTruthEtIsolations = jp.McAodFlags.doTruthEtIsolations() @@ -224,7 +221,7 @@ class TruthParticleContainerGetter(Configured): ) self._seq += builder mlog = logging.getLogger( self.__class__.__name__) - mlog.info(" Recorded the %s ESD TruthParticle shadow collection - will be recreated on the fly "%(self.outputKey(),)) + mlog.info("Recorded the %s ESD TruthParticle shadow collection - will be recreated on the fly", self.outputKey()) objKeyStore.addStreamESD("TruthParticleContainer",self.outputKey()) return True diff --git a/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/ReOrderMcEventCollection.py b/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/ReOrderMcEventCollection.py index 597bb043272c0e7cf09ad7c2e85f563aec8aafa6..c5e138f0a4ab0f0d406768076ac1662c77ad9ba9 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/ReOrderMcEventCollection.py +++ b/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/ReOrderMcEventCollection.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # @file: McParticleAlgs/python/FixMcEventCollection.py # @purpose: <put some purpose here> @@ -11,7 +11,6 @@ IMPORTANT : this alg must be run before any other algs invoking TruthParticleCnv __version__ = '$Revision: 1.5 $' __author__ = 'P-A Delsart' -import AthenaCommon.SystemOfUnits as Units import AthenaPython.PyAthena as PyAthena from AthenaPython.PyAthena import StatusCode diff --git a/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/tests.py b/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/tests.py index a5cb796537ed83a238166deaff2b1794ac061c52..aaa43a54af64dd1cb3837e4742891377ab26a289 100755 --- a/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/tests.py +++ b/PhysicsAnalysis/TruthParticleID/McParticleAlgs/python/tests.py @@ -1,11 +1,8 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from McParticleTools.McParticleToolsConf import EtaPtFilterTool -from McParticleTools.McParticleToolsConf import OldSpclMcFilterTool -from McParticleTools.McParticleToolsConf import NoopFilterTool from McParticleTools.McParticleToolsConf import TruthParticleCnvTool -from McParticleTools.McParticleToolsConf import TruthIsolationTool from McParticleAlgs.McParticleAlgsConf import TruthParticleBuilder class test_McAodBuilder( TruthParticleBuilder ): @@ -43,7 +40,6 @@ class test_McAodBuilder( TruthParticleBuilder ): pass # test_McAodBuilder from McParticleTools.McParticleToolsConf import GenAodValidationTool -from McParticleTools.McParticleToolsConf import SpclMcValidationTool from McParticleTools.McParticleToolsConf import HepMcWriterTool from McParticleAlgs.McParticleAlgsConf import McAodValidationAlg @@ -75,7 +71,6 @@ class test_McAodValidation( McAodValidationAlg ): pass # test_McAodValidation from McParticleTools.McParticleToolsConf import McVtxFilterTool -from McParticleTools.McParticleToolsConf import TruthParticleCnvTool from McParticleAlgs.McParticleAlgsConf import McAodFilter class test_McAodFilter( McAodFilter ): diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleEvent/CMakeLists.txt index 6eec381c1da591730d62e4619c64cea25f62c10f..2d37ad407456c9b9ac786960ee577c009addaffd 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/CMakeLists.txt +++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/CMakeLists.txt @@ -1,27 +1,8 @@ -################################################################################ -# Package: McParticleEvent -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( McParticleEvent ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PUBLIC - Control/AthenaKernel - Control/AthContainers - Control/AthLinks - Control/Navigation - Event/EventKernel - Event/NavFourMom - Generators/GeneratorObjects - PhysicsAnalysis/AnalysisCommon/ParticleEvent - Tracking/TrkEvent/VxVertex - Generators/AtlasHepMC - PRIVATE - AtlasTest/TestTools - GaudiKernel ) - # External dependencies: find_package( Boost ) find_package( CLHEP ) @@ -32,9 +13,8 @@ atlas_add_library( McParticleEvent PUBLIC_HEADERS McParticleEvent INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaKernel AthContainers AthLinks Navigation - EventKernel NavFourMom GeneratorObjects ParticleEvent VxVertex - PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ) + LINK_LIBRARIES ${Boost_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaKernel AthContainers AthLinks Navigation + EventKernel NavFourMom GeneratorObjects ParticleEvent VxVertex ) atlas_add_dictionary( McParticleEventDict McParticleEvent/McParticleEventDict.h McParticleEvent/selection.xml @@ -52,8 +32,8 @@ atlas_add_test( TruthParticle_test SOURCES test/TruthParticle_test.cxx INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} LINK_LIBRARIES ${CLHEP_LIBRARIES} AtlasHepMCLib GeneratorObjects - TestTools GaudiKernel McParticleEvent + StoreGateLib TestTools GaudiKernel McParticleEvent ENVIRONMENT "JOBOPTSEARCHPATH=${_jobOPath}" ) # Install files from the package: -atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEventAthenaPool/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleEventAthenaPool/CMakeLists.txt index d0a710d1f3ed1e8a522a51283c9f52983579bf10..5ab4db3f3adf5dcead5fb1cd1da667fb35ac9779 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleEventAthenaPool/CMakeLists.txt +++ b/PhysicsAnalysis/TruthParticleID/McParticleEventAthenaPool/CMakeLists.txt @@ -1,23 +1,10 @@ -################################################################################ -# Package: McParticleEventAthenaPool -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( McParticleEventAthenaPool ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Database/AthenaPOOL/AthenaPoolUtilities - GaudiKernel - PRIVATE - Control/StoreGate - Database/AthenaPOOL/AthenaPoolCnvSvc - PhysicsAnalysis/TruthParticleID/McParticleEvent - PhysicsAnalysis/TruthParticleID/McParticleEventTPCnv - PhysicsAnalysis/TruthParticleID/McParticleKernel ) - # Component(s) in the package: atlas_add_poolcnv_library( McParticleEventAthenaPoolPoolCnv src/*.cxx FILES McParticleEvent/TruthParticleContainer.h McParticleEvent/TruthEtIsolationsContainer.h - LINK_LIBRARIES AthenaPoolUtilities GaudiKernel StoreGateLib SGtests AthenaPoolCnvSvcLib McParticleEvent McParticleEventTPCnv McParticleKernel ) + LINK_LIBRARIES GaudiKernel StoreGateLib AthenaPoolCnvSvcLib McParticleEvent McParticleEventTPCnv McParticleKernel ) diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEventTPCnv/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleEventTPCnv/CMakeLists.txt index bd3a2df0c858bda355648237ccde6f651509eb3d..d4639ee915896b336aa2f9ac9d4ae7aa446f7b0b 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleEventTPCnv/CMakeLists.txt +++ b/PhysicsAnalysis/TruthParticleID/McParticleEventTPCnv/CMakeLists.txt @@ -1,56 +1,39 @@ -################################################################################ -# Package: McParticleEventTPCnv -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( McParticleEventTPCnv ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/DataModelAthenaPool - Database/AthenaPOOL/AthenaPoolCnvSvc - GaudiKernel - PhysicsAnalysis/TruthParticleID/McParticleEvent - PRIVATE - AtlasTest/TestTools - Control/AthenaKernel - Control/SGTools - Control/StoreGate - Generators/GeneratorObjects - Generators/AtlasHepMC - PhysicsAnalysis/TruthParticleID/McParticleKernel ) - # External dependencies: -find_package( Boost COMPONENTS filesystem thread system ) -find_package( CLHEP ) +find_package( Boost ) find_package( ROOT COMPONENTS EG Core Tree MathCore Hist RIO pthread ) # Component(s) in the package: atlas_add_tpcnv_library( McParticleEventTPCnv src/*.cxx PUBLIC_HEADERS McParticleEventTPCnv - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - PRIVATE_INCLUDE_DIRS - DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib DataModelAthenaPoolLib AthenaPoolCnvSvcLib GaudiKernel McParticleEvent AthenaKernel StoreGateLib SGtests GeneratorObjects McParticleKernel ) + INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES LINK_LIBRARIES ${Boost_LIBRARIES} AthenaPoolCnvSvcLib DataModelAthenaPoolLib GeneratorObjects McParticleEvent McParticleKernel + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaKernel AtlasHepMCLib GaudiKernel ) atlas_add_dictionary( McParticleEventTPCnvDict McParticleEventTPCnv/McParticleEventTPCnvDict.h McParticleEventTPCnv/selection.xml - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib DataModelAthenaPoolLib AthenaPoolCnvSvcLib GaudiKernel McParticleEvent AthenaKernel StoreGateLib SGtests GeneratorObjects McParticleKernel McParticleEventTPCnv ) + LINK_LIBRARIES McParticleEventTPCnv ) +# Tests in the package: atlas_add_test( TruthParticleContainerCnv_p5_test SOURCES test/TruthParticleContainerCnv_p5_test.cxx - LINK_LIBRARIES McParticleEventTPCnv SGTools TestTools ) + LINK_LIBRARIES AthenaKernel AthenaPoolCnvSvcLib DataModelAthenaPoolLib GaudiKernel GeneratorObjects McParticleEvent McParticleEventTPCnv SGTools TestTools ) atlas_add_test( TruthParticleContainerCnv_p6_test SOURCES test/TruthParticleContainerCnv_p6_test.cxx - LINK_LIBRARIES McParticleEventTPCnv SGTools TestTools ) + LINK_LIBRARIES AthenaKernel AthenaPoolCnvSvcLib DataModelAthenaPoolLib GaudiKernel GeneratorObjects McParticleEvent McParticleEventTPCnv SGTools TestTools ) atlas_add_test( TruthEtIsolationsCnv_p1_test SOURCES test/TruthEtIsolationsCnv_p1_test.cxx - LINK_LIBRARIES McParticleEventTPCnv SGTools TestTools ) + INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + LINK_LIBRARIES ${Boost_LIBRARIES} AthenaPoolCnvSvcLib DataModelAthenaPoolLib GaudiKernel GeneratorObjects McParticleEvent McParticleEventTPCnv SGTools TestTools ) diff --git a/PhysicsAnalysis/TruthParticleID/McParticleKernel/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleKernel/CMakeLists.txt index 9ef64aa501d5ab1dc70e8640a4d60354136dc9d5..42ae20c63b685ce8503a9578a657037e21e2e481 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleKernel/CMakeLists.txt +++ b/PhysicsAnalysis/TruthParticleID/McParticleKernel/CMakeLists.txt @@ -1,15 +1,8 @@ -################################################################################ -# Package: McParticleKernel -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( McParticleKernel ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Generators/AtlasHepMC - GaudiKernel ) - # Component(s) in the package: atlas_add_library( McParticleKernel src/*.cxx diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTests/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleTests/CMakeLists.txt index fa7a6f28a6bdfd1ced3a86a8e881d05cc95a16df..c11772664efb44d162a1d3f186939545324389e1 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleTests/CMakeLists.txt +++ b/PhysicsAnalysis/TruthParticleID/McParticleTests/CMakeLists.txt @@ -1,25 +1,8 @@ -################################################################################ -# Package: McParticleTests -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( McParticleTests ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Control/AthenaBaseComps - Control/AthenaPython - Control/StoreGate - Event/EventKernel - Event/NavFourMom - GaudiKernel - Generators/GeneratorObjects - Generators/AtlasHepMC - PhysicsAnalysis/TruthParticleID/McParticleAlgs - PhysicsAnalysis/TruthParticleID/McParticleEvent - PhysicsAnalysis/TruthParticleID/McParticleKernel - PhysicsAnalysis/TruthParticleID/McParticleUtils ) - # External dependencies: find_package( CLHEP ) find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) @@ -29,7 +12,7 @@ atlas_add_component( McParticleTests src/*.cxx src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaBaseComps StoreGateLib SGtests EventKernel NavFourMom GaudiKernel GeneratorObjects McParticleEvent McParticleKernel McParticleUtils ) + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaBaseComps EventKernel NavFourMom GaudiKernel GeneratorObjects McParticleEvent McParticleKernel McParticleUtils ) # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTools/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleTools/CMakeLists.txt index fd5438edf5faab927f0d615e547ca4744cdeaa7d..ccbcda38ecc2a567e1d3f5bf7a84d6de5c4caa5a 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleTools/CMakeLists.txt +++ b/PhysicsAnalysis/TruthParticleID/McParticleTools/CMakeLists.txt @@ -1,27 +1,10 @@ -################################################################################ -# Package: McParticleTools -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( McParticleTools ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Control/AthenaBaseComps - Control/SGTools - Control/AthContainers - Control/StoreGate - Event/EventKernel - GaudiKernel - Generators/GenAnalysisTools/TruthHelper - Generators/GeneratorObjects - Generators/AtlasHepMC - PhysicsAnalysis/TruthParticleID/McParticleEvent - PhysicsAnalysis/TruthParticleID/McParticleKernel - PhysicsAnalysis/TruthParticleID/McParticleUtils ) - # External dependencies: -find_package( Boost COMPONENTS filesystem thread system ) +find_package( Boost ) find_package( CLHEP ) find_package( HepPDT ) find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) @@ -31,4 +14,4 @@ atlas_add_component( McParticleTools src/*.cxx src/components/*.cxx INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${HEPPDT_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${HEPPDT_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaBaseComps AthContainers StoreGateLib SGtests EventKernel GaudiKernel TruthHelper GeneratorObjects McParticleEvent McParticleKernel McParticleUtils SGTools ) + LINK_LIBRARIES ${Boost_LIBRARIES} ${HEPPDT_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaBaseComps AthContainers StoreGateLib EventKernel GaudiKernel TruthHelper GeneratorObjects McParticleEvent McParticleKernel McParticleUtils SGTools ) diff --git a/PhysicsAnalysis/TruthParticleID/McParticleUtils/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleUtils/CMakeLists.txt index fce02c971f6f5795ff0582f620fe12a0d5c685f6..5457f0d1c86b6d3525ded34dcb0a5a439e546667 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleUtils/CMakeLists.txt +++ b/PhysicsAnalysis/TruthParticleID/McParticleUtils/CMakeLists.txt @@ -1,27 +1,10 @@ -################################################################################ -# Package: McParticleUtils -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( McParticleUtils ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaKernel - Control/AthContainers - Event/EventKernel - GaudiKernel - PhysicsAnalysis/AnalysisCommon/AnalysisUtils - PRIVATE - AtlasTest/TestTools - Control/StoreGate - Control/RootUtils - Generators/AtlasHepMC ) - # External dependencies: -find_package( Boost COMPONENTS filesystem thread system ) -find_package( CLHEP ) -find_package( CppUnit ) +find_package( Boost ) find_package( HepPDT ) find_package( Python COMPONENTS Development ) @@ -29,12 +12,11 @@ find_package( Python COMPONENTS Development ) atlas_add_library( McParticleUtils src/*.cxx PUBLIC_HEADERS McParticleUtils - INCLUDE_DIRS - PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${HEPPDT_INCLUDE_DIRS} ${Python_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${CPPUNIT_INCLUDE_DIRS} + PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${HEPPDT_INCLUDE_DIRS} ${Python_INCLUDE_DIRS} PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AtlasHepMCLib AthenaKernel AthContainers EventKernel GaudiKernel AnalysisUtilsLib StoreGateLib SGtests RootUtils - PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${HEPPDT_LIBRARIES} ${Python_LIBRARIES} ${CLHEP_LIBRARIES} ${CPPUNIT_LIBRARIES} ) + LINK_LIBRARIES AtlasHepMCLib AthenaKernel AthContainers EventKernel GaudiKernel AnalysisUtilsLib + PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${HEPPDT_LIBRARIES} ${Python_LIBRARIES} RootUtils ) # Install files from the package: -atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/Projects/Athena/package_filters.txt b/Projects/Athena/package_filters.txt index d53ba75d8257def09069da5ce407aa34a218b0c2..c8378cf2bc850ba68542527a9026a0885ef86692 100644 --- a/Projects/Athena/package_filters.txt +++ b/Projects/Athena/package_filters.txt @@ -58,5 +58,3 @@ # Don't build PerfMonVTune which has external Intel tool dependency - Control/PerformanceMonitoring/PerfMonVTune -# Old packages that don't work with AthenaMT -- PhysicsAnalysis/HiggsPhys/HSG5/HSG5DPDUtils diff --git a/Projects/Athena/version.txt b/Projects/Athena/version.txt index e7efe3421ba225a99d20587239c44dea5f11e0db..dabc7904c4a347370e5a1a2a44ce2633b8b49ec9 100644 --- a/Projects/Athena/version.txt +++ b/Projects/Athena/version.txt @@ -1 +1 @@ -22.0.19 +22.0.20 diff --git a/Reconstruction/Jet/JetInterface/JetInterface/IJetUpdateJvt.h b/Reconstruction/Jet/JetInterface/JetInterface/IJetUpdateJvt.h index 222d865c321efc0f6ec1934558ba35cc8d0b779e..976db809faba39492a38a754cc69bba58d51e2f9 100644 --- a/Reconstruction/Jet/JetInterface/JetInterface/IJetUpdateJvt.h +++ b/Reconstruction/Jet/JetInterface/JetInterface/IJetUpdateJvt.h @@ -21,9 +21,8 @@ public: /// Calculate the updated JVT. /// jet - jet for which JVT is updated - /// scale - name of the jet scale holding the original pT /// The new value for JVT is returned. - virtual float updateJvt(const xAOD::Jet& jet, std::string scale ="JetPileupScaleMomentum") const =0; + virtual float updateJvt(const xAOD::Jet& jet) const =0; }; diff --git a/Reconstruction/Jet/JetJvtEfficiency/JetJvtEfficiency/IJetJvtEfficiency.h b/Reconstruction/Jet/JetJvtEfficiency/JetJvtEfficiency/IJetJvtEfficiency.h deleted file mode 100644 index fba4ae72e756182bb5b200e801c7db3229c836fc..0000000000000000000000000000000000000000 --- a/Reconstruction/Jet/JetJvtEfficiency/JetJvtEfficiency/IJetJvtEfficiency.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef IJETJVTEFFICIENCY_H_ -#define IJETJVTEFFICIENCY_H_ - -// EDM include(s): -#include "xAODJet/Jet.h" - -// Local include(s): -#include "PATInterfaces/CorrectionCode.h" -#include "PATInterfaces/ISystematicsTool.h" - -// STL include(s): -#include <string> -#include <vector> -#include <map> - -namespace CP { - -const static SystematicVariation JvtEfficiencyUp("JET_JvtEfficiency__1up"); -const static SystematicVariation JvtEfficiencyDown("JET_JvtEfficiency__1down"); - -class IJetJvtEfficiency : public virtual CP::ISystematicsTool { - - //Declare the interface that the class provides - ASG_TOOL_INTERFACE( CP::IJetJvtEfficiency ) - -public: - - virtual ~IJetJvtEfficiency() {} - - //Fills sf with the Jvt efficiency scale factor. If the jet is out of the defined jet pt - //range, or if the jet fails passesJvtCut, a value of 1 is returned. - virtual CorrectionCode getEfficiencyScaleFactor(const xAOD::Jet& jet,float& sf ) = 0; - - //Fills sf with the Jvt inefficiency scale factor. If the jet is out of the defined jet pt - //range, or if the jet fails passesJvtCut, a value of 1 is returned. - virtual CorrectionCode getInefficiencyScaleFactor(const xAOD::Jet& jet,float& sf ) = 0; - - //Returns the Jvt scale factor as a decoration on the jet. - virtual CorrectionCode applyEfficiencyScaleFactor( const xAOD::Jet& jet ) = 0; - - //Returns the Jvt scale factor as a decoration on the jet. - virtual CorrectionCode applyInefficiencyScaleFactor( const xAOD::Jet& jet ) = 0; - - //Returns the jvt scale factors as decorations on the input jets and fills in the combined scale factor into sf - virtual CorrectionCode applyAllEfficiencyScaleFactor(const xAOD::IParticleContainer *jets,float& sf) = 0; - - //Adds a random dropping decoration to single jet. - virtual CorrectionCode applyRandomDropping( const xAOD::Jet& jet ) = 0; - - //Adds a random dropping decoration to every jet. - virtual CorrectionCode applyAllRandomDropping( const xAOD::IParticleContainer *jets) = 0; - - //Checks if the jet passes the jvt cut threshold. - //Uses maximum validity range by default, but there is a configurable parameter - //to lower the max pt value (if one only wants to use jvt up to 50 GeV, for example. - virtual bool passesJvtCut(const xAOD::Jet& jet) = 0; - - //Checks if the jet lies in the pt and eta range where Jvt is valid. - //0<|eta|<2.4 and 20<pt<60 GeV - virtual bool isInRange(const xAOD::Jet& jet) = 0; - - //returns actual jvtthreshold - virtual float getJvtThresh() const = 0; - - //returns user-defined max pt if applicable (by default is the same as the max pt range of the histograms) - virtual float getUserPtMax() const = 0; - - //Sets random seed for random generator, for debugging - virtual void setRandomSeed(int seed) = 0; - -}; // class IJetJvtEfficiencyTool - -} // namespace CP - -#endif /* IJETJVTEFFICIENCY_H_ */ diff --git a/Reconstruction/Jet/JetMomentTools/JetMomentTools/JetVertexTaggerTool.h b/Reconstruction/Jet/JetMomentTools/JetMomentTools/JetVertexTaggerTool.h index 1a74e19dfe06b35d45dc5779c283b4c0717ffbf1..30cfdd8c3435e24f337f6da37848be9050b97c58 100644 --- a/Reconstruction/Jet/JetMomentTools/JetMomentTools/JetVertexTaggerTool.h +++ b/Reconstruction/Jet/JetMomentTools/JetMomentTools/JetVertexTaggerTool.h @@ -93,14 +93,11 @@ public: // Evaluate JVT from Rpt and JVFcorr. float evaluateJvt(float rpt, float jvfcorr) const; - // Update JVT by scaling Rpt byt the ratio of the current and original jet pT values. - // jet - jet for which JVT is updated - // scale - name of the jet scale holding the original pT - // The new value for JVT is returned. - float updateJvt(const xAOD::Jet& jet, std::string scale ="JetPileupScaleMomentum") const override; + // Update JVT using new jet pt + float updateJvt(const xAOD::Jet& jet) const override; // Local method to return the HS vertex - that of type PriVtx - const xAOD::Vertex* findHSVertex(const xAOD::VertexContainer*&) const; + const xAOD::Vertex* findHSVertex() const; private: // data diff --git a/Reconstruction/Jet/JetMomentTools/Root/JetVertexTaggerTool.cxx b/Reconstruction/Jet/JetMomentTools/Root/JetVertexTaggerTool.cxx index 16227fbea3677a60e69832b99385eb3406c3a20a..41b61bd304831f0492b55ac0270dbc28a7f35747 100644 --- a/Reconstruction/Jet/JetMomentTools/Root/JetVertexTaggerTool.cxx +++ b/Reconstruction/Jet/JetMomentTools/Root/JetVertexTaggerTool.cxx @@ -72,23 +72,13 @@ StatusCode JetVertexTaggerTool::initialize() { StatusCode JetVertexTaggerTool::decorate(const xAOD::JetContainer& jetCont) const { - // Get input vertex collection - auto vertexContainer = SG::makeHandle (m_vertexContainer_key); - if (!vertexContainer.isValid()){ - ATH_MSG_ERROR("Invalid VertexContainer datahandle: " << m_vertexContainer_key.key()); - return StatusCode::FAILURE; - } - - auto vertices = vertexContainer.cptr(); - - ATH_MSG_DEBUG("Successfully retrieved VertexContainer: " << m_vertexContainer_key.key()); + const xAOD::Vertex* HSvertex = findHSVertex(); + // findHSVertex will provide an error message if this comes back null + if(HSvertex == nullptr) return StatusCode::FAILURE; - if (vertices->size() == 0 ) { - ATH_MSG_WARNING("There are no vertices in the container. Exiting"); - return StatusCode::SUCCESS; - } - - const xAOD::Vertex* HSvertex = findHSVertex(vertices); + // Grab vertices for index bookkeeping + SG::ReadHandle<xAOD::VertexContainer> vertexHandle = SG::makeHandle (m_vertexContainer_key); + const xAOD::VertexContainer* vertices = vertexHandle.cptr(); SG::ReadDecorHandle<xAOD::JetContainer, float> jvfCorrHandle(m_jvfCorrKey); SG::ReadDecorHandle<xAOD::JetContainer, std::vector<float> > sumPtTrkHandle(m_sumPtTrkKey); @@ -130,29 +120,47 @@ float JetVertexTaggerTool::evaluateJvt(float rpt, float jvfcorr) const { //********************************************************************** -float JetVertexTaggerTool::updateJvt(const xAOD::Jet& jet, std::string scale) const { +float JetVertexTaggerTool::updateJvt(const xAOD::Jet& jet) const { SG::ReadDecorHandle<xAOD::JetContainer, float> jvfCorrHandle(m_jvfCorrKey); - // Chop off the leading jet container name and dot since we're using a ConstAccessor rather than a DecorHandle - std::string rptDecName = m_rptKey.key(); - size_t dotPos = rptDecName.find("."); - rptDecName = rptDecName.substr(dotPos+1, std::string::npos); - // Access Rpt directly, the scheduler doesn't need to care about this one. - SG::AuxElement::ConstAccessor<float> rptAcc(rptDecName); - - JetFourMom_t p4old = jet.jetP4(scale); - float ptold = p4old.pt(); - float ptnew = jet.pt(); + SG::ReadDecorHandle<xAOD::JetContainer, std::vector<float> > sumPtTrkHandle(m_sumPtTrkKey); + float jvfcorr = jvfCorrHandle(jet); - float rptold = rptAcc(jet); - float rptnew = rptold*ptold/ptnew; + std::vector<float> sumpttrk = sumPtTrkHandle(jet); + + const xAOD::Vertex* HSvertex = findHSVertex(); + if(!HSvertex) { + ATH_MSG_ERROR("No hard scatter vertex found. Returning JVT=-1"); + return -1.; + } + + // Grab vertices for index bookkeeping + SG::ReadHandle<xAOD::VertexContainer> vertexHandle = SG::makeHandle (m_vertexContainer_key); + const xAOD::VertexContainer* vertices = vertexHandle.cptr(); + + const float rptnew = sumpttrk[HSvertex->index() - (*vertices)[0]->index()]/jet.pt(); + return evaluateJvt(rptnew, jvfcorr); } //********************************************************************** -const xAOD::Vertex* JetVertexTaggerTool::findHSVertex(const xAOD::VertexContainer*& vertices) const +const xAOD::Vertex* JetVertexTaggerTool::findHSVertex() const { + // Get input vertex collection + SG::ReadHandle<xAOD::VertexContainer> vertexHandle = SG::makeHandle (m_vertexContainer_key); + if (!vertexHandle.isValid()){ + ATH_MSG_ERROR("Invalid VertexContainer datahandle: " << m_vertexContainer_key.key()); + return nullptr; + } + const xAOD::VertexContainer* vertices = vertexHandle.cptr(); + ATH_MSG_DEBUG("Successfully retrieved VertexContainer: " << m_vertexContainer_key.key()); + + if (vertices->size() == 0 ) { + ATH_MSG_WARNING("There are no vertices in the container. Exiting"); + return nullptr; + } + for ( size_t iVertex = 0; iVertex < vertices->size(); ++iVertex ) { if(vertices->at(iVertex)->vertexType() == xAOD::VxType::PriVtx) { diff --git a/Reconstruction/Jet/JetMonitoring/Root/JetKinematicHistos.cxx b/Reconstruction/Jet/JetMonitoring/Root/JetKinematicHistos.cxx index 9e0b766c9141189402806e8af160c016fee36614..7ea1e32dee6dd68f412887d50c05f9a82457e34d 100644 --- a/Reconstruction/Jet/JetMonitoring/Root/JetKinematicHistos.cxx +++ b/Reconstruction/Jet/JetMonitoring/Root/JetKinematicHistos.cxx @@ -107,26 +107,27 @@ int JetKinematicHistos::fillHistosFromContainer(const xAOD::JetContainer & cont) int JetKinematicHistos::fillHistosFromJet(const xAOD::Jet &j){ - // m_jetScale is a property of the base tool - const xAOD::JetFourMom_t p4 = j.jetP4( (xAOD::JetScale) m_jetScale); - m_pt->Fill( p4.Pt()*toGeV ); - m_eta->Fill( p4.Eta() ); - m_phi->Fill( p4.Phi() ); - if (p4.Pt()*toGeV > 200.0){ // high eta - m_pt_high->Fill( p4.Pt()*toGeV ); - m_eta_high->Fill( p4.Eta() ); - if(m_doE) m_e_high->Fill( p4.E()*toGeV ); - if(m_doM) m_m_high->Fill( p4.M()*toGeV ); - if(m_doNConstit) m_nConstit_high->Fill( j.numConstituents() ); - } - - - if(m_doE) m_e->Fill( p4.E()*toGeV ); - if(m_doM) m_m->Fill( p4.M()*toGeV ); + if(j.isAvailable<float>((m_jetScale)+"_pt")){ + // m_jetScale is a property of the base tool + const xAOD::JetFourMom_t p4 = j.jetP4( (xAOD::JetScale) m_jetScale); + m_pt->Fill( p4.Pt()*toGeV ); + m_eta->Fill( p4.Eta() ); + m_phi->Fill( p4.Phi() ); + if (p4.Pt()*toGeV > 200.0){ // high eta + m_pt_high->Fill( p4.Pt()*toGeV ); + m_eta_high->Fill( p4.Eta() ); + if(m_doE) m_e_high->Fill( p4.E()*toGeV ); + if(m_doM) m_m_high->Fill( p4.M()*toGeV ); + if(m_doNConstit) m_nConstit_high->Fill( j.numConstituents() ); + } + + if(m_doE) m_e->Fill( p4.E()*toGeV ); + if(m_doM) m_m->Fill( p4.M()*toGeV ); - if(m_doOccupancy) m_occupancyEtaPhi->Fill( p4.Eta(), p4.Phi() ); - if(m_doAveragePt) m_averagePtEtaPhi->Fill( p4.Eta(), p4.Phi() , p4.Pt()*toGeV); - if(m_doAverageE) m_averageE_EtaPhi->Fill( p4.Eta(), p4.Phi() , p4.E()*toGeV); + if(m_doOccupancy) m_occupancyEtaPhi->Fill( p4.Eta(), p4.Phi() ); + if(m_doAveragePt) m_averagePtEtaPhi->Fill( p4.Eta(), p4.Phi() , p4.Pt()*toGeV); + if(m_doAverageE) m_averageE_EtaPhi->Fill( p4.Eta(), p4.Phi() , p4.E()*toGeV); + } if(m_doNConstit) m_nConstit->Fill( j.numConstituents() ); return 0; diff --git a/Reconstruction/LwtnnUtils/CMakeLists.txt b/Reconstruction/LwtnnUtils/CMakeLists.txt index a10e47c1630b2f0d1d22cde527f3896610ed0d0d..f1ccf35ee2fd8fd2a7062c258fa8b442d1269496 100644 --- a/Reconstruction/LwtnnUtils/CMakeLists.txt +++ b/Reconstruction/LwtnnUtils/CMakeLists.txt @@ -17,3 +17,7 @@ atlas_add_library( LwtnnUtils INCLUDE_DIRS ${LWTNN_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} LINK_LIBRARIES ${LWTNN_LIBRARIES} ${EIGEN_LIBRARIES} ) +atlas_add_executable( + test_lwtnn_fastgraph + utils/test_lwtnn_fastgraph.cxx + LINK_LIBRARIES LwtnnUtils ) diff --git a/Reconstruction/LwtnnUtils/LwtnnUtils/FastGraph.h b/Reconstruction/LwtnnUtils/LwtnnUtils/FastGraph.h index 89e26d44d7fe31a2bda6c99504904ce35944874d..59ae7c0779e8d1c35a85d7fa875f36f98ec071ec 100644 --- a/Reconstruction/LwtnnUtils/LwtnnUtils/FastGraph.h +++ b/Reconstruction/LwtnnUtils/LwtnnUtils/FastGraph.h @@ -53,13 +53,15 @@ namespace lwt::atlas { // The simpler "compute" function Eigen::VectorXd compute(const NodeVec&, const SeqNodeVec& = {}) const; + // the other "compute" which allows you to select an arbitrary output + Eigen::VectorXd compute(const NodeVec&, const SeqNodeVec&, size_t) const; + private: typedef FastInputPreprocessor IP; typedef FastInputVectorPreprocessor IVP; typedef std::vector<IP*> Preprocs; typedef std::vector<IVP*> VecPreprocs; - Eigen::VectorXd compute(const NodeVec&, const SeqNodeVec&, size_t) const; Graph* m_graph; Preprocs m_preprocs; VecPreprocs m_vec_preprocs; diff --git a/Reconstruction/LwtnnUtils/README.md b/Reconstruction/LwtnnUtils/README.md index b585f9569edd5705e9dc494073e73cb13fb6bb06..d79aaa7c82c6005cdf9bcd1bf5f08dc80d8f47f3 100644 --- a/Reconstruction/LwtnnUtils/README.md +++ b/Reconstruction/LwtnnUtils/README.md @@ -7,11 +7,95 @@ At some point things here might be migrated upstream, but we keep this package around for development that might not want to wait for `AtlasExternals` to be updated. + Package Contents ---------------- - `FastGraph`: Faster version of `lwt::LightweightGraph`. Takes vectors rather than `std::map<std::string,...>` inputs. +- `InputOrder`: a structure with two fields, `scalar` and `sequence`, + to specify the input ordering that `FastGraph` should expect for + scalar and sequence inputs. Each field is of type + `vector<pair<string,vector<string>>>`. The first string in each + `pair` names an input node, while the second pair names the + individual variables in the input arrays. + + +More details on using FastGraph +------------------------------- + +The `FastGraph` class can be initialized as + +```C++ +std::ifstream nn_file("PATH_TO_JSON_FILE.json"); +lwt::GraphConfig config = lwt::parse_json_graph(nn_file); +lwt::atlas::FastGraph graph(config, input_order, default_output); +... +Eigen::VectorXd outputs = graph.compute(input_scalars, input_sequences, output_index); +``` + +where `input_order` is an `InputOrder` object (see above) which should +specify the order of the inputs that _you_ will feed the network in +`input_scalars` and `input_sequences`. This can be different from the +order which was used in the training. + +The `input_scalars` are of type `std::vector<Eigen::VectorXd>`, while +the `input_sequences` are of type `std::vector<Eigen::MatrixXd>`. In +both cases the elements of the `std::vector` correspond to input +nodes, while elements of the `Eigen` object correspond to the +individual input variables within the nodes. + +In the sequence case, each row the `Eigen::MatrixXd` corresponds to +one variable, while each column corresponds to one step in the +sequence. + + +### Output Indices and Defaults + +The `default_output` argument is a string specifying the name of the +default output node. It is optional if the network only has only one +output node. + +The `output_index` argument is only needed if you want to override the +default. It is specified as an integer to avoid looking up the number +by string at runtime. To cache this index, call + +``` +size_t cached_index = config.outputs.at("OUTPUT_NODE_NAME").node_index; +``` + +when you initialize the network. Here `"OUTPUT_NODE_NAME"` should be +replaced with the name you gave the network when training. + + +### Mismatches Between Variables in Training and Inference + +It's up to you to make sure that the `InputOrder` corresponds to +exactly the ordering that you pass to `FastGraph::compute(...)` (the +class has no way to know if you're doing this incorrectly). + +But we can support some mismatches between the variables used in +training and those fed into `FastGraph`. + +- If, for example you feed the network any inputs which were not used + in the training, they will be silently ignored. + +- It's also fine to use a different ordering in the training and when + you apply `FastGraph`: the code will rearrange them internally. + +- If any variables from the training are _missing_ however, the code + will crash with an `NNConfigurationException`. + +In practice this allows some input evolution without forcing the +inference-side code to accommodate every set of inputs which are used +in production. If, for example, you wish to add a new variable or node +to training "version 2", you can append these to the existing arrays +fed to `FastGraph::compute(...)` without changing the behaviour of +"version 1" (assuming that you keep the correspondence between +`InputOrder` and the input arrays correct). You can also remove +variables from the training with no changes at all to the inference +code. + [1]: https://www.github.com/lwtnn/lwtnn diff --git a/Reconstruction/LwtnnUtils/utils/test_lwtnn_fastgraph.cxx b/Reconstruction/LwtnnUtils/utils/test_lwtnn_fastgraph.cxx new file mode 100644 index 0000000000000000000000000000000000000000..7371afeaf77681317209b01fed91758fd73c2741 --- /dev/null +++ b/Reconstruction/LwtnnUtils/utils/test_lwtnn_fastgraph.cxx @@ -0,0 +1,32 @@ +#include "LwtnnUtils/FastGraph.h" +#include "LwtnnUtils/InputOrder.h" + +#include "lwtnn/lightweight_network_config.hh" +#include "lwtnn/parse_json.hh" + +#include <string> +#include <vector> +#include <fstream> + +struct Args +{ + std::string nn_file; +}; + +Args getArgs(int nargs, char* argv[]) { + Args args; + if (nargs != 1) return args; + args.nn_file = argv[1]; + return args; +} + +int main(int nargs, char* argv[]) { + Args args = getArgs(nargs, argv); + if (args.nn_file.size() == 0) return 1; + auto nn_file = std::ifstream(args.nn_file); + auto graph_config = lwt::parse_json_graph(nn_file); + + lwt::atlas::FastGraph graph(graph_config, {}, ""); + + return 0; +} diff --git a/Reconstruction/MVAUtils/CMakeLists.txt b/Reconstruction/MVAUtils/CMakeLists.txt index d35c0cf8d37bf2dc57c171a15ad4ba472fde5de2..c93e0b83e7eec52708703bb1107c508cd612a5ca 100644 --- a/Reconstruction/MVAUtils/CMakeLists.txt +++ b/Reconstruction/MVAUtils/CMakeLists.txt @@ -1,16 +1,10 @@ -################################################################################ -# Package: MVAUtils -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( MVAUtils ) # External dependencies: -find_package( ROOT COMPONENTS Tree TMVA XMLIO Core MathCore RIO) -atlas_depends_on_subdirs( - PRIVATE - Control/CxxUtils -) +find_package( ROOT COMPONENTS Tree TMVA XMLIO Core MathCore RIO) # Component(s) in the package: atlas_add_library( MVAUtils @@ -27,13 +21,13 @@ atlas_add_dictionary( MVAUtilsDict atlas_install_python_modules( util/*.py ) atlas_add_executable( convertXmlToRootTree util/convertXmlToRootTree.cxx - INCLUDE_DIRS MVAUtils - LINK_LIBRARIES MVAUtils CxxUtils) + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} MVAUtils + LINK_LIBRARIES ${ROOT_LIBRARIES} MVAUtils CxxUtils) atlas_add_executable( check_timing_mvautils util/check_timing_mvautils.cxx - INCLUDE_DIRS MVAUtils - LINK_LIBRARIES MVAUtils ) + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} MVAUtils + LINK_LIBRARIES ${ROOT_LIBRARIES} MVAUtils ) atlas_install_scripts( util/convertLGBMToRootTree.py util/convertXGBoostToRootTree.py ) diff --git a/Reconstruction/MVAUtils/MVAUtils/BDT.h b/Reconstruction/MVAUtils/MVAUtils/BDT.h index 11ba8e036b6dea75207549e555a9616c11a5a96a..1a9e3b4d84fa6e7e077f10dd8c9f79174b8591b9 100644 --- a/Reconstruction/MVAUtils/MVAUtils/BDT.h +++ b/Reconstruction/MVAUtils/MVAUtils/BDT.h @@ -106,33 +106,7 @@ namespace MVAUtils std::unique_ptr<IForest> m_forest; //!< the implementation of the forest, doing the hard work std::vector<float*> m_pointers; //!< where vars to cut on can be set (but can also be passed) }; - - - inline float BDT::GetResponse() const { - return (!m_pointers.empty() ? GetResponse(m_pointers) : -9999.); - } - - inline float BDT::GetClassification() const { - return (!m_pointers.empty() ? GetClassification(m_pointers) : -9999.); - } - - inline std::vector<float> BDT::GetMultiResponse(unsigned int numClasses) const { - return (!m_pointers.empty() ? GetMultiResponse(m_pointers, numClasses) : std::vector<float>()); - } - - inline std::vector<float> BDT::GetValues() const { - std::vector<float> result; - for (float* ptr : m_pointers) - { - assert (ptr); - result.push_back(*ptr); - } - return result; - } - - inline const std::vector<float*>& BDT::GetPointers() const { return m_pointers; } - inline void BDT::SetPointers(const std::vector<float*>& pointers) { m_pointers = pointers; } - } +#include "MVAUtils/BDT.icc" #endif diff --git a/Reconstruction/MVAUtils/MVAUtils/BDT.icc b/Reconstruction/MVAUtils/MVAUtils/BDT.icc new file mode 100644 index 0000000000000000000000000000000000000000..607d5ec67545e2a8cc121e0f946a6ed87f986b66 --- /dev/null +++ b/Reconstruction/MVAUtils/MVAUtils/BDT.icc @@ -0,0 +1,132 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ +namespace MVAUtils { + +inline float +BDT::GetResponse() const +{ + return (!m_pointers.empty() ? GetResponse(m_pointers) : -9999.); +} + +inline float +BDT::GetClassification() const +{ + return (!m_pointers.empty() ? GetClassification(m_pointers) : -9999.); +} + +inline std::vector<float> +BDT::GetMultiResponse(unsigned int numClasses) const +{ + return (!m_pointers.empty() ? GetMultiResponse(m_pointers, numClasses) + : std::vector<float>()); +} + +inline std::vector<float> +BDT::GetValues() const +{ + std::vector<float> result; + for (float* ptr : m_pointers) { + assert(ptr); + result.push_back(*ptr); + } + return result; +} + +inline const std::vector<float*>& +BDT::GetPointers() const +{ + return m_pointers; +} +inline void +BDT::SetPointers(const std::vector<float*>& pointers) +{ + m_pointers = pointers; +} +inline unsigned int +BDT::GetNTrees() const +{ + return m_forest->GetNTrees(); +} +inline int +BDT::GetNVars() const +{ + return m_forest->GetNVars(); +} +inline float +BDT::GetOffset() const +{ + return m_forest->GetOffset(); +} + +/** Return offset + the sum of the response of each tree **/ +inline float +BDT::GetResponse(const std::vector<float>& values) const +{ + return m_forest->GetResponse(values); +} + +/** Return offset + the sum of the response of each tree **/ +inline float +BDT::GetResponse(const std::vector<float*>& pointers) const +{ + return m_forest->GetResponse(pointers); +} + +inline float +BDT::GetClassification(const std::vector<float>& values) const +{ + return m_forest->GetClassification(values); +} + +inline float +BDT::GetClassification(const std::vector<float*>& pointers) const +{ + return m_forest->GetClassification(pointers); +} + +inline float +BDT::GetGradBoostMVA(const std::vector<float>& values) const +{ + const float sum = m_forest->GetRawResponse(values); // ignores the offset + return 2. / (1 + std::exp(-2 * sum)) - + 1; // output shaping for gradient boosted decision tree (-1,1) +} + +inline float +BDT::GetGradBoostMVA(const std::vector<float*>& pointers) const +{ + const float sum = m_forest->GetRawResponse(pointers); // ignores the offset + // output shaping for gradient boosted decision tree (-1,1) + return 2. / (1 + std::exp(-2 * sum)) - 1; +} + +inline std::vector<float> +BDT::GetMultiResponse(const std::vector<float>& values, + unsigned int numClasses) const +{ + return m_forest->GetMultiResponse(values, numClasses); +} + +inline std::vector<float> +BDT::GetMultiResponse(const std::vector<float*>& pointers, + unsigned int numClasses) const +{ + return m_forest->GetMultiResponse(pointers, numClasses); +} + +inline float +BDT::GetTreeResponse(const std::vector<float>& values, + MVAUtils::index_t index) const +{ + return m_forest->GetTreeResponse(values, index); +} + +inline float +BDT::GetTreeResponse(const std::vector<float*>& pointers, + MVAUtils::index_t index) const +{ + return m_forest->GetTreeResponse(pointers, index); +} + +} diff --git a/Reconstruction/MVAUtils/MVAUtils/Forest.h b/Reconstruction/MVAUtils/MVAUtils/Forest.h index 2e2a10f20ccbb401d90f6efd1456fce3ddf5a01c..7ac71050157f540751320dbf3db3ff53165c7861 100644 --- a/Reconstruction/MVAUtils/MVAUtils/Forest.h +++ b/Reconstruction/MVAUtils/MVAUtils/Forest.h @@ -53,43 +53,55 @@ namespace MVAUtils class Forest : public IForest { public: - - virtual float GetTreeResponse(const std::vector<float>& values, unsigned int itree) const override; - virtual float GetTreeResponse(const std::vector<float*>& pointers, unsigned int itree) const override; - - /** Return the offset of the forest. Since by default there is no offset, return 0 */ - virtual float GetOffset() const override { return 0.; } - - /** Return the response of the whole Forest. Raw is just the sum of all the trees **/ - // The method is not `final`, but it is very unlikely the derived class - // will redefine this (since it is "raw") - virtual float GetRawResponse(const std::vector<float>& values) const override; - virtual float GetRawResponse(const std::vector<float*>& pointers) const override; - - /** Compute the prediction for regression **/ - // In this class it is equal to the raw-reponse. Derived class should - // override this. - virtual float GetResponse(const std::vector<float>& values) const override; - virtual float GetResponse(const std::vector<float*>& pointers) const override; - - /** Compute the prediction for multiclassification (a score for each class). - * In addition to the input values need to pass the number of classes - **/ - // Since TMVA and lgbm are identical the common implementation is here: - // Return the softmax of the sub-forest raw-response - virtual std::vector<float> GetMultiResponse(const std::vector<float>& values, - unsigned int numClasses) const override; - virtual std::vector<float> GetMultiResponse(const std::vector<float*>& pointers, - unsigned int numClasses) const override; - - virtual unsigned int GetNTrees() const final { return m_forest.size(); } - - virtual void PrintForest() const override; - - virtual void PrintTree(unsigned int itree) const override; - - /** Return the vector of nodes for the tree itree **/ - virtual std::vector<Node_t> GetTree(unsigned int itree) const final; + virtual float GetTreeResponse(const std::vector<float>& values, + unsigned int itree) const override final; + virtual float GetTreeResponse(const std::vector<float*>& pointers, + unsigned int itree) const override final; + + /** Return the offset of the forest. Since by default there is no offset, + * return 0 */ + virtual float GetOffset() const override { return 0.; } + + /** Return the response of the whole Forest. Raw is just the sum of all + * the trees **/ + virtual float GetRawResponse( + const std::vector<float>& values) const override final; + virtual float GetRawResponse( + const std::vector<float*>& pointers) const override final; + + /** Compute the prediction for regression **/ + // In this class it is equal to the raw-reponse. Derived class should + // override this. + virtual float GetResponse( + const std::vector<float>& values) const override; + virtual float GetResponse( + const std::vector<float*>& pointers) const override; + + /** Compute the prediction for multiclassification (a score for each + *class). In addition to the input values need to pass the number of + *classes + **/ + // Since TMVA and lgbm are identical the common implementation is here: + // Return the softmax of the sub-forest raw-response + virtual std::vector<float> GetMultiResponse( + const std::vector<float>& values, + unsigned int numClasses) const override; + + virtual std::vector<float> GetMultiResponse( + const std::vector<float*>& pointers, + unsigned int numClasses) const override; + + virtual unsigned int GetNTrees() const override final + { + return m_forest.size(); + } + + virtual void PrintForest() const override; + + virtual void PrintTree(unsigned int itree) const override; + + /** Return the vector of nodes for the tree itree **/ + std::vector<Node_t> GetTree(unsigned int itree) const; protected: /** Get the response of a tree. Instead of specifying the index of the tree diff --git a/Reconstruction/MVAUtils/MVAUtils/ForestLGBM.h b/Reconstruction/MVAUtils/MVAUtils/ForestLGBM.h index e344246a2953f91d036acd0a6af7e5712fa3e5fe..51e1856169f9dca3c388cca6d2bc7f152a7e28da 100644 --- a/Reconstruction/MVAUtils/MVAUtils/ForestLGBM.h +++ b/Reconstruction/MVAUtils/MVAUtils/ForestLGBM.h @@ -49,7 +49,6 @@ namespace MVAUtils ForestLGBMSimple (ForestLGBMSimple&&) = default; ForestLGBMSimple& operator=(ForestLGBMSimple&&) = default; ~ForestLGBMSimple()=default; - virtual TTree* WriteTree(TString name) const override; virtual void PrintForest() const override; virtual int GetNVars() const override { return m_max_var + 1; } @@ -69,7 +68,6 @@ namespace MVAUtils ForestLGBM (ForestLGBM&&) = default; ForestLGBM& operator=(ForestLGBM&&) = default; ~ForestLGBM()=default; - virtual TTree* WriteTree(TString name) const override; virtual void PrintForest() const override; virtual int GetNVars() const override { return m_max_var + 1; } diff --git a/Reconstruction/MVAUtils/MVAUtils/ForestTMVA.h b/Reconstruction/MVAUtils/MVAUtils/ForestTMVA.h index 084054066de3a6fb061b9a566012ff267a98a9f9..1dc7dd428a1a2cb2ca30a4a71dc57a57b5b89aa7 100644 --- a/Reconstruction/MVAUtils/MVAUtils/ForestTMVA.h +++ b/Reconstruction/MVAUtils/MVAUtils/ForestTMVA.h @@ -25,22 +25,16 @@ namespace MVAUtils public: ForestWeighted() : m_sumWeights(0.) { } - float GetTreeResponseWeighted(const std::vector<float>& values, unsigned int itree) const - { - return Forest<Node_t>::GetTreeResponse(values, itree) * m_weights[itree]; - } - - float GetTreeResponseWeighted(const std::vector<float*>& pointers, unsigned int itree) const - { - return Forest<Node_t>::GetTreeResponse(pointers, itree) * m_weights[itree]; - } - - using Forest<Node_t>::GetNTrees; // lookup is deferred until template paramers are known, force it + using Forest<Node_t>::GetNTrees; using Forest<Node_t>::newTree; + float GetTreeResponseWeighted(const std::vector<float>& values, unsigned int itree) const; + float GetTreeResponseWeighted(const std::vector<float*>& pointers, unsigned int itree) const; + float GetWeightedResponse(const std::vector<float>& values) const; float GetWeightedResponse(const std::vector<float*>& pointers) const; - virtual void newTree(const std::vector<Node_t>& nodes, float weight); + + void newTree(const std::vector<Node_t>& nodes, float weight); float GetTreeWeight(unsigned int itree) const { return m_weights[itree]; } float GetSumWeights() const { return m_sumWeights; } @@ -57,33 +51,6 @@ namespace MVAUtils }; - template<typename Node_t> - float ForestWeighted<Node_t>::GetWeightedResponse(const std::vector<float>& values) const { - float result = 0.; - for (unsigned int itree = 0; itree != GetNTrees(); ++itree) - { - result += GetTreeResponseWeighted(values, itree); - } - return result; - } - - template<typename Node_t> - float ForestWeighted<Node_t>::GetWeightedResponse(const std::vector<float*>& pointers) const { - float result = 0.; - for (unsigned int itree = 0; itree != GetNTrees(); ++itree) - { - result += GetTreeResponseWeighted(pointers, itree); - } - return result; - } - - template<typename Node_t> - void ForestWeighted<Node_t>::newTree(const std::vector<Node_t>& nodes, float weight) { - newTree(nodes); - m_weights.push_back(weight); - m_sumWeights += weight; - } - /* * Support TMVA processing * @@ -118,5 +85,5 @@ namespace MVAUtils }; } - +#include "MVAUtils/ForestTMVA.icc" #endif diff --git a/Reconstruction/MVAUtils/MVAUtils/ForestTMVA.icc b/Reconstruction/MVAUtils/MVAUtils/ForestTMVA.icc new file mode 100644 index 0000000000000000000000000000000000000000..e6bcac410504dc37bf0e54039c42217b671444d6 --- /dev/null +++ b/Reconstruction/MVAUtils/MVAUtils/ForestTMVA.icc @@ -0,0 +1,81 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ +namespace MVAUtils { + +template<typename Node_t> +float +ForestWeighted<Node_t>::GetTreeResponseWeighted( + const std::vector<float>& values, + unsigned int itree) const +{ + return Forest<Node_t>::GetTreeResponse(values, itree) * m_weights[itree]; +} +template<typename Node_t> +float +ForestWeighted<Node_t>::GetTreeResponseWeighted( + const std::vector<float*>& pointers, + unsigned int itree) const +{ + return Forest<Node_t>::GetTreeResponse(pointers, itree) * m_weights[itree]; +} + +template<typename Node_t> +float +ForestWeighted<Node_t>::GetWeightedResponse( + const std::vector<float>& values) const +{ + float result = 0.; + for (unsigned int itree = 0; itree != GetNTrees(); ++itree) { + result += GetTreeResponseWeighted(values, itree); + } + return result; +} + +template<typename Node_t> +float +ForestWeighted<Node_t>::GetWeightedResponse( + const std::vector<float*>& pointers) const +{ + float result = 0.; + for (unsigned int itree = 0; itree != GetNTrees(); ++itree) { + result += GetTreeResponseWeighted(pointers, itree); + } + return result; +} + +template<typename Node_t> +void +ForestWeighted<Node_t>::newTree(const std::vector<Node_t>& nodes, float weight) +{ + newTree(nodes); + m_weights.push_back(weight); + m_sumWeights += weight; +} + +inline float +ForestTMVA::GetResponse(const std::vector<float>& values) const +{ + return GetRawResponse(values) + GetOffset(); +} + +inline float +ForestTMVA::GetResponse(const std::vector<float*>& pointers) const +{ + return GetRawResponse(pointers) + GetOffset(); +} + +inline float +ForestTMVA::GetClassification(const std::vector<float>& values) const +{ + float result = GetWeightedResponse(values); + return result / GetSumWeights(); +} + +inline float +ForestTMVA::GetClassification(const std::vector<float*>& pointers) const +{ + float result = GetWeightedResponse(pointers); + return result / GetSumWeights(); +} +} diff --git a/Reconstruction/MVAUtils/Root/BDT.cxx b/Reconstruction/MVAUtils/Root/BDT.cxx index c7d76f08843467ae08547e41f87f3152cd19d28d..46ed101c72292508ec5dc942f6c5c85002c70258 100644 --- a/Reconstruction/MVAUtils/Root/BDT.cxx +++ b/Reconstruction/MVAUtils/Root/BDT.cxx @@ -30,7 +30,7 @@ std::string get_default_string_map(const std::map <std::string, std::string> & m { std::map<std::string, std::string>::const_iterator it = m.find(key); if (it == m.end()) { return defval; } - return it->second; + return it->second; } std::map<std::string, std::string> parseOptions(const std::string& raw_options) @@ -44,7 +44,8 @@ std::map<std::string, std::string> parseOptions(const std::string& raw_options) const auto left = item.substr(0, pos); if (!options.insert(std::make_pair(left, right)).second) { - throw std::runtime_error(std::string("option ") + left + " duplicated in title of TTree used as input"); + throw std::runtime_error(std::string("option ") + left + + " duplicated in title of TTree used as input"); } } @@ -64,95 +65,24 @@ BDT::BDT(::TTree *tree) std::string node_type = get_default_string_map (options, std::string("node_type")); if (node_type == "lgbm") { m_forest = std::make_unique<ForestLGBM>(tree); + } else if (node_type == "lgbm_simple") { + m_forest = std::make_unique<ForestLGBMSimple>( + tree); // this do not support nan as inputs + } else { + throw std::runtime_error( + "the title of the input tree is misformatted: cannot understand which " + "BDT implementation to use"); } - else if (node_type == "lgbm_simple") { - m_forest = std::make_unique<ForestLGBMSimple>(tree); // this do not support nan as inputs - } - else - { - throw std::runtime_error("the title of the input tree is misformatted: cannot understand which BDT implementation to use"); - } - } - else if (creator == "xgboost") - { - //this do support nan as inputs + } else if (creator == "xgboost") { + // this do support nan as inputs m_forest = std::make_unique<ForestXGBoost>(tree); - } - else { + } else { // default for compatibility: old TTree (based on TMVA) don't have a special title m_forest = std::make_unique<ForestTMVA>(tree); } } -unsigned int BDT::GetNTrees() const { return m_forest->GetNTrees(); } -int BDT::GetNVars() const { return m_forest->GetNVars(); } -float BDT::GetOffset() const { return m_forest->GetOffset(); } - -/** Return offset + the sum of the response of each tree **/ -float BDT::GetResponse(const std::vector<float>& values) const -{ - return m_forest->GetResponse(values); -} - - -/** Return offset + the sum of the response of each tree **/ -float BDT::GetResponse(const std::vector<float*>& pointers) const -{ - return m_forest->GetResponse(pointers); -} - - -float BDT::GetClassification(const std::vector<float>& values) const -{ - return m_forest->GetClassification(values); -} - - -float BDT::GetClassification(const std::vector<float*>& pointers) const -{ - return m_forest->GetClassification(pointers); -} - -float BDT::GetGradBoostMVA(const std::vector<float>& values) const -{ - const float sum = m_forest->GetRawResponse(values); // ignores the offset - return 2. / (1 + std::exp(-2 * sum)) - 1; //output shaping for gradient boosted decision tree (-1,1) -} - -float BDT::GetGradBoostMVA(const std::vector<float*>& pointers) const -{ - const float sum = m_forest->GetRawResponse(pointers); // ignores the offset - return 2. / (1 + std::exp(-2 * sum)) - 1; //output shaping for gradient boosted decision tree (-1,1) -} - - -std::vector<float> BDT::GetMultiResponse(const std::vector<float>& values, - unsigned int numClasses) const -{ - return m_forest->GetMultiResponse(values, numClasses); -} - - -std::vector<float> BDT::GetMultiResponse(const std::vector<float*>& pointers, - unsigned int numClasses) const -{ - return m_forest->GetMultiResponse(pointers, numClasses); -} - - -float BDT::GetTreeResponse(const std::vector<float>& values, MVAUtils::index_t index) const -{ - return m_forest->GetTreeResponse(values, index); -} - - -float BDT::GetTreeResponse(const std::vector<float*>& pointers, MVAUtils::index_t index) const -{ - return m_forest->GetTreeResponse(pointers, index); -} - TTree* BDT::WriteTree(TString name) const { return m_forest->WriteTree(std::move(name)); } - void BDT::PrintForest() const { m_forest->PrintForest(); } void BDT::PrintTree(unsigned int itree) const { m_forest->PrintTree(itree); } diff --git a/Reconstruction/MVAUtils/Root/ForestTMVA.cxx b/Reconstruction/MVAUtils/Root/ForestTMVA.cxx index dd199d0e32da3f6cd926371c0802acfd6adc0a03..4c30deb571869bd2b07889d3bbc8833492a87b9f 100644 --- a/Reconstruction/MVAUtils/Root/ForestTMVA.cxx +++ b/Reconstruction/MVAUtils/Root/ForestTMVA.cxx @@ -74,26 +74,6 @@ TTree* ForestTMVA::WriteTree(TString name) const return tree; } -float ForestTMVA::GetResponse(const std::vector<float>& values) const { - return GetRawResponse(values) + GetOffset(); -} - -float ForestTMVA::GetResponse(const std::vector<float*>& pointers) const { - return GetRawResponse(pointers) + GetOffset(); -} - -float ForestTMVA::GetClassification(const std::vector<float>& values) const -{ - float result = GetWeightedResponse(values); - return result / GetSumWeights(); -} - -float ForestTMVA::GetClassification(const std::vector<float*>& pointers) const -{ - float result = GetWeightedResponse(pointers); - return result / GetSumWeights(); -} - void ForestTMVA::PrintForest() const { std::cout << "***BDT TMVA: Printing entire forest***" << std::endl; diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecFlags.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecFlags.py index a86481d3335fceba6555e2e95d41eeb0da0c17db..e7c94f4e2666b5ceff7db58b8afd22c773482406 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecFlags.py +++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecFlags.py @@ -164,7 +164,11 @@ class createScaleCalibrationInput(JobProperty): allowedTypes=['bool'] StoredValue=False - +## Decide whether to wrap the new configuration in the old. +class useNewConfig(JobProperty): + statusOn=True + allowedTypes=['bool'] + StoredValue=False ## The container with all the flags to steer MuonCombined reconstruction class MuonCombinedRec(JobPropertyContainer): diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_config.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_config.py index b64199d8fd827cb2cfa0f18df62db176cba8b4c2..8acb7d758d51d52fe268319f15cd210033a0c3a4 100755 --- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_config.py +++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_config.py @@ -16,9 +16,27 @@ beamFlags = jobproperties.Beam muonCombinedRecFlags.setDefaults() -include ("MuonCombinedRecExample/MuonCombinedRec_preprocessing.py") +if muonCombinedRecFlags.useNewConfig(): + from AthenaCommon.AthenaCommonFlags import athenaCommonFlags + from AthenaConfiguration.AllConfigFlags import ConfigFlags + from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper + from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedReconstructionCfg -include ("MuonCombinedRecExample/MuonCombinedRec_identification.py") + ConfigFlags.Input.Files = athenaCommonFlags.FilesInput() + ConfigFlags.Detector.GeometryMDT = True + ConfigFlags.Detector.GeometryTGC = True + ConfigFlags.Detector.GeometryCSC = True + ConfigFlags.Detector.GeometryRPC = True + # TODO Keep here for the moment, since we still have debugging to do. + from AthenaCommon.Logging import logging + log = logging.getLogger( "conf2toConfigurable".ljust(30) ) + log.setLevel(DEBUG) + CAtoGlobalWrapper(MuonCombinedReconstructionCfg,ConfigFlags) -if not rec.doAODMerging(): - include ("MuonCombinedRecExample/MuonCombinedRec_postprocessing.py") +else: + include ("MuonCombinedRecExample/MuonCombinedRec_preprocessing.py") + + include ("MuonCombinedRecExample/MuonCombinedRec_identification.py") + + if not rec.doAODMerging(): + include ("MuonCombinedRecExample/MuonCombinedRec_postprocessing.py") diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/CMakeLists.txt b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/CMakeLists.txt deleted file mode 100644 index bf98b88d5f89c9bfec299ca8a37942efb114b9af..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -################################################################################ -# Package: MuonCombinedRecRTT -################################################################################ - -# Declare the package name: -atlas_subdir( MuonCombinedRecRTT ) - -# External dependencies: -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) -#atlas_install_runtime( test/MuonCombinedRecRTT_TestConfiguration.xml share/*.C share/*.h share/*.py ExtraFiles/*.html ) - diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/ExtraFiles/ALL_MuonCombinedRecRTT_Plots.html b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/ExtraFiles/ALL_MuonCombinedRecRTT_Plots.html deleted file mode 100644 index de73a3b1dd2ef840a7c9e60aab73d706e893e2e9..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/ExtraFiles/ALL_MuonCombinedRecRTT_Plots.html +++ /dev/null @@ -1,144 +0,0 @@ -<html><head> -<Title>MuonCombinedRecRTT Plots</Title></head> -<body> - - -<a name="top"><h1>MuonCombinedRecRTT Plots</h1></a> -<br /> -<h2>Contents</h2> -<ul> -<li><a href="#links">Links</a></li> -<li><a href="#pt">Pt distributions</a></li> -<li><a href="#eta">Eta distributions</a></li> -<li><a href="#phi">Phi distributions</a></li> -<li><a href="#chi2">Chi2 fit distributions</a></li> -<li><a href="#combined">Combined muons plots</a></li> -</ul> - - -<a name="links"><h2>Links for this job</h2></a> -<a href="#top">(top)</a><p> -<ul> -<li>RTT default page</li> -<li>Log files</li> -</ul> - - -<a name="pt"><h2>pT distributions</h2></a> -<a href="#top">(top)</a><p> -<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0> -<TR> - <TD><a href="mu_pt_Muid_Tight.gif"><img src="mu_pt_Muid_Tight.gif" width=350></a></TD> - <TD><a href="mu_pt_Muid_CB.gif"><img src="mu_pt_Muid_CB.gif" width=350></a></TD> - <TD><a href="mu_pt_MuTagIMO.gif"><img src="mu_pt_MuTagIMO.gif" width=350></a></TD> -</TR> -<TR> - <TD><a href="mu_pt_MuidSA.gif"><img src="mu_pt_MuidSA.gif" width=350></a></TD> - <TD><a href="mu_pt_MuGirl.gif"><img src="mu_pt_MuGirl.gif" width=350></a></TD> - <TD><a href="mu_pt_Staco_CB.gif"><img src="mu_pt_Staco_CB.gif" width=350></a></TD> -</TR> -<TR> - <TD><a href="mu_pt_MuTag.gif"><img src="mu_pt_MuTag.gif" width=350></a></TD> - <TD><a href="mu_pt_MuonBoy.gif"><img src="mu_pt_MuonBoy.gif" width=350></a></TD> - <TD><a href="mu_pt_CaloMuon.gif"><img src="mu_pt_CaloMuon.gif" width=350></a></TD> -</TR> - -</TABLE> - - -<a name="eta"><h2>Eta distributions pT > 20 GeV</h2></a> -<a href="#top">(top)</a><p> -<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0> -<TR> - <TD><a href="mu_eta_pt20_Muid_Tight.gif"><img src="mu_eta_pt20_Muid_Tight.gif" width=350></a></TD> - <TD><a href="mu_eta_pt20_Muid_CB.gif"><img src="mu_eta_pt20_Muid_CB.gif" width=350></a></TD> - <TD><a href="mu_eta_pt20_MuTagIMO.gif"><img src="mu_eta_pt20_MuTagIMO.gif" width=350></a></TD> -</TR> -<TR> - <TD><a href="mu_eta_pt20_MuidSA.gif"><img src="mu_eta_pt20_MuidSA.gif" width=350></a></TD> - <TD><a href="mu_eta_pt20_MuGirl.gif"><img src="mu_eta_pt20_MuGirl.gif" width=350></a></TD> - <TD><a href="mu_eta_pt20_Staco_CB.gif"><img src="mu_eta_pt20_Staco_CB.gif" width=350></a></TD> -</TR> -<TR> - <TD><a href="mu_eta_pt20_MuTag.gif"><img src="mu_eta_pt20_MuTag.gif" width=350></a></TD> - <TD><a href="mu_eta_pt20_MuonBoy.gif"><img src="mu_eta_pt20_MuonBoy.gif" width=350></a></TD> - <TD><a href="mu_eta_pt20_CaloMuon.gif"><img src="mu_eta_pt20_CaloMuon.gif" width=350></a></TD> -</TR> - -</TABLE> - - - -<a name="phi"><h2>Phi distributions pT > 20 GeV</h2></a> -<a href="#top">(top)</a><p> -<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0> -<TR> - <TD><a href="mu_phi_pt20_Muid_Tight.gif"><img src="mu_phi_pt20_Muid_Tight.gif" width=350></a></TD> - <TD><a href="mu_phi_pt20_Muid_CB.gif"><img src="mu_phi_pt20_Muid_CB.gif" width=350></a></TD> - <TD><a href="mu_phi_pt20_MuTagIMO.gif"><img src="mu_phi_pt20_MuTagIMO.gif" width=350></a></TD> -</TR> -<TR> - <TD><a href="mu_phi_pt20_MuidSA.gif"><img src="mu_phi_pt20_MuidSA.gif" width=350></a></TD> - <TD><a href="mu_phi_pt20_MuGirl.gif"><img src="mu_phi_pt20_MuGirl.gif" width=350></a></TD> - <TD><a href="mu_phi_pt20_Staco_CB.gif"><img src="mu_phi_pt20_Staco_CB.gif" width=350></a></TD> -</TR> -<TR> - <TD><a href="mu_phi_pt20_MuTag.gif"><img src="mu_phi_pt20_MuTag.gif" width=350></a></TD> - <TD><a href="mu_phi_pt20_MuonBoy.gif"><img src="mu_phi_pt20_MuonBoy.gif" width=350></a></TD> - <TD><a href="mu_phi_pt20_CaloMuon.gif"><img src="mu_phi_pt20_CaloMuon.gif" width=350></a></TD> -</TR> - -</TABLE> - - - - -<a name="chi2"><h2>chi2_fit/ndf distributions</h2></a> -<a href="#top">(top)</a><p> -<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0> -<TR> - <TD><a href="chi2_Muid_Tight.gif"><img src="chi2_Muid_Tight.gif" width=350></a></TD> - <TD><a href="chi2_Muid_CB.gif"><img src="chi2_Muid_CB.gif" width=350></a></TD> - <TD><a href="chi2_MuTagIMO.gif"><img src="chi2_MuTagIMO.gif" width=350></a></TD> -</TR> -<TR> - <TD><a href="chi2_MuidSA.gif"><img src="chi2_MuidSA.gif" width=350></a></TD> - <TD><a href="chi2_MuGirl.gif"><img src="chi2_MuGirl.gif" width=350></a></TD> - <TD><a href="chi2_Staco_CB.gif"><img src="chi2_Staco_CB.gif" width=350></a></TD> -</TR> -<TR> - <TD><a href="chi2_MuTag.gif"><img src="chi2_MuTag.gif" width=350></a></TD> - <TD><a href="chi2_MuonBoy.gif"><img src="chi2_MuonBoy.gif" width=350></a></TD> - <TD><a href="chi2_CaloMuon.gif"><img src="chi2_CaloMuon.gif" width=350></a></TD> -</TR> - -</TABLE> - - -<a name="combined"><h2>Combined muons plot</h2></a> - -<a href="#top">(top)</a><p> -<h3>Chi2 Match</h3> -<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0> -<TR> - <TD><a href="Chi2Match_Muid_CB.gif"><img src="Chi2Match_Muid_CB.gif" width=350></a></TD> - <TD><a href="Chi2Match_Staco_CB.gif"><img src="Chi2Match_Staco_CB.gif" width=350></a></TD> -</TR> -</TABLE> - -<h3>Delta ID - MS</h3> -<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0> -<TR> - <TD><a href="DeltaPtovPt_pt20_Muid_CB.gif"><img src="DeltaPtovPt_pt20_Muid_CB.gif" width=350></a></TD> - <TD><a href="DeltaEta_pt20_Muid_CB.gif"><img src="DeltaEta_pt20_Muid_CB.gif" width=350></a></TD> - <TD><a href="DeltaPhi_pt20_Muid_CB.gif"><img src="DeltaPhi_pt20_Muid_CB.gif" width=350></a></TD> -</TR> -<TR> - <TD><a href="DeltaPtovPt_pt20_Staco_CB.gif"><img src="DeltaPtovPt_pt20_Staco_CB.gif" width=350></a></TD> - <TD><a href="DeltaEta_pt20_Staco_CB.gif"><img src="DeltaEta_pt20_Staco_CB.gif" width=350></a></TD> - <TD><a href="DeltaPhi_pt20_Staco_CB.gif"><img src="DeltaPhi_pt20_Staco_CB.gif" width=350></a></TD> -</TR> - -</TABLE> - -</body></html> diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MCPD3PDMaker.py b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MCPD3PDMaker.py deleted file mode 100644 index f14a422c3c27bda3da4d38cfdc94721a9f21e53e..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MCPD3PDMaker.py +++ /dev/null @@ -1,416 +0,0 @@ -# $Id: MCPD3PDMaker.py 497319 2012-04-23 20:11:54Z dimicco $ -# -# @file PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZphysicsD3PD.py -# @author maarten boonekamp <maarten.boonekamp@cea.fr> -# @date Sep, 2009 -# @brief Construct a Standard Model WZ physics D3PD. -# - - -import D3PDMakerCoreComps - -from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags - -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# event - -from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject -from EventCommonD3PDMaker.LBMetadataConfig import LBMetadataConfig -from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject - -# eletron/photon - -from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject -from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject -from egammaD3PDMaker.egammaTriggerBitsD3PDObject import egammaTriggerBitsD3PDObject - -# muons - -from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject -from MuonD3PDMaker.MuonSegmentD3PDObject import MuonSegmentD3PDObject -from MuonD3PDMaker.MuonTriggerBitsD3PDObject import MuonTriggerBitsD3PDObject - -# jet - -from JetD3PDMaker.JetD3PDObject import JetD3PDObject - -# tau - -from TauD3PDMaker.TauD3PDObject import TauD3PDObject -from TauD3PDMaker.makeTrackFilterAlg import makeTrackFilterAlg - -# calo - -from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject -from CaloD3PDMaker.MBTSTimeD3PDObject import MBTSTimeD3PDObject -from CaloD3PDMaker.MBTSTriggerBitsD3PDObject import MBTSTriggerBitsD3PDObject -from CaloD3PDMaker.LArCollisionTimeD3PDObject import LArCollisionTimeD3PDObject -from CaloD3PDMaker.CollisionDecisionD3PDObject import CollisionDecisionD3PDObject -from CaloD3PDMaker.ClusterD3PDObject import ClusterD3PDObject -from CaloD3PDMaker.EMClusterD3PDObject import EMClusterD3PDObject -from CaloD3PDMaker.makeClusterFilter import makeClusterFilter - -# baseline track config - -from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags - -TrackD3PDFlags.doTruth = False -TrackD3PDFlags.storeDetailedTruth = False -TrackD3PDFlags.storeDiagonalCovarianceAsErrors = True -TrackD3PDFlags.storeHitTruthMatching = False -TrackD3PDFlags.storePixelHitsOnTrack = False -TrackD3PDFlags.storePixelHolesOnTrack = False -TrackD3PDFlags.storePixelOutliersOnTrack = False -TrackD3PDFlags.storeSCTHitsOnTrack = False -TrackD3PDFlags.storeSCTHolesOnTrack = False -TrackD3PDFlags.storeSCTOutliersOnTrack = False -TrackD3PDFlags.storeTRTHitsOnTrack = False -TrackD3PDFlags.storeTRTHolesOnTrack = False -TrackD3PDFlags.storeTRTOutliersOnTrack = False -TrackD3PDFlags.storeTrackFitQuality = True -TrackD3PDFlags.storeTrackInfo = False -TrackD3PDFlags.storeTrackMomentum = True -TrackD3PDFlags.storeTrackPredictionAtBLayer = False -TrackD3PDFlags.storeTrackSummary = False -TrackD3PDFlags.trackParametersAtBeamSpotLevelOfDetails = 0 -TrackD3PDFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 0 -TrackD3PDFlags.trackParametersAtPrimaryVertexLevelOfDetails = 1 - -from TrackD3PDMaker.TrackD3PDObject import TrackParticleD3PDObject - -# PV config - -TrackD3PDFlags.storeVertexFitQuality = True -TrackD3PDFlags.storeVertexKinematics = True -TrackD3PDFlags.storeVertexPurity = False -TrackD3PDFlags.storeVertexTrackAssociation = False -TrackD3PDFlags.storeVertexTrackIndexAssociation = True -TrackD3PDFlags.vertexPositionLevelOfDetails = 2 - -from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject - -# BeamSpot / MinBias - -from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject - -# MET - -from MissingETD3PDMaker.MissingETD3PDMakerFlags import MissingETD3PDMakerFlags -from MissingETD3PDMaker.MissingETD3PDObject import * -from MissingETD3PDMaker.MissingETD3PDTriggerBitsObject import * - -# Trigger - -from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject -from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata -from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject -from TrigEgammaD3PDMaker.TrigEgammaD3PD import TrigEgammaD3PDObjects -# from TrigMuonD3PDMaker.TrigMuonD3PD import TrigMuonD3PDObjects -from TriggerD3PDMaker.EnergySumROID3PDObject import EnergySumROID3PDObject -from TrigMissingETD3PDMaker.TrigMETD3PDObject import TrigMETD3PDObject - -from RecExConfig.RecFlags import rec -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - - -def _args (level, name, kwin, **kw): - kw = kw.copy() - kw['level'] = level - for (k, v) in kwin.items(): - if k.startswith (name + '_'): - kw[k[len(name)+1:]] = v - return kw - - -def MCPphysicsD3PD (file, - tuplename = 'physics', - seq = topSequence, - D3PDSvc = 'D3PD::RootD3PDSvc', - streamNameRoot = None, - **kw): - - # define track and cluster filters - - filter1 = makeTrackFilterAlg(TracksName = D3PDMakerFlags.TrackSGKey(), - OutputTracksName='GoodTracks', - ptCut=0.,nSCTPix=4) - - filter2 = makeTrackFilterAlg(TracksName = D3PDMakerFlags.TrackSGKey(), - OutputTracksName='HighPtTracks', - ptCut=5000.,nSCTPix=4) - - filter3 = makeClusterFilter(InputName = D3PDMakerFlags.ClusterSGKey(), - OutputName = 'HighPtClusters', - ptCut=10000.) - - # FIXME (Maarten) : I need to give the container name explicitly apparently - filter4 = makeClusterFilter(InputName = 'EMTopoCluster430', - OutputName = 'HighPtEMClusters', - ptCut=10000.) - - preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) - preseq += filter1 - preseq += filter2 - preseq += filter3 - preseq += filter4 - - - - - # now configure the D3PD - - alg = MSMgr.NewRootStream(StreamName = streamNameRoot, FileName = file, TreeName = tuplename) - - - alg += EventInfoD3PDObject (**_args (10, 'EventInfo', kw)) - alg += LArCollisionTimeD3PDObject (**_args (10, 'LArCollisionTime', kw)) - - # Eta rings of energy - # FIXME brian crashing aod running - if not rec.readAOD: - from CaloD3PDMaker.RapgapD3PDObject import EtaRingsNonTileD3PDObject - from CaloD3PDMaker.RapgapD3PDObject import EtaRingsD3PDObject - - alg += EtaRingsNonTileD3PDObject ( **_args ( 0, 'EtaRings', kw) ) - alg += EtaRingsD3PDObject ( **_args ( 0, 'EtaRings', kw) ) - - # Electron/Photon blocks - -# alg += ElectronD3PDObject (**_args (10, 'Electron', kw, -# exclude = ['EMTrackFitDetails','EgammaJetSignedIPAndPTRelKin'])) - - alg += PhotonD3PDObject (**_args (10, 'Photon', kw)) - - - # Muon blocks - - alg += MuonD3PDObject (**_args (10, 'Muons', kw, - sgkey='Muons', prefix='mu_', - include = ["EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", - "L2CBInfoIndex", "L1InfoIndex"], - exclude = ["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], - allowMissing = True - )) - alg += MuonD3PDObject (**_args (10, 'MuidMuon', kw, - sgkey='MuidMuonCollection', prefix='mu_muid_', - include = ["EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", - "L2CBInfoIndex", "L1InfoIndex"], - exclude = ["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], - allowMissing = True - )) - alg += MuonD3PDObject (**_args (10, 'StacoMuon', kw, - sgkey='StacoMuonCollection', prefix='mu_staco_', - include = ["EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", - "L2CBInfoIndex", "L1InfoIndex"], - exclude = ["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], - allowMissing = True - )) - alg += MuonD3PDObject (**_args (0, 'CaloMuon', kw, - sgkey='CaloMuonCollection', prefix='mu_calo_')) - - # Tau block - -# alg += TauD3PDObject (**_args ( 1, 'Tau', kw)) - - - # Jet blocks - - alg += JetD3PDObject (**_args ( 3, 'AK4TopoEMJet', kw, - sgkey='AntiKt4TopoEMJets', prefix='jet_akt4topoem_', - include = ['BTag','TrueFlavorComponents','BTagComponents'], - allowMissing = True)) - alg += JetD3PDObject (**_args ( 3, 'AK6TopoEMJet', kw, - sgkey='AntiKt6TopoEMJets', prefix='jet_akt6topoem_', - include = ['BTag','TrueFlavorComponents','BTagComponents'], - allowMissing = True)) - - from TopInputsD3PDMaker.HforD3PDObject import HforD3PDObject - alg += HforD3PDObject(**_args (0, 'HforInfo', kw)) - - - # MET blocks - # a whole mess to remove x,y components separately for all flavours - - alg += MissingETD3PDObject (**_args (10, 'MissingET', kw, - exclude=['MET_Base', 'MET_Base0', 'MET_Truth_Int', - 'MET_RefFinal_Comps','MET_Calib_Comps','MET_CellOut_Comps', - 'MET_CorrTopo_Comps','MET_Cryo_Comps','MET_CryoCone_Comps', - 'MET_Final_Comps','MET_LocHadTopo_Comps', - 'MET_LocHadTopoObj_Comps','MET_Muid_Comps', - 'MET_Muid_Spectro_Comps','MET_Muid_Track_Comps', - 'MET_MuonBoy_Comps','MET_MuonBoy_Spectro_Comps', - 'MET_MuonBoy_Track_Comps','MET_MuonMuid_Comps', - 'MET_Muon_Comps','MET_Muon_Isol_Muid_Comps', - 'MET_Muon_Isol_Staco_Comps','MET_Muon_NonIsol_Muid_Comps', - 'MET_Muon_NonIsol_Staco_Comps','MET_Muon_Total_Muid_Comps', - 'MET_Muon_Total_Staco_Comps','MET_RefEle_Comps', - 'MET_RefEle_em_Comps','MET_RefGamma_Comps', - 'MET_RefGamma_em_Comps','MET_RefJet_Comps', - 'MET_RefJet_em_Comps','MET_RefMuon_Comps', - 'MET_RefMuon_Muid_Comps','MET_RefMuon_Staco_Comps', - 'MET_RefMuon_Track_Muid_Comps','MET_RefMuon_Track_Staco_Comps', - 'MET_RefMuon_Track_em_Comps','MET_RefMuon_Track_Comps', - 'MET_RefMuon_em_Comps','MET_RefTau_Comps', - 'MET_RefTau_em_Comps','MET_SoftJets_Comps', - 'MET_SoftJets_em_Comps','MET_Topo_Comps', - 'MET_TopoObj_Comps','MET_Track_Comps','MET_Composition'], - allowMissing=True)) - - - # HadronicRecoil blocks - -# alg += ElectronD3PDObject(0, sgkey = "HR_selectedElectrons", prefix = "hr_el_") -# alg += MuonD3PDObject( 0, sgkey = "HR_selectedMuons", prefix = "hr_mu_" ) -# alg += MissingETD3PDObject(0, sgkey = "RoughRecoil", prefix = "hr_roughRecoil") -# alg += MissingETD3PDObject(0, sgkey = "ueCorrection", prefix = "hr_ueCorrection") - - # track and cluster blocks - - # ... all clusters, very low LOD - - alg += ClusterD3PDObject (**_args ( 0, 'Clusters1', kw, - exclude='SamplingBasics')) - - # ... higher LOD for pt>10 GeV - - alg += ClusterD3PDObject (**_args ( 2, 'Clusters2', kw, - sgkey = 'HighPtClusters', - prefix = 'clpt10_')) - - alg += ClusterD3PDObject (**_args ( 3, 'Clusters3', kw, - sgkey = 'HighPtEMClusters', - prefix = 'emclpt10_')) - - # ... good tracks only (nSCT>3; no pt cut) - - alg += TrackParticleD3PDObject (**_args ( 3, 'Tracks1', kw, - sgkey = 'GoodTracks', - label = 'trk', - prefix = 'trk_')) - - # ... high-pt tracks (nSCT>3; pt>5 GeV) - - from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags as highPtFlags - highPtFlags.doTruth = True - highPtFlags.storeDiagonalCovarianceAsErrors = True - highPtFlags.storeHitTruthMatching = True - highPtFlags.storePixelHitsOnTrack = False - highPtFlags.storePixelHolesOnTrack = False - highPtFlags.storePixelOutliersOnTrack = False - highPtFlags.storeSCTHitsOnTrack = False - highPtFlags.storeSCTHolesOnTrack = False - highPtFlags.storeSCTOutliersOnTrack = False - highPtFlags.storeTRTHitsOnTrack = False - highPtFlags.storeTRTHolesOnTrack = False - highPtFlags.storeTRTOutliersOnTrack = False - highPtFlags.storeTrackFitQuality = True - highPtFlags.storeTrackMomentum = True - highPtFlags.storeTrackSummary = True - highPtFlags.trackParametersAtBeamSpotLevelOfDetails = 0 - highPtFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 2 - highPtFlags.trackParametersAtPrimaryVertexLevelOfDetails = 3 - - from TrackD3PDMaker.TrackD3PDObject import TrackD3PDObject - - HighPtTrackParticleD3PDObject = TrackD3PDObject(_label='trkpt5', - _prefix='trkpt5_', - _sgkey='HighPtTracks', - typeName='Rec::TrackParticleContainer', - flags=highPtFlags) - - alg += HighPtTrackParticleD3PDObject(**_args ( 3, 'Tracks2', kw, - sgkey = 'HighPtTracks', - label = 'trkpt5', - prefix = 'trkpt5_')) - - - # Primary vertex block - May be missing in single-beam data. - - alg += PrimaryVertexD3PDObject (**_args (1, 'PrimaryVertex', kw, - allowMissing = True, - sgkey = D3PDMakerFlags.VertexSGKey(), - prefix = 'vxp_')) - - # MBTS - - alg += MBTSD3PDObject (**_args (10, 'MBTS', kw)) - alg += MBTSTimeD3PDObject (**_args (10, 'MBTSTime', kw)) - alg += MBTSTriggerBitsD3PDObject (**_args (10, 'MBTSTriggerBits', kw)) - #alg += CollisionDecisionD3PDObject(**_args (10, 'CollisionDecision', kw)) - - # Truth - - if rec.doTruth(): - - from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject - from MuonD3PDMaker.TruthMuonD3PDObject import TruthMuonD3PDObject - - alg += TruthMuonD3PDObject (**_args ( 2, 'TruthMuon', kw)) - alg += GenEventD3PDObject (**_args ( 1, 'GenEvent', kw)) - alg += TruthParticleD3PDObject(**_args ( 1, 'TruthParticle', kw)) - - # TruthJets - alg += JetD3PDObject (**_args ( 1, 'AK4TruthJet', kw, - sgkey='AntiKt4TruthJets',prefix='jet_antikt4truth_')) - alg += JetD3PDObject (**_args ( 1, 'AK6TruthJet', kw, - sgkey='AntiKt6TruthJets', prefix='jet_antikt6truth_')) - alg += JetD3PDObject (**_args ( 1, 'AK4TruthJetALL', kw, - sgkey='AntiKt4TruthJets_ALL', prefix='jet_antikt4truthALL_')) - alg += JetD3PDObject (**_args ( 1, 'AK6TruthJetALL', kw, - sgkey='AntiKt6TruthJets_ALL', prefix='jet_antikt6truthALL_')) - alg += JetD3PDObject (**_args ( 1, 'AK4TruthJetWZ', kw, - sgkey='AntiKt4TruthJets_WZ', prefix='jet_antikt4truthWZ_')) - alg += JetD3PDObject (**_args ( 1, 'AK6TruthJetWZ', kw, - sgkey='AntiKt6TruthJets_WZ', prefix='jet_antikt6truthWZ_')) - - - if not rec.doTruth(): - alg += BeamSpotD3PDObject(10) - - - # Trigger - - if D3PDMakerFlags.DoTrigger(): - - # Trigger Decision + metadata - - alg += TrigDecisionD3PDObject (**_args(10, 'TrigDecision', kw)) - addTrigConfMetadata(alg) - - # Bunch group info - - alg += BGCodeD3PDObject (**_args (2, 'BGCode', kw)) - - # Egamma and Mu - - TrigEgammaD3PDObjects (alg, 0) -# TrigMuonD3PDObjects( alg, 0) - - # Esum - - alg += EnergySumROID3PDObject(**_args (2, 'EnergySumROI', kw, - prefix = "trig_L1_esum_")) - - # The LVL2 information: - - alg += TrigMETD3PDObject(**_args( 2, 'TrigMETL2', kw, - prefix = "trig_L2_met_", - sgkey = "HLT_T2MissingET" )) - # The EF information: - - alg += TrigMETD3PDObject(**_args ( 2, 'TrigMETEF', kw, - prefix = "trig_EF_met_", - sgkey = "HLT_TrigEFMissingET" )) - - -# Event metadata - - alg.MetadataTools += [LBMetadataConfig()] - - if D3PDMakerFlags.FilterCollCand(): - from CaloD3PDMaker.CollisionFilterAlg import CollisionFilterAlg - alg.filterSeq += CollisionFilterAlg (tuplename + '_CollCandFilter') - - return alg diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MCP_RTT_makeHistos.C b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MCP_RTT_makeHistos.C deleted file mode 100644 index d3ee715f7895884bcbd806023674a42de994cb2c..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MCP_RTT_makeHistos.C +++ /dev/null @@ -1,57 +0,0 @@ -// Macro for to print plots from the Calibration ntuple -// -// Useage: to run in batch mode, type -// root -q -b 'MCP_RTT_makeHistos("physics")' -// -// Jan 2011 B. Di Micco -////////////////////////////////////////////////////////////////////////////// - -void MCP_RTT_makeHistos(char* inputName="physics") -{ -//Set Some default styles for the histogram plots - gStyle->SetMarkerStyle(8); - gStyle->SetStatW(0.2); - gStyle->SetStatH(0.2); - gStyle->SetStatFontSize(0.07); - gStyle->SetLabelSize(0.06); - gStyle->SetOptFit(1111); - gStyle->SetCanvasBorderMode(0); - gStyle->SetPadBorderMode(0); - gStyle->SetPadColor(0); - gStyle->SetCanvasColor(0); - gStyle->SetTitleColor(0); - gStyle->SetStatColor(0); - gStyle->SetTitleFontSize(0.08); - gStyle->SetMarkerSize(0.3); - gROOT->SetStyle("Plain"); - gStyle->SetOptStat(111111); - - - - - printf("Input name = %s\n", inputName); - char inputNtupleFile[256]; char outputHistosFile[256]; - sprintf(inputNtupleFile,"%s.root",inputName); - sprintf(outputHistosFile,"%s_histos.root",inputName); - printf("Input ntuple file = %s\n", inputNtupleFile); - printf("output histos file = %s\n", outputHistosFile); - -// open ntuple file -// create object histos - - TFile *fin = new TFile(inputNtupleFile,"READ"); - TTree *tree = (TTree*)fin->Get("physics"); - gROOT->ProcessLine(".L physics_MCP_RTT.C+"); - gROOT->ProcessLine(".L histos_MCP_RTT.C+"); - - TFile *fout = new TFile(outputHistosFile,"RECREATE"); - histos myHistos(tree); - myHistos.run(); - cout << "after running...." << endl; - //TFile *fout = new TFile("MuonCalibNtuple_fromESD_histos.root","RECREATE"); - - cout << "fout = " << fout << endl; - fout->Write(); - fout->Close(); -} - diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MuonCombinedRecRTT.py b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MuonCombinedRecRTT.py deleted file mode 100644 index 16f3e97948abce72eade66de011c67d1be0e3544..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MuonCombinedRecRTT.py +++ /dev/null @@ -1,105 +0,0 @@ -# MuonRecRTT_sim_standalone.py -# -# top options to run Muon Spectrometer reconstruction only -# on simulated data, using MuonRecExample/MuonRec_myTopOptions.py - -# flags set up in MuonRec_myTopOptions.py can be modified -# and locked as in the example below - -#from MuonRecExample.MuonRecFlags import muonRecFlags -#muonRecFlags.doCalib.set_Value_and_Lock(False) - -# Turn on PerfMon to monitor the software performance -from RecExConfig.RecFlags import rec -# recFlags.doPerfMon.set_Value_and_Lock(True) -from RecExConfig.RecFlags import rec as rec - -# I'm sure there's a better way to do this, but I just wanted to get something working fast. Ed. -from MuonRecExample.MuonRecFlags import muonRecFlags - - -# Run MuPerf or not -doMuPerf = False - -# Turn off all reconstruction algorithms - -# ---- Input / Output -readESD=True -doMuonRecStatistics = False -doWriteESD = False # Decide whether to write ESD/AOD/TAG -doWriteAOD = True -doWriteTAG = False -doJiveXML = False -donewTracking = False -# ---- Reconstruction -doESD = True -doAOD = True # Decide whether to run AOD-making algorithms -doAODall = True -rec.readAOD.set_Value_and_Lock(False) -rec.doApplyAODFix.set_Value_and_Lock(False) -#doTrigger = True -doMuonIDStandAlone = True # extrapolate Moore tracks to the IP -doMuonIDCombined = True # combined reconstruction with MuIDCombined -doMoore = True -doMuonboy = True -doStaco = True # combined reconstruction with Staco -doMuTag = True # muon identification with MuTag (requires Muonboy and Staco) -doMuGirl = True # muon identification with MuGirl -doCaloTrkMuId = True # muon identification with Calorimeter -doCaloTopoCluster = True # run calo topo cluster (needed for CaloLR muons) -import os -doNameAuditor = True -# ---- Misc -doVisualization = False # Decide whether to run HepVis or not -doTrackRecordFilter = False # process Muon Spectrometer entry truth info to add it to CBNT -doCBNT=False - - - -# muonRecFlags.doTrackPerformance = True -# muonRecFlags.TrackPerfDebugLevel = 0 -# on lxplus209 -InputCollection = [] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000088.pool.root.2"] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000092.pool.root.2"] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000100.pool.root.2"] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000192.pool.root.2"] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000302.pool.root.2"] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000312.pool.root.2"] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000407.pool.root.2"] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000427.pool.root.2"] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000459.pool.root.2"] -InputCollection+=["root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000027.pool.root.2"] - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -#athenaCommonFlags.FilesInput.set_Value_and_Lock(InputCollection) - -from PyUtils.MetaReaderPeeker import metadata - -DoTruth = False -if 'IS_SIMULATION' in metadata['eventTypes']: - DoTruth = True - -if not DoTruth: - rec.doTruth.set_Value_and_Lock(False) - pass -rec.doForwardDet.set_Value_and_Lock(False) -include ("RecExCommon/RecExCommon_topOptions.py") - - -#####################################################################3 -## Adding beamspot info -#from MinBiasD3PDMaker.MinBiasD3PDMakerConf import MinBiasD3PD__MinBiasD3PDPreProcessing -#MinBiasD3PDPreProcessingAlg = MinBiasD3PD__MinBiasD3PDPreProcessing( name = "MinBiasD3PDPreProcessingAlg", OutputLevel = INFO ) -#topSequence += MinBiasD3PDPreProcessingAlg -#include('InDetBeamSpotService/BeamCondSvc.py') - - -include ("CaloD3PDMaker/CaloD3PD_Rapgap_jobOption.py") - -include ("PhysicsD3PDMaker/MyJetMake.py") -include ("MuonCombinedRecRTT/MCPD3PDMaker.py") - -tupleFileOutput = 'physics.root' -alg = MCPphysicsD3PD (file=tupleFileOutput,tuplename='physics', streamNameRoot ='OutStream') - diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MuonParamDefs.h b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MuonParamDefs.h deleted file mode 100644 index 61f3ebb3127a89d9cbadc94884b26e055ccb1ef4..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/MuonParamDefs.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef MUONEVENT_MUONPARAMDEFS_H -#define MUONEVENT_MUONPARAMDEFS_H -/***************************************************************************** -Name : MuonParamDefs.h -Package : offline/Reconstruction/MuonIdentification/muonEvent -Author : Ketevi A. Assamagan -Created : September 2005 - -DESCRIPTION: - -This file defines enums for Muon parameters - -*****************************************************************************/ - -namespace MuonParameters { - - /** do not change the order of these enums. You can add one, but - changing the order is bad. - The authors "highpt", "lowPt" and "mediumPt" should not be used - - they are kept for backward compatibility ONLY, to read old data - */ - enum Author { - unknown=0, - highPt=1, - lowPt=2, - mediumPt=3, - MuonboySP=4, - Muonboy=5, - STACO=6, - MuTag=7, - MOORE=10, - MuidSA=11, - MuidCo=12, - MuGirl=13, - CaloMuonId=14, - MuGirlLowBeta=15, - CaloTag=16, - CaloLikelihood=17, - MuTagIMO=18, - MuonCombinedRefit=19, - ExtrapolateMuonToIP=20 - }; - - /** Enum for parameter indexes */ - enum ParamDef { - /** isolation enums - common parameters */ - etcone10 = 0,//<! Isolation Et in a cone of 0.1 - etcone20 = 1,//<! Isolation Et in a cone of 0.2 - etcone30 = 2,//<! Isolation Et in a cone of 0.3 - etcone40 = 3,//<! Isolation Et in a cone of 0.4 - nucone10 = 8,//<! Number of Tracks in a cone of 0.1 - nucone20 = 9,//<! Number of Tracks in a cone of 0.2 - nucone30 = 10,//<! Number of Tracks in a cone of 0.3 - nucone40 = 11,//<! Number of Tracks in a cone of 0.4 - ptcone10 = 16,//<! summed Pt of tracks in a cone of 0.1 - ptcone20 = 17,//<! summed Pt of tracks in a cone of 0.2 - ptcone30 = 18,//<! summed Pt of tracks in a cone of 0.3 - ptcone40 = 19,//<! summed Pt of tracks in a cone of 0.4 - /** MuTag parameters */ - segmentDeltaEta = 100, - segmentDeltaPhi = 101, - segmentChi2OverDoF = 102, - /** MuGirl parameter */ - t0 = 198, - beta = 199, - annBarrel = 200, - annEndCap = 201, - /** common MuGirl and MuTag parameters */ - innAngle = 202, - midAngle = 203 - }; - -} - -#endif // MUONIDEVENT_MUONPARAMDEFS_H - - - - - diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/histos_MCP_RTT.C b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/histos_MCP_RTT.C deleted file mode 100644 index 91fde8788eee16bdf601148f970f9568553f30d2..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/histos_MCP_RTT.C +++ /dev/null @@ -1,570 +0,0 @@ -#include "histos_MCP_RTT.h" -#include <TCanvas.h> -#include <math.h> -#include <TStyle.h> - -histos::histos() { - -} - -histos::histos(TTree *tree) : physics(tree) { - cout << "Initializing the constructor" << endl; - Init(); -} - -void histos::Init() { - variables.push_back("pt"); variables.push_back("eta"); - variables.push_back("phi"); - - subdetectors.push_back("pix"); subdetectors.push_back("sct"); - subdetectors.push_back("trt"); subdetectors.push_back("csc"); - subdetectors.push_back("mdt"); subdetectors.push_back("tgc"); - subdetectors.push_back("rpc"); - -} - -histos::~histos() { - - list<TObject *>::iterator iter; - cout << "in destructor " << endl; - file_out->cd(); - all_histos.sort(); all_histos.unique(); - cout << "after sorting and uniquing" << endl; - for(iter=all_histos.begin(); iter!=all_histos.end(); ++iter) { - (*iter)->Write(); - // cout << "deleting " << *iter << endl; - // cout << "deleting" << (*iter)->GetName() << endl; - } - file_out->Close(); -} - -void histos::run() { - cout << "running ... " << endl; - book(); - cout << "looping .... " << endl; - Loop(); - cout << "after loopinf" << endl; - cout << "printing" << endl; - print(); - -} - -void histos::post_process() { - list<string>::iterator var_iter; - list<string>::iterator sub_iter; - list<string>::iterator iter; - - for(iter = algorithm_list.begin();iter !=algorithm_list.end();++iter) { - for(sub_iter=subdetectors.begin();sub_iter!=subdetectors.end(); ++sub_iter) { - for(var_iter=variables.begin();var_iter!=variables.end();++var_iter) { - TH2F *pointer; - if(*var_iter=="pt") { - pointer = nhit_pt[*sub_iter+"_"+(*iter)]; - } else if(*var_iter=="eta") { - pointer = nhit_eta[*sub_iter+"_"+(*iter)]; - } else if(*var_iter=="phi") { - pointer = nhit_phi[*sub_iter+"_"+(*iter)]; - } - - nhit_prof[*var_iter+"_"+*sub_iter+"_"+*iter] = pointer->ProfileX(); - - } - } - } - -} - -void histos::print() { - cout << "Printing histograms" << endl; - list<TObject *>::iterator iter; - gStyle->SetPalette(1); - - for(iter=histo_to_print.begin(); iter!=histo_to_print.end(); ++iter) { - TCanvas *canvas = new TCanvas("canvas",(*iter)->GetTitle()); - cout << "String = " << ((string) (*iter)->GetName()).substr(0,4) << endl; - if(((string) (*iter)->GetName()).substr(0,5)=="Delta") { - (*iter)->Draw("COLZ"); - } else { - (*iter)->Draw(); - } - canvas->Update(); - string name = ((string) (*iter)->GetName())+".gif"; - - canvas->SaveAs(name.c_str()); - delete canvas; - - } -} -void histos::book() { - algorithm_list.push_back("Staco_CB"); - algorithm_list.push_back("MuonBoy"); - algorithm_list.push_back("MuTag"); - algorithm_list.push_back("MuTagIMO"); - algorithm_list.push_back("Muid_CB"); - algorithm_list.push_back("MuidSA"); - algorithm_list.push_back("MuGirl"); - algorithm_list.push_back("Muid_Tight"); - algorithm_list.push_back("CaloMuon"); - - file_out = new TFile("histos_MCP_RTT.root","NEW"); - - list<string>::iterator iter; - for(iter = algorithm_list.begin();iter !=algorithm_list.end();++iter) { - - - string name; - name = "mu_pt_"+*iter; - mu_pt[*iter] = new TH1F(name.c_str(),"Muon pt [GeV]",100,0,100); - AddToPrint(mu_pt[*iter]); - - name = "mu_eta_pt20_"+*iter; - mu_eta_pt20[*iter] = new TH1F(name.c_str(),"Muon eta ", 60,-3,3); - AddToPrint(mu_eta_pt20[*iter]); - - name = "mu_phi_pt20_"+*iter; - mu_phi_pt20[*iter] = new TH1F(name.c_str(),"Muon phi",60,-3.2,3.2); - AddToPrint(mu_phi_pt20[*iter]); - - name = "chi2_"+*iter; - chi2[*iter] = new TH1F(name.c_str(),"Track fit chi2/ndf",100,0,2); - if(*iter!="CaloMuon") AddToPrint(chi2[*iter]); - if(isCombined(*iter)) { - Double_t etabins[8] = {-2.5,-2.1,-1.8,-1.05,1.05,1.8,2.1,2.5}; - name = "DeltaPtovPt_pt20_"+*iter; - DeltaPtovPt[*iter] = new TH2F(name.c_str(),"DPt/Pt",7,etabins,100,-1,1); - AddToPrint(DeltaPtovPt[*iter]); - - name = "Chi2Match_"+*iter; - chi2Match[*iter] = new TH2F(name.c_str(),"Chi2Match/ndf",7,etabins,100,0,40); - AddToPrint(chi2Match[*iter]); - - name = "DeltaEta_pt20_"+*iter; - DeltaEta[*iter] = new TH2F(name.c_str(),"DeltaEta",7,etabins,100,-.1,.1); - AddToPrint(DeltaEta[*iter]); - - name = "DeltaPhi_pt20_"+*iter; - DeltaPhi[*iter] = new TH2F(name.c_str(),"DeltaPhi",7,etabins,100,-.1,.1); - AddToPrint(DeltaPhi[*iter]); - - } - - - name = "NhitsEff_"+*iter; - NhitsEff[*iter] = new TH2F(name.c_str(),"NhitsEff versus pT (GeV)",100,0,100,100,0.,1); - - name = "NhitsEffSoft_"+*iter; - NhitsEffSoft[*iter] = new TH2F(name.c_str(),"NhitsEffsoft versus pT (GeV)",100,0,100,100,0.,1); - - list<string>::iterator sub_iter; - for(sub_iter=subdetectors.begin(); sub_iter!=subdetectors.end();++sub_iter) { - - name = "nhit_pt_"+(*sub_iter)+"_"+(*iter); - nhit_pt[*sub_iter+"_"+(*iter)] = new TH2F(name.c_str(),"Fraction of hits versus pT (GeV)",100,0,100,100,0,1); - - name = "nhit_eta_"+(*sub_iter)+"_"+(*iter); - nhit_eta[*sub_iter+"_"+(*iter)] = new TH2F(name.c_str(),"Fraction of hits versus eta",60,-3.2,3.2,100,0,1); - - name = "nhit_phi_"+(*sub_iter)+"_"+(*iter); - nhit_phi[*sub_iter+"_"+(*iter)] = new TH2F(name.c_str(),"Fraction of hits versus phi",60,-3,3,100,0,1); - } - - name = "d0_pT" + (*iter); - d0_pT[*iter] = new TH2F(name.c_str(),"d0 versus pT (GeV)",100,0,100,100,-10,10); - - name = "z0_pT" + (*iter); - z0_pT[*iter] = new TH2F(name.c_str(),"z0 versus pT (GeV)",100,0,100,100,-10,10); - - name = "d0_eta" + (*iter); - d0_eta[*iter] = new TH2F(name.c_str(),"d0 versus pT (GeV)", 30,-3,3,100,-10,10); - - name = "z0_eta" + (*iter); - z0_eta[*iter] = new TH2F(name.c_str(),"z0 versus eta",30,-3,3,100,-10,10); - - } -} - -void histos::ClearVectors() { - pt.clear(); eta.clear(); phi.clear(); NhitsEff_value.clear(); - NhitsEffSoft_value.clear(); n_holes.clear(); nhit_sub.clear(); - d0.clear(); z0.clear(); pt_ID.clear(); pt_MS.clear(); eta_ID.clear(); eta_MS.clear(); - phi_ID.clear(); phi_MS.clear(); Chi2M.clear(); n_outliers.clear(); chi2_val.clear(); -} - - -void histos::fill() { - static int counter=0; - counter++; - bool dump=(counter<100); - - list<string>::iterator iter; - if(dump) cout << "now we are in fill()" << endl; - - for(iter=algorithm_list.begin();iter!=algorithm_list.end();++iter) { - if(dump) cout << "processing algorithm " << *iter << endl; - FillMuon(*iter); - cout << "Before filling histogram maps..." << " nmuons = " << nmuons << endl; - for(int i=0;i<=nmuons;i++) { - mu_pt[*iter]->Fill(pt[i]); - cout << "just after mu_pt" << endl; - NhitsEff[*iter]->Fill(pt[i],NhitsEff_value[i]); - cout << "just after NhitsEff" << endl; - NhitsEffSoft[*iter]->Fill(pt[i],NhitsEffSoft_value[i]); - cout << "just after NhitsEffSoft" << endl; - - if(pt[i]>20) { - mu_eta_pt20[*iter]->Fill(eta[i]); - mu_phi_pt20[*iter]->Fill(phi[i]); - } - - cout << "just after pt > 20" << endl; - - Double_t ntot=0; - list<string>::iterator subiter; - - for(subiter=subdetectors.begin();subiter!=subdetectors.end(); ++subiter) { - char num[2]; - sprintf(num,"%s_%d",((*subiter).c_str()),i); - string tmp = num; - - ntot+=nhit_sub[tmp]; - } - - cout << "ntot = " << ntot << endl; - - for(subiter=subdetectors.begin();subiter!=subdetectors.end(); ++subiter) { - - char num[2]; - sprintf(num,"%s_%d",((*subiter).c_str()),i); - string tmp = num; - - nhit_pt[*subiter+"_"+(*iter)]->Fill(pt[i],nhit_sub[tmp]/ntot); - if(pt[i]>20) { - nhit_eta[*subiter+"_"+(*iter)]->Fill(eta[i],nhit_sub[tmp]/ntot); - nhit_phi[*subiter+"_"+(*iter)]->Fill(phi[i],nhit_sub[tmp]/ntot); - } - - } - - cout << "just after pt > 20" << endl; - d0_pT[*iter]->Fill(pt[i],d0[i]); - z0_pT[*iter]->Fill(pt[i],z0[i]); - - cout << "just after pt vs d0" << endl; - d0_eta[*iter]->Fill(eta[i],d0[i]); - z0_eta[*iter]->Fill(eta[i],z0[i]); - - chi2[*iter]->Fill(chi2_val[i]); - - cout << "combined variables " << endl; - - if(isCombined(*iter) && pt[i]>20) { - - DeltaPtovPt[*iter]->Fill(eta[i],(pt_ID[i]-pt_MS[i])/pt_ID[i]); - chi2Match[*iter]->Fill(eta[i],Chi2M[i]); - DeltaEta[*iter]->Fill(eta[i],(eta_ID[i]-eta_MS[i])); - DeltaPhi[*iter]->Fill(eta[i],(eta_ID[i]-eta_MS[i])); - - } - - - } - - } -} - - -void histos::FillMuon(string alg) { - nmuons = -1; - ClearVectors(); - - if(alg=="Staco_CB" || alg=="MuonBoy" || alg =="MuTag") { - - FillStacoCollection(alg); - - } else if(alg=="Muid_CB" || alg=="MuGirl" || alg=="Muid_Tight" || alg=="MuidSA" || alg=="MuTagIMO") { - - FillMuidCollection(alg); - - } else if(alg=="CaloMuon") { - FillCaloMuonCollection(alg); - } - - for(int i=0;i<=nmuons;i++) { - - int nhit = 0; - list<string>::iterator subiter; - - for(subiter=subdetectors.begin();subiter!=subdetectors.end(); ++subiter) { - char num[2]; - sprintf(num,"%s_%d",((*subiter).c_str()),i); - string tmp = num; - - - - nhit += nhit_sub[tmp]; - } - - NhitsEff_value.push_back(((float) nhit)/(nhit+n_outliers[i]+n_holes[i])); - NhitsEffSoft_value.push_back(((float) nhit)/(nhit+n_outliers[i]+n_holes[i])); - - } - - - -} - - -void histos::FillStacoCollection(string alg) { - // cout << "before Get Author ID" << endl; - int authorID = GetAuthorID(alg); - // cout << "mu_staco_n" << mu_staco_n << endl; - - for(int i=0;i < mu_staco_n; i++) { - bool process = false; - if(alg=="Staco_CB") process = mu_staco_isCombinedMuon->at(i); - else {process = mu_staco_author->at(i)==authorID;} - // cout << "i = " << i << endl; - // cout << "process = " << process << endl; - - if(process ) { - cout << "incrmenting nmuons " << endl; - nmuons++; - cout << "nmuons = " << nmuons << " i = " << i << endl; - pt.push_back(mu_staco_pt->at(i)/1000); - cout << "after pt" << endl; - eta.push_back(mu_staco_eta->at(i)); - phi.push_back(mu_staco_phi->at(i)); - - list<string>::iterator subiter; - - for(subiter=subdetectors.begin();subiter!=subdetectors.end(); ++subiter) { - - char num[2]; - sprintf(num,"%s_%d",((*subiter).c_str()),i); - string tmp = num; - - - if(*subiter=="pix") { - nhit_sub[tmp] = mu_staco_nBLHits->at(i)+mu_staco_nPixHits->at(i); - } else if(*subiter=="sct") { - nhit_sub[tmp] = mu_staco_nSCTHits->at(i); - } else if(*subiter=="trt") { - nhit_sub[tmp] = mu_staco_nTRTHits->at(i); - } else if(*subiter=="mdt") { - nhit_sub[tmp] = mu_staco_nMDTHits->at(i); - } else if(*subiter=="rpc") { - nhit_sub[tmp] = mu_staco_nRPCEtaHits->at(i)+mu_staco_nRPCPhiHits->at(i); - } else if(*subiter=="tgc") { - nhit_sub[tmp] = mu_staco_nTGCEtaHits->at(i)+mu_staco_nTGCPhiHits->at(i); - } else if(*subiter=="csc") { - nhit_sub[tmp] = mu_staco_nCSCEtaHits->at(i)+mu_staco_nCSCPhiHits->at(i); - } - } - cout << "before n_outliers" << endl; - - n_outliers.push_back(mu_staco_nTRTOutliers->at(i)); - n_holes.push_back(mu_staco_nPixHoles->at(i)); - n_holes[nmuons] += mu_staco_nSCTHoles->at(i)+mu_staco_nMDTHoles->at(i); - n_holes[nmuons] += mu_staco_nCSCPhiHoles->at(i)+mu_staco_nCSCEtaHoles->at(i); - n_holes[nmuons] += mu_staco_nRPCEtaHoles->at(i)+mu_staco_nRPCPhiHoles->at(i); - n_holes[nmuons] += mu_staco_nTGCPhiHoles->at(i)+mu_staco_nTGCEtaHoles->at(i); - n_holes[nmuons] += mu_staco_nMDTHoles->at(i); - - cout << "d0 e z0" << endl; - d0.push_back(mu_staco_d0_exPV->at(i)); - z0.push_back(mu_staco_z0_exPV->at(i)); - - int ndof = mu_staco_trackfitndof->at(i); - chi2_val.push_back((ndof > 0) ? mu_staco_trackfitchi2->at(i)/ndof : -1); - cout << "Chi2M" << endl; - Chi2M.push_back(mu_staco_matchchi2->at(i)/mu_staco_matchndof->at(i)); - double pt_ID_var,eta_ID_var,pt_MS_var,eta_MS_var; - GetPtEta(mu_staco_id_qoverp->at(i),mu_staco_id_theta->at(i),&pt_ID_var,&eta_ID_var); - GetPtEta(mu_staco_me_qoverp->at(i),mu_staco_me_theta->at(i),&pt_MS_var,&eta_MS_var); - - pt_ID.push_back(pt_ID_var); pt_MS.push_back(pt_MS_var); - eta_ID.push_back(eta_ID_var); eta_MS.push_back(eta_MS_var); - phi_ID.push_back(mu_staco_id_phi->at(i)); phi_MS.push_back(mu_staco_me_phi->at(i)); - - cout << "end cicle" << endl; - } - - - } - cout << " going out from Fill Staco collection" << endl; - -} - - - -void histos::FillMuidCollection(string alg) { - - cout << "entering Muid" << endl; - - int authorID = GetAuthorID(alg); - - bool process=false; - - cout << "before looping mu_muid_n" << endl; - for(int i=0;i < mu_muid_n; i++) { - - if(alg=="Muid_CB") process = mu_muid_isCombinedMuon->at(i); - else if(alg=="Muid_Tight") process = mu_muid_tight->at(i); - else process=(authorID==mu_muid_author->at(i)); - - if(process) { - nmuons++; - pt.push_back(mu_muid_pt->at(i)/1000); - eta.push_back(mu_muid_eta->at(i)); - phi.push_back(mu_muid_phi->at(i)); - - list<string>::iterator subiter; - cout << "before looping on subiter" << endl; - - for(subiter=subdetectors.begin();subiter!=subdetectors.end(); ++subiter) { - char num[2]; - sprintf(num,"%s_%d",((*subiter).c_str()),i); - string tmp = num; - cout << "string " << tmp << " i = " << i << endl; - - if(*subiter=="pix") { - nhit_sub[tmp] = mu_muid_nBLHits->at(i)+mu_muid_nPixHits->at(i); - } else if(*subiter=="sct") { - nhit_sub[tmp] = mu_muid_nSCTHits->at(i); - } else if(*subiter=="trt") { - nhit_sub[tmp] = mu_muid_nTRTHits->at(i); - } else if(*subiter=="mdt") { - nhit_sub[tmp] = mu_muid_nMDTHits->at(i); - } else if(*subiter=="rpc") { - nhit_sub[tmp] = mu_muid_nRPCEtaHits->at(i)+mu_muid_nRPCPhiHits->at(i); - } else if(*subiter=="tgc") { - nhit_sub[tmp] = mu_muid_nTGCEtaHits->at(i)+mu_muid_nTGCPhiHits->at(i); - } else if(*subiter=="csc") { - nhit_sub[tmp] = mu_muid_nCSCEtaHits->at(i)+mu_muid_nCSCPhiHits->at(i); - } - cout << "after filling nhit" << endl; - - } - cout << "after hits " << endl; - - n_outliers.push_back( mu_muid_nTRTOutliers->at(i)); - n_holes.push_back(mu_muid_nPixHoles->at(i)); - n_holes[nmuons] += mu_muid_nSCTHoles->at(i)+mu_muid_nMDTHoles->at(i); - n_holes[nmuons] += mu_muid_nCSCPhiHoles->at(i)+mu_muid_nCSCEtaHoles->at(i); - n_holes[nmuons] += mu_muid_nRPCEtaHoles->at(i)+mu_muid_nRPCPhiHoles->at(i); - n_holes[nmuons] += mu_muid_nTGCPhiHoles->at(i)+mu_muid_nTGCEtaHoles->at(i); - n_holes[nmuons] += mu_muid_nMDTHoles->at(i); - - cout << "n holes " << endl; - - d0.push_back(mu_muid_d0_exPV->at(i)); - z0.push_back(mu_muid_z0_exPV->at(i)); - int ndof = mu_muid_trackfitndof->at(i); - chi2_val.push_back((ndof > 0) ? mu_muid_trackfitchi2->at(i)/ndof : -1); - - Chi2M.push_back(mu_muid_matchchi2->at(i)/mu_muid_matchndof->at(i)); - - double pt_ID_var,eta_ID_var,pt_MS_var,eta_MS_var; - GetPtEta(mu_muid_id_qoverp->at(i),mu_muid_id_theta->at(i),&pt_ID_var,&eta_ID_var); - GetPtEta(mu_muid_me_qoverp->at(i),mu_muid_me_theta->at(i),&pt_MS_var,&eta_MS_var); - - pt_ID.push_back(pt_ID_var); pt_MS.push_back(pt_MS_var); - eta_ID.push_back(eta_ID_var); eta_MS.push_back(eta_MS_var); - phi_ID.push_back(mu_muid_id_phi->at(i)); phi_MS.push_back(mu_muid_me_phi->at(i)); - cout << "going to exit" << endl; - - } - - } - - - -} - - - - -void histos::FillCaloMuonCollection(string alg) { - // cout << "before Get Author ID" << endl; - // int authorID = GetAuthorID(alg); - // cout << "mu_staco_n" << mu_staco_n << endl; - - for(int i=0;i < mu_calo_n; i++) { - bool process = false; - process = true; - - if(process ) { - // cout << "incrementing nmuons " << endl; - nmuons++; - // cout << "nmuons = " << nmuons << " i = " << i << endl; - pt.push_back(mu_calo_pt->at(i)/1000); - // cout << "after pt" << endl; - eta.push_back(mu_calo_eta->at(i)); - phi.push_back(mu_calo_phi->at(i)); - - list<string>::iterator subiter; - for(subiter=subdetectors.begin();subiter!=subdetectors.end(); ++subiter) { - char num[2]; - sprintf(num,"%s_%d",((*subiter).c_str()),i); - string tmp = num; - nhit_sub[tmp] = 0; - } - - // cout << "before n_outliers" << endl; - - n_outliers.push_back(0); - n_holes.push_back(0); - /* - n_holes[nmuons] += mu_calo_nSCTHoles->at(i)+mu_staco_nMDTHoles->at(i); - n_holes[nmuons] += mu_calo_nCSCPhiHoles->at(i)+mu_staco_nCSCEtaHoles->at(i); - n_holes[nmuons] += mu_calo_nRPCEtaHoles->at(i)+mu_staco_nRPCPhiHoles->at(i); - n_holes[nmuons] += mu_calo_nTGCPhiHoles->at(i)+mu_staco_nTGCEtaHoles->at(i); - n_holes[nmuons] += mu_calo_nMDTHoles->at(i); - */ - - // cout << "d0 e z0" << endl; - d0.push_back(0); - z0.push_back(0); - - // int ndof = mu_calo_trackfitndof->at(i); - chi2_val.push_back(0); - - - - - - - } - - - } -} - - -int histos::GetAuthorID(string alg) { - if(alg=="MuonBoy") {return MuonParameters::Muonboy;} - else if(alg=="MuidSA") {return MuonParameters::MuidSA;} - else if(alg=="MuTag") {return MuonParameters::MuTag;} - else if(alg=="MuGirl") {return MuonParameters::MuGirl;} - else if(alg=="Staco_CB") {return MuonParameters::STACO;} - else if(alg=="Muid_CB") {return MuonParameters::MuidCo;} - else if(alg=="MuTagIMO") {return MuonParameters::MuTagIMO;} - return MuonParameters::unknown; -} - -void histos::AddToPrint(TObject *object) { - histo_to_print.push_back(object); - all_histos.push_back(object); - -} - -void histos::AddToAll(TObject *object) { - - all_histos.push_back(object); -} - -void histos::GetPtEta(double qoverp, double theta, double *pt_out, double *eta_out) { - *pt_out = ((fabs(qoverp) > 0) ?fabs(1/qoverp)*sin(theta) : 0); - *eta_out = ((theta>0) ? -log(tan(theta/2)) : 0.); - // cout << "qoverp, theta, pt, eta = " << qoverp << ", " << theta << ", " << *pt << ", " << *eta << endl; -} diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/histos_MCP_RTT.h b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/histos_MCP_RTT.h deleted file mode 100644 index b92a6e69c3a7453de0abf512a2bc671c6a55b351..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/histos_MCP_RTT.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -#include "MuonParamDefs.h" -#include "physics_MCP_RTT.h" -#include <TH1F.h> -#include <TH2F.h> -#include <list> -#include <string> -#include <map> - -#include <TObject.h> -#include <TProfile.h> - -class histos : public physics { - - public: - - map<string,TH1F *> mu_pt, mu_eta_pt20, mu_phi_pt20, chi2; - map<string, TH2F *> DeltaPtovPt,chi2Match,DeltaEta,DeltaPhi,NhitsEff,NhitsEffSoft; - map<string, TH2F *> nhit_pt; - map<string, TH2F *> nhit_eta; - map<string, TH2F *> nhit_phi; - map<string, TH2F *> d0_pT,z0_pT,d0_eta,z0_eta; - map<string, TH1F *> *author, *author_pt_20; - map<string, TProfile *> nhit_prof; - - histos(); - histos(TTree *tree); - ~histos(); - void book(); - void fill(); - void print(); - void run(); - - - - private: - TFile *file_out; - list<string> algorithm_list; - list<TObject *> histo_to_print, all_histos; - - void AddToPrint(TObject *); - void AddToAll(TObject *); - - string id_to_author(int id); - inline bool isCombined(string Alg); - - int nmuons; - vector<double> pt, eta , phi, NhitsEff_value, NhitsEffSoft_value; - vector<int> n_outlayers, n_holes; - map<string,int> nhit_sub; - - list<string> variables, subdetectors; - - vector<double> d0,z0,pt_ID,pt_MS,eta_ID,eta_MS,phi_ID,phi_MS,Chi2M,n_outliers,chi2_val; - - void FillMuidCollection(string alg); - void FillStacoCollection(string alg); - void FillCaloMuonCollection(string alg); - - void FillMuon(string alg); - void ClearVectors(); - inline int GetAuthorID(string alg); - void GetPtEta(double qoverp, double theta, double *pt_out, double *eta_out); - void post_process(); - void Init(); - - -}; - - -bool histos::isCombined(string Alg) { - return (Alg=="Staco_CB") || (Alg == "Muid_CB"); -} - - - - - diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/physics_MCP_RTT.h b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/physics_MCP_RTT.h deleted file mode 100644 index 272f8c66f5b8dbc7ea87cd2ff49136e28e27a330..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/share/physics_MCP_RTT.h +++ /dev/null @@ -1,6178 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -////////////////////////////////////////////////////////// -// This class has been automatically generated on -// Fri Apr 8 10:02:30 2011 by ROOT version 5.28/00 -// from TTree physics/physics -// found on file: physics.root -////////////////////////////////////////////////////////// - -#ifndef physics_h -#define physics_h - -#include <TROOT.h> -#include <TChain.h> -#include <TFile.h> -#include <vector> -#include <string> -#include <iostream> - -class TTree; -class TBranch; - -class physics { - -public : - TTree *fChain; //!pointer to the analyzed TTree or TChain - Int_t fCurrent; //!current Tree number in a TChain - - // Declaration of leaf types - UInt_t RunNumber; - UInt_t EventNumber; - UInt_t timestamp; - UInt_t timestamp_ns; - UInt_t lbn; - UInt_t bcid; - UInt_t detmask0; - UInt_t detmask1; - UInt_t pixelFlags; - UInt_t sctFlags; - UInt_t trtFlags; - UInt_t larFlags; - UInt_t tileFlags; - UInt_t muonFlags; - UInt_t fwdFlags; - UInt_t coreFlags; - UInt_t pixelError; - UInt_t sctError; - UInt_t trtError; - UInt_t larError; - UInt_t tileError; - UInt_t muonError; - UInt_t fwdError; - UInt_t coreError; - Int_t lar_ncellA; - Int_t lar_ncellC; - Float_t lar_energyA; - Float_t lar_energyC; - Float_t lar_timeA; - Float_t lar_timeC; - Float_t lar_timeDiff; - Int_t er_n; - vector<vector<float> > *er_rings; - Int_t er_nt_n; - vector<vector<float> > *er_nt_rings; - Int_t ph_n; - vector<float> *ph_E; - vector<float> *ph_Et; - vector<float> *ph_pt; - vector<float> *ph_m; - vector<float> *ph_eta; - vector<float> *ph_phi; - vector<float> *ph_px; - vector<float> *ph_py; - vector<float> *ph_pz; - vector<int> *ph_author; - vector<int> *ph_isRecovered; - vector<unsigned int> *ph_isEM; - vector<unsigned int> *ph_OQ; - vector<unsigned int> *ph_OQRecalc; - vector<int> *ph_convFlag; - vector<int> *ph_isConv; - vector<int> *ph_nConv; - vector<int> *ph_nSingleTrackConv; - vector<int> *ph_nDoubleTrackConv; - vector<int> *ph_type; - vector<int> *ph_origin; - vector<float> *ph_truth_deltaRRecPhoton; - vector<float> *ph_truth_E; - vector<float> *ph_truth_pt; - vector<float> *ph_truth_eta; - vector<float> *ph_truth_phi; - vector<int> *ph_truth_type; - vector<int> *ph_truth_status; - vector<int> *ph_truth_barcode; - vector<int> *ph_truth_mothertype; - vector<int> *ph_truth_motherbarcode; - vector<int> *ph_truth_index; - vector<int> *ph_truth_matched; - vector<int> *ph_loose; - vector<int> *ph_tight; - vector<int> *ph_tightIso; - vector<int> *ph_goodOQ; - vector<float> *ph_Ethad; - vector<float> *ph_Ethad1; - vector<float> *ph_E033; - vector<float> *ph_f1; - vector<float> *ph_f1core; - vector<float> *ph_Emins1; - vector<float> *ph_fside; - vector<float> *ph_Emax2; - vector<float> *ph_ws3; - vector<float> *ph_wstot; - vector<float> *ph_E132; - vector<float> *ph_E1152; - vector<float> *ph_emaxs1; - vector<float> *ph_deltaEs; - vector<float> *ph_E233; - vector<float> *ph_E237; - vector<float> *ph_E277; - vector<float> *ph_weta2; - vector<float> *ph_f3; - vector<float> *ph_f3core; - vector<float> *ph_rphiallcalo; - vector<float> *ph_Etcone45; - vector<float> *ph_Etcone15; - vector<float> *ph_Etcone20; - vector<float> *ph_Etcone25; - vector<float> *ph_Etcone30; - vector<float> *ph_Etcone35; - vector<float> *ph_Etcone40; - vector<float> *ph_ptcone20; - vector<float> *ph_ptcone30; - vector<float> *ph_ptcone40; - vector<float> *ph_nucone20; - vector<float> *ph_nucone30; - vector<float> *ph_nucone40; - vector<float> *ph_convanglematch; - vector<float> *ph_convtrackmatch; - vector<int> *ph_hasconv; - vector<float> *ph_convvtxx; - vector<float> *ph_convvtxy; - vector<float> *ph_convvtxz; - vector<float> *ph_Rconv; - vector<float> *ph_zconv; - vector<float> *ph_convvtxchi2; - vector<float> *ph_pt1conv; - vector<int> *ph_convtrk1nBLHits; - vector<int> *ph_convtrk1nPixHits; - vector<int> *ph_convtrk1nSCTHits; - vector<int> *ph_convtrk1nTRTHits; - vector<float> *ph_pt2conv; - vector<int> *ph_convtrk2nBLHits; - vector<int> *ph_convtrk2nPixHits; - vector<int> *ph_convtrk2nSCTHits; - vector<int> *ph_convtrk2nTRTHits; - vector<float> *ph_ptconv; - vector<float> *ph_pzconv; - vector<float> *ph_reta; - vector<float> *ph_rphi; - vector<float> *ph_EtringnoisedR03sig2; - vector<float> *ph_EtringnoisedR03sig3; - vector<float> *ph_EtringnoisedR03sig4; - vector<double> *ph_isolationlikelihoodjets; - vector<double> *ph_isolationlikelihoodhqelectrons; - vector<double> *ph_loglikelihood; - vector<double> *ph_photonweight; - vector<double> *ph_photonbgweight; - vector<double> *ph_neuralnet; - vector<double> *ph_Hmatrix; - vector<double> *ph_Hmatrix5; - vector<double> *ph_adaboost; - vector<float> *ph_zvertex; - vector<float> *ph_errz; - vector<float> *ph_etap; - vector<float> *ph_depth; - vector<float> *ph_cl_E; - vector<float> *ph_cl_pt; - vector<float> *ph_cl_eta; - vector<float> *ph_cl_phi; - vector<float> *ph_Es0; - vector<float> *ph_etas0; - vector<float> *ph_phis0; - vector<float> *ph_Es1; - vector<float> *ph_etas1; - vector<float> *ph_phis1; - vector<float> *ph_Es2; - vector<float> *ph_etas2; - vector<float> *ph_phis2; - vector<float> *ph_Es3; - vector<float> *ph_etas3; - vector<float> *ph_phis3; - vector<float> *ph_rawcl_Es0; - vector<float> *ph_rawcl_etas0; - vector<float> *ph_rawcl_phis0; - vector<float> *ph_rawcl_Es1; - vector<float> *ph_rawcl_etas1; - vector<float> *ph_rawcl_phis1; - vector<float> *ph_rawcl_Es2; - vector<float> *ph_rawcl_etas2; - vector<float> *ph_rawcl_phis2; - vector<float> *ph_rawcl_Es3; - vector<float> *ph_rawcl_etas3; - vector<float> *ph_rawcl_phis3; - vector<float> *ph_rawcl_E; - vector<float> *ph_rawcl_pt; - vector<float> *ph_rawcl_eta; - vector<float> *ph_rawcl_phi; - vector<int> *ph_truth_isConv; - vector<int> *ph_truth_isBrem; - vector<int> *ph_truth_isFromHardProc; - vector<int> *ph_truth_isPhotonFromHardProc; - vector<float> *ph_truth_Rconv; - vector<float> *ph_truth_zconv; - vector<float> *ph_deltaEmax2; - vector<float> *ph_calibHitsShowerDepth; - vector<unsigned int> *ph_isIso; - vector<float> *ph_mvaptcone20; - vector<float> *ph_mvaptcone30; - vector<float> *ph_mvaptcone40; - vector<float> *ph_topoEtcone20; - vector<float> *ph_topoEtcone40; - vector<float> *ph_topoEtcone60; - vector<float> *ph_jet_dr; - vector<float> *ph_jet_E; - vector<float> *ph_jet_pt; - vector<float> *ph_jet_m; - vector<float> *ph_jet_eta; - vector<float> *ph_jet_phi; - vector<float> *ph_jet_truth_dr; - vector<float> *ph_jet_truth_E; - vector<float> *ph_jet_truth_pt; - vector<float> *ph_jet_truth_m; - vector<float> *ph_jet_truth_eta; - vector<float> *ph_jet_truth_phi; - vector<int> *ph_jet_truth_matched; - vector<int> *ph_jet_matched; - vector<float> *ph_convIP; - vector<float> *ph_convIPRev; - vector<float> *ph_ptIsolationCone; - vector<float> *ph_ptIsolationConePhAngle; - vector<float> *ph_Etcone40_pt_corrected; - vector<float> *ph_Etcone35_pt_corrected; - vector<float> *ph_Etcone30_pt_corrected; - vector<float> *ph_Etcone25_pt_corrected; - vector<float> *ph_Etcone20_pt_corrected; - vector<float> *ph_Etcone15_pt_corrected; - vector<float> *ph_Etcone40_ED_corrected; - vector<float> *ph_Etcone40_corrected; - vector<float> *ph_topodr; - vector<float> *ph_topopt; - vector<float> *ph_topoeta; - vector<float> *ph_topophi; - vector<int> *ph_topomatched; - vector<float> *ph_topoEMdr; - vector<float> *ph_topoEMpt; - vector<float> *ph_topoEMeta; - vector<float> *ph_topoEMphi; - vector<int> *ph_topoEMmatched; - vector<float> *ph_EF_dr; - vector<int> *ph_EF_index; - vector<float> *ph_L2_dr; - vector<int> *ph_L2_index; - vector<float> *ph_L1_dr; - vector<int> *ph_L1_index; - Bool_t EF_2g10_loose; - Bool_t EF_2g15_loose; - Bool_t EF_2g20_loose; - Bool_t EF_2g5_loose; - Bool_t EF_2g7_loose; - Bool_t EF_2j35_jetNoEF_xe20_noMu; - Bool_t EF_2j35_jetNoEF_xe30_noMu; - Bool_t EF_2j35_jetNoEF_xe40_noMu; - Bool_t EF_2j35_xe20_noMu; - Bool_t EF_2j35_xe30_noMu; - Bool_t EF_2j35_xe40_noMu; - Bool_t EF_2mu0_NoAlg; - Bool_t EF_2mu10; - Bool_t EF_2mu10_NoAlg; - Bool_t EF_2mu4; - Bool_t EF_2mu4_Bmumu; - Bool_t EF_2mu4_Bmumux; - Bool_t EF_2mu4_DiMu; - Bool_t EF_2mu4_DiMu_SiTrk; - Bool_t EF_2mu4_DiMu_noVtx; - Bool_t EF_2mu4_DiMu_noVtx_noOS; - Bool_t EF_2mu4_Jpsimumu; - Bool_t EF_2mu4_Jpsimumu_IDTrkNoCut; - Bool_t EF_2mu4_Upsimumu; - Bool_t EF_2mu6; - Bool_t EF_2mu6_Bmumu; - Bool_t EF_2mu6_Bmumux; - Bool_t EF_2mu6_DiMu; - Bool_t EF_2mu6_Jpsimumu; - Bool_t EF_2mu6_MG; - Bool_t EF_2mu6_NoAlg; - Bool_t EF_2mu6_Upsimumu; - Bool_t EF_2mu6_g10_loose; - Bool_t EF_e20_loose_xe20; - Bool_t EF_e20_loose_xe20_noMu; - Bool_t EF_e20_loose_xe30; - Bool_t EF_e20_loose_xe30_noMu; - Bool_t EF_g10_loose; - Bool_t EF_g10_loose_larcalib; - Bool_t EF_g11_etcut; - Bool_t EF_g15_loose; - Bool_t EF_g17_etcut; - Bool_t EF_g17_etcut_EFxe20_noMu; - Bool_t EF_g17_etcut_EFxe30_noMu; - Bool_t EF_g20_loose; - Bool_t EF_g20_loose_cnv; - Bool_t EF_g20_loose_larcalib; - Bool_t EF_g20_loose_xe20_noMu; - Bool_t EF_g20_loose_xe30_noMu; - Bool_t EF_g20_tight; - Bool_t EF_g25_loose_xe30_noMu; - Bool_t EF_g30_loose; - Bool_t EF_g30_tight; - Bool_t EF_g3_NoCut_unpaired_iso; - Bool_t EF_g3_NoCut_unpaired_noniso; - Bool_t EF_g40_loose; - Bool_t EF_g40_loose_larcalib; - Bool_t EF_g40_tight; - Bool_t EF_g50_loose; - Bool_t EF_g50_loose_larcalib; - Bool_t EF_g5_NoCut_cosmic; - Bool_t EF_g5_loose; - Bool_t EF_g5_loose_cnv; - Bool_t EF_g5_loose_larcalib; - Bool_t EF_g7_loose; - Bool_t EF_j35_jetNoCut_xe30_e15_medium; - Bool_t EF_j35_jetNoCut_xe30_mu15; - Bool_t EF_j35_xe30_e15_medium; - Bool_t EF_j35_xe30_mu15; - Bool_t EF_j50_jetNoEF_xe20_noMu; - Bool_t EF_j50_jetNoEF_xe30_noMu; - Bool_t EF_j50_jetNoEF_xe40_noMu; - Bool_t EF_j50_xe20_noMu; - Bool_t EF_j50_xe30_noMu; - Bool_t EF_j50_xe40_noMu; - Bool_t EF_mu0_NoAlg; - Bool_t EF_mu0_comm_NoAlg; - Bool_t EF_mu0_comm_empty_NoAlg; - Bool_t EF_mu0_comm_firstempty_NoAlg; - Bool_t EF_mu0_comm_unpaired_iso_NoAlg; - Bool_t EF_mu0_comm_unpaired_noniso_NoAlg; - Bool_t EF_mu0_empty_NoAlg; - Bool_t EF_mu0_firstempty_NoAlg; - Bool_t EF_mu0_missingRoi; - Bool_t EF_mu0_outOfTime1; - Bool_t EF_mu0_outOfTime2; - Bool_t EF_mu0_rpcOnly; - Bool_t EF_mu0_unpaired_iso_NoAlg; - Bool_t EF_mu0_unpaired_noniso_NoAlg; - Bool_t EF_mu10; - Bool_t EF_mu10_Ecut12; - Bool_t EF_mu10_Ecut123; - Bool_t EF_mu10_Ecut13; - Bool_t EF_mu10_IDTrkNoCut; - Bool_t EF_mu10_MG; - Bool_t EF_mu10_MSonly; - Bool_t EF_mu10_MSonly_Ecut12; - Bool_t EF_mu10_MSonly_Ecut123; - Bool_t EF_mu10_MSonly_Ecut13; - Bool_t EF_mu10_MSonly_tight; - Bool_t EF_mu10_NoAlg; - Bool_t EF_mu10_SiTrk; - Bool_t EF_mu10_j30; - Bool_t EF_mu10_tight; - Bool_t EF_mu10i_loose; - Bool_t EF_mu13; - Bool_t EF_mu13_MG; - Bool_t EF_mu13_MG_tight; - Bool_t EF_mu13_tight; - Bool_t EF_mu15; - Bool_t EF_mu15_MG; - Bool_t EF_mu15_NoAlg; - Bool_t EF_mu20; - Bool_t EF_mu20_MSonly; - Bool_t EF_mu20_NoAlg; - Bool_t EF_mu20_passHLT; - Bool_t EF_mu20_slow; - Bool_t EF_mu30_MSonly; - Bool_t EF_mu4; - Bool_t EF_mu40_MSonly; - Bool_t EF_mu4_Bmumu; - Bool_t EF_mu4_BmumuX; - Bool_t EF_mu4_DiMu; - Bool_t EF_mu4_DiMu_FS; - Bool_t EF_mu4_DiMu_FS_noOS; - Bool_t EF_mu4_DiMu_MG; - Bool_t EF_mu4_DiMu_MG_FS; - Bool_t EF_mu4_DiMu_SiTrk; - Bool_t EF_mu4_DiMu_SiTrk_FS; - Bool_t EF_mu4_DiMu_noOS; - Bool_t EF_mu4_IDTrkNoCut; - Bool_t EF_mu4_Jpsie5e3; - Bool_t EF_mu4_Jpsie5e3_FS; - Bool_t EF_mu4_Jpsie5e3_SiTrk; - Bool_t EF_mu4_Jpsie5e3_SiTrk_FS; - Bool_t EF_mu4_Jpsimumu; - Bool_t EF_mu4_Jpsimumu_FS; - Bool_t EF_mu4_Jpsimumu_SiTrk_FS; - Bool_t EF_mu4_L1J10_matched; - Bool_t EF_mu4_L1J15_matched; - Bool_t EF_mu4_L1J30_matched; - Bool_t EF_mu4_L1J55_matched; - Bool_t EF_mu4_L1J5_matched; - Bool_t EF_mu4_L2MSonly_EFFS_passL2; - Bool_t EF_mu4_MG; - Bool_t EF_mu4_MSonly; - Bool_t EF_mu4_MSonly_EFFS_passL2; - Bool_t EF_mu4_MSonly_MB2_noL2_EFFS; - Bool_t EF_mu4_MSonly_cosmic; - Bool_t EF_mu4_MSonly_outOfTime; - Bool_t EF_mu4_MV; - Bool_t EF_mu4_SiTrk; - Bool_t EF_mu4_Trk_Jpsi; - Bool_t EF_mu4_Trk_Jpsi_FS; - Bool_t EF_mu4_Trk_Jpsi_loose; - Bool_t EF_mu4_Trk_Upsi_FS; - Bool_t EF_mu4_Trk_Upsi_loose_FS; - Bool_t EF_mu4_Upsimumu_FS; - Bool_t EF_mu4_Upsimumu_SiTrk_FS; - Bool_t EF_mu4_comm_MSonly_cosmic; - Bool_t EF_mu4_comm_cosmic; - Bool_t EF_mu4_comm_firstempty; - Bool_t EF_mu4_comm_unpaired_iso; - Bool_t EF_mu4_cosmic; - Bool_t EF_mu4_firstempty; - Bool_t EF_mu4_j20; - Bool_t EF_mu4_j20_jetNoEF; - Bool_t EF_mu4_j30; - Bool_t EF_mu4_j30_jetNoEF; - Bool_t EF_mu4_mu6; - Bool_t EF_mu4_muCombTag; - Bool_t EF_mu4_tile; - Bool_t EF_mu4_tile_cosmic; - Bool_t EF_mu4_unpaired_iso; - Bool_t EF_mu4mu6_Bmumu; - Bool_t EF_mu4mu6_BmumuX; - Bool_t EF_mu4mu6_DiMu; - Bool_t EF_mu4mu6_Jpsimumu; - Bool_t EF_mu4mu6_Jpsimumu_IDTrkNoCut; - Bool_t EF_mu4mu6_Upsimumu; - Bool_t EF_mu6; - Bool_t EF_mu6_Bmumu; - Bool_t EF_mu6_BmumuX; - Bool_t EF_mu6_DiMu; - Bool_t EF_mu6_Ecut12; - Bool_t EF_mu6_Ecut123; - Bool_t EF_mu6_Ecut13; - Bool_t EF_mu6_Ecut2; - Bool_t EF_mu6_Ecut3; - Bool_t EF_mu6_IDTrkNoCut; - Bool_t EF_mu6_Jpsie5e3; - Bool_t EF_mu6_Jpsie5e3_FS; - Bool_t EF_mu6_Jpsie5e3_SiTrk; - Bool_t EF_mu6_Jpsie5e3_SiTrk_FS; - Bool_t EF_mu6_Jpsimumu; - Bool_t EF_mu6_MG; - Bool_t EF_mu6_MSonly; - Bool_t EF_mu6_MSonly_Ecut12; - Bool_t EF_mu6_MSonly_Ecut123; - Bool_t EF_mu6_MSonly_Ecut13; - Bool_t EF_mu6_MSonly_Ecut2; - Bool_t EF_mu6_MSonly_Ecut3; - Bool_t EF_mu6_MSonly_outOfTime; - Bool_t EF_mu6_NoAlg; - Bool_t EF_mu6_SiTrk; - Bool_t EF_mu6_Trk_Jpsi; - Bool_t EF_mu6_Upsimumu_FS; - Bool_t EF_mu6_muCombTag; - Bool_t EF_tau12_loose_IdScan_xe15_noMu; - Bool_t EF_tau12_loose_xe15_noMu; - Bool_t EF_tau12_loose_xe20_noMu; - Bool_t EF_tau16_loose_xe20_noMu; - Bool_t EF_tau16_loose_xe25_noMu; - Bool_t EF_tau16_loose_xe25_tight_noMu; - Bool_t EF_tau16_loose_xe30_noMu; - Bool_t EF_tau16_medium_xe22_noMu; - Bool_t EF_tau16_medium_xe25_noMu; - Bool_t EF_tau16_medium_xe25_tight_noMu; - Bool_t EF_tau20_loose_xe25_noMu; - Bool_t EF_tauNoCut_hasTrk6_IdScan_xe20_noMu; - Bool_t EF_tauNoCut_hasTrk6_xe20_noMu; - Bool_t EF_tauNoCut_hasTrk9_xe20_noMu; - Bool_t EF_tauNoCut_hasTrk_xe20_noMu; - Bool_t EF_xe15; - Bool_t EF_xe15_noMu; - Bool_t EF_xe15_unbiased_noMu; - Bool_t EF_xe20; - Bool_t EF_xe20_noMu; - Bool_t EF_xe20_tight_noMu; - Bool_t EF_xe20_tight_vfj_noMu; - Bool_t EF_xe25; - Bool_t EF_xe25_medium; - Bool_t EF_xe25_medium_noMu; - Bool_t EF_xe25_noMu; - Bool_t EF_xe25_tight_noMu; - Bool_t EF_xe25_tight_vfj_noMu; - Bool_t EF_xe25_vfj_noMu; - Bool_t EF_xe30; - Bool_t EF_xe30_allL1; - Bool_t EF_xe30_allL1_FEB; - Bool_t EF_xe30_allL1_allCells; - Bool_t EF_xe30_allL1_noMu; - Bool_t EF_xe30_loose; - Bool_t EF_xe30_loose_noMu; - Bool_t EF_xe30_medium; - Bool_t EF_xe30_medium_noMu; - Bool_t EF_xe30_medium_vfj_noMu; - Bool_t EF_xe30_noMu; - Bool_t EF_xe30_tight_noMu; - Bool_t EF_xe30_tight_vfj_noMu; - Bool_t EF_xe30_vfj_noMu; - Bool_t EF_xe35; - Bool_t EF_xe35_loose_noMu; - Bool_t EF_xe35_noMu; - Bool_t EF_xe35_tight_noMu; - Bool_t EF_xe40; - Bool_t EF_xe40_noMu; - Bool_t EF_xe40_tight_noMu; - Bool_t EF_xe45; - Bool_t EF_xe45_noMu; - Bool_t EF_xe55; - Bool_t EF_xe55_noMu; - Bool_t EF_xe60_medium; - Bool_t EF_xe60_medium_noMu; - Bool_t EF_xe80_medium; - Bool_t EF_xe80_medium_noMu; - Bool_t L1_2EM10; - Bool_t L1_2EM14; - Bool_t L1_2EM2; - Bool_t L1_2EM3; - Bool_t L1_2EM5; - Bool_t L1_2J15_XE10; - Bool_t L1_2J15_XE15; - Bool_t L1_2J15_XE25; - Bool_t L1_2MU0; - Bool_t L1_2MU0_FIRSTEMPTY; - Bool_t L1_2MU0_MU6; - Bool_t L1_2MU10; - Bool_t L1_2MU20; - Bool_t L1_2MU6; - Bool_t L1_2MU6_EM5; - Bool_t L1_EM10; - Bool_t L1_EM10I; - Bool_t L1_EM14; - Bool_t L1_EM14I; - Bool_t L1_EM14_XE10; - Bool_t L1_EM14_XE15; - Bool_t L1_EM2; - Bool_t L1_EM2_UNPAIRED_ISO; - Bool_t L1_EM2_UNPAIRED_NONISO; - Bool_t L1_EM3; - Bool_t L1_EM3_EMPTY; - Bool_t L1_EM3_FIRSTEMPTY; - Bool_t L1_EM3_MV; - Bool_t L1_EM5; - Bool_t L1_EM5_MU10; - Bool_t L1_EM5_MU6; - Bool_t L1_EM85; - Bool_t L1_J15_XE15_EM10; - Bool_t L1_J15_XE15_MU15; - Bool_t L1_J30_XE10; - Bool_t L1_J30_XE15; - Bool_t L1_J30_XE25; - Bool_t L1_MU0; - Bool_t L1_MU0_COMM; - Bool_t L1_MU0_COMM_EMPTY; - Bool_t L1_MU0_COMM_FIRSTEMPTY; - Bool_t L1_MU0_COMM_UNPAIRED_ISO; - Bool_t L1_MU0_COMM_UNPAIRED_NONISO; - Bool_t L1_MU0_EM3; - Bool_t L1_MU0_EMPTY; - Bool_t L1_MU0_FIRSTEMPTY; - Bool_t L1_MU0_J10; - Bool_t L1_MU0_J15; - Bool_t L1_MU0_J30; - Bool_t L1_MU0_J5; - Bool_t L1_MU0_J55; - Bool_t L1_MU0_MV; - Bool_t L1_MU0_UNPAIRED_ISO; - Bool_t L1_MU0_UNPAIRED_NONISO; - Bool_t L1_MU10; - Bool_t L1_MU10_FIRSTEMPTY; - Bool_t L1_MU10_J10; - Bool_t L1_MU15; - Bool_t L1_MU20; - Bool_t L1_MU6; - Bool_t L1_MU6_EM3; - Bool_t L1_MU6_FIRSTEMPTY; - Bool_t L1_MU6_J5; - Bool_t L1_TAU5_XE10; - Bool_t L1_TAU6_XE10; - Bool_t L1_XE10; - Bool_t L1_XE15; - Bool_t L1_XE20; - Bool_t L1_XE25; - Bool_t L1_XE30; - Bool_t L1_XE35; - Bool_t L1_XE40; - Bool_t L1_XE50; - Bool_t L2_2g10_loose; - Bool_t L2_2g15_loose; - Bool_t L2_2g20_loose; - Bool_t L2_2g5_loose; - Bool_t L2_2g7_loose; - Bool_t L2_2j30_xe12_noMu; - Bool_t L2_2j30_xe20_noMu; - Bool_t L2_2j30_xe30_noMu; - Bool_t L2_2j35_jetNoEF_xe20_noMu; - Bool_t L2_2j35_jetNoEF_xe30_noMu; - Bool_t L2_2j35_jetNoEF_xe40_noMu; - Bool_t L2_2mu0_NoAlg; - Bool_t L2_2mu10; - Bool_t L2_2mu10_NoAlg; - Bool_t L2_2mu4; - Bool_t L2_2mu4_Bmumu; - Bool_t L2_2mu4_Bmumux; - Bool_t L2_2mu4_DiMu; - Bool_t L2_2mu4_DiMu_SiTrk; - Bool_t L2_2mu4_DiMu_noVtx; - Bool_t L2_2mu4_DiMu_noVtx_noOS; - Bool_t L2_2mu4_Jpsimumu; - Bool_t L2_2mu4_Jpsimumu_IDTrkNoCut; - Bool_t L2_2mu4_Upsimumu; - Bool_t L2_2mu6; - Bool_t L2_2mu6_Bmumu; - Bool_t L2_2mu6_Bmumux; - Bool_t L2_2mu6_DiMu; - Bool_t L2_2mu6_Jpsimumu; - Bool_t L2_2mu6_MG; - Bool_t L2_2mu6_NoAlg; - Bool_t L2_2mu6_Upsimumu; - Bool_t L2_2mu6_g10_loose; - Bool_t L2_e20_loose_xe20; - Bool_t L2_e20_loose_xe20_noMu; - Bool_t L2_e20_loose_xe30; - Bool_t L2_e20_loose_xe30_noMu; - Bool_t L2_g10_loose; - Bool_t L2_g11_etcut; - Bool_t L2_g15_loose; - Bool_t L2_g17_etcut; - Bool_t L2_g17_etcut_EFxe20_noMu; - Bool_t L2_g17_etcut_EFxe30_noMu; - Bool_t L2_g20_loose; - Bool_t L2_g20_loose_cnv; - Bool_t L2_g20_loose_xe20_noMu; - Bool_t L2_g20_loose_xe30_noMu; - Bool_t L2_g20_tight; - Bool_t L2_g25_loose_xe30_noMu; - Bool_t L2_g30_loose; - Bool_t L2_g30_tight; - Bool_t L2_g3_NoCut_unpaired_iso; - Bool_t L2_g3_NoCut_unpaired_noniso; - Bool_t L2_g40_loose; - Bool_t L2_g40_tight; - Bool_t L2_g50_loose; - Bool_t L2_g5_NoCut_cosmic; - Bool_t L2_g5_loose; - Bool_t L2_g5_loose_cnv; - Bool_t L2_g7_loose; - Bool_t L2_j30_jetNoCut_xe20_e15_medium; - Bool_t L2_j30_xe20_e15_medium; - Bool_t L2_j35_jetNoCut_xe30_mu15; - Bool_t L2_j35_xe30_mu15; - Bool_t L2_j45_xe12_noMu; - Bool_t L2_j45_xe20_noMu; - Bool_t L2_j45_xe30_noMu; - Bool_t L2_mu0_NoAlg; - Bool_t L2_mu0_comm_NoAlg; - Bool_t L2_mu0_comm_empty_NoAlg; - Bool_t L2_mu0_comm_firstempty_NoAlg; - Bool_t L2_mu0_comm_unpaired_iso_NoAlg; - Bool_t L2_mu0_comm_unpaired_noniso_NoAlg; - Bool_t L2_mu0_empty_NoAlg; - Bool_t L2_mu0_firstempty_NoAlg; - Bool_t L2_mu0_missingRoi; - Bool_t L2_mu0_outOfTime1; - Bool_t L2_mu0_outOfTime2; - Bool_t L2_mu0_rpcOnly; - Bool_t L2_mu0_unpaired_iso_NoAlg; - Bool_t L2_mu0_unpaired_noniso_NoAlg; - Bool_t L2_mu10; - Bool_t L2_mu10_Ecut12; - Bool_t L2_mu10_Ecut123; - Bool_t L2_mu10_Ecut13; - Bool_t L2_mu10_IDTrkNoCut; - Bool_t L2_mu10_MG; - Bool_t L2_mu10_MSonly; - Bool_t L2_mu10_MSonly_Ecut12; - Bool_t L2_mu10_MSonly_Ecut123; - Bool_t L2_mu10_MSonly_Ecut13; - Bool_t L2_mu10_MSonly_tight; - Bool_t L2_mu10_NoAlg; - Bool_t L2_mu10_SiTrk; - Bool_t L2_mu10_j30; - Bool_t L2_mu10_tight; - Bool_t L2_mu10i_loose; - Bool_t L2_mu13; - Bool_t L2_mu13_MG; - Bool_t L2_mu13_MG_tight; - Bool_t L2_mu13_tight; - Bool_t L2_mu15; - Bool_t L2_mu15_MG; - Bool_t L2_mu15_NoAlg; - Bool_t L2_mu20; - Bool_t L2_mu20_MSonly; - Bool_t L2_mu20_NoAlg; - Bool_t L2_mu20_passHLT; - Bool_t L2_mu20_slow; - Bool_t L2_mu30_MSonly; - Bool_t L2_mu4; - Bool_t L2_mu40_MSonly; - Bool_t L2_mu4_Bmumu; - Bool_t L2_mu4_BmumuX; - Bool_t L2_mu4_DiMu; - Bool_t L2_mu4_DiMu_FS; - Bool_t L2_mu4_DiMu_FS_noOS; - Bool_t L2_mu4_DiMu_MG; - Bool_t L2_mu4_DiMu_MG_FS; - Bool_t L2_mu4_DiMu_SiTrk; - Bool_t L2_mu4_DiMu_SiTrk_FS; - Bool_t L2_mu4_DiMu_noOS; - Bool_t L2_mu4_IDTrkNoCut; - Bool_t L2_mu4_Jpsie5e3; - Bool_t L2_mu4_Jpsie5e3_FS; - Bool_t L2_mu4_Jpsie5e3_SiTrk; - Bool_t L2_mu4_Jpsie5e3_SiTrk_FS; - Bool_t L2_mu4_Jpsimumu; - Bool_t L2_mu4_Jpsimumu_FS; - Bool_t L2_mu4_Jpsimumu_SiTrk_FS; - Bool_t L2_mu4_L1J10_matched; - Bool_t L2_mu4_L1J15_matched; - Bool_t L2_mu4_L1J30_matched; - Bool_t L2_mu4_L1J55_matched; - Bool_t L2_mu4_L1J5_matched; - Bool_t L2_mu4_L2MSonly_EFFS_passL2; - Bool_t L2_mu4_MG; - Bool_t L2_mu4_MSonly; - Bool_t L2_mu4_MSonly_EFFS_passL2; - Bool_t L2_mu4_MSonly_MB2_noL2_EFFS; - Bool_t L2_mu4_MSonly_cosmic; - Bool_t L2_mu4_MSonly_outOfTime; - Bool_t L2_mu4_MV; - Bool_t L2_mu4_SiTrk; - Bool_t L2_mu4_Trk_Jpsi; - Bool_t L2_mu4_Trk_Jpsi_FS; - Bool_t L2_mu4_Trk_Jpsi_loose; - Bool_t L2_mu4_Trk_Upsi_FS; - Bool_t L2_mu4_Trk_Upsi_loose_FS; - Bool_t L2_mu4_Upsimumu_FS; - Bool_t L2_mu4_Upsimumu_SiTrk_FS; - Bool_t L2_mu4_comm_MSonly_cosmic; - Bool_t L2_mu4_comm_cosmic; - Bool_t L2_mu4_comm_firstempty; - Bool_t L2_mu4_comm_unpaired_iso; - Bool_t L2_mu4_cosmic; - Bool_t L2_mu4_firstempty; - Bool_t L2_mu4_j20; - Bool_t L2_mu4_j20_jetNoEF; - Bool_t L2_mu4_j25; - Bool_t L2_mu4_mu6; - Bool_t L2_mu4_muCombTag; - Bool_t L2_mu4_tile; - Bool_t L2_mu4_tile_cosmic; - Bool_t L2_mu4_unpaired_iso; - Bool_t L2_mu4mu6_Bmumu; - Bool_t L2_mu4mu6_BmumuX; - Bool_t L2_mu4mu6_DiMu; - Bool_t L2_mu4mu6_Jpsimumu; - Bool_t L2_mu4mu6_Jpsimumu_IDTrkNoCut; - Bool_t L2_mu4mu6_Upsimumu; - Bool_t L2_mu6; - Bool_t L2_mu6_Bmumu; - Bool_t L2_mu6_BmumuX; - Bool_t L2_mu6_DiMu; - Bool_t L2_mu6_Ecut12; - Bool_t L2_mu6_Ecut123; - Bool_t L2_mu6_Ecut13; - Bool_t L2_mu6_Ecut2; - Bool_t L2_mu6_Ecut3; - Bool_t L2_mu6_IDTrkNoCut; - Bool_t L2_mu6_Jpsie5e3; - Bool_t L2_mu6_Jpsie5e3_FS; - Bool_t L2_mu6_Jpsie5e3_SiTrk; - Bool_t L2_mu6_Jpsie5e3_SiTrk_FS; - Bool_t L2_mu6_Jpsimumu; - Bool_t L2_mu6_MG; - Bool_t L2_mu6_MSonly; - Bool_t L2_mu6_MSonly_Ecut12; - Bool_t L2_mu6_MSonly_Ecut123; - Bool_t L2_mu6_MSonly_Ecut13; - Bool_t L2_mu6_MSonly_Ecut2; - Bool_t L2_mu6_MSonly_Ecut3; - Bool_t L2_mu6_MSonly_outOfTime; - Bool_t L2_mu6_NoAlg; - Bool_t L2_mu6_SiTrk; - Bool_t L2_mu6_Trk_Jpsi; - Bool_t L2_mu6_Upsimumu_FS; - Bool_t L2_mu6_muCombTag; - Bool_t L2_tau12_loose_IdScan_xe15_noMu; - Bool_t L2_tau12_loose_xe15_noMu; - Bool_t L2_tau12_loose_xe20_noMu; - Bool_t L2_tau16_loose_xe20_noMu; - Bool_t L2_tau16_loose_xe25_noMu; - Bool_t L2_tau16_loose_xe25_tight_noMu; - Bool_t L2_tau16_loose_xe30_noMu; - Bool_t L2_tau16_medium_xe22_noMu; - Bool_t L2_tau16_medium_xe25_noMu; - Bool_t L2_tau16_medium_xe25_tight_noMu; - Bool_t L2_tau20_loose_xe25_noMu; - Bool_t L2_tauNoCut_hasTrk6_IdScan_xe20_noMu; - Bool_t L2_tauNoCut_hasTrk6_xe20_noMu; - Bool_t L2_tauNoCut_hasTrk9_xe20_noMu; - Bool_t L2_tauNoCut_hasTrk_xe20_noMu; - Bool_t L2_xe12; - Bool_t L2_xe12_loose; - Bool_t L2_xe12_loose_noMu; - Bool_t L2_xe12_medium; - Bool_t L2_xe12_medium_noMu; - Bool_t L2_xe12_noMu; - Bool_t L2_xe15; - Bool_t L2_xe15_medium; - Bool_t L2_xe15_medium_noMu; - Bool_t L2_xe15_medium_vfj_noMu; - Bool_t L2_xe15_noMu; - Bool_t L2_xe15_tight_noMu; - Bool_t L2_xe15_tight_vfj_noMu; - Bool_t L2_xe15_unbiased_noMu; - Bool_t L2_xe15_vfj_noMu; - Bool_t L2_xe17_tight_noMu; - Bool_t L2_xe17_tight_vfj_noMu; - Bool_t L2_xe20; - Bool_t L2_xe20_noMu; - Bool_t L2_xe20_vfj_noMu; - Bool_t L2_xe22_loose_noMu; - Bool_t L2_xe22_tight_noMu; - Bool_t L2_xe22_tight_vfj_noMu; - Bool_t L2_xe25; - Bool_t L2_xe25_noMu; - Bool_t L2_xe27_tight_noMu; - Bool_t L2_xe30; - Bool_t L2_xe30_allL1; - Bool_t L2_xe30_allL1_FEB; - Bool_t L2_xe30_allL1_allCells; - Bool_t L2_xe30_allL1_noMu; - Bool_t L2_xe30_noMu; - Bool_t L2_xe32_tight_noMu; - Bool_t L2_xe35; - Bool_t L2_xe35_noMu; - Bool_t L2_xe40_medium; - Bool_t L2_xe40_medium_noMu; - Bool_t L2_xe45; - Bool_t L2_xe45_noMu; - Bool_t L2_xe60_medium; - Bool_t L2_xe60_medium_noMu; - Int_t mu_muid_n; - vector<float> *mu_muid_E; - vector<float> *mu_muid_pt; - vector<float> *mu_muid_m; - vector<float> *mu_muid_eta; - vector<float> *mu_muid_phi; - vector<float> *mu_muid_px; - vector<float> *mu_muid_py; - vector<float> *mu_muid_pz; - vector<float> *mu_muid_charge; - vector<unsigned short> *mu_muid_allauthor; - vector<int> *mu_muid_author; - vector<float> *mu_muid_beta; - vector<float> *mu_muid_isMuonLikelihood; - vector<float> *mu_muid_matchchi2; - vector<int> *mu_muid_matchndof; - vector<float> *mu_muid_etcone20; - vector<float> *mu_muid_etcone30; - vector<float> *mu_muid_etcone40; - vector<float> *mu_muid_nucone20; - vector<float> *mu_muid_nucone30; - vector<float> *mu_muid_nucone40; - vector<float> *mu_muid_ptcone20; - vector<float> *mu_muid_ptcone30; - vector<float> *mu_muid_ptcone40; - vector<float> *mu_muid_energyLossPar; - vector<float> *mu_muid_energyLossErr; - vector<float> *mu_muid_etCore; - vector<float> *mu_muid_energyLossType; - vector<unsigned short> *mu_muid_caloMuonIdTag; - vector<double> *mu_muid_caloLRLikelihood; - vector<int> *mu_muid_bestMatch; - vector<int> *mu_muid_isStandAloneMuon; - vector<int> *mu_muid_isCombinedMuon; - vector<int> *mu_muid_isLowPtReconstructedMuon; - vector<int> *mu_muid_loose; - vector<int> *mu_muid_medium; - vector<int> *mu_muid_tight; - vector<float> *mu_muid_d0_exPV; - vector<float> *mu_muid_z0_exPV; - vector<float> *mu_muid_phi_exPV; - vector<float> *mu_muid_theta_exPV; - vector<float> *mu_muid_qoverp_exPV; - vector<float> *mu_muid_cb_d0_exPV; - vector<float> *mu_muid_cb_z0_exPV; - vector<float> *mu_muid_cb_phi_exPV; - vector<float> *mu_muid_cb_theta_exPV; - vector<float> *mu_muid_cb_qoverp_exPV; - vector<float> *mu_muid_id_d0_exPV; - vector<float> *mu_muid_id_z0_exPV; - vector<float> *mu_muid_id_phi_exPV; - vector<float> *mu_muid_id_theta_exPV; - vector<float> *mu_muid_id_qoverp_exPV; - vector<float> *mu_muid_me_d0_exPV; - vector<float> *mu_muid_me_z0_exPV; - vector<float> *mu_muid_me_phi_exPV; - vector<float> *mu_muid_me_theta_exPV; - vector<float> *mu_muid_me_qoverp_exPV; - vector<float> *mu_muid_ie_d0_exPV; - vector<float> *mu_muid_ie_z0_exPV; - vector<float> *mu_muid_ie_phi_exPV; - vector<float> *mu_muid_ie_theta_exPV; - vector<float> *mu_muid_ie_qoverp_exPV; - vector<vector<int> > *mu_muid_SpaceTime_detID; - vector<vector<float> > *mu_muid_SpaceTime_t; - vector<vector<float> > *mu_muid_SpaceTime_tError; - vector<vector<float> > *mu_muid_SpaceTime_weight; - vector<vector<float> > *mu_muid_SpaceTime_x; - vector<vector<float> > *mu_muid_SpaceTime_y; - vector<vector<float> > *mu_muid_SpaceTime_z; - vector<vector<float> > *mu_muid_SpaceTime_t_Tile; - vector<vector<float> > *mu_muid_SpaceTime_tError_Tile; - vector<vector<float> > *mu_muid_SpaceTime_weight_Tile; - vector<vector<float> > *mu_muid_SpaceTime_x_Tile; - vector<vector<float> > *mu_muid_SpaceTime_y_Tile; - vector<vector<float> > *mu_muid_SpaceTime_z_Tile; - vector<vector<float> > *mu_muid_SpaceTime_t_TRT; - vector<vector<float> > *mu_muid_SpaceTime_tError_TRT; - vector<vector<float> > *mu_muid_SpaceTime_weight_TRT; - vector<vector<float> > *mu_muid_SpaceTime_x_TRT; - vector<vector<float> > *mu_muid_SpaceTime_y_TRT; - vector<vector<float> > *mu_muid_SpaceTime_z_TRT; - vector<vector<float> > *mu_muid_SpaceTime_t_MDT; - vector<vector<float> > *mu_muid_SpaceTime_tError_MDT; - vector<vector<float> > *mu_muid_SpaceTime_weight_MDT; - vector<vector<float> > *mu_muid_SpaceTime_x_MDT; - vector<vector<float> > *mu_muid_SpaceTime_y_MDT; - vector<vector<float> > *mu_muid_SpaceTime_z_MDT; - vector<float> *mu_muid_TileCellEnergyLayer1; - vector<float> *mu_muid_TileTimeLayer1; - vector<float> *mu_muid_TileCellRmsNoiseLayer1; - vector<float> *mu_muid_TileCellSignLayer1; - vector<float> *mu_muid_TileCellEnergyLayer2; - vector<float> *mu_muid_TileTimeLayer2; - vector<float> *mu_muid_TileCellRmsNoiseLayer2; - vector<float> *mu_muid_TileCellSignLayer2; - vector<float> *mu_muid_TileCellEnergyLayer3; - vector<float> *mu_muid_TileTimeLayer3; - vector<float> *mu_muid_TileCellRmsNoiseLayer3; - vector<float> *mu_muid_TileCellSignLayer3; - vector<float> *mu_muid_MSTrkT0_1; - vector<float> *mu_muid_MSTrkT0_2; - vector<float> *mu_muid_MSTrkT0_3; - vector<float> *mu_muid_cov_d0_exPV; - vector<float> *mu_muid_cov_z0_exPV; - vector<float> *mu_muid_cov_phi_exPV; - vector<float> *mu_muid_cov_theta_exPV; - vector<float> *mu_muid_cov_qoverp_exPV; - vector<float> *mu_muid_cov_d0_z0_exPV; - vector<float> *mu_muid_cov_d0_phi_exPV; - vector<float> *mu_muid_cov_d0_theta_exPV; - vector<float> *mu_muid_cov_d0_qoverp_exPV; - vector<float> *mu_muid_cov_z0_phi_exPV; - vector<float> *mu_muid_cov_z0_theta_exPV; - vector<float> *mu_muid_cov_z0_qoverp_exPV; - vector<float> *mu_muid_cov_phi_theta_exPV; - vector<float> *mu_muid_cov_phi_qoverp_exPV; - vector<float> *mu_muid_cov_theta_qoverp_exPV; - vector<float> *mu_muid_id_cov_d0_exPV; - vector<float> *mu_muid_id_cov_z0_exPV; - vector<float> *mu_muid_id_cov_phi_exPV; - vector<float> *mu_muid_id_cov_theta_exPV; - vector<float> *mu_muid_id_cov_qoverp_exPV; - vector<float> *mu_muid_id_cov_d0_z0_exPV; - vector<float> *mu_muid_id_cov_d0_phi_exPV; - vector<float> *mu_muid_id_cov_d0_theta_exPV; - vector<float> *mu_muid_id_cov_d0_qoverp_exPV; - vector<float> *mu_muid_id_cov_z0_phi_exPV; - vector<float> *mu_muid_id_cov_z0_theta_exPV; - vector<float> *mu_muid_id_cov_z0_qoverp_exPV; - vector<float> *mu_muid_id_cov_phi_theta_exPV; - vector<float> *mu_muid_id_cov_phi_qoverp_exPV; - vector<float> *mu_muid_id_cov_theta_qoverp_exPV; - vector<float> *mu_muid_me_cov_d0_exPV; - vector<float> *mu_muid_me_cov_z0_exPV; - vector<float> *mu_muid_me_cov_phi_exPV; - vector<float> *mu_muid_me_cov_theta_exPV; - vector<float> *mu_muid_me_cov_qoverp_exPV; - vector<float> *mu_muid_me_cov_d0_z0_exPV; - vector<float> *mu_muid_me_cov_d0_phi_exPV; - vector<float> *mu_muid_me_cov_d0_theta_exPV; - vector<float> *mu_muid_me_cov_d0_qoverp_exPV; - vector<float> *mu_muid_me_cov_z0_phi_exPV; - vector<float> *mu_muid_me_cov_z0_theta_exPV; - vector<float> *mu_muid_me_cov_z0_qoverp_exPV; - vector<float> *mu_muid_me_cov_phi_theta_exPV; - vector<float> *mu_muid_me_cov_phi_qoverp_exPV; - vector<float> *mu_muid_me_cov_theta_qoverp_exPV; - vector<float> *mu_muid_ms_d0; - vector<float> *mu_muid_ms_z0; - vector<float> *mu_muid_ms_phi; - vector<float> *mu_muid_ms_theta; - vector<float> *mu_muid_ms_qoverp; - vector<float> *mu_muid_id_d0; - vector<float> *mu_muid_id_z0; - vector<float> *mu_muid_id_phi; - vector<float> *mu_muid_id_theta; - vector<float> *mu_muid_id_qoverp; - vector<float> *mu_muid_me_d0; - vector<float> *mu_muid_me_z0; - vector<float> *mu_muid_me_phi; - vector<float> *mu_muid_me_theta; - vector<float> *mu_muid_me_qoverp; - vector<float> *mu_muid_ie_d0; - vector<float> *mu_muid_ie_z0; - vector<float> *mu_muid_ie_phi; - vector<float> *mu_muid_ie_theta; - vector<float> *mu_muid_ie_qoverp; - vector<int> *mu_muid_nOutliersOnTrack; - vector<int> *mu_muid_nBLHits; - vector<int> *mu_muid_nPixHits; - vector<int> *mu_muid_nSCTHits; - vector<int> *mu_muid_nTRTHits; - vector<int> *mu_muid_nTRTHighTHits; - vector<int> *mu_muid_nBLSharedHits; - vector<int> *mu_muid_nPixSharedHits; - vector<int> *mu_muid_nPixHoles; - vector<int> *mu_muid_nSCTSharedHits; - vector<int> *mu_muid_nSCTHoles; - vector<int> *mu_muid_nTRTOutliers; - vector<int> *mu_muid_nTRTHighTOutliers; - vector<int> *mu_muid_nGangedPixels; - vector<int> *mu_muid_nPixelDeadSensors; - vector<int> *mu_muid_nSCTDeadSensors; - vector<int> *mu_muid_nTRTDeadStraws; - vector<int> *mu_muid_expectBLayerHit; - vector<int> *mu_muid_nMDTHits; - vector<int> *mu_muid_nMDTHoles; - vector<int> *mu_muid_nCSCEtaHits; - vector<int> *mu_muid_nCSCEtaHoles; - vector<int> *mu_muid_nCSCPhiHits; - vector<int> *mu_muid_nCSCPhiHoles; - vector<int> *mu_muid_nRPCEtaHits; - vector<int> *mu_muid_nRPCEtaHoles; - vector<int> *mu_muid_nRPCPhiHits; - vector<int> *mu_muid_nRPCPhiHoles; - vector<int> *mu_muid_nTGCEtaHits; - vector<int> *mu_muid_nTGCEtaHoles; - vector<int> *mu_muid_nTGCPhiHits; - vector<int> *mu_muid_nTGCPhiHoles; - vector<int> *mu_muid_nMDTBIHits; - vector<int> *mu_muid_nMDTBMHits; - vector<int> *mu_muid_nMDTBOHits; - vector<int> *mu_muid_nMDTBEEHits; - vector<int> *mu_muid_nMDTBIS78Hits; - vector<int> *mu_muid_nMDTEIHits; - vector<int> *mu_muid_nMDTEMHits; - vector<int> *mu_muid_nMDTEOHits; - vector<int> *mu_muid_nMDTEEHits; - vector<int> *mu_muid_nRPCLayer1EtaHits; - vector<int> *mu_muid_nRPCLayer2EtaHits; - vector<int> *mu_muid_nRPCLayer3EtaHits; - vector<int> *mu_muid_nRPCLayer1PhiHits; - vector<int> *mu_muid_nRPCLayer2PhiHits; - vector<int> *mu_muid_nRPCLayer3PhiHits; - vector<int> *mu_muid_nTGCLayer1EtaHits; - vector<int> *mu_muid_nTGCLayer2EtaHits; - vector<int> *mu_muid_nTGCLayer3EtaHits; - vector<int> *mu_muid_nTGCLayer4EtaHits; - vector<int> *mu_muid_nTGCLayer1PhiHits; - vector<int> *mu_muid_nTGCLayer2PhiHits; - vector<int> *mu_muid_nTGCLayer3PhiHits; - vector<int> *mu_muid_nTGCLayer4PhiHits; - vector<int> *mu_muid_barrelSectors; - vector<int> *mu_muid_endcapSectors; - vector<float> *mu_muid_trackd0; - vector<float> *mu_muid_trackz0; - vector<float> *mu_muid_trackphi; - vector<float> *mu_muid_tracktheta; - vector<float> *mu_muid_trackqoverp; - vector<float> *mu_muid_trackcov_d0; - vector<float> *mu_muid_trackcov_z0; - vector<float> *mu_muid_trackcov_phi; - vector<float> *mu_muid_trackcov_theta; - vector<float> *mu_muid_trackcov_qoverp; - vector<float> *mu_muid_trackcov_d0_z0; - vector<float> *mu_muid_trackcov_d0_phi; - vector<float> *mu_muid_trackcov_d0_theta; - vector<float> *mu_muid_trackcov_d0_qoverp; - vector<float> *mu_muid_trackcov_z0_phi; - vector<float> *mu_muid_trackcov_z0_theta; - vector<float> *mu_muid_trackcov_z0_qoverp; - vector<float> *mu_muid_trackcov_phi_theta; - vector<float> *mu_muid_trackcov_phi_qoverp; - vector<float> *mu_muid_trackcov_theta_qoverp; - vector<float> *mu_muid_trackfitchi2; - vector<int> *mu_muid_trackfitndof; - vector<int> *mu_muid_hastrack; - vector<float> *mu_muid_truth_dr; - vector<float> *mu_muid_truth_E; - vector<float> *mu_muid_truth_pt; - vector<float> *mu_muid_truth_eta; - vector<float> *mu_muid_truth_phi; - vector<int> *mu_muid_truth_type; - vector<int> *mu_muid_truth_status; - vector<int> *mu_muid_truth_barcode; - vector<int> *mu_muid_truth_mothertype; - vector<int> *mu_muid_truth_motherbarcode; - vector<int> *mu_muid_truth_matched; - vector<float> *mu_muid_EFCB_dr; - vector<int> *mu_muid_EFCB_index; - vector<float> *mu_muid_EFMG_dr; - vector<int> *mu_muid_EFMG_index; - vector<float> *mu_muid_EFME_dr; - vector<int> *mu_muid_EFME_index; - vector<float> *mu_muid_L2CB_dr; - vector<int> *mu_muid_L2CB_index; - vector<float> *mu_muid_L1_dr; - vector<int> *mu_muid_L1_index; - Int_t mu_staco_n; - vector<float> *mu_staco_E; - vector<float> *mu_staco_pt; - vector<float> *mu_staco_m; - vector<float> *mu_staco_eta; - vector<float> *mu_staco_phi; - vector<float> *mu_staco_px; - vector<float> *mu_staco_py; - vector<float> *mu_staco_pz; - vector<float> *mu_staco_charge; - vector<unsigned short> *mu_staco_allauthor; - vector<int> *mu_staco_author; - vector<float> *mu_staco_beta; - vector<float> *mu_staco_isMuonLikelihood; - vector<float> *mu_staco_matchchi2; - vector<int> *mu_staco_matchndof; - vector<float> *mu_staco_etcone20; - vector<float> *mu_staco_etcone30; - vector<float> *mu_staco_etcone40; - vector<float> *mu_staco_nucone20; - vector<float> *mu_staco_nucone30; - vector<float> *mu_staco_nucone40; - vector<float> *mu_staco_ptcone20; - vector<float> *mu_staco_ptcone30; - vector<float> *mu_staco_ptcone40; - vector<float> *mu_staco_energyLossPar; - vector<float> *mu_staco_energyLossErr; - vector<float> *mu_staco_etCore; - vector<float> *mu_staco_energyLossType; - vector<unsigned short> *mu_staco_caloMuonIdTag; - vector<double> *mu_staco_caloLRLikelihood; - vector<int> *mu_staco_bestMatch; - vector<int> *mu_staco_isStandAloneMuon; - vector<int> *mu_staco_isCombinedMuon; - vector<int> *mu_staco_isLowPtReconstructedMuon; - vector<int> *mu_staco_loose; - vector<int> *mu_staco_medium; - vector<int> *mu_staco_tight; - vector<float> *mu_staco_d0_exPV; - vector<float> *mu_staco_z0_exPV; - vector<float> *mu_staco_phi_exPV; - vector<float> *mu_staco_theta_exPV; - vector<float> *mu_staco_qoverp_exPV; - vector<float> *mu_staco_cb_d0_exPV; - vector<float> *mu_staco_cb_z0_exPV; - vector<float> *mu_staco_cb_phi_exPV; - vector<float> *mu_staco_cb_theta_exPV; - vector<float> *mu_staco_cb_qoverp_exPV; - vector<float> *mu_staco_id_d0_exPV; - vector<float> *mu_staco_id_z0_exPV; - vector<float> *mu_staco_id_phi_exPV; - vector<float> *mu_staco_id_theta_exPV; - vector<float> *mu_staco_id_qoverp_exPV; - vector<float> *mu_staco_me_d0_exPV; - vector<float> *mu_staco_me_z0_exPV; - vector<float> *mu_staco_me_phi_exPV; - vector<float> *mu_staco_me_theta_exPV; - vector<float> *mu_staco_me_qoverp_exPV; - vector<float> *mu_staco_ie_d0_exPV; - vector<float> *mu_staco_ie_z0_exPV; - vector<float> *mu_staco_ie_phi_exPV; - vector<float> *mu_staco_ie_theta_exPV; - vector<float> *mu_staco_ie_qoverp_exPV; - vector<vector<int> > *mu_staco_SpaceTime_detID; - vector<vector<float> > *mu_staco_SpaceTime_t; - vector<vector<float> > *mu_staco_SpaceTime_tError; - vector<vector<float> > *mu_staco_SpaceTime_weight; - vector<vector<float> > *mu_staco_SpaceTime_x; - vector<vector<float> > *mu_staco_SpaceTime_y; - vector<vector<float> > *mu_staco_SpaceTime_z; - vector<vector<float> > *mu_staco_SpaceTime_t_Tile; - vector<vector<float> > *mu_staco_SpaceTime_tError_Tile; - vector<vector<float> > *mu_staco_SpaceTime_weight_Tile; - vector<vector<float> > *mu_staco_SpaceTime_x_Tile; - vector<vector<float> > *mu_staco_SpaceTime_y_Tile; - vector<vector<float> > *mu_staco_SpaceTime_z_Tile; - vector<vector<float> > *mu_staco_SpaceTime_t_TRT; - vector<vector<float> > *mu_staco_SpaceTime_tError_TRT; - vector<vector<float> > *mu_staco_SpaceTime_weight_TRT; - vector<vector<float> > *mu_staco_SpaceTime_x_TRT; - vector<vector<float> > *mu_staco_SpaceTime_y_TRT; - vector<vector<float> > *mu_staco_SpaceTime_z_TRT; - vector<vector<float> > *mu_staco_SpaceTime_t_MDT; - vector<vector<float> > *mu_staco_SpaceTime_tError_MDT; - vector<vector<float> > *mu_staco_SpaceTime_weight_MDT; - vector<vector<float> > *mu_staco_SpaceTime_x_MDT; - vector<vector<float> > *mu_staco_SpaceTime_y_MDT; - vector<vector<float> > *mu_staco_SpaceTime_z_MDT; - vector<float> *mu_staco_TileCellEnergyLayer1; - vector<float> *mu_staco_TileTimeLayer1; - vector<float> *mu_staco_TileCellRmsNoiseLayer1; - vector<float> *mu_staco_TileCellSignLayer1; - vector<float> *mu_staco_TileCellEnergyLayer2; - vector<float> *mu_staco_TileTimeLayer2; - vector<float> *mu_staco_TileCellRmsNoiseLayer2; - vector<float> *mu_staco_TileCellSignLayer2; - vector<float> *mu_staco_TileCellEnergyLayer3; - vector<float> *mu_staco_TileTimeLayer3; - vector<float> *mu_staco_TileCellRmsNoiseLayer3; - vector<float> *mu_staco_TileCellSignLayer3; - vector<float> *mu_staco_MSTrkT0_1; - vector<float> *mu_staco_MSTrkT0_2; - vector<float> *mu_staco_MSTrkT0_3; - vector<float> *mu_staco_cov_d0_exPV; - vector<float> *mu_staco_cov_z0_exPV; - vector<float> *mu_staco_cov_phi_exPV; - vector<float> *mu_staco_cov_theta_exPV; - vector<float> *mu_staco_cov_qoverp_exPV; - vector<float> *mu_staco_cov_d0_z0_exPV; - vector<float> *mu_staco_cov_d0_phi_exPV; - vector<float> *mu_staco_cov_d0_theta_exPV; - vector<float> *mu_staco_cov_d0_qoverp_exPV; - vector<float> *mu_staco_cov_z0_phi_exPV; - vector<float> *mu_staco_cov_z0_theta_exPV; - vector<float> *mu_staco_cov_z0_qoverp_exPV; - vector<float> *mu_staco_cov_phi_theta_exPV; - vector<float> *mu_staco_cov_phi_qoverp_exPV; - vector<float> *mu_staco_cov_theta_qoverp_exPV; - vector<float> *mu_staco_id_cov_d0_exPV; - vector<float> *mu_staco_id_cov_z0_exPV; - vector<float> *mu_staco_id_cov_phi_exPV; - vector<float> *mu_staco_id_cov_theta_exPV; - vector<float> *mu_staco_id_cov_qoverp_exPV; - vector<float> *mu_staco_id_cov_d0_z0_exPV; - vector<float> *mu_staco_id_cov_d0_phi_exPV; - vector<float> *mu_staco_id_cov_d0_theta_exPV; - vector<float> *mu_staco_id_cov_d0_qoverp_exPV; - vector<float> *mu_staco_id_cov_z0_phi_exPV; - vector<float> *mu_staco_id_cov_z0_theta_exPV; - vector<float> *mu_staco_id_cov_z0_qoverp_exPV; - vector<float> *mu_staco_id_cov_phi_theta_exPV; - vector<float> *mu_staco_id_cov_phi_qoverp_exPV; - vector<float> *mu_staco_id_cov_theta_qoverp_exPV; - vector<float> *mu_staco_me_cov_d0_exPV; - vector<float> *mu_staco_me_cov_z0_exPV; - vector<float> *mu_staco_me_cov_phi_exPV; - vector<float> *mu_staco_me_cov_theta_exPV; - vector<float> *mu_staco_me_cov_qoverp_exPV; - vector<float> *mu_staco_me_cov_d0_z0_exPV; - vector<float> *mu_staco_me_cov_d0_phi_exPV; - vector<float> *mu_staco_me_cov_d0_theta_exPV; - vector<float> *mu_staco_me_cov_d0_qoverp_exPV; - vector<float> *mu_staco_me_cov_z0_phi_exPV; - vector<float> *mu_staco_me_cov_z0_theta_exPV; - vector<float> *mu_staco_me_cov_z0_qoverp_exPV; - vector<float> *mu_staco_me_cov_phi_theta_exPV; - vector<float> *mu_staco_me_cov_phi_qoverp_exPV; - vector<float> *mu_staco_me_cov_theta_qoverp_exPV; - vector<float> *mu_staco_ms_d0; - vector<float> *mu_staco_ms_z0; - vector<float> *mu_staco_ms_phi; - vector<float> *mu_staco_ms_theta; - vector<float> *mu_staco_ms_qoverp; - vector<float> *mu_staco_id_d0; - vector<float> *mu_staco_id_z0; - vector<float> *mu_staco_id_phi; - vector<float> *mu_staco_id_theta; - vector<float> *mu_staco_id_qoverp; - vector<float> *mu_staco_me_d0; - vector<float> *mu_staco_me_z0; - vector<float> *mu_staco_me_phi; - vector<float> *mu_staco_me_theta; - vector<float> *mu_staco_me_qoverp; - vector<float> *mu_staco_ie_d0; - vector<float> *mu_staco_ie_z0; - vector<float> *mu_staco_ie_phi; - vector<float> *mu_staco_ie_theta; - vector<float> *mu_staco_ie_qoverp; - vector<int> *mu_staco_nOutliersOnTrack; - vector<int> *mu_staco_nBLHits; - vector<int> *mu_staco_nPixHits; - vector<int> *mu_staco_nSCTHits; - vector<int> *mu_staco_nTRTHits; - vector<int> *mu_staco_nTRTHighTHits; - vector<int> *mu_staco_nBLSharedHits; - vector<int> *mu_staco_nPixSharedHits; - vector<int> *mu_staco_nPixHoles; - vector<int> *mu_staco_nSCTSharedHits; - vector<int> *mu_staco_nSCTHoles; - vector<int> *mu_staco_nTRTOutliers; - vector<int> *mu_staco_nTRTHighTOutliers; - vector<int> *mu_staco_nGangedPixels; - vector<int> *mu_staco_nPixelDeadSensors; - vector<int> *mu_staco_nSCTDeadSensors; - vector<int> *mu_staco_nTRTDeadStraws; - vector<int> *mu_staco_expectBLayerHit; - vector<int> *mu_staco_nMDTHits; - vector<int> *mu_staco_nMDTHoles; - vector<int> *mu_staco_nCSCEtaHits; - vector<int> *mu_staco_nCSCEtaHoles; - vector<int> *mu_staco_nCSCPhiHits; - vector<int> *mu_staco_nCSCPhiHoles; - vector<int> *mu_staco_nRPCEtaHits; - vector<int> *mu_staco_nRPCEtaHoles; - vector<int> *mu_staco_nRPCPhiHits; - vector<int> *mu_staco_nRPCPhiHoles; - vector<int> *mu_staco_nTGCEtaHits; - vector<int> *mu_staco_nTGCEtaHoles; - vector<int> *mu_staco_nTGCPhiHits; - vector<int> *mu_staco_nTGCPhiHoles; - vector<int> *mu_staco_nMDTBIHits; - vector<int> *mu_staco_nMDTBMHits; - vector<int> *mu_staco_nMDTBOHits; - vector<int> *mu_staco_nMDTBEEHits; - vector<int> *mu_staco_nMDTBIS78Hits; - vector<int> *mu_staco_nMDTEIHits; - vector<int> *mu_staco_nMDTEMHits; - vector<int> *mu_staco_nMDTEOHits; - vector<int> *mu_staco_nMDTEEHits; - vector<int> *mu_staco_nRPCLayer1EtaHits; - vector<int> *mu_staco_nRPCLayer2EtaHits; - vector<int> *mu_staco_nRPCLayer3EtaHits; - vector<int> *mu_staco_nRPCLayer1PhiHits; - vector<int> *mu_staco_nRPCLayer2PhiHits; - vector<int> *mu_staco_nRPCLayer3PhiHits; - vector<int> *mu_staco_nTGCLayer1EtaHits; - vector<int> *mu_staco_nTGCLayer2EtaHits; - vector<int> *mu_staco_nTGCLayer3EtaHits; - vector<int> *mu_staco_nTGCLayer4EtaHits; - vector<int> *mu_staco_nTGCLayer1PhiHits; - vector<int> *mu_staco_nTGCLayer2PhiHits; - vector<int> *mu_staco_nTGCLayer3PhiHits; - vector<int> *mu_staco_nTGCLayer4PhiHits; - vector<int> *mu_staco_barrelSectors; - vector<int> *mu_staco_endcapSectors; - vector<float> *mu_staco_trackd0; - vector<float> *mu_staco_trackz0; - vector<float> *mu_staco_trackphi; - vector<float> *mu_staco_tracktheta; - vector<float> *mu_staco_trackqoverp; - vector<float> *mu_staco_trackcov_d0; - vector<float> *mu_staco_trackcov_z0; - vector<float> *mu_staco_trackcov_phi; - vector<float> *mu_staco_trackcov_theta; - vector<float> *mu_staco_trackcov_qoverp; - vector<float> *mu_staco_trackcov_d0_z0; - vector<float> *mu_staco_trackcov_d0_phi; - vector<float> *mu_staco_trackcov_d0_theta; - vector<float> *mu_staco_trackcov_d0_qoverp; - vector<float> *mu_staco_trackcov_z0_phi; - vector<float> *mu_staco_trackcov_z0_theta; - vector<float> *mu_staco_trackcov_z0_qoverp; - vector<float> *mu_staco_trackcov_phi_theta; - vector<float> *mu_staco_trackcov_phi_qoverp; - vector<float> *mu_staco_trackcov_theta_qoverp; - vector<float> *mu_staco_trackfitchi2; - vector<int> *mu_staco_trackfitndof; - vector<int> *mu_staco_hastrack; - vector<float> *mu_staco_truth_dr; - vector<float> *mu_staco_truth_E; - vector<float> *mu_staco_truth_pt; - vector<float> *mu_staco_truth_eta; - vector<float> *mu_staco_truth_phi; - vector<int> *mu_staco_truth_type; - vector<int> *mu_staco_truth_status; - vector<int> *mu_staco_truth_barcode; - vector<int> *mu_staco_truth_mothertype; - vector<int> *mu_staco_truth_motherbarcode; - vector<int> *mu_staco_truth_matched; - vector<float> *mu_staco_EFCB_dr; - vector<int> *mu_staco_EFCB_index; - vector<float> *mu_staco_EFMG_dr; - vector<int> *mu_staco_EFMG_index; - vector<float> *mu_staco_EFME_dr; - vector<int> *mu_staco_EFME_index; - vector<float> *mu_staco_L2CB_dr; - vector<int> *mu_staco_L2CB_index; - vector<float> *mu_staco_L1_dr; - vector<int> *mu_staco_L1_index; - Int_t mu_calo_n; - vector<float> *mu_calo_E; - vector<float> *mu_calo_pt; - vector<float> *mu_calo_m; - vector<float> *mu_calo_eta; - vector<float> *mu_calo_phi; - vector<float> *mu_calo_px; - vector<float> *mu_calo_py; - vector<float> *mu_calo_pz; - vector<float> *mu_calo_charge; - vector<unsigned short> *mu_calo_allauthor; - vector<int> *mu_calo_hastrack; - vector<float> *mu_calo_truth_dr; - vector<float> *mu_calo_truth_E; - vector<float> *mu_calo_truth_pt; - vector<float> *mu_calo_truth_eta; - vector<float> *mu_calo_truth_phi; - vector<int> *mu_calo_truth_type; - vector<int> *mu_calo_truth_status; - vector<int> *mu_calo_truth_barcode; - vector<int> *mu_calo_truth_mothertype; - vector<int> *mu_calo_truth_motherbarcode; - vector<int> *mu_calo_truth_matched; - Int_t jet_akt4topoem_n; - vector<float> *jet_akt4topoem_E; - vector<float> *jet_akt4topoem_pt; - vector<float> *jet_akt4topoem_m; - vector<float> *jet_akt4topoem_eta; - vector<float> *jet_akt4topoem_phi; - vector<float> *jet_akt4topoem_EtaOrigin; - vector<float> *jet_akt4topoem_PhiOrigin; - vector<float> *jet_akt4topoem_MOrigin; - vector<float> *jet_akt4topoem_EtaOriginEM; - vector<float> *jet_akt4topoem_PhiOriginEM; - vector<float> *jet_akt4topoem_MOriginEM; - vector<float> *jet_akt4topoem_WIDTH; - vector<float> *jet_akt4topoem_n90; - vector<float> *jet_akt4topoem_Timing; - vector<float> *jet_akt4topoem_LArQuality; - vector<float> *jet_akt4topoem_nTrk; - vector<float> *jet_akt4topoem_sumPtTrk; - vector<float> *jet_akt4topoem_OriginIndex; - vector<float> *jet_akt4topoem_HECQuality; - vector<float> *jet_akt4topoem_NegativeE; - vector<float> *jet_akt4topoem_YFlip12; - vector<float> *jet_akt4topoem_YFlip23; - vector<float> *jet_akt4topoem_BCH_CORR_CELL; - vector<float> *jet_akt4topoem_BCH_CORR_DOTX; - vector<float> *jet_akt4topoem_BCH_CORR_JET; - vector<float> *jet_akt4topoem_BCH_CORR_JET_FORCELL; - vector<float> *jet_akt4topoem_ENG_BAD_CELLS; - vector<float> *jet_akt4topoem_N_BAD_CELLS; - vector<float> *jet_akt4topoem_N_BAD_CELLS_CORR; - vector<float> *jet_akt4topoem_BAD_CELLS_CORR_E; - vector<float> *jet_akt4topoem_NumTowers; - vector<int> *jet_akt4topoem_SamplingMax; - vector<float> *jet_akt4topoem_fracSamplingMax; - vector<float> *jet_akt4topoem_hecf; - vector<float> *jet_akt4topoem_tgap3f; - vector<int> *jet_akt4topoem_isUgly; - vector<int> *jet_akt4topoem_isBadLoose; - vector<int> *jet_akt4topoem_isBadMedium; - vector<int> *jet_akt4topoem_isBadTight; - vector<float> *jet_akt4topoem_emfrac; - vector<float> *jet_akt4topoem_Offset; - vector<float> *jet_akt4topoem_EMJES; - vector<float> *jet_akt4topoem_EMJES_EtaCorr; - vector<float> *jet_akt4topoem_EMJESnooffset; - vector<float> *jet_akt4topoem_GCWJES; - vector<float> *jet_akt4topoem_GCWJES_EtaCorr; - vector<float> *jet_akt4topoem_CB; - vector<float> *jet_akt4topoem_emscale_E; - vector<float> *jet_akt4topoem_emscale_pt; - vector<float> *jet_akt4topoem_emscale_m; - vector<float> *jet_akt4topoem_emscale_eta; - vector<float> *jet_akt4topoem_emscale_phi; - vector<float> *jet_akt4topoem_jvtxf; - vector<float> *jet_akt4topoem_jvtx_x; - vector<float> *jet_akt4topoem_jvtx_y; - vector<float> *jet_akt4topoem_jvtx_z; - vector<float> *jet_akt4topoem_GSCFactorF; - vector<float> *jet_akt4topoem_WidthFraction; - vector<double> *jet_akt4topoem_flavor_component_ip2d_pu; - vector<double> *jet_akt4topoem_flavor_component_ip2d_pb; - vector<double> *jet_akt4topoem_flavor_component_ip2d_ntrk; - vector<double> *jet_akt4topoem_flavor_component_ip3d_pu; - vector<double> *jet_akt4topoem_flavor_component_ip3d_pb; - vector<double> *jet_akt4topoem_flavor_component_ip3d_ntrk; - vector<double> *jet_akt4topoem_flavor_component_sv1_pu; - vector<double> *jet_akt4topoem_flavor_component_sv1_pb; - vector<double> *jet_akt4topoem_flavor_component_sv2_pu; - vector<double> *jet_akt4topoem_flavor_component_sv2_pb; - vector<double> *jet_akt4topoem_flavor_component_svp_mass; - vector<double> *jet_akt4topoem_flavor_component_svp_n2t; - vector<double> *jet_akt4topoem_flavor_component_svp_svok; - vector<double> *jet_akt4topoem_flavor_component_svp_ntrk; - vector<double> *jet_akt4topoem_flavor_component_svp_ntrkv; - vector<double> *jet_akt4topoem_flavor_component_svp_ntrkj; - vector<double> *jet_akt4topoem_flavor_component_svp_efrc; - vector<double> *jet_akt4topoem_flavor_component_sv0p_mass; - vector<double> *jet_akt4topoem_flavor_component_sv0p_n2t; - vector<double> *jet_akt4topoem_flavor_component_sv0p_svok; - vector<double> *jet_akt4topoem_flavor_component_sv0p_ntrk; - vector<double> *jet_akt4topoem_flavor_component_sv0p_ntrkv; - vector<double> *jet_akt4topoem_flavor_component_sv0p_ntrkj; - vector<double> *jet_akt4topoem_flavor_component_sv0p_efrc; - vector<double> *jet_akt4topoem_flavor_component_jfit_pu; - vector<double> *jet_akt4topoem_flavor_component_jfit_pb; - vector<double> *jet_akt4topoem_flavor_component_jfit_nvtxnt; - vector<double> *jet_akt4topoem_flavor_component_jfit_nvtx1t; - vector<double> *jet_akt4topoem_flavor_component_jfit_ntrk; - vector<double> *jet_akt4topoem_flavor_component_jfit_efrc; - vector<double> *jet_akt4topoem_flavor_component_jfit_mass; - vector<double> *jet_akt4topoem_flavor_component_jfit_sig3d; - vector<double> *jet_akt4topoem_flavor_weight_TrackCounting2D; - vector<double> *jet_akt4topoem_flavor_weight_JetProb; - vector<double> *jet_akt4topoem_flavor_weight_IP1D; - vector<double> *jet_akt4topoem_flavor_weight_IP2D; - vector<double> *jet_akt4topoem_flavor_weight_IP3D; - vector<double> *jet_akt4topoem_flavor_weight_SV0; - vector<double> *jet_akt4topoem_flavor_weight_SV1; - vector<double> *jet_akt4topoem_flavor_weight_SV2; - vector<double> *jet_akt4topoem_flavor_weight_JetFitterTag; - vector<double> *jet_akt4topoem_flavor_weight_JetFitterCOMB; - vector<double> *jet_akt4topoem_flavor_weight_JetFitterTagNN; - vector<double> *jet_akt4topoem_flavor_weight_JetFitterCOMBNN; - vector<double> *jet_akt4topoem_flavor_weight_SoftMuonTag; - vector<double> *jet_akt4topoem_flavor_weight_SoftElectronTag; - vector<double> *jet_akt4topoem_flavor_weight_IP3DSV1; - vector<double> *jet_akt4topoem_flavor_truth_dRminToB; - vector<double> *jet_akt4topoem_flavor_truth_dRminToC; - vector<double> *jet_akt4topoem_flavor_truth_dRminToT; - vector<int> *jet_akt4topoem_flavor_truth_BHadronpdg; - vector<int> *jet_akt4topoem_flavor_truth_trueflav; - vector<float> *jet_akt4topoem_el_dr; - vector<int> *jet_akt4topoem_el_matched; - vector<float> *jet_akt4topoem_mu_dr; - vector<int> *jet_akt4topoem_mu_matched; - vector<float> *jet_akt4topoem_L1_dr; - vector<int> *jet_akt4topoem_L1_matched; - vector<float> *jet_akt4topoem_L2_dr; - vector<int> *jet_akt4topoem_L2_matched; - vector<float> *jet_akt4topoem_EF_dr; - vector<int> *jet_akt4topoem_EF_matched; - Int_t jet_akt6topoem_n; - vector<float> *jet_akt6topoem_E; - vector<float> *jet_akt6topoem_pt; - vector<float> *jet_akt6topoem_m; - vector<float> *jet_akt6topoem_eta; - vector<float> *jet_akt6topoem_phi; - vector<float> *jet_akt6topoem_EtaOrigin; - vector<float> *jet_akt6topoem_PhiOrigin; - vector<float> *jet_akt6topoem_MOrigin; - vector<float> *jet_akt6topoem_EtaOriginEM; - vector<float> *jet_akt6topoem_PhiOriginEM; - vector<float> *jet_akt6topoem_MOriginEM; - vector<float> *jet_akt6topoem_WIDTH; - vector<float> *jet_akt6topoem_n90; - vector<float> *jet_akt6topoem_Timing; - vector<float> *jet_akt6topoem_LArQuality; - vector<float> *jet_akt6topoem_nTrk; - vector<float> *jet_akt6topoem_sumPtTrk; - vector<float> *jet_akt6topoem_OriginIndex; - vector<float> *jet_akt6topoem_HECQuality; - vector<float> *jet_akt6topoem_NegativeE; - vector<float> *jet_akt6topoem_YFlip12; - vector<float> *jet_akt6topoem_YFlip23; - vector<float> *jet_akt6topoem_BCH_CORR_CELL; - vector<float> *jet_akt6topoem_BCH_CORR_DOTX; - vector<float> *jet_akt6topoem_BCH_CORR_JET; - vector<float> *jet_akt6topoem_BCH_CORR_JET_FORCELL; - vector<float> *jet_akt6topoem_ENG_BAD_CELLS; - vector<float> *jet_akt6topoem_N_BAD_CELLS; - vector<float> *jet_akt6topoem_N_BAD_CELLS_CORR; - vector<float> *jet_akt6topoem_BAD_CELLS_CORR_E; - vector<float> *jet_akt6topoem_NumTowers; - vector<int> *jet_akt6topoem_SamplingMax; - vector<float> *jet_akt6topoem_fracSamplingMax; - vector<float> *jet_akt6topoem_hecf; - vector<float> *jet_akt6topoem_tgap3f; - vector<int> *jet_akt6topoem_isUgly; - vector<int> *jet_akt6topoem_isBadLoose; - vector<int> *jet_akt6topoem_isBadMedium; - vector<int> *jet_akt6topoem_isBadTight; - vector<float> *jet_akt6topoem_emfrac; - vector<float> *jet_akt6topoem_Offset; - vector<float> *jet_akt6topoem_EMJES; - vector<float> *jet_akt6topoem_EMJES_EtaCorr; - vector<float> *jet_akt6topoem_EMJESnooffset; - vector<float> *jet_akt6topoem_GCWJES; - vector<float> *jet_akt6topoem_GCWJES_EtaCorr; - vector<float> *jet_akt6topoem_CB; - vector<float> *jet_akt6topoem_emscale_E; - vector<float> *jet_akt6topoem_emscale_pt; - vector<float> *jet_akt6topoem_emscale_m; - vector<float> *jet_akt6topoem_emscale_eta; - vector<float> *jet_akt6topoem_emscale_phi; - vector<float> *jet_akt6topoem_jvtxf; - vector<float> *jet_akt6topoem_jvtx_x; - vector<float> *jet_akt6topoem_jvtx_y; - vector<float> *jet_akt6topoem_jvtx_z; - vector<float> *jet_akt6topoem_GSCFactorF; - vector<float> *jet_akt6topoem_WidthFraction; - vector<double> *jet_akt6topoem_flavor_component_ip2d_pu; - vector<double> *jet_akt6topoem_flavor_component_ip2d_pb; - vector<double> *jet_akt6topoem_flavor_component_ip2d_ntrk; - vector<double> *jet_akt6topoem_flavor_component_ip3d_pu; - vector<double> *jet_akt6topoem_flavor_component_ip3d_pb; - vector<double> *jet_akt6topoem_flavor_component_ip3d_ntrk; - vector<double> *jet_akt6topoem_flavor_component_sv1_pu; - vector<double> *jet_akt6topoem_flavor_component_sv1_pb; - vector<double> *jet_akt6topoem_flavor_component_sv2_pu; - vector<double> *jet_akt6topoem_flavor_component_sv2_pb; - vector<double> *jet_akt6topoem_flavor_component_svp_mass; - vector<double> *jet_akt6topoem_flavor_component_svp_n2t; - vector<double> *jet_akt6topoem_flavor_component_svp_svok; - vector<double> *jet_akt6topoem_flavor_component_svp_ntrk; - vector<double> *jet_akt6topoem_flavor_component_svp_ntrkv; - vector<double> *jet_akt6topoem_flavor_component_svp_ntrkj; - vector<double> *jet_akt6topoem_flavor_component_svp_efrc; - vector<double> *jet_akt6topoem_flavor_component_sv0p_mass; - vector<double> *jet_akt6topoem_flavor_component_sv0p_n2t; - vector<double> *jet_akt6topoem_flavor_component_sv0p_svok; - vector<double> *jet_akt6topoem_flavor_component_sv0p_ntrk; - vector<double> *jet_akt6topoem_flavor_component_sv0p_ntrkv; - vector<double> *jet_akt6topoem_flavor_component_sv0p_ntrkj; - vector<double> *jet_akt6topoem_flavor_component_sv0p_efrc; - vector<double> *jet_akt6topoem_flavor_component_jfit_pu; - vector<double> *jet_akt6topoem_flavor_component_jfit_pb; - vector<double> *jet_akt6topoem_flavor_component_jfit_nvtxnt; - vector<double> *jet_akt6topoem_flavor_component_jfit_nvtx1t; - vector<double> *jet_akt6topoem_flavor_component_jfit_ntrk; - vector<double> *jet_akt6topoem_flavor_component_jfit_efrc; - vector<double> *jet_akt6topoem_flavor_component_jfit_mass; - vector<double> *jet_akt6topoem_flavor_component_jfit_sig3d; - vector<double> *jet_akt6topoem_flavor_weight_TrackCounting2D; - vector<double> *jet_akt6topoem_flavor_weight_JetProb; - vector<double> *jet_akt6topoem_flavor_weight_IP1D; - vector<double> *jet_akt6topoem_flavor_weight_IP2D; - vector<double> *jet_akt6topoem_flavor_weight_IP3D; - vector<double> *jet_akt6topoem_flavor_weight_SV0; - vector<double> *jet_akt6topoem_flavor_weight_SV1; - vector<double> *jet_akt6topoem_flavor_weight_SV2; - vector<double> *jet_akt6topoem_flavor_weight_JetFitterTag; - vector<double> *jet_akt6topoem_flavor_weight_JetFitterCOMB; - vector<double> *jet_akt6topoem_flavor_weight_JetFitterTagNN; - vector<double> *jet_akt6topoem_flavor_weight_JetFitterCOMBNN; - vector<double> *jet_akt6topoem_flavor_weight_SoftMuonTag; - vector<double> *jet_akt6topoem_flavor_weight_SoftElectronTag; - vector<double> *jet_akt6topoem_flavor_weight_IP3DSV1; - vector<double> *jet_akt6topoem_flavor_truth_dRminToB; - vector<double> *jet_akt6topoem_flavor_truth_dRminToC; - vector<double> *jet_akt6topoem_flavor_truth_dRminToT; - vector<int> *jet_akt6topoem_flavor_truth_BHadronpdg; - vector<int> *jet_akt6topoem_flavor_truth_trueflav; - vector<float> *jet_akt6topoem_el_dr; - vector<int> *jet_akt6topoem_el_matched; - vector<float> *jet_akt6topoem_mu_dr; - vector<int> *jet_akt6topoem_mu_matched; - vector<float> *jet_akt6topoem_L1_dr; - vector<int> *jet_akt6topoem_L1_matched; - vector<float> *jet_akt6topoem_L2_dr; - vector<int> *jet_akt6topoem_L2_matched; - vector<float> *jet_akt6topoem_EF_dr; - vector<int> *jet_akt6topoem_EF_matched; - Int_t top_hfor_type; - Float_t MET_RefFinal_phi; - Float_t MET_RefFinal_et; - Float_t MET_RefFinal_sumet; - Float_t MET_Cryo_phi; - Float_t MET_Cryo_et; - Float_t MET_Cryo_sumet; - Float_t MET_RefEle_phi; - Float_t MET_RefEle_et; - Float_t MET_RefEle_sumet; - Float_t MET_RefJet_phi; - Float_t MET_RefJet_et; - Float_t MET_RefJet_sumet; - Float_t MET_SoftJets_phi; - Float_t MET_SoftJets_et; - Float_t MET_SoftJets_sumet; - Float_t MET_RefMuon_phi; - Float_t MET_RefMuon_et; - Float_t MET_RefMuon_sumet; - Float_t MET_RefMuon_Staco_phi; - Float_t MET_RefMuon_Staco_et; - Float_t MET_RefMuon_Staco_sumet; - Float_t MET_RefMuon_Muid_phi; - Float_t MET_RefMuon_Muid_et; - Float_t MET_RefMuon_Muid_sumet; - Float_t MET_RefGamma_phi; - Float_t MET_RefGamma_et; - Float_t MET_RefGamma_sumet; - Float_t MET_RefTau_phi; - Float_t MET_RefTau_et; - Float_t MET_RefTau_sumet; - Float_t MET_CellOut_phi; - Float_t MET_CellOut_et; - Float_t MET_CellOut_sumet; - Float_t MET_Track_phi; - Float_t MET_Track_et; - Float_t MET_Track_sumet; - Float_t MET_RefFinal_em_etx; - Float_t MET_RefFinal_em_ety; - Float_t MET_RefFinal_em_phi; - Float_t MET_RefFinal_em_et; - Float_t MET_RefFinal_em_sumet; - Float_t MET_RefEle_em_phi; - Float_t MET_RefEle_em_et; - Float_t MET_RefEle_em_sumet; - Float_t MET_RefJet_em_phi; - Float_t MET_RefJet_em_et; - Float_t MET_RefJet_em_sumet; - Float_t MET_SoftJets_em_phi; - Float_t MET_SoftJets_em_et; - Float_t MET_SoftJets_em_sumet; - Float_t MET_RefMuon_em_phi; - Float_t MET_RefMuon_em_et; - Float_t MET_RefMuon_em_sumet; - Float_t MET_RefMuon_Track_em_phi; - Float_t MET_RefMuon_Track_em_et; - Float_t MET_RefMuon_Track_em_sumet; - Float_t MET_RefGamma_em_phi; - Float_t MET_RefGamma_em_et; - Float_t MET_RefGamma_em_sumet; - Float_t MET_RefTau_em_phi; - Float_t MET_RefTau_em_et; - Float_t MET_RefTau_em_sumet; - Float_t MET_CellOut_em_etx; - Float_t MET_CellOut_em_ety; - Float_t MET_CellOut_em_phi; - Float_t MET_CellOut_em_et; - Float_t MET_CellOut_em_sumet; - Float_t MET_Muon_Isol_Staco_phi; - Float_t MET_Muon_Isol_Staco_et; - Float_t MET_Muon_Isol_Staco_sumet; - Float_t MET_Muon_NonIsol_Staco_phi; - Float_t MET_Muon_NonIsol_Staco_et; - Float_t MET_Muon_NonIsol_Staco_sumet; - Float_t MET_Muon_Total_Staco_phi; - Float_t MET_Muon_Total_Staco_et; - Float_t MET_Muon_Total_Staco_sumet; - Float_t MET_Muon_Isol_Muid_phi; - Float_t MET_Muon_Isol_Muid_et; - Float_t MET_Muon_Isol_Muid_sumet; - Float_t MET_Muon_NonIsol_Muid_phi; - Float_t MET_Muon_NonIsol_Muid_et; - Float_t MET_Muon_NonIsol_Muid_sumet; - Float_t MET_Muon_Total_Muid_phi; - Float_t MET_Muon_Total_Muid_et; - Float_t MET_Muon_Total_Muid_sumet; - Float_t MET_MuonBoy_phi; - Float_t MET_MuonBoy_et; - Float_t MET_MuonBoy_sumet; - Float_t MET_RefMuon_Track_phi; - Float_t MET_RefMuon_Track_et; - Float_t MET_RefMuon_Track_sumet; - Float_t MET_RefMuon_Track_Staco_phi; - Float_t MET_RefMuon_Track_Staco_et; - Float_t MET_RefMuon_Track_Staco_sumet; - Float_t MET_RefMuon_Track_Muid_phi; - Float_t MET_RefMuon_Track_Muid_et; - Float_t MET_RefMuon_Track_Muid_sumet; - Float_t MET_CryoCone_phi; - Float_t MET_CryoCone_et; - Float_t MET_CryoCone_sumet; - Float_t MET_Final_phi; - Float_t MET_Final_et; - Float_t MET_Final_sumet; - Float_t MET_MuonBoy_Spectro_phi; - Float_t MET_MuonBoy_Spectro_et; - Float_t MET_MuonBoy_Spectro_sumet; - Float_t MET_MuonBoy_Track_phi; - Float_t MET_MuonBoy_Track_et; - Float_t MET_MuonBoy_Track_sumet; - Float_t MET_MuonMuid_phi; - Float_t MET_MuonMuid_et; - Float_t MET_MuonMuid_sumet; - Float_t MET_Muid_phi; - Float_t MET_Muid_et; - Float_t MET_Muid_sumet; - Float_t MET_Muid_Spectro_phi; - Float_t MET_Muid_Spectro_et; - Float_t MET_Muid_Spectro_sumet; - Float_t MET_Muid_Track_phi; - Float_t MET_Muid_Track_et; - Float_t MET_Muid_Track_sumet; - Float_t MET_Muon_phi; - Float_t MET_Muon_et; - Float_t MET_Muon_sumet; - Float_t MET_TopoObj_phi; - Float_t MET_TopoObj_et; - Float_t MET_TopoObj_sumet; - Float_t MET_LocHadTopoObj_phi; - Float_t MET_LocHadTopoObj_et; - Float_t MET_LocHadTopoObj_sumet; - Float_t MET_Topo_phi; - Float_t MET_Topo_et; - Float_t MET_Topo_sumet; - Float_t MET_Topo_SUMET_EMFrac; - Float_t MET_Topo_etx_PEMB; - Float_t MET_Topo_ety_PEMB; - Float_t MET_Topo_sumet_PEMB; - Float_t MET_Topo_phi_PEMB; - Float_t MET_Topo_etx_EMB; - Float_t MET_Topo_ety_EMB; - Float_t MET_Topo_sumet_EMB; - Float_t MET_Topo_phi_EMB; - Float_t MET_Topo_etx_PEMEC; - Float_t MET_Topo_ety_PEMEC; - Float_t MET_Topo_sumet_PEMEC; - Float_t MET_Topo_phi_PEMEC; - Float_t MET_Topo_etx_EME; - Float_t MET_Topo_ety_EME; - Float_t MET_Topo_sumet_EME; - Float_t MET_Topo_phi_EME; - Float_t MET_Topo_etx_TILE; - Float_t MET_Topo_ety_TILE; - Float_t MET_Topo_sumet_TILE; - Float_t MET_Topo_phi_TILE; - Float_t MET_Topo_etx_HEC; - Float_t MET_Topo_ety_HEC; - Float_t MET_Topo_sumet_HEC; - Float_t MET_Topo_phi_HEC; - Float_t MET_Topo_etx_FCAL; - Float_t MET_Topo_ety_FCAL; - Float_t MET_Topo_sumet_FCAL; - Float_t MET_Topo_phi_FCAL; - Float_t MET_Topo_nCell_PEMB; - Float_t MET_Topo_nCell_EMB; - Float_t MET_Topo_nCell_PEMEC; - Float_t MET_Topo_nCell_EME; - Float_t MET_Topo_nCell_TILE; - Float_t MET_Topo_nCell_HEC; - Float_t MET_Topo_nCell_FCAL; - Float_t MET_Topo_etx_CentralReg; - Float_t MET_Topo_ety_CentralReg; - Float_t MET_Topo_sumet_CentralReg; - Float_t MET_Topo_phi_CentralReg; - Float_t MET_Topo_etx_EndcapRegion; - Float_t MET_Topo_ety_EndcapRegion; - Float_t MET_Topo_sumet_EndcapRegion; - Float_t MET_Topo_phi_EndcapRegion; - Float_t MET_Topo_etx_ForwardReg; - Float_t MET_Topo_ety_ForwardReg; - Float_t MET_Topo_sumet_ForwardReg; - Float_t MET_Topo_phi_ForwardReg; - Float_t MET_CorrTopo_phi; - Float_t MET_CorrTopo_et; - Float_t MET_CorrTopo_sumet; - Float_t MET_CorrTopo_SUMET_EMFrac; - Float_t MET_CorrTopo_etx_PEMB; - Float_t MET_CorrTopo_ety_PEMB; - Float_t MET_CorrTopo_sumet_PEMB; - Float_t MET_CorrTopo_phi_PEMB; - Float_t MET_CorrTopo_etx_EMB; - Float_t MET_CorrTopo_ety_EMB; - Float_t MET_CorrTopo_sumet_EMB; - Float_t MET_CorrTopo_phi_EMB; - Float_t MET_CorrTopo_etx_PEMEC; - Float_t MET_CorrTopo_ety_PEMEC; - Float_t MET_CorrTopo_sumet_PEMEC; - Float_t MET_CorrTopo_phi_PEMEC; - Float_t MET_CorrTopo_etx_EME; - Float_t MET_CorrTopo_ety_EME; - Float_t MET_CorrTopo_sumet_EME; - Float_t MET_CorrTopo_phi_EME; - Float_t MET_CorrTopo_etx_TILE; - Float_t MET_CorrTopo_ety_TILE; - Float_t MET_CorrTopo_sumet_TILE; - Float_t MET_CorrTopo_phi_TILE; - Float_t MET_CorrTopo_etx_HEC; - Float_t MET_CorrTopo_ety_HEC; - Float_t MET_CorrTopo_sumet_HEC; - Float_t MET_CorrTopo_phi_HEC; - Float_t MET_CorrTopo_etx_FCAL; - Float_t MET_CorrTopo_ety_FCAL; - Float_t MET_CorrTopo_sumet_FCAL; - Float_t MET_CorrTopo_phi_FCAL; - Float_t MET_CorrTopo_nCell_PEMB; - Float_t MET_CorrTopo_nCell_EMB; - Float_t MET_CorrTopo_nCell_PEMEC; - Float_t MET_CorrTopo_nCell_EME; - Float_t MET_CorrTopo_nCell_TILE; - Float_t MET_CorrTopo_nCell_HEC; - Float_t MET_CorrTopo_nCell_FCAL; - Float_t MET_CorrTopo_etx_CentralReg; - Float_t MET_CorrTopo_ety_CentralReg; - Float_t MET_CorrTopo_sumet_CentralReg; - Float_t MET_CorrTopo_phi_CentralReg; - Float_t MET_CorrTopo_etx_EndcapRegion; - Float_t MET_CorrTopo_ety_EndcapRegion; - Float_t MET_CorrTopo_sumet_EndcapRegion; - Float_t MET_CorrTopo_phi_EndcapRegion; - Float_t MET_CorrTopo_etx_ForwardReg; - Float_t MET_CorrTopo_ety_ForwardReg; - Float_t MET_CorrTopo_sumet_ForwardReg; - Float_t MET_CorrTopo_phi_ForwardReg; - Float_t MET_LocHadTopo_phi; - Float_t MET_LocHadTopo_et; - Float_t MET_LocHadTopo_sumet; - Float_t MET_LocHadTopo_SUMET_EMFrac; - Float_t MET_LocHadTopo_etx_PEMB; - Float_t MET_LocHadTopo_ety_PEMB; - Float_t MET_LocHadTopo_sumet_PEMB; - Float_t MET_LocHadTopo_phi_PEMB; - Float_t MET_LocHadTopo_etx_EMB; - Float_t MET_LocHadTopo_ety_EMB; - Float_t MET_LocHadTopo_sumet_EMB; - Float_t MET_LocHadTopo_phi_EMB; - Float_t MET_LocHadTopo_etx_PEMEC; - Float_t MET_LocHadTopo_ety_PEMEC; - Float_t MET_LocHadTopo_sumet_PEMEC; - Float_t MET_LocHadTopo_phi_PEMEC; - Float_t MET_LocHadTopo_etx_EME; - Float_t MET_LocHadTopo_ety_EME; - Float_t MET_LocHadTopo_sumet_EME; - Float_t MET_LocHadTopo_phi_EME; - Float_t MET_LocHadTopo_etx_TILE; - Float_t MET_LocHadTopo_ety_TILE; - Float_t MET_LocHadTopo_sumet_TILE; - Float_t MET_LocHadTopo_phi_TILE; - Float_t MET_LocHadTopo_etx_HEC; - Float_t MET_LocHadTopo_ety_HEC; - Float_t MET_LocHadTopo_sumet_HEC; - Float_t MET_LocHadTopo_phi_HEC; - Float_t MET_LocHadTopo_etx_FCAL; - Float_t MET_LocHadTopo_ety_FCAL; - Float_t MET_LocHadTopo_sumet_FCAL; - Float_t MET_LocHadTopo_phi_FCAL; - Float_t MET_LocHadTopo_nCell_PEMB; - Float_t MET_LocHadTopo_nCell_EMB; - Float_t MET_LocHadTopo_nCell_PEMEC; - Float_t MET_LocHadTopo_nCell_EME; - Float_t MET_LocHadTopo_nCell_TILE; - Float_t MET_LocHadTopo_nCell_HEC; - Float_t MET_LocHadTopo_nCell_FCAL; - Float_t MET_LocHadTopo_etx_CentralReg; - Float_t MET_LocHadTopo_ety_CentralReg; - Float_t MET_LocHadTopo_sumet_CentralReg; - Float_t MET_LocHadTopo_phi_CentralReg; - Float_t MET_LocHadTopo_etx_EndcapRegion; - Float_t MET_LocHadTopo_ety_EndcapRegion; - Float_t MET_LocHadTopo_sumet_EndcapRegion; - Float_t MET_LocHadTopo_phi_EndcapRegion; - Float_t MET_LocHadTopo_etx_ForwardReg; - Float_t MET_LocHadTopo_ety_ForwardReg; - Float_t MET_LocHadTopo_sumet_ForwardReg; - Float_t MET_LocHadTopo_phi_ForwardReg; - Float_t MET_Calib_phi; - Float_t MET_Calib_et; - Float_t MET_Calib_sumet; - Float_t MET_Calib_SUMET_EMFrac; - Float_t MET_Calib_etx_PEMB; - Float_t MET_Calib_ety_PEMB; - Float_t MET_Calib_sumet_PEMB; - Float_t MET_Calib_phi_PEMB; - Float_t MET_Calib_etx_EMB; - Float_t MET_Calib_ety_EMB; - Float_t MET_Calib_sumet_EMB; - Float_t MET_Calib_phi_EMB; - Float_t MET_Calib_etx_PEMEC; - Float_t MET_Calib_ety_PEMEC; - Float_t MET_Calib_sumet_PEMEC; - Float_t MET_Calib_phi_PEMEC; - Float_t MET_Calib_etx_EME; - Float_t MET_Calib_ety_EME; - Float_t MET_Calib_sumet_EME; - Float_t MET_Calib_phi_EME; - Float_t MET_Calib_etx_TILE; - Float_t MET_Calib_ety_TILE; - Float_t MET_Calib_sumet_TILE; - Float_t MET_Calib_phi_TILE; - Float_t MET_Calib_etx_HEC; - Float_t MET_Calib_ety_HEC; - Float_t MET_Calib_sumet_HEC; - Float_t MET_Calib_phi_HEC; - Float_t MET_Calib_etx_FCAL; - Float_t MET_Calib_ety_FCAL; - Float_t MET_Calib_sumet_FCAL; - Float_t MET_Calib_phi_FCAL; - Float_t MET_Calib_nCell_PEMB; - Float_t MET_Calib_nCell_EMB; - Float_t MET_Calib_nCell_PEMEC; - Float_t MET_Calib_nCell_EME; - Float_t MET_Calib_nCell_TILE; - Float_t MET_Calib_nCell_HEC; - Float_t MET_Calib_nCell_FCAL; - Float_t MET_Calib_etx_CentralReg; - Float_t MET_Calib_ety_CentralReg; - Float_t MET_Calib_sumet_CentralReg; - Float_t MET_Calib_phi_CentralReg; - Float_t MET_Calib_etx_EndcapRegion; - Float_t MET_Calib_ety_EndcapRegion; - Float_t MET_Calib_sumet_EndcapRegion; - Float_t MET_Calib_phi_EndcapRegion; - Float_t MET_Calib_etx_ForwardReg; - Float_t MET_Calib_ety_ForwardReg; - Float_t MET_Calib_sumet_ForwardReg; - Float_t MET_Calib_phi_ForwardReg; - Float_t MET_Truth_NonInt_etx; - Float_t MET_Truth_NonInt_ety; - Float_t MET_Truth_NonInt_phi; - Float_t MET_Truth_NonInt_et; - Float_t MET_Truth_NonInt_sumet; - Float_t MET_Truth_Int_phi; - Float_t MET_Truth_IntCentral_phi; - Float_t MET_Truth_IntFwd_phi; - Float_t MET_Truth_IntOutCover_phi; - Float_t MET_Truth_IntMuons_phi; - Float_t MET_Truth_Int_et; - Float_t MET_Truth_IntCentral_et; - Float_t MET_Truth_IntFwd_et; - Float_t MET_Truth_IntOutCover_et; - Float_t MET_Truth_IntMuons_et; - Float_t MET_Truth_Int_sumet; - Float_t MET_Truth_IntCentral_sumet; - Float_t MET_Truth_IntFwd_sumet; - Float_t MET_Truth_IntOutCover_sumet; - Float_t MET_Truth_IntMuons_sumet; - Float_t MET_Truth_PileUp_NonInt_etx; - Float_t MET_Truth_PileUp_NonInt_ety; - Float_t MET_Truth_PileUp_NonInt_phi; - Float_t MET_Truth_PileUp_NonInt_et; - Float_t MET_Truth_PileUp_NonInt_sumet; - Float_t MET_Truth_PileUp_Int_etx; - Float_t MET_Truth_PileUp_Int_ety; - Float_t MET_Truth_PileUp_IntCentral_etx; - Float_t MET_Truth_PileUp_IntCentral_ety; - Float_t MET_Truth_PileUp_IntFwd_etx; - Float_t MET_Truth_PileUp_IntFwd_ety; - Float_t MET_Truth_PileUp_IntOutCover_etx; - Float_t MET_Truth_PileUp_IntOutCover_ety; - Float_t MET_Truth_PileUp_IntMuons_etx; - Float_t MET_Truth_PileUp_IntMuons_ety; - Float_t MET_Truth_PileUp_Int_phi; - Float_t MET_Truth_PileUp_IntCentral_phi; - Float_t MET_Truth_PileUp_IntFwd_phi; - Float_t MET_Truth_PileUp_IntOutCover_phi; - Float_t MET_Truth_PileUp_IntMuons_phi; - Float_t MET_Truth_PileUp_Int_et; - Float_t MET_Truth_PileUp_IntCentral_et; - Float_t MET_Truth_PileUp_IntFwd_et; - Float_t MET_Truth_PileUp_IntOutCover_et; - Float_t MET_Truth_PileUp_IntMuons_et; - Float_t MET_Truth_PileUp_Int_sumet; - Float_t MET_Truth_PileUp_IntCentral_sumet; - Float_t MET_Truth_PileUp_IntFwd_sumet; - Float_t MET_Truth_PileUp_IntOutCover_sumet; - Float_t MET_Truth_PileUp_IntMuons_sumet; - Float_t MET_DM_Crack1_etx; - Float_t MET_DM_Crack1_ety; - Float_t MET_DM_Crack1_phi; - Float_t MET_DM_Crack1_et; - Float_t MET_DM_Crack1_sumet; - Float_t MET_DM_Crack2_etx; - Float_t MET_DM_Crack2_ety; - Float_t MET_DM_Crack2_phi; - Float_t MET_DM_Crack2_et; - Float_t MET_DM_Crack2_sumet; - Float_t MET_DM_All_etx; - Float_t MET_DM_All_ety; - Float_t MET_DM_All_phi; - Float_t MET_DM_All_et; - Float_t MET_DM_All_sumet; - Float_t MET_DM_Cryo_etx; - Float_t MET_DM_Cryo_ety; - Float_t MET_DM_Cryo_phi; - Float_t MET_DM_Cryo_et; - Float_t MET_DM_Cryo_sumet; - Float_t METJetsInfo_JetPtWeightedEventEMFraction; - Float_t METJetsInfo_JetPtWeightedNumAssociatedTracks; - Float_t METJetsInfo_JetPtWeightedSize; - Float_t METJetsInfo_LeadingJetEt; - Float_t METJetsInfo_LeadingJetEta; - Int_t cl_n; - vector<float> *cl_pt; - vector<float> *cl_eta; - vector<float> *cl_phi; - Int_t clpt10_n; - vector<float> *clpt10_pt; - vector<float> *clpt10_eta; - vector<float> *clpt10_phi; - vector<float> *clpt10_E_em; - vector<float> *clpt10_E_had; - vector<float> *clpt10_firstEdens; - vector<float> *clpt10_cellmaxfrac; - vector<float> *clpt10_longitudinal; - vector<float> *clpt10_secondlambda; - vector<float> *clpt10_lateral; - vector<float> *clpt10_secondR; - vector<float> *clpt10_centerlambda; - vector<float> *clpt10_deltaTheta; - vector<float> *clpt10_deltaPhi; - vector<float> *clpt10_time; - vector<float> *clpt10_E_PreSamplerB; - vector<float> *clpt10_E_EMB1; - vector<float> *clpt10_E_EMB2; - vector<float> *clpt10_E_EMB3; - vector<float> *clpt10_E_PreSamplerE; - vector<float> *clpt10_E_EME1; - vector<float> *clpt10_E_EME2; - vector<float> *clpt10_E_EME3; - vector<float> *clpt10_E_HEC0; - vector<float> *clpt10_E_HEC1; - vector<float> *clpt10_E_HEC2; - vector<float> *clpt10_E_HEC3; - vector<float> *clpt10_E_TileBar0; - vector<float> *clpt10_E_TileBar1; - vector<float> *clpt10_E_TileBar2; - vector<float> *clpt10_E_TileGap1; - vector<float> *clpt10_E_TileGap2; - vector<float> *clpt10_E_TileGap3; - vector<float> *clpt10_E_TileExt0; - vector<float> *clpt10_E_TileExt1; - vector<float> *clpt10_E_TileExt2; - vector<float> *clpt10_E_FCAL0; - vector<float> *clpt10_E_FCAL1; - vector<float> *clpt10_E_FCAL2; - Int_t emclpt10_n; - vector<float> *emclpt10_pt; - vector<float> *emclpt10_eta; - vector<float> *emclpt10_phi; - vector<float> *emclpt10_E_em; - vector<float> *emclpt10_E_had; - vector<float> *emclpt10_firstEdens; - vector<float> *emclpt10_cellmaxfrac; - vector<float> *emclpt10_longitudinal; - vector<float> *emclpt10_secondlambda; - vector<float> *emclpt10_lateral; - vector<float> *emclpt10_secondR; - vector<float> *emclpt10_centerlambda; - vector<float> *emclpt10_deltaTheta; - vector<float> *emclpt10_deltaPhi; - vector<float> *emclpt10_time; - vector<float> *emclpt10_E_PreSamplerB; - vector<float> *emclpt10_E_EMB1; - vector<float> *emclpt10_E_EMB2; - vector<float> *emclpt10_E_EMB3; - vector<float> *emclpt10_E_PreSamplerE; - vector<float> *emclpt10_E_EME1; - vector<float> *emclpt10_E_EME2; - vector<float> *emclpt10_E_EME3; - vector<float> *emclpt10_E_HEC0; - vector<float> *emclpt10_E_HEC1; - vector<float> *emclpt10_E_HEC2; - vector<float> *emclpt10_E_HEC3; - vector<float> *emclpt10_E_TileBar0; - vector<float> *emclpt10_E_TileBar1; - vector<float> *emclpt10_E_TileBar2; - vector<float> *emclpt10_E_TileGap1; - vector<float> *emclpt10_E_TileGap2; - vector<float> *emclpt10_E_TileGap3; - vector<float> *emclpt10_E_TileExt0; - vector<float> *emclpt10_E_TileExt1; - vector<float> *emclpt10_E_TileExt2; - vector<float> *emclpt10_E_FCAL0; - vector<float> *emclpt10_E_FCAL1; - vector<float> *emclpt10_E_FCAL2; - vector<float> *emclpt10_eta_PreSamplerB; - vector<float> *emclpt10_phi_PreSamplerB; - vector<float> *emclpt10_eta_EMB1; - vector<float> *emclpt10_phi_EMB1; - vector<float> *emclpt10_eta_EMB2; - vector<float> *emclpt10_phi_EMB2; - vector<float> *emclpt10_eta_EMB3; - vector<float> *emclpt10_phi_EMB3; - vector<float> *emclpt10_eta_PreSamplerE; - vector<float> *emclpt10_phi_PreSamplerE; - vector<float> *emclpt10_eta_EME1; - vector<float> *emclpt10_phi_EME1; - vector<float> *emclpt10_eta_EME2; - vector<float> *emclpt10_phi_EME2; - vector<float> *emclpt10_eta_EME3; - vector<float> *emclpt10_phi_EME3; - vector<float> *emclpt10_eta_HEC0; - vector<float> *emclpt10_phi_HEC0; - vector<float> *emclpt10_eta_HEC1; - vector<float> *emclpt10_phi_HEC1; - vector<float> *emclpt10_eta_HEC2; - vector<float> *emclpt10_phi_HEC2; - vector<float> *emclpt10_eta_HEC3; - vector<float> *emclpt10_phi_HEC3; - vector<float> *emclpt10_eta_TileBar0; - vector<float> *emclpt10_phi_TileBar0; - vector<float> *emclpt10_eta_TileBar1; - vector<float> *emclpt10_phi_TileBar1; - vector<float> *emclpt10_eta_TileBar2; - vector<float> *emclpt10_phi_TileBar2; - vector<float> *emclpt10_eta_TileGap1; - vector<float> *emclpt10_phi_TileGap1; - vector<float> *emclpt10_eta_TileGap2; - vector<float> *emclpt10_phi_TileGap2; - vector<float> *emclpt10_eta_TileGap3; - vector<float> *emclpt10_phi_TileGap3; - vector<float> *emclpt10_eta_TileExt0; - vector<float> *emclpt10_phi_TileExt0; - vector<float> *emclpt10_eta_TileExt1; - vector<float> *emclpt10_phi_TileExt1; - vector<float> *emclpt10_eta_TileExt2; - vector<float> *emclpt10_phi_TileExt2; - vector<float> *emclpt10_eta_FCAL0; - vector<float> *emclpt10_phi_FCAL0; - vector<float> *emclpt10_eta_FCAL1; - vector<float> *emclpt10_phi_FCAL1; - vector<float> *emclpt10_eta_FCAL2; - vector<float> *emclpt10_phi_FCAL2; - Int_t trk_n; - vector<float> *trk_pt; - vector<float> *trk_eta; - vector<float> *trk_d0_wrtPV; - vector<float> *trk_z0_wrtPV; - vector<float> *trk_phi_wrtPV; - vector<float> *trk_theta_wrtPV; - vector<float> *trk_qoverp_wrtPV; - vector<float> *trk_chi2; - vector<int> *trk_ndof; - Int_t trkpt5_n; - vector<float> *trkpt5_d0; - vector<float> *trkpt5_z0; - vector<float> *trkpt5_phi; - vector<float> *trkpt5_theta; - vector<float> *trkpt5_qoverp; - vector<float> *trkpt5_pt; - vector<float> *trkpt5_eta; - vector<float> *trkpt5_err_d0; - vector<float> *trkpt5_err_z0; - vector<float> *trkpt5_err_phi; - vector<float> *trkpt5_err_theta; - vector<float> *trkpt5_err_qoverp; - vector<float> *trkpt5_d0_wrtPV; - vector<float> *trkpt5_z0_wrtPV; - vector<float> *trkpt5_phi_wrtPV; - vector<float> *trkpt5_err_d0_wrtPV; - vector<float> *trkpt5_err_z0_wrtPV; - vector<float> *trkpt5_err_phi_wrtPV; - vector<float> *trkpt5_err_theta_wrtPV; - vector<float> *trkpt5_err_qoverp_wrtPV; - vector<float> *trkpt5_cov_d0_z0_wrtPV; - vector<float> *trkpt5_cov_d0_phi_wrtPV; - vector<float> *trkpt5_cov_d0_theta_wrtPV; - vector<float> *trkpt5_cov_d0_qoverp_wrtPV; - vector<float> *trkpt5_cov_z0_phi_wrtPV; - vector<float> *trkpt5_cov_z0_theta_wrtPV; - vector<float> *trkpt5_cov_z0_qoverp_wrtPV; - vector<float> *trkpt5_cov_phi_theta_wrtPV; - vector<float> *trkpt5_cov_phi_qoverp_wrtPV; - vector<float> *trkpt5_cov_theta_qoverp_wrtPV; - vector<float> *trkpt5_chi2; - vector<int> *trkpt5_ndof; - vector<int> *trkpt5_nBLHits; - vector<int> *trkpt5_nPixHits; - vector<int> *trkpt5_nSCTHits; - vector<int> *trkpt5_nTRTHits; - vector<int> *trkpt5_nTRTHighTHits; - vector<int> *trkpt5_nPixHoles; - vector<int> *trkpt5_nSCTHoles; - vector<int> *trkpt5_nTRTHoles; - vector<int> *trkpt5_expectBLayerHit; - vector<int> *trkpt5_nMDTHits; - vector<int> *trkpt5_nCSCEtaHits; - vector<int> *trkpt5_nCSCPhiHits; - vector<int> *trkpt5_nRPCEtaHits; - vector<int> *trkpt5_nRPCPhiHits; - vector<int> *trkpt5_nTGCEtaHits; - vector<int> *trkpt5_nTGCPhiHits; - vector<int> *trkpt5_nHits; - vector<int> *trkpt5_nHoles; - vector<int> *trkpt5_hitPattern; - vector<float> *trkpt5_TRTHighTHitsRatio; - vector<float> *trkpt5_TRTHighTOutliersRatio; - vector<float> *trkpt5_mc_probability; - vector<int> *trkpt5_mc_barcode; - Int_t vxp_n; - vector<float> *vxp_x; - vector<float> *vxp_y; - vector<float> *vxp_z; - vector<float> *vxp_err_x; - vector<float> *vxp_err_y; - vector<float> *vxp_err_z; - vector<float> *vxp_chi2; - vector<int> *vxp_ndof; - vector<float> *vxp_px; - vector<float> *vxp_py; - vector<float> *vxp_pz; - vector<float> *vxp_E; - vector<float> *vxp_m; - vector<int> *vxp_nTracks; - vector<float> *vxp_sumPt; - vector<int> *vxp_type; - vector<int> *vxp_trk_n; - vector<vector<float> > *vxp_trk_weight; - vector<vector<int> > *vxp_trk_index; - Int_t mb_n; - vector<float> *mb_E; - vector<float> *mb_eta; - vector<float> *mb_phi; - vector<float> *mb_time; - vector<int> *mb_quality; - vector<int> *mb_type; - vector<int> *mb_module; - vector<int> *mb_channel; - Float_t mbtime_timeDiff; - Float_t mbtime_timeA; - Float_t mbtime_timeC; - Int_t mbtime_countA; - Int_t mbtime_countC; - Bool_t L1_MBTS_1; - Bool_t L1_MBTS_1_1; - Bool_t L1_MBTS_1_1_EMPTY; - Bool_t L1_MBTS_1_1_UNPAIRED_ISO; - Bool_t L1_MBTS_1_EMPTY; - Bool_t L1_MBTS_1_UNPAIRED_ISO; - Bool_t L1_MBTS_2; - Bool_t L1_MBTS_2_EMPTY; - Bool_t L1_MBTS_2_UNPAIRED_ISO; - Bool_t L1_MBTS_2_UNPAIRED_NONISO; - Bool_t L1_MBTS_4_4; - Bool_t L1_MBTS_4_4_UNPAIRED_ISO; - Int_t muonTruth_n; - vector<float> *muonTruth_pt; - vector<float> *muonTruth_m; - vector<float> *muonTruth_eta; - vector<float> *muonTruth_phi; - vector<float> *muonTruth_charge; - vector<int> *muonTruth_PDGID; - vector<int> *muonTruth_barcode; - vector<int> *muonTruth_type; - vector<int> *muonTruth_origin; - Int_t mcevt_n; - vector<int> *mcevt_signal_process_id; - vector<int> *mcevt_event_number; - vector<double> *mcevt_event_scale; - vector<double> *mcevt_alphaQCD; - vector<double> *mcevt_alphaQED; - vector<int> *mcevt_pdf_id1; - vector<int> *mcevt_pdf_id2; - vector<double> *mcevt_pdf_x1; - vector<double> *mcevt_pdf_x2; - vector<double> *mcevt_pdf_scale; - vector<double> *mcevt_pdf1; - vector<double> *mcevt_pdf2; - vector<double> *mcevt_weight; - vector<int> *mcevt_nparticle; - vector<short> *mcevt_pileUpType; - Int_t mc_n; - vector<float> *mc_pt; - vector<float> *mc_m; - vector<float> *mc_eta; - vector<float> *mc_phi; - vector<int> *mc_status; - vector<int> *mc_barcode; - vector<vector<int> > *mc_parents; - vector<vector<int> > *mc_children; - vector<int> *mc_pdgId; - vector<float> *mc_charge; - vector<float> *mc_vx_x; - vector<float> *mc_vx_y; - vector<float> *mc_vx_z; - vector<vector<int> > *mc_child_index; - vector<vector<int> > *mc_parent_index; - Int_t jet_antikt4truth_n; - vector<float> *jet_antikt4truth_E; - vector<float> *jet_antikt4truth_pt; - vector<float> *jet_antikt4truth_m; - vector<float> *jet_antikt4truth_eta; - vector<float> *jet_antikt4truth_phi; - vector<float> *jet_antikt4truth_EtaOrigin; - vector<float> *jet_antikt4truth_PhiOrigin; - vector<float> *jet_antikt4truth_MOrigin; - vector<float> *jet_antikt4truth_EtaOriginEM; - vector<float> *jet_antikt4truth_PhiOriginEM; - vector<float> *jet_antikt4truth_MOriginEM; - vector<float> *jet_antikt4truth_WIDTH; - vector<float> *jet_antikt4truth_n90; - vector<float> *jet_antikt4truth_Timing; - vector<float> *jet_antikt4truth_LArQuality; - vector<float> *jet_antikt4truth_nTrk; - vector<float> *jet_antikt4truth_sumPtTrk; - vector<float> *jet_antikt4truth_OriginIndex; - vector<float> *jet_antikt4truth_HECQuality; - vector<float> *jet_antikt4truth_NegativeE; - vector<float> *jet_antikt4truth_YFlip12; - vector<float> *jet_antikt4truth_YFlip23; - vector<float> *jet_antikt4truth_BCH_CORR_CELL; - vector<float> *jet_antikt4truth_BCH_CORR_DOTX; - vector<float> *jet_antikt4truth_BCH_CORR_JET; - vector<float> *jet_antikt4truth_BCH_CORR_JET_FORCELL; - vector<float> *jet_antikt4truth_ENG_BAD_CELLS; - vector<float> *jet_antikt4truth_N_BAD_CELLS; - vector<float> *jet_antikt4truth_N_BAD_CELLS_CORR; - vector<float> *jet_antikt4truth_BAD_CELLS_CORR_E; - vector<float> *jet_antikt4truth_NumTowers; - vector<int> *jet_antikt4truth_SamplingMax; - vector<float> *jet_antikt4truth_fracSamplingMax; - vector<float> *jet_antikt4truth_hecf; - vector<float> *jet_antikt4truth_tgap3f; - vector<int> *jet_antikt4truth_isUgly; - vector<int> *jet_antikt4truth_isBadLoose; - vector<int> *jet_antikt4truth_isBadMedium; - vector<int> *jet_antikt4truth_isBadTight; - vector<float> *jet_antikt4truth_emfrac; - vector<float> *jet_antikt4truth_Offset; - vector<float> *jet_antikt4truth_EMJES; - vector<float> *jet_antikt4truth_EMJES_EtaCorr; - vector<float> *jet_antikt4truth_EMJESnooffset; - vector<float> *jet_antikt4truth_GCWJES; - vector<float> *jet_antikt4truth_GCWJES_EtaCorr; - vector<float> *jet_antikt4truth_CB; - vector<float> *jet_antikt4truth_emscale_E; - vector<float> *jet_antikt4truth_emscale_pt; - vector<float> *jet_antikt4truth_emscale_m; - vector<float> *jet_antikt4truth_emscale_eta; - vector<float> *jet_antikt4truth_emscale_phi; - vector<float> *jet_antikt4truth_el_dr; - vector<int> *jet_antikt4truth_el_matched; - vector<float> *jet_antikt4truth_mu_dr; - vector<int> *jet_antikt4truth_mu_matched; - vector<float> *jet_antikt4truth_L1_dr; - vector<int> *jet_antikt4truth_L1_matched; - vector<float> *jet_antikt4truth_L2_dr; - vector<int> *jet_antikt4truth_L2_matched; - vector<float> *jet_antikt4truth_EF_dr; - vector<int> *jet_antikt4truth_EF_matched; - Int_t jet_antikt6truth_n; - vector<float> *jet_antikt6truth_E; - vector<float> *jet_antikt6truth_pt; - vector<float> *jet_antikt6truth_m; - vector<float> *jet_antikt6truth_eta; - vector<float> *jet_antikt6truth_phi; - vector<float> *jet_antikt6truth_EtaOrigin; - vector<float> *jet_antikt6truth_PhiOrigin; - vector<float> *jet_antikt6truth_MOrigin; - vector<float> *jet_antikt6truth_EtaOriginEM; - vector<float> *jet_antikt6truth_PhiOriginEM; - vector<float> *jet_antikt6truth_MOriginEM; - vector<float> *jet_antikt6truth_WIDTH; - vector<float> *jet_antikt6truth_n90; - vector<float> *jet_antikt6truth_Timing; - vector<float> *jet_antikt6truth_LArQuality; - vector<float> *jet_antikt6truth_nTrk; - vector<float> *jet_antikt6truth_sumPtTrk; - vector<float> *jet_antikt6truth_OriginIndex; - vector<float> *jet_antikt6truth_HECQuality; - vector<float> *jet_antikt6truth_NegativeE; - vector<float> *jet_antikt6truth_YFlip12; - vector<float> *jet_antikt6truth_YFlip23; - vector<float> *jet_antikt6truth_BCH_CORR_CELL; - vector<float> *jet_antikt6truth_BCH_CORR_DOTX; - vector<float> *jet_antikt6truth_BCH_CORR_JET; - vector<float> *jet_antikt6truth_BCH_CORR_JET_FORCELL; - vector<float> *jet_antikt6truth_ENG_BAD_CELLS; - vector<float> *jet_antikt6truth_N_BAD_CELLS; - vector<float> *jet_antikt6truth_N_BAD_CELLS_CORR; - vector<float> *jet_antikt6truth_BAD_CELLS_CORR_E; - vector<float> *jet_antikt6truth_NumTowers; - vector<int> *jet_antikt6truth_SamplingMax; - vector<float> *jet_antikt6truth_fracSamplingMax; - vector<float> *jet_antikt6truth_hecf; - vector<float> *jet_antikt6truth_tgap3f; - vector<int> *jet_antikt6truth_isUgly; - vector<int> *jet_antikt6truth_isBadLoose; - vector<int> *jet_antikt6truth_isBadMedium; - vector<int> *jet_antikt6truth_isBadTight; - vector<float> *jet_antikt6truth_emfrac; - vector<float> *jet_antikt6truth_Offset; - vector<float> *jet_antikt6truth_EMJES; - vector<float> *jet_antikt6truth_EMJES_EtaCorr; - vector<float> *jet_antikt6truth_EMJESnooffset; - vector<float> *jet_antikt6truth_GCWJES; - vector<float> *jet_antikt6truth_GCWJES_EtaCorr; - vector<float> *jet_antikt6truth_CB; - vector<float> *jet_antikt6truth_emscale_E; - vector<float> *jet_antikt6truth_emscale_pt; - vector<float> *jet_antikt6truth_emscale_m; - vector<float> *jet_antikt6truth_emscale_eta; - vector<float> *jet_antikt6truth_emscale_phi; - vector<float> *jet_antikt6truth_el_dr; - vector<int> *jet_antikt6truth_el_matched; - vector<float> *jet_antikt6truth_mu_dr; - vector<int> *jet_antikt6truth_mu_matched; - vector<float> *jet_antikt6truth_L1_dr; - vector<int> *jet_antikt6truth_L1_matched; - vector<float> *jet_antikt6truth_L2_dr; - vector<int> *jet_antikt6truth_L2_matched; - vector<float> *jet_antikt6truth_EF_dr; - vector<int> *jet_antikt6truth_EF_matched; - Int_t jet_antikt4truthALL_n; - vector<float> *jet_antikt4truthALL_E; - vector<float> *jet_antikt4truthALL_pt; - vector<float> *jet_antikt4truthALL_m; - vector<float> *jet_antikt4truthALL_eta; - vector<float> *jet_antikt4truthALL_phi; - vector<float> *jet_antikt4truthALL_EtaOrigin; - vector<float> *jet_antikt4truthALL_PhiOrigin; - vector<float> *jet_antikt4truthALL_MOrigin; - vector<float> *jet_antikt4truthALL_EtaOriginEM; - vector<float> *jet_antikt4truthALL_PhiOriginEM; - vector<float> *jet_antikt4truthALL_MOriginEM; - vector<float> *jet_antikt4truthALL_WIDTH; - vector<float> *jet_antikt4truthALL_n90; - vector<float> *jet_antikt4truthALL_Timing; - vector<float> *jet_antikt4truthALL_LArQuality; - vector<float> *jet_antikt4truthALL_nTrk; - vector<float> *jet_antikt4truthALL_sumPtTrk; - vector<float> *jet_antikt4truthALL_OriginIndex; - vector<float> *jet_antikt4truthALL_HECQuality; - vector<float> *jet_antikt4truthALL_NegativeE; - vector<float> *jet_antikt4truthALL_YFlip12; - vector<float> *jet_antikt4truthALL_YFlip23; - vector<float> *jet_antikt4truthALL_BCH_CORR_CELL; - vector<float> *jet_antikt4truthALL_BCH_CORR_DOTX; - vector<float> *jet_antikt4truthALL_BCH_CORR_JET; - vector<float> *jet_antikt4truthALL_BCH_CORR_JET_FORCELL; - vector<float> *jet_antikt4truthALL_ENG_BAD_CELLS; - vector<float> *jet_antikt4truthALL_N_BAD_CELLS; - vector<float> *jet_antikt4truthALL_N_BAD_CELLS_CORR; - vector<float> *jet_antikt4truthALL_BAD_CELLS_CORR_E; - vector<float> *jet_antikt4truthALL_NumTowers; - vector<int> *jet_antikt4truthALL_SamplingMax; - vector<float> *jet_antikt4truthALL_fracSamplingMax; - vector<float> *jet_antikt4truthALL_hecf; - vector<float> *jet_antikt4truthALL_tgap3f; - vector<int> *jet_antikt4truthALL_isUgly; - vector<int> *jet_antikt4truthALL_isBadLoose; - vector<int> *jet_antikt4truthALL_isBadMedium; - vector<int> *jet_antikt4truthALL_isBadTight; - vector<float> *jet_antikt4truthALL_emfrac; - vector<float> *jet_antikt4truthALL_Offset; - vector<float> *jet_antikt4truthALL_EMJES; - vector<float> *jet_antikt4truthALL_EMJES_EtaCorr; - vector<float> *jet_antikt4truthALL_EMJESnooffset; - vector<float> *jet_antikt4truthALL_GCWJES; - vector<float> *jet_antikt4truthALL_GCWJES_EtaCorr; - vector<float> *jet_antikt4truthALL_CB; - vector<float> *jet_antikt4truthALL_emscale_E; - vector<float> *jet_antikt4truthALL_emscale_pt; - vector<float> *jet_antikt4truthALL_emscale_m; - vector<float> *jet_antikt4truthALL_emscale_eta; - vector<float> *jet_antikt4truthALL_emscale_phi; - vector<float> *jet_antikt4truthALL_el_dr; - vector<int> *jet_antikt4truthALL_el_matched; - vector<float> *jet_antikt4truthALL_mu_dr; - vector<int> *jet_antikt4truthALL_mu_matched; - vector<float> *jet_antikt4truthALL_L1_dr; - vector<int> *jet_antikt4truthALL_L1_matched; - vector<float> *jet_antikt4truthALL_L2_dr; - vector<int> *jet_antikt4truthALL_L2_matched; - vector<float> *jet_antikt4truthALL_EF_dr; - vector<int> *jet_antikt4truthALL_EF_matched; - Int_t jet_antikt6truthALL_n; - vector<float> *jet_antikt6truthALL_E; - vector<float> *jet_antikt6truthALL_pt; - vector<float> *jet_antikt6truthALL_m; - vector<float> *jet_antikt6truthALL_eta; - vector<float> *jet_antikt6truthALL_phi; - vector<float> *jet_antikt6truthALL_EtaOrigin; - vector<float> *jet_antikt6truthALL_PhiOrigin; - vector<float> *jet_antikt6truthALL_MOrigin; - vector<float> *jet_antikt6truthALL_EtaOriginEM; - vector<float> *jet_antikt6truthALL_PhiOriginEM; - vector<float> *jet_antikt6truthALL_MOriginEM; - vector<float> *jet_antikt6truthALL_WIDTH; - vector<float> *jet_antikt6truthALL_n90; - vector<float> *jet_antikt6truthALL_Timing; - vector<float> *jet_antikt6truthALL_LArQuality; - vector<float> *jet_antikt6truthALL_nTrk; - vector<float> *jet_antikt6truthALL_sumPtTrk; - vector<float> *jet_antikt6truthALL_OriginIndex; - vector<float> *jet_antikt6truthALL_HECQuality; - vector<float> *jet_antikt6truthALL_NegativeE; - vector<float> *jet_antikt6truthALL_YFlip12; - vector<float> *jet_antikt6truthALL_YFlip23; - vector<float> *jet_antikt6truthALL_BCH_CORR_CELL; - vector<float> *jet_antikt6truthALL_BCH_CORR_DOTX; - vector<float> *jet_antikt6truthALL_BCH_CORR_JET; - vector<float> *jet_antikt6truthALL_BCH_CORR_JET_FORCELL; - vector<float> *jet_antikt6truthALL_ENG_BAD_CELLS; - vector<float> *jet_antikt6truthALL_N_BAD_CELLS; - vector<float> *jet_antikt6truthALL_N_BAD_CELLS_CORR; - vector<float> *jet_antikt6truthALL_BAD_CELLS_CORR_E; - vector<float> *jet_antikt6truthALL_NumTowers; - vector<int> *jet_antikt6truthALL_SamplingMax; - vector<float> *jet_antikt6truthALL_fracSamplingMax; - vector<float> *jet_antikt6truthALL_hecf; - vector<float> *jet_antikt6truthALL_tgap3f; - vector<int> *jet_antikt6truthALL_isUgly; - vector<int> *jet_antikt6truthALL_isBadLoose; - vector<int> *jet_antikt6truthALL_isBadMedium; - vector<int> *jet_antikt6truthALL_isBadTight; - vector<float> *jet_antikt6truthALL_emfrac; - vector<float> *jet_antikt6truthALL_Offset; - vector<float> *jet_antikt6truthALL_EMJES; - vector<float> *jet_antikt6truthALL_EMJES_EtaCorr; - vector<float> *jet_antikt6truthALL_EMJESnooffset; - vector<float> *jet_antikt6truthALL_GCWJES; - vector<float> *jet_antikt6truthALL_GCWJES_EtaCorr; - vector<float> *jet_antikt6truthALL_CB; - vector<float> *jet_antikt6truthALL_emscale_E; - vector<float> *jet_antikt6truthALL_emscale_pt; - vector<float> *jet_antikt6truthALL_emscale_m; - vector<float> *jet_antikt6truthALL_emscale_eta; - vector<float> *jet_antikt6truthALL_emscale_phi; - vector<float> *jet_antikt6truthALL_el_dr; - vector<int> *jet_antikt6truthALL_el_matched; - vector<float> *jet_antikt6truthALL_mu_dr; - vector<int> *jet_antikt6truthALL_mu_matched; - vector<float> *jet_antikt6truthALL_L1_dr; - vector<int> *jet_antikt6truthALL_L1_matched; - vector<float> *jet_antikt6truthALL_L2_dr; - vector<int> *jet_antikt6truthALL_L2_matched; - vector<float> *jet_antikt6truthALL_EF_dr; - vector<int> *jet_antikt6truthALL_EF_matched; - Int_t jet_antikt4truthWZ_n; - vector<float> *jet_antikt4truthWZ_E; - vector<float> *jet_antikt4truthWZ_pt; - vector<float> *jet_antikt4truthWZ_m; - vector<float> *jet_antikt4truthWZ_eta; - vector<float> *jet_antikt4truthWZ_phi; - vector<float> *jet_antikt4truthWZ_EtaOrigin; - vector<float> *jet_antikt4truthWZ_PhiOrigin; - vector<float> *jet_antikt4truthWZ_MOrigin; - vector<float> *jet_antikt4truthWZ_EtaOriginEM; - vector<float> *jet_antikt4truthWZ_PhiOriginEM; - vector<float> *jet_antikt4truthWZ_MOriginEM; - vector<float> *jet_antikt4truthWZ_WIDTH; - vector<float> *jet_antikt4truthWZ_n90; - vector<float> *jet_antikt4truthWZ_Timing; - vector<float> *jet_antikt4truthWZ_LArQuality; - vector<float> *jet_antikt4truthWZ_nTrk; - vector<float> *jet_antikt4truthWZ_sumPtTrk; - vector<float> *jet_antikt4truthWZ_OriginIndex; - vector<float> *jet_antikt4truthWZ_HECQuality; - vector<float> *jet_antikt4truthWZ_NegativeE; - vector<float> *jet_antikt4truthWZ_YFlip12; - vector<float> *jet_antikt4truthWZ_YFlip23; - vector<float> *jet_antikt4truthWZ_BCH_CORR_CELL; - vector<float> *jet_antikt4truthWZ_BCH_CORR_DOTX; - vector<float> *jet_antikt4truthWZ_BCH_CORR_JET; - vector<float> *jet_antikt4truthWZ_BCH_CORR_JET_FORCELL; - vector<float> *jet_antikt4truthWZ_ENG_BAD_CELLS; - vector<float> *jet_antikt4truthWZ_N_BAD_CELLS; - vector<float> *jet_antikt4truthWZ_N_BAD_CELLS_CORR; - vector<float> *jet_antikt4truthWZ_BAD_CELLS_CORR_E; - vector<float> *jet_antikt4truthWZ_NumTowers; - vector<int> *jet_antikt4truthWZ_SamplingMax; - vector<float> *jet_antikt4truthWZ_fracSamplingMax; - vector<float> *jet_antikt4truthWZ_hecf; - vector<float> *jet_antikt4truthWZ_tgap3f; - vector<int> *jet_antikt4truthWZ_isUgly; - vector<int> *jet_antikt4truthWZ_isBadLoose; - vector<int> *jet_antikt4truthWZ_isBadMedium; - vector<int> *jet_antikt4truthWZ_isBadTight; - vector<float> *jet_antikt4truthWZ_emfrac; - vector<float> *jet_antikt4truthWZ_Offset; - vector<float> *jet_antikt4truthWZ_EMJES; - vector<float> *jet_antikt4truthWZ_EMJES_EtaCorr; - vector<float> *jet_antikt4truthWZ_EMJESnooffset; - vector<float> *jet_antikt4truthWZ_GCWJES; - vector<float> *jet_antikt4truthWZ_GCWJES_EtaCorr; - vector<float> *jet_antikt4truthWZ_CB; - vector<float> *jet_antikt4truthWZ_emscale_E; - vector<float> *jet_antikt4truthWZ_emscale_pt; - vector<float> *jet_antikt4truthWZ_emscale_m; - vector<float> *jet_antikt4truthWZ_emscale_eta; - vector<float> *jet_antikt4truthWZ_emscale_phi; - vector<float> *jet_antikt4truthWZ_el_dr; - vector<int> *jet_antikt4truthWZ_el_matched; - vector<float> *jet_antikt4truthWZ_mu_dr; - vector<int> *jet_antikt4truthWZ_mu_matched; - vector<float> *jet_antikt4truthWZ_L1_dr; - vector<int> *jet_antikt4truthWZ_L1_matched; - vector<float> *jet_antikt4truthWZ_L2_dr; - vector<int> *jet_antikt4truthWZ_L2_matched; - vector<float> *jet_antikt4truthWZ_EF_dr; - vector<int> *jet_antikt4truthWZ_EF_matched; - Int_t jet_antikt6truthWZ_n; - vector<float> *jet_antikt6truthWZ_E; - vector<float> *jet_antikt6truthWZ_pt; - vector<float> *jet_antikt6truthWZ_m; - vector<float> *jet_antikt6truthWZ_eta; - vector<float> *jet_antikt6truthWZ_phi; - vector<float> *jet_antikt6truthWZ_EtaOrigin; - vector<float> *jet_antikt6truthWZ_PhiOrigin; - vector<float> *jet_antikt6truthWZ_MOrigin; - vector<float> *jet_antikt6truthWZ_EtaOriginEM; - vector<float> *jet_antikt6truthWZ_PhiOriginEM; - vector<float> *jet_antikt6truthWZ_MOriginEM; - vector<float> *jet_antikt6truthWZ_WIDTH; - vector<float> *jet_antikt6truthWZ_n90; - vector<float> *jet_antikt6truthWZ_Timing; - vector<float> *jet_antikt6truthWZ_LArQuality; - vector<float> *jet_antikt6truthWZ_nTrk; - vector<float> *jet_antikt6truthWZ_sumPtTrk; - vector<float> *jet_antikt6truthWZ_OriginIndex; - vector<float> *jet_antikt6truthWZ_HECQuality; - vector<float> *jet_antikt6truthWZ_NegativeE; - vector<float> *jet_antikt6truthWZ_YFlip12; - vector<float> *jet_antikt6truthWZ_YFlip23; - vector<float> *jet_antikt6truthWZ_BCH_CORR_CELL; - vector<float> *jet_antikt6truthWZ_BCH_CORR_DOTX; - vector<float> *jet_antikt6truthWZ_BCH_CORR_JET; - vector<float> *jet_antikt6truthWZ_BCH_CORR_JET_FORCELL; - vector<float> *jet_antikt6truthWZ_ENG_BAD_CELLS; - vector<float> *jet_antikt6truthWZ_N_BAD_CELLS; - vector<float> *jet_antikt6truthWZ_N_BAD_CELLS_CORR; - vector<float> *jet_antikt6truthWZ_BAD_CELLS_CORR_E; - vector<float> *jet_antikt6truthWZ_NumTowers; - vector<int> *jet_antikt6truthWZ_SamplingMax; - vector<float> *jet_antikt6truthWZ_fracSamplingMax; - vector<float> *jet_antikt6truthWZ_hecf; - vector<float> *jet_antikt6truthWZ_tgap3f; - vector<int> *jet_antikt6truthWZ_isUgly; - vector<int> *jet_antikt6truthWZ_isBadLoose; - vector<int> *jet_antikt6truthWZ_isBadMedium; - vector<int> *jet_antikt6truthWZ_isBadTight; - vector<float> *jet_antikt6truthWZ_emfrac; - vector<float> *jet_antikt6truthWZ_Offset; - vector<float> *jet_antikt6truthWZ_EMJES; - vector<float> *jet_antikt6truthWZ_EMJES_EtaCorr; - vector<float> *jet_antikt6truthWZ_EMJESnooffset; - vector<float> *jet_antikt6truthWZ_GCWJES; - vector<float> *jet_antikt6truthWZ_GCWJES_EtaCorr; - vector<float> *jet_antikt6truthWZ_CB; - vector<float> *jet_antikt6truthWZ_emscale_E; - vector<float> *jet_antikt6truthWZ_emscale_pt; - vector<float> *jet_antikt6truthWZ_emscale_m; - vector<float> *jet_antikt6truthWZ_emscale_eta; - vector<float> *jet_antikt6truthWZ_emscale_phi; - vector<float> *jet_antikt6truthWZ_el_dr; - vector<int> *jet_antikt6truthWZ_el_matched; - vector<float> *jet_antikt6truthWZ_mu_dr; - vector<int> *jet_antikt6truthWZ_mu_matched; - vector<float> *jet_antikt6truthWZ_L1_dr; - vector<int> *jet_antikt6truthWZ_L1_matched; - vector<float> *jet_antikt6truthWZ_L2_dr; - vector<int> *jet_antikt6truthWZ_L2_matched; - vector<float> *jet_antikt6truthWZ_EF_dr; - vector<int> *jet_antikt6truthWZ_EF_matched; - vector<unsigned int> *trig_L1_TAV; - vector<short> *trig_L2_passedPhysics; - vector<short> *trig_EF_passedPhysics; - vector<unsigned int> *trig_L1_TBP; - vector<unsigned int> *trig_L1_TAP; - vector<short> *trig_L2_passedRaw; - vector<short> *trig_EF_passedRaw; - Bool_t trig_L2_truncated; - Bool_t trig_EF_truncated; - vector<short> *trig_L2_resurrected; - vector<short> *trig_EF_resurrected; - vector<short> *trig_L2_passedThrough; - vector<short> *trig_EF_passedThrough; - UInt_t trig_DB_SMK; - UInt_t trig_DB_L1PSK; - UInt_t trig_DB_HLTPSK; - Char_t trig_bgCode; - Int_t trig_L1_emtau_n; - vector<float> *trig_L1_emtau_eta; - vector<float> *trig_L1_emtau_phi; - vector<vector<string> > *trig_L1_emtau_thrNames; - vector<vector<float> > *trig_L1_emtau_thrValues; - Int_t trig_L2_emcl_n; - vector<unsigned int> *trig_L2_emcl_quality; - vector<float> *trig_L2_emcl_E; - vector<float> *trig_L2_emcl_Et; - vector<float> *trig_L2_emcl_eta; - vector<float> *trig_L2_emcl_phi; - Int_t trig_L2_trk_idscan_eGamma_n; - vector<int> *trig_L2_trk_idscan_eGamma_algorithmId; - vector<short> *trig_L2_trk_idscan_eGamma_trackStatus; - vector<float> *trig_L2_trk_idscan_eGamma_chi2Ndof; - vector<float> *trig_L2_trk_idscan_eGamma_param_a0; - vector<float> *trig_L2_trk_idscan_eGamma_param_z0; - vector<float> *trig_L2_trk_idscan_eGamma_param_phi0; - vector<float> *trig_L2_trk_idscan_eGamma_param_eta; - vector<float> *trig_L2_trk_idscan_eGamma_param_pt; - Int_t trig_L2_trk_sitrack_eGamma_n; - vector<int> *trig_L2_trk_sitrack_eGamma_algorithmId; - vector<short> *trig_L2_trk_sitrack_eGamma_trackStatus; - vector<float> *trig_L2_trk_sitrack_eGamma_chi2Ndof; - vector<float> *trig_L2_trk_sitrack_eGamma_param_a0; - vector<float> *trig_L2_trk_sitrack_eGamma_param_z0; - vector<float> *trig_L2_trk_sitrack_eGamma_param_phi0; - vector<float> *trig_L2_trk_sitrack_eGamma_param_eta; - vector<float> *trig_L2_trk_sitrack_eGamma_param_pt; - Int_t trig_L2_el_n; - vector<float> *trig_L2_el_E; - vector<float> *trig_L2_el_Et; - vector<float> *trig_L2_el_pt; - vector<float> *trig_L2_el_eta; - vector<float> *trig_L2_el_phi; - vector<int> *trig_L2_el_RoIWord; - vector<float> *trig_L2_el_zvertex; - vector<int> *trig_L2_el_charge; - Int_t trig_L2_ph_n; - vector<float> *trig_L2_ph_E; - vector<float> *trig_L2_ph_Et; - vector<float> *trig_L2_ph_pt; - vector<float> *trig_L2_ph_eta; - vector<float> *trig_L2_ph_phi; - vector<int> *trig_L2_ph_RoIWord; - Int_t trig_EF_emcl_n; - vector<float> *trig_EF_emcl_pt; - vector<float> *trig_EF_emcl_eta; - vector<float> *trig_EF_emcl_phi; - vector<float> *trig_EF_emcl_E_em; - vector<float> *trig_EF_emcl_E_had; - Int_t trig_EF_emcl_slw_n; - vector<float> *trig_EF_emcl_slw_pt; - vector<float> *trig_EF_emcl_slw_eta; - vector<float> *trig_EF_emcl_slw_phi; - vector<float> *trig_EF_emcl_slw_E_em; - vector<float> *trig_EF_emcl_slw_E_had; - Int_t trig_EF_el_n; - vector<float> *trig_EF_el_E; - vector<float> *trig_EF_el_Et; - vector<float> *trig_EF_el_pt; - vector<float> *trig_EF_el_m; - vector<float> *trig_EF_el_eta; - vector<float> *trig_EF_el_phi; - vector<float> *trig_EF_el_px; - vector<float> *trig_EF_el_py; - vector<float> *trig_EF_el_pz; - vector<float> *trig_EF_el_charge; - vector<int> *trig_EF_el_author; - vector<unsigned int> *trig_EF_el_isEM; - vector<int> *trig_EF_el_loose; - vector<int> *trig_EF_el_medium; - vector<int> *trig_EF_el_mediumIso; - vector<int> *trig_EF_el_tight; - vector<int> *trig_EF_el_tightIso; - vector<float> *trig_EF_el_vertweight; - vector<int> *trig_EF_el_hastrack; - Int_t trig_EF_ph_n; - vector<float> *trig_EF_ph_E; - vector<float> *trig_EF_ph_Et; - vector<float> *trig_EF_ph_pt; - vector<float> *trig_EF_ph_m; - vector<float> *trig_EF_ph_eta; - vector<float> *trig_EF_ph_phi; - vector<float> *trig_EF_ph_px; - vector<float> *trig_EF_ph_py; - vector<float> *trig_EF_ph_pz; - vector<int> *trig_EF_ph_author; - vector<int> *trig_EF_ph_isRecovered; - vector<unsigned int> *trig_EF_ph_isEM; - vector<int> *trig_EF_ph_convFlag; - vector<int> *trig_EF_ph_isConv; - vector<int> *trig_EF_ph_nConv; - vector<int> *trig_EF_ph_nSingleTrackConv; - vector<int> *trig_EF_ph_nDoubleTrackConv; - vector<int> *trig_EF_ph_loose; - vector<int> *trig_EF_ph_tight; - vector<int> *trig_EF_ph_tightIso; - Int_t trig_Nav_n; - vector<short> *trig_Nav_chain_ChainId; - vector<vector<int> > *trig_Nav_chain_RoIType; - vector<vector<int> > *trig_Nav_chain_RoIIndex; - Int_t trig_RoI_L2_e_n; - Int_t trig_RoI_EF_e_n; - Int_t trig_L1_mu_n; - vector<float> *trig_L1_mu_pt; - vector<float> *trig_L1_mu_eta; - vector<float> *trig_L1_mu_phi; - vector<string> *trig_L1_mu_thrName; - Int_t trig_L2_muonfeature_n; - vector<float> *trig_L2_muonfeature_pt; - vector<float> *trig_L2_muonfeature_eta; - vector<float> *trig_L2_muonfeature_phi; - Int_t trig_L2_muonfeaturedetails_n; - Int_t trig_L2_combmuonfeature_n; - vector<float> *trig_L2_combmuonfeature_pt; - vector<float> *trig_L2_combmuonfeature_eta; - vector<float> *trig_L2_combmuonfeature_phi; - vector<int> *trig_L2_combmuonfeature_idscantrk_index; - vector<int> *trig_L2_combmuonfeature_sitracktrk_index; - Int_t trig_L2_isomuonfeature_n; - vector<float> *trig_L2_isomuonfeature_pt; - vector<float> *trig_L2_isomuonfeature_eta; - vector<float> *trig_L2_isomuonfeature_phi; - vector<float> *trig_L2_isomuonfeature_EtInnerConeEC; - vector<float> *trig_L2_isomuonfeature_EtOuterConeEC; - vector<float> *trig_L2_isomuonfeature_EtInnerConeHC; - vector<float> *trig_L2_isomuonfeature_EtOuterConeHC; - vector<int> *trig_L2_isomuonfeature_NTracksCone; - vector<float> *trig_L2_isomuonfeature_SumPtTracksCone; - vector<float> *trig_L2_isomuonfeature_PtMuTracksCone; - Int_t trig_L2_tilemufeature_n; - vector<float> *trig_L2_tilemufeature_eta; - vector<float> *trig_L2_tilemufeature_phi; - Int_t trig_L2_tiletrackmufeature_n; - vector<float> *trig_L2_tiletrackmufeature_pt; - vector<float> *trig_L2_tiletrackmufeature_eta; - vector<float> *trig_L2_tiletrackmufeature_phi; - vector<int> *trig_L2_tiletrackmufeature_tilemu_index; - vector<int> *trig_L2_tiletrackmufeature_idtrk_algorithmId; - vector<short> *trig_L2_tiletrackmufeature_idtrk_trackStatus; - vector<float> *trig_L2_tiletrackmufeature_idtrk_chi2Ndof; - vector<float> *trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_a0; - vector<float> *trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_z0; - vector<float> *trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_phi0; - vector<float> *trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_eta; - vector<float> *trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_pt; - vector<int> *trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_hasidtrkfitpar; - vector<int> *trig_L2_tiletrackmufeature_idtrk_hasidtrk; - Int_t trig_EF_trigmuonef_n; - vector<int> *trig_EF_trigmuonef_track_n; - vector<vector<int> > *trig_EF_trigmuonef_track_MuonType; - vector<vector<float> > *trig_EF_trigmuonef_track_MS_pt; - vector<vector<float> > *trig_EF_trigmuonef_track_MS_eta; - vector<vector<float> > *trig_EF_trigmuonef_track_MS_phi; - vector<vector<int> > *trig_EF_trigmuonef_track_MS_hasMS; - vector<vector<float> > *trig_EF_trigmuonef_track_SA_pt; - vector<vector<float> > *trig_EF_trigmuonef_track_SA_eta; - vector<vector<float> > *trig_EF_trigmuonef_track_SA_phi; - vector<vector<int> > *trig_EF_trigmuonef_track_SA_hasSA; - vector<vector<float> > *trig_EF_trigmuonef_track_CB_pt; - vector<vector<float> > *trig_EF_trigmuonef_track_CB_eta; - vector<vector<float> > *trig_EF_trigmuonef_track_CB_phi; - vector<vector<int> > *trig_EF_trigmuonef_track_CB_hasCB; - Int_t trig_EF_trigmugirl_n; - vector<int> *trig_EF_trigmugirl_track_n; - vector<vector<int> > *trig_EF_trigmugirl_track_MuonType; - vector<vector<float> > *trig_EF_trigmugirl_track_MS_pt; - vector<vector<float> > *trig_EF_trigmugirl_track_MS_eta; - vector<vector<float> > *trig_EF_trigmugirl_track_MS_phi; - vector<vector<int> > *trig_EF_trigmugirl_track_MS_hasMS; - vector<vector<float> > *trig_EF_trigmugirl_track_SA_pt; - vector<vector<float> > *trig_EF_trigmugirl_track_SA_eta; - vector<vector<float> > *trig_EF_trigmugirl_track_SA_phi; - vector<vector<int> > *trig_EF_trigmugirl_track_SA_hasSA; - vector<vector<float> > *trig_EF_trigmugirl_track_CB_pt; - vector<vector<float> > *trig_EF_trigmugirl_track_CB_eta; - vector<vector<float> > *trig_EF_trigmugirl_track_CB_phi; - vector<vector<int> > *trig_EF_trigmugirl_track_CB_hasCB; - Int_t trig_L2_sitrack_muon_n; - vector<int> *trig_L2_sitrack_muon_algorithmId; - vector<short> *trig_L2_sitrack_muon_trackStatus; - vector<float> *trig_L2_sitrack_muon_chi2Ndof; - vector<float> *trig_L2_sitrack_muon_param_a0; - vector<float> *trig_L2_sitrack_muon_param_z0; - vector<float> *trig_L2_sitrack_muon_param_phi0; - vector<float> *trig_L2_sitrack_muon_param_eta; - vector<float> *trig_L2_sitrack_muon_param_pt; - Int_t trig_L2_idscan_muon_n; - vector<int> *trig_L2_idscan_muon_algorithmId; - vector<short> *trig_L2_idscan_muon_trackStatus; - vector<float> *trig_L2_idscan_muon_chi2Ndof; - vector<float> *trig_L2_idscan_muon_param_a0; - vector<float> *trig_L2_idscan_muon_param_z0; - vector<float> *trig_L2_idscan_muon_param_phi0; - vector<float> *trig_L2_idscan_muon_param_eta; - vector<float> *trig_L2_idscan_muon_param_pt; - Int_t trig_L2_sitrack_isomuon_n; - vector<int> *trig_L2_sitrack_isomuon_algorithmId; - vector<short> *trig_L2_sitrack_isomuon_trackStatus; - vector<float> *trig_L2_sitrack_isomuon_chi2Ndof; - vector<float> *trig_L2_sitrack_isomuon_param_a0; - vector<float> *trig_L2_sitrack_isomuon_param_z0; - vector<float> *trig_L2_sitrack_isomuon_param_phi0; - vector<float> *trig_L2_sitrack_isomuon_param_eta; - vector<float> *trig_L2_sitrack_isomuon_param_pt; - Int_t trig_L2_idscan_isomuon_n; - vector<int> *trig_L2_idscan_isomuon_algorithmId; - vector<short> *trig_L2_idscan_isomuon_trackStatus; - vector<float> *trig_L2_idscan_isomuon_chi2Ndof; - vector<float> *trig_L2_idscan_isomuon_param_a0; - vector<float> *trig_L2_idscan_isomuon_param_z0; - vector<float> *trig_L2_idscan_isomuon_param_phi0; - vector<float> *trig_L2_idscan_isomuon_param_eta; - vector<float> *trig_L2_idscan_isomuon_param_pt; - Int_t trig_roidescriptor_forID_n; - vector<float> *trig_roidescriptor_forID_phi; - vector<float> *trig_roidescriptor_forID_eta; - vector<float> *trig_roidescriptor_forID_zed0; - Int_t trig_RoI_L2_mu_n; - vector<short> *trig_RoI_L2_mu_type; - vector<short> *trig_RoI_L2_mu_lastStep; - vector<int> *trig_RoI_L2_mu_TrigRoiDescriptor_forID; - vector<int> *trig_RoI_L2_mu_TrigRoiDescriptor_forIDStatus; - vector<int> *trig_RoI_L2_mu_MuonFeature; - vector<int> *trig_RoI_L2_mu_MuonFeatureStatus; - vector<int> *trig_RoI_L2_mu_MuonFeatureDetails; - vector<int> *trig_RoI_L2_mu_MuonFeatureDetailsStatus; - vector<int> *trig_RoI_L2_mu_CombinedMuonFeature; - vector<int> *trig_RoI_L2_mu_CombinedMuonFeatureStatus; - vector<int> *trig_RoI_L2_mu_IsoMuonFeature; - vector<int> *trig_RoI_L2_mu_IsoMuonFeatureStatus; - vector<int> *trig_RoI_L2_mu_Muon_ROI; - vector<int> *trig_RoI_L2_mu_Muon_ROIStatus; - vector<vector<int> > *trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_Muon; - vector<vector<int> > *trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_MuonStatus; - vector<vector<int> > *trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_Muon; - vector<vector<int> > *trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_MuonStatus; - vector<vector<int> > *trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_muonIso; - vector<vector<int> > *trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_muonIsoStatus; - vector<vector<int> > *trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIso; - vector<vector<int> > *trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIsoStatus; - Int_t trig_RoI_L2_TileMu_n; - vector<short> *trig_RoI_L2_TileMu_type; - vector<short> *trig_RoI_L2_TileMu_lastStep; - vector<int> *trig_RoI_L2_TileMu_TileMuFeature; - vector<int> *trig_RoI_L2_TileMu_TileMuFeatureStatus; - vector<int> *trig_RoI_L2_TileMu_TileTrackMuFeature; - vector<int> *trig_RoI_L2_TileMu_TileTrackMuFeatureStatus; - vector<int> *trig_RoI_L2_TileMu_Muon_ROI; - vector<int> *trig_RoI_L2_TileMu_Muon_ROIStatus; - vector<vector<int> > *trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigSiTrack_Tile; - vector<vector<int> > *trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigSiTrack_TileStatus; - vector<vector<int> > *trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigIDSCAN_Tile; - vector<vector<int> > *trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigIDSCAN_TileStatus; - Int_t trig_RoI_EF_mu_n; - vector<short> *trig_RoI_EF_mu_type; - vector<short> *trig_RoI_EF_mu_lastStep; - vector<int> *trig_RoI_EF_mu_Muon_ROI; - vector<int> *trig_RoI_EF_mu_Muon_ROIStatus; - vector<vector<int> > *trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFID; - vector<vector<int> > *trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFIDStatus; - vector<vector<int> > *trig_RoI_EF_mu_TrigMuonEFInfoContainer; - vector<vector<int> > *trig_RoI_EF_mu_TrigMuonEFInfoContainerStatus; - vector<vector<int> > *trig_RoI_EF_mu_TrigMuonEFInfoContainer_MuGirl; - vector<vector<int> > *trig_RoI_EF_mu_TrigMuonEFInfoContainer_MuGirlStatus; - vector<vector<int> > *trig_RoI_EF_mu_TrigMuonEFInfoContainer_MuTagIMO_EF; - vector<vector<int> > *trig_RoI_EF_mu_TrigMuonEFInfoContainer_MuTagIMO_EFStatus; - Int_t trig_RoI_EF_TileMu_n; - vector<short> *trig_RoI_EF_TileMu_type; - vector<short> *trig_RoI_EF_TileMu_lastStep; - vector<int> *trig_RoI_EF_TileMu_Muon_ROI; - vector<int> *trig_RoI_EF_TileMu_Muon_ROIStatus; - vector<vector<int> > *trig_RoI_EF_TileMu_TrigMuonEFContainer; - vector<vector<int> > *trig_RoI_EF_TileMu_TrigMuonEFContainerStatus; - vector<vector<int> > *trig_RoI_EF_TileMu_TrigMuonEFInfoContainer; - vector<vector<int> > *trig_RoI_EF_TileMu_TrigMuonEFInfoContainerStatus; - vector<vector<int> > *trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuGirl; - vector<vector<int> > *trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuGirlStatus; - vector<vector<int> > *trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuTagIMO_EF; - vector<vector<int> > *trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuTagIMO_EFStatus; - vector<string> *trig_L1_esum_thrNames; - Float_t trig_L1_esum_ExMiss; - Float_t trig_L1_esum_EyMiss; - Float_t trig_L1_esum_energyT; - Bool_t trig_L1_esum_overflowX; - Bool_t trig_L1_esum_overflowY; - Bool_t trig_L1_esum_overflowT; - UInt_t trig_L1_esum_RoIWord0; - UInt_t trig_L1_esum_RoIWord1; - UInt_t trig_L1_esum_RoIWord2; - Float_t trig_L2_met_MEx; - Float_t trig_L2_met_MEy; - Float_t trig_L2_met_MEz; - Float_t trig_L2_met_sumEt; - Float_t trig_L2_met_sumE; - Int_t trig_L2_met_flag; - vector<string> *trig_L2_met_nameOfComponent; - vector<float> *trig_L2_met_MExComponent; - vector<float> *trig_L2_met_MEyComponent; - vector<float> *trig_L2_met_MEzComponent; - vector<float> *trig_L2_met_sumEtComponent; - vector<float> *trig_L2_met_sumEComponent; - vector<float> *trig_L2_met_componentCalib0; - vector<float> *trig_L2_met_componentCalib1; - vector<short> *trig_L2_met_sumOfSigns; - vector<unsigned short> *trig_L2_met_usedChannels; - vector<short> *trig_L2_met_status; - Float_t trig_EF_met_MEx; - Float_t trig_EF_met_MEy; - Float_t trig_EF_met_MEz; - Float_t trig_EF_met_sumEt; - Float_t trig_EF_met_sumE; - Int_t trig_EF_met_flag; - vector<string> *trig_EF_met_nameOfComponent; - vector<float> *trig_EF_met_MExComponent; - vector<float> *trig_EF_met_MEyComponent; - vector<float> *trig_EF_met_MEzComponent; - vector<float> *trig_EF_met_sumEtComponent; - vector<float> *trig_EF_met_sumEComponent; - vector<float> *trig_EF_met_componentCalib0; - vector<float> *trig_EF_met_componentCalib1; - vector<short> *trig_EF_met_sumOfSigns; - vector<unsigned short> *trig_EF_met_usedChannels; - vector<short> *trig_EF_met_status; - - // List of branches - TBranch *b_RunNumber; //! - TBranch *b_EventNumber; //! - TBranch *b_timestamp; //! - TBranch *b_timestamp_ns; //! - TBranch *b_lbn; //! - TBranch *b_bcid; //! - TBranch *b_detmask0; //! - TBranch *b_detmask1; //! - TBranch *b_pixelFlags; //! - TBranch *b_sctFlags; //! - TBranch *b_trtFlags; //! - TBranch *b_larFlags; //! - TBranch *b_tileFlags; //! - TBranch *b_muonFlags; //! - TBranch *b_fwdFlags; //! - TBranch *b_coreFlags; //! - TBranch *b_pixelError; //! - TBranch *b_sctError; //! - TBranch *b_trtError; //! - TBranch *b_larError; //! - TBranch *b_tileError; //! - TBranch *b_muonError; //! - TBranch *b_fwdError; //! - TBranch *b_coreError; //! - TBranch *b_lar_ncellA; //! - TBranch *b_lar_ncellC; //! - TBranch *b_lar_energyA; //! - TBranch *b_lar_energyC; //! - TBranch *b_lar_timeA; //! - TBranch *b_lar_timeC; //! - TBranch *b_lar_timeDiff; //! - TBranch *b_er_n; //! - TBranch *b_er_rings; //! - TBranch *b_er_nt_n; //! - TBranch *b_er_nt_rings; //! - TBranch *b_ph_n; //! - TBranch *b_ph_E; //! - TBranch *b_ph_Et; //! - TBranch *b_ph_pt; //! - TBranch *b_ph_m; //! - TBranch *b_ph_eta; //! - TBranch *b_ph_phi; //! - TBranch *b_ph_px; //! - TBranch *b_ph_py; //! - TBranch *b_ph_pz; //! - TBranch *b_ph_author; //! - TBranch *b_ph_isRecovered; //! - TBranch *b_ph_isEM; //! - TBranch *b_ph_OQ; //! - TBranch *b_ph_OQRecalc; //! - TBranch *b_ph_convFlag; //! - TBranch *b_ph_isConv; //! - TBranch *b_ph_nConv; //! - TBranch *b_ph_nSingleTrackConv; //! - TBranch *b_ph_nDoubleTrackConv; //! - TBranch *b_ph_type; //! - TBranch *b_ph_origin; //! - TBranch *b_ph_truth_deltaRRecPhoton; //! - TBranch *b_ph_truth_E; //! - TBranch *b_ph_truth_pt; //! - TBranch *b_ph_truth_eta; //! - TBranch *b_ph_truth_phi; //! - TBranch *b_ph_truth_type; //! - TBranch *b_ph_truth_status; //! - TBranch *b_ph_truth_barcode; //! - TBranch *b_ph_truth_mothertype; //! - TBranch *b_ph_truth_motherbarcode; //! - TBranch *b_ph_truth_index; //! - TBranch *b_ph_truth_matched; //! - TBranch *b_ph_loose; //! - TBranch *b_ph_tight; //! - TBranch *b_ph_tightIso; //! - TBranch *b_ph_goodOQ; //! - TBranch *b_ph_Ethad; //! - TBranch *b_ph_Ethad1; //! - TBranch *b_ph_E033; //! - TBranch *b_ph_f1; //! - TBranch *b_ph_f1core; //! - TBranch *b_ph_Emins1; //! - TBranch *b_ph_fside; //! - TBranch *b_ph_Emax2; //! - TBranch *b_ph_ws3; //! - TBranch *b_ph_wstot; //! - TBranch *b_ph_E132; //! - TBranch *b_ph_E1152; //! - TBranch *b_ph_emaxs1; //! - TBranch *b_ph_deltaEs; //! - TBranch *b_ph_E233; //! - TBranch *b_ph_E237; //! - TBranch *b_ph_E277; //! - TBranch *b_ph_weta2; //! - TBranch *b_ph_f3; //! - TBranch *b_ph_f3core; //! - TBranch *b_ph_rphiallcalo; //! - TBranch *b_ph_Etcone45; //! - TBranch *b_ph_Etcone15; //! - TBranch *b_ph_Etcone20; //! - TBranch *b_ph_Etcone25; //! - TBranch *b_ph_Etcone30; //! - TBranch *b_ph_Etcone35; //! - TBranch *b_ph_Etcone40; //! - TBranch *b_ph_ptcone20; //! - TBranch *b_ph_ptcone30; //! - TBranch *b_ph_ptcone40; //! - TBranch *b_ph_nucone20; //! - TBranch *b_ph_nucone30; //! - TBranch *b_ph_nucone40; //! - TBranch *b_ph_convanglematch; //! - TBranch *b_ph_convtrackmatch; //! - TBranch *b_ph_hasconv; //! - TBranch *b_ph_convvtxx; //! - TBranch *b_ph_convvtxy; //! - TBranch *b_ph_convvtxz; //! - TBranch *b_ph_Rconv; //! - TBranch *b_ph_zconv; //! - TBranch *b_ph_convvtxchi2; //! - TBranch *b_ph_pt1conv; //! - TBranch *b_ph_convtrk1nBLHits; //! - TBranch *b_ph_convtrk1nPixHits; //! - TBranch *b_ph_convtrk1nSCTHits; //! - TBranch *b_ph_convtrk1nTRTHits; //! - TBranch *b_ph_pt2conv; //! - TBranch *b_ph_convtrk2nBLHits; //! - TBranch *b_ph_convtrk2nPixHits; //! - TBranch *b_ph_convtrk2nSCTHits; //! - TBranch *b_ph_convtrk2nTRTHits; //! - TBranch *b_ph_ptconv; //! - TBranch *b_ph_pzconv; //! - TBranch *b_ph_reta; //! - TBranch *b_ph_rphi; //! - TBranch *b_ph_EtringnoisedR03sig2; //! - TBranch *b_ph_EtringnoisedR03sig3; //! - TBranch *b_ph_EtringnoisedR03sig4; //! - TBranch *b_ph_isolationlikelihoodjets; //! - TBranch *b_ph_isolationlikelihoodhqelectrons; //! - TBranch *b_ph_loglikelihood; //! - TBranch *b_ph_photonweight; //! - TBranch *b_ph_photonbgweight; //! - TBranch *b_ph_neuralnet; //! - TBranch *b_ph_Hmatrix; //! - TBranch *b_ph_Hmatrix5; //! - TBranch *b_ph_adaboost; //! - TBranch *b_ph_zvertex; //! - TBranch *b_ph_errz; //! - TBranch *b_ph_etap; //! - TBranch *b_ph_depth; //! - TBranch *b_ph_cl_E; //! - TBranch *b_ph_cl_pt; //! - TBranch *b_ph_cl_eta; //! - TBranch *b_ph_cl_phi; //! - TBranch *b_ph_Es0; //! - TBranch *b_ph_etas0; //! - TBranch *b_ph_phis0; //! - TBranch *b_ph_Es1; //! - TBranch *b_ph_etas1; //! - TBranch *b_ph_phis1; //! - TBranch *b_ph_Es2; //! - TBranch *b_ph_etas2; //! - TBranch *b_ph_phis2; //! - TBranch *b_ph_Es3; //! - TBranch *b_ph_etas3; //! - TBranch *b_ph_phis3; //! - TBranch *b_ph_rawcl_Es0; //! - TBranch *b_ph_rawcl_etas0; //! - TBranch *b_ph_rawcl_phis0; //! - TBranch *b_ph_rawcl_Es1; //! - TBranch *b_ph_rawcl_etas1; //! - TBranch *b_ph_rawcl_phis1; //! - TBranch *b_ph_rawcl_Es2; //! - TBranch *b_ph_rawcl_etas2; //! - TBranch *b_ph_rawcl_phis2; //! - TBranch *b_ph_rawcl_Es3; //! - TBranch *b_ph_rawcl_etas3; //! - TBranch *b_ph_rawcl_phis3; //! - TBranch *b_ph_rawcl_E; //! - TBranch *b_ph_rawcl_pt; //! - TBranch *b_ph_rawcl_eta; //! - TBranch *b_ph_rawcl_phi; //! - TBranch *b_ph_truth_isConv; //! - TBranch *b_ph_truth_isBrem; //! - TBranch *b_ph_truth_isFromHardProc; //! - TBranch *b_ph_truth_isPhotonFromHardProc; //! - TBranch *b_ph_truth_Rconv; //! - TBranch *b_ph_truth_zconv; //! - TBranch *b_ph_deltaEmax2; //! - TBranch *b_ph_calibHitsShowerDepth; //! - TBranch *b_ph_isIso; //! - TBranch *b_ph_mvaptcone20; //! - TBranch *b_ph_mvaptcone30; //! - TBranch *b_ph_mvaptcone40; //! - TBranch *b_ph_topoEtcone20; //! - TBranch *b_ph_topoEtcone40; //! - TBranch *b_ph_topoEtcone60; //! - TBranch *b_ph_jet_dr; //! - TBranch *b_ph_jet_E; //! - TBranch *b_ph_jet_pt; //! - TBranch *b_ph_jet_m; //! - TBranch *b_ph_jet_eta; //! - TBranch *b_ph_jet_phi; //! - TBranch *b_ph_jet_truth_dr; //! - TBranch *b_ph_jet_truth_E; //! - TBranch *b_ph_jet_truth_pt; //! - TBranch *b_ph_jet_truth_m; //! - TBranch *b_ph_jet_truth_eta; //! - TBranch *b_ph_jet_truth_phi; //! - TBranch *b_ph_jet_truth_matched; //! - TBranch *b_ph_jet_matched; //! - TBranch *b_ph_convIP; //! - TBranch *b_ph_convIPRev; //! - TBranch *b_ph_ptIsolationCone; //! - TBranch *b_ph_ptIsolationConePhAngle; //! - TBranch *b_ph_Etcone40_pt_corrected; //! - TBranch *b_ph_Etcone35_pt_corrected; //! - TBranch *b_ph_Etcone30_pt_corrected; //! - TBranch *b_ph_Etcone25_pt_corrected; //! - TBranch *b_ph_Etcone20_pt_corrected; //! - TBranch *b_ph_Etcone15_pt_corrected; //! - TBranch *b_ph_Etcone40_ED_corrected; //! - TBranch *b_ph_Etcone40_corrected; //! - TBranch *b_ph_topodr; //! - TBranch *b_ph_topopt; //! - TBranch *b_ph_topoeta; //! - TBranch *b_ph_topophi; //! - TBranch *b_ph_topomatched; //! - TBranch *b_ph_topoEMdr; //! - TBranch *b_ph_topoEMpt; //! - TBranch *b_ph_topoEMeta; //! - TBranch *b_ph_topoEMphi; //! - TBranch *b_ph_topoEMmatched; //! - TBranch *b_ph_EF_dr; //! - TBranch *b_ph_EF_index; //! - TBranch *b_ph_L2_dr; //! - TBranch *b_ph_L2_index; //! - TBranch *b_ph_L1_dr; //! - TBranch *b_ph_L1_index; //! - TBranch *b_EF_2g10_loose; //! - TBranch *b_EF_2g15_loose; //! - TBranch *b_EF_2g20_loose; //! - TBranch *b_EF_2g5_loose; //! - TBranch *b_EF_2g7_loose; //! - TBranch *b_EF_2j35_jetNoEF_xe20_noMu; //! - TBranch *b_EF_2j35_jetNoEF_xe30_noMu; //! - TBranch *b_EF_2j35_jetNoEF_xe40_noMu; //! - TBranch *b_EF_2j35_xe20_noMu; //! - TBranch *b_EF_2j35_xe30_noMu; //! - TBranch *b_EF_2j35_xe40_noMu; //! - TBranch *b_EF_2mu0_NoAlg; //! - TBranch *b_EF_2mu10; //! - TBranch *b_EF_2mu10_NoAlg; //! - TBranch *b_EF_2mu4; //! - TBranch *b_EF_2mu4_Bmumu; //! - TBranch *b_EF_2mu4_Bmumux; //! - TBranch *b_EF_2mu4_DiMu; //! - TBranch *b_EF_2mu4_DiMu_SiTrk; //! - TBranch *b_EF_2mu4_DiMu_noVtx; //! - TBranch *b_EF_2mu4_DiMu_noVtx_noOS; //! - TBranch *b_EF_2mu4_Jpsimumu; //! - TBranch *b_EF_2mu4_Jpsimumu_IDTrkNoCut; //! - TBranch *b_EF_2mu4_Upsimumu; //! - TBranch *b_EF_2mu6; //! - TBranch *b_EF_2mu6_Bmumu; //! - TBranch *b_EF_2mu6_Bmumux; //! - TBranch *b_EF_2mu6_DiMu; //! - TBranch *b_EF_2mu6_Jpsimumu; //! - TBranch *b_EF_2mu6_MG; //! - TBranch *b_EF_2mu6_NoAlg; //! - TBranch *b_EF_2mu6_Upsimumu; //! - TBranch *b_EF_2mu6_g10_loose; //! - TBranch *b_EF_e20_loose_xe20; //! - TBranch *b_EF_e20_loose_xe20_noMu; //! - TBranch *b_EF_e20_loose_xe30; //! - TBranch *b_EF_e20_loose_xe30_noMu; //! - TBranch *b_EF_g10_loose; //! - TBranch *b_EF_g10_loose_larcalib; //! - TBranch *b_EF_g11_etcut; //! - TBranch *b_EF_g15_loose; //! - TBranch *b_EF_g17_etcut; //! - TBranch *b_EF_g17_etcut_EFxe20_noMu; //! - TBranch *b_EF_g17_etcut_EFxe30_noMu; //! - TBranch *b_EF_g20_loose; //! - TBranch *b_EF_g20_loose_cnv; //! - TBranch *b_EF_g20_loose_larcalib; //! - TBranch *b_EF_g20_loose_xe20_noMu; //! - TBranch *b_EF_g20_loose_xe30_noMu; //! - TBranch *b_EF_g20_tight; //! - TBranch *b_EF_g25_loose_xe30_noMu; //! - TBranch *b_EF_g30_loose; //! - TBranch *b_EF_g30_tight; //! - TBranch *b_EF_g3_NoCut_unpaired_iso; //! - TBranch *b_EF_g3_NoCut_unpaired_noniso; //! - TBranch *b_EF_g40_loose; //! - TBranch *b_EF_g40_loose_larcalib; //! - TBranch *b_EF_g40_tight; //! - TBranch *b_EF_g50_loose; //! - TBranch *b_EF_g50_loose_larcalib; //! - TBranch *b_EF_g5_NoCut_cosmic; //! - TBranch *b_EF_g5_loose; //! - TBranch *b_EF_g5_loose_cnv; //! - TBranch *b_EF_g5_loose_larcalib; //! - TBranch *b_EF_g7_loose; //! - TBranch *b_EF_j35_jetNoCut_xe30_e15_medium; //! - TBranch *b_EF_j35_jetNoCut_xe30_mu15; //! - TBranch *b_EF_j35_xe30_e15_medium; //! - TBranch *b_EF_j35_xe30_mu15; //! - TBranch *b_EF_j50_jetNoEF_xe20_noMu; //! - TBranch *b_EF_j50_jetNoEF_xe30_noMu; //! - TBranch *b_EF_j50_jetNoEF_xe40_noMu; //! - TBranch *b_EF_j50_xe20_noMu; //! - TBranch *b_EF_j50_xe30_noMu; //! - TBranch *b_EF_j50_xe40_noMu; //! - TBranch *b_EF_mu0_NoAlg; //! - TBranch *b_EF_mu0_comm_NoAlg; //! - TBranch *b_EF_mu0_comm_empty_NoAlg; //! - TBranch *b_EF_mu0_comm_firstempty_NoAlg; //! - TBranch *b_EF_mu0_comm_unpaired_iso_NoAlg; //! - TBranch *b_EF_mu0_comm_unpaired_noniso_NoAlg; //! - TBranch *b_EF_mu0_empty_NoAlg; //! - TBranch *b_EF_mu0_firstempty_NoAlg; //! - TBranch *b_EF_mu0_missingRoi; //! - TBranch *b_EF_mu0_outOfTime1; //! - TBranch *b_EF_mu0_outOfTime2; //! - TBranch *b_EF_mu0_rpcOnly; //! - TBranch *b_EF_mu0_unpaired_iso_NoAlg; //! - TBranch *b_EF_mu0_unpaired_noniso_NoAlg; //! - TBranch *b_EF_mu10; //! - TBranch *b_EF_mu10_Ecut12; //! - TBranch *b_EF_mu10_Ecut123; //! - TBranch *b_EF_mu10_Ecut13; //! - TBranch *b_EF_mu10_IDTrkNoCut; //! - TBranch *b_EF_mu10_MG; //! - TBranch *b_EF_mu10_MSonly; //! - TBranch *b_EF_mu10_MSonly_Ecut12; //! - TBranch *b_EF_mu10_MSonly_Ecut123; //! - TBranch *b_EF_mu10_MSonly_Ecut13; //! - TBranch *b_EF_mu10_MSonly_tight; //! - TBranch *b_EF_mu10_NoAlg; //! - TBranch *b_EF_mu10_SiTrk; //! - TBranch *b_EF_mu10_j30; //! - TBranch *b_EF_mu10_tight; //! - TBranch *b_EF_mu10i_loose; //! - TBranch *b_EF_mu13; //! - TBranch *b_EF_mu13_MG; //! - TBranch *b_EF_mu13_MG_tight; //! - TBranch *b_EF_mu13_tight; //! - TBranch *b_EF_mu15; //! - TBranch *b_EF_mu15_MG; //! - TBranch *b_EF_mu15_NoAlg; //! - TBranch *b_EF_mu20; //! - TBranch *b_EF_mu20_MSonly; //! - TBranch *b_EF_mu20_NoAlg; //! - TBranch *b_EF_mu20_passHLT; //! - TBranch *b_EF_mu20_slow; //! - TBranch *b_EF_mu30_MSonly; //! - TBranch *b_EF_mu4; //! - TBranch *b_EF_mu40_MSonly; //! - TBranch *b_EF_mu4_Bmumu; //! - TBranch *b_EF_mu4_BmumuX; //! - TBranch *b_EF_mu4_DiMu; //! - TBranch *b_EF_mu4_DiMu_FS; //! - TBranch *b_EF_mu4_DiMu_FS_noOS; //! - TBranch *b_EF_mu4_DiMu_MG; //! - TBranch *b_EF_mu4_DiMu_MG_FS; //! - TBranch *b_EF_mu4_DiMu_SiTrk; //! - TBranch *b_EF_mu4_DiMu_SiTrk_FS; //! - TBranch *b_EF_mu4_DiMu_noOS; //! - TBranch *b_EF_mu4_IDTrkNoCut; //! - TBranch *b_EF_mu4_Jpsie5e3; //! - TBranch *b_EF_mu4_Jpsie5e3_FS; //! - TBranch *b_EF_mu4_Jpsie5e3_SiTrk; //! - TBranch *b_EF_mu4_Jpsie5e3_SiTrk_FS; //! - TBranch *b_EF_mu4_Jpsimumu; //! - TBranch *b_EF_mu4_Jpsimumu_FS; //! - TBranch *b_EF_mu4_Jpsimumu_SiTrk_FS; //! - TBranch *b_EF_mu4_L1J10_matched; //! - TBranch *b_EF_mu4_L1J15_matched; //! - TBranch *b_EF_mu4_L1J30_matched; //! - TBranch *b_EF_mu4_L1J55_matched; //! - TBranch *b_EF_mu4_L1J5_matched; //! - TBranch *b_EF_mu4_L2MSonly_EFFS_passL2; //! - TBranch *b_EF_mu4_MG; //! - TBranch *b_EF_mu4_MSonly; //! - TBranch *b_EF_mu4_MSonly_EFFS_passL2; //! - TBranch *b_EF_mu4_MSonly_MB2_noL2_EFFS; //! - TBranch *b_EF_mu4_MSonly_cosmic; //! - TBranch *b_EF_mu4_MSonly_outOfTime; //! - TBranch *b_EF_mu4_MV; //! - TBranch *b_EF_mu4_SiTrk; //! - TBranch *b_EF_mu4_Trk_Jpsi; //! - TBranch *b_EF_mu4_Trk_Jpsi_FS; //! - TBranch *b_EF_mu4_Trk_Jpsi_loose; //! - TBranch *b_EF_mu4_Trk_Upsi_FS; //! - TBranch *b_EF_mu4_Trk_Upsi_loose_FS; //! - TBranch *b_EF_mu4_Upsimumu_FS; //! - TBranch *b_EF_mu4_Upsimumu_SiTrk_FS; //! - TBranch *b_EF_mu4_comm_MSonly_cosmic; //! - TBranch *b_EF_mu4_comm_cosmic; //! - TBranch *b_EF_mu4_comm_firstempty; //! - TBranch *b_EF_mu4_comm_unpaired_iso; //! - TBranch *b_EF_mu4_cosmic; //! - TBranch *b_EF_mu4_firstempty; //! - TBranch *b_EF_mu4_j20; //! - TBranch *b_EF_mu4_j20_jetNoEF; //! - TBranch *b_EF_mu4_j30; //! - TBranch *b_EF_mu4_j30_jetNoEF; //! - TBranch *b_EF_mu4_mu6; //! - TBranch *b_EF_mu4_muCombTag; //! - TBranch *b_EF_mu4_tile; //! - TBranch *b_EF_mu4_tile_cosmic; //! - TBranch *b_EF_mu4_unpaired_iso; //! - TBranch *b_EF_mu4mu6_Bmumu; //! - TBranch *b_EF_mu4mu6_BmumuX; //! - TBranch *b_EF_mu4mu6_DiMu; //! - TBranch *b_EF_mu4mu6_Jpsimumu; //! - TBranch *b_EF_mu4mu6_Jpsimumu_IDTrkNoCut; //! - TBranch *b_EF_mu4mu6_Upsimumu; //! - TBranch *b_EF_mu6; //! - TBranch *b_EF_mu6_Bmumu; //! - TBranch *b_EF_mu6_BmumuX; //! - TBranch *b_EF_mu6_DiMu; //! - TBranch *b_EF_mu6_Ecut12; //! - TBranch *b_EF_mu6_Ecut123; //! - TBranch *b_EF_mu6_Ecut13; //! - TBranch *b_EF_mu6_Ecut2; //! - TBranch *b_EF_mu6_Ecut3; //! - TBranch *b_EF_mu6_IDTrkNoCut; //! - TBranch *b_EF_mu6_Jpsie5e3; //! - TBranch *b_EF_mu6_Jpsie5e3_FS; //! - TBranch *b_EF_mu6_Jpsie5e3_SiTrk; //! - TBranch *b_EF_mu6_Jpsie5e3_SiTrk_FS; //! - TBranch *b_EF_mu6_Jpsimumu; //! - TBranch *b_EF_mu6_MG; //! - TBranch *b_EF_mu6_MSonly; //! - TBranch *b_EF_mu6_MSonly_Ecut12; //! - TBranch *b_EF_mu6_MSonly_Ecut123; //! - TBranch *b_EF_mu6_MSonly_Ecut13; //! - TBranch *b_EF_mu6_MSonly_Ecut2; //! - TBranch *b_EF_mu6_MSonly_Ecut3; //! - TBranch *b_EF_mu6_MSonly_outOfTime; //! - TBranch *b_EF_mu6_NoAlg; //! - TBranch *b_EF_mu6_SiTrk; //! - TBranch *b_EF_mu6_Trk_Jpsi; //! - TBranch *b_EF_mu6_Upsimumu_FS; //! - TBranch *b_EF_mu6_muCombTag; //! - TBranch *b_EF_tau12_loose_IdScan_xe15_noMu; //! - TBranch *b_EF_tau12_loose_xe15_noMu; //! - TBranch *b_EF_tau12_loose_xe20_noMu; //! - TBranch *b_EF_tau16_loose_xe20_noMu; //! - TBranch *b_EF_tau16_loose_xe25_noMu; //! - TBranch *b_EF_tau16_loose_xe25_tight_noMu; //! - TBranch *b_EF_tau16_loose_xe30_noMu; //! - TBranch *b_EF_tau16_medium_xe22_noMu; //! - TBranch *b_EF_tau16_medium_xe25_noMu; //! - TBranch *b_EF_tau16_medium_xe25_tight_noMu; //! - TBranch *b_EF_tau20_loose_xe25_noMu; //! - TBranch *b_EF_tauNoCut_hasTrk6_IdScan_xe20_noMu; //! - TBranch *b_EF_tauNoCut_hasTrk6_xe20_noMu; //! - TBranch *b_EF_tauNoCut_hasTrk9_xe20_noMu; //! - TBranch *b_EF_tauNoCut_hasTrk_xe20_noMu; //! - TBranch *b_EF_xe15; //! - TBranch *b_EF_xe15_noMu; //! - TBranch *b_EF_xe15_unbiased_noMu; //! - TBranch *b_EF_xe20; //! - TBranch *b_EF_xe20_noMu; //! - TBranch *b_EF_xe20_tight_noMu; //! - TBranch *b_EF_xe20_tight_vfj_noMu; //! - TBranch *b_EF_xe25; //! - TBranch *b_EF_xe25_medium; //! - TBranch *b_EF_xe25_medium_noMu; //! - TBranch *b_EF_xe25_noMu; //! - TBranch *b_EF_xe25_tight_noMu; //! - TBranch *b_EF_xe25_tight_vfj_noMu; //! - TBranch *b_EF_xe25_vfj_noMu; //! - TBranch *b_EF_xe30; //! - TBranch *b_EF_xe30_allL1; //! - TBranch *b_EF_xe30_allL1_FEB; //! - TBranch *b_EF_xe30_allL1_allCells; //! - TBranch *b_EF_xe30_allL1_noMu; //! - TBranch *b_EF_xe30_loose; //! - TBranch *b_EF_xe30_loose_noMu; //! - TBranch *b_EF_xe30_medium; //! - TBranch *b_EF_xe30_medium_noMu; //! - TBranch *b_EF_xe30_medium_vfj_noMu; //! - TBranch *b_EF_xe30_noMu; //! - TBranch *b_EF_xe30_tight_noMu; //! - TBranch *b_EF_xe30_tight_vfj_noMu; //! - TBranch *b_EF_xe30_vfj_noMu; //! - TBranch *b_EF_xe35; //! - TBranch *b_EF_xe35_loose_noMu; //! - TBranch *b_EF_xe35_noMu; //! - TBranch *b_EF_xe35_tight_noMu; //! - TBranch *b_EF_xe40; //! - TBranch *b_EF_xe40_noMu; //! - TBranch *b_EF_xe40_tight_noMu; //! - TBranch *b_EF_xe45; //! - TBranch *b_EF_xe45_noMu; //! - TBranch *b_EF_xe55; //! - TBranch *b_EF_xe55_noMu; //! - TBranch *b_EF_xe60_medium; //! - TBranch *b_EF_xe60_medium_noMu; //! - TBranch *b_EF_xe80_medium; //! - TBranch *b_EF_xe80_medium_noMu; //! - TBranch *b_L1_2EM10; //! - TBranch *b_L1_2EM14; //! - TBranch *b_L1_2EM2; //! - TBranch *b_L1_2EM3; //! - TBranch *b_L1_2EM5; //! - TBranch *b_L1_2J15_XE10; //! - TBranch *b_L1_2J15_XE15; //! - TBranch *b_L1_2J15_XE25; //! - TBranch *b_L1_2MU0; //! - TBranch *b_L1_2MU0_FIRSTEMPTY; //! - TBranch *b_L1_2MU0_MU6; //! - TBranch *b_L1_2MU10; //! - TBranch *b_L1_2MU20; //! - TBranch *b_L1_2MU6; //! - TBranch *b_L1_2MU6_EM5; //! - TBranch *b_L1_EM10; //! - TBranch *b_L1_EM10I; //! - TBranch *b_L1_EM14; //! - TBranch *b_L1_EM14I; //! - TBranch *b_L1_EM14_XE10; //! - TBranch *b_L1_EM14_XE15; //! - TBranch *b_L1_EM2; //! - TBranch *b_L1_EM2_UNPAIRED_ISO; //! - TBranch *b_L1_EM2_UNPAIRED_NONISO; //! - TBranch *b_L1_EM3; //! - TBranch *b_L1_EM3_EMPTY; //! - TBranch *b_L1_EM3_FIRSTEMPTY; //! - TBranch *b_L1_EM3_MV; //! - TBranch *b_L1_EM5; //! - TBranch *b_L1_EM5_MU10; //! - TBranch *b_L1_EM5_MU6; //! - TBranch *b_L1_EM85; //! - TBranch *b_L1_J15_XE15_EM10; //! - TBranch *b_L1_J15_XE15_MU15; //! - TBranch *b_L1_J30_XE10; //! - TBranch *b_L1_J30_XE15; //! - TBranch *b_L1_J30_XE25; //! - TBranch *b_L1_MU0; //! - TBranch *b_L1_MU0_COMM; //! - TBranch *b_L1_MU0_COMM_EMPTY; //! - TBranch *b_L1_MU0_COMM_FIRSTEMPTY; //! - TBranch *b_L1_MU0_COMM_UNPAIRED_ISO; //! - TBranch *b_L1_MU0_COMM_UNPAIRED_NONISO; //! - TBranch *b_L1_MU0_EM3; //! - TBranch *b_L1_MU0_EMPTY; //! - TBranch *b_L1_MU0_FIRSTEMPTY; //! - TBranch *b_L1_MU0_J10; //! - TBranch *b_L1_MU0_J15; //! - TBranch *b_L1_MU0_J30; //! - TBranch *b_L1_MU0_J5; //! - TBranch *b_L1_MU0_J55; //! - TBranch *b_L1_MU0_MV; //! - TBranch *b_L1_MU0_UNPAIRED_ISO; //! - TBranch *b_L1_MU0_UNPAIRED_NONISO; //! - TBranch *b_L1_MU10; //! - TBranch *b_L1_MU10_FIRSTEMPTY; //! - TBranch *b_L1_MU10_J10; //! - TBranch *b_L1_MU15; //! - TBranch *b_L1_MU20; //! - TBranch *b_L1_MU6; //! - TBranch *b_L1_MU6_EM3; //! - TBranch *b_L1_MU6_FIRSTEMPTY; //! - TBranch *b_L1_MU6_J5; //! - TBranch *b_L1_TAU5_XE10; //! - TBranch *b_L1_TAU6_XE10; //! - TBranch *b_L1_XE10; //! - TBranch *b_L1_XE15; //! - TBranch *b_L1_XE20; //! - TBranch *b_L1_XE25; //! - TBranch *b_L1_XE30; //! - TBranch *b_L1_XE35; //! - TBranch *b_L1_XE40; //! - TBranch *b_L1_XE50; //! - TBranch *b_L2_2g10_loose; //! - TBranch *b_L2_2g15_loose; //! - TBranch *b_L2_2g20_loose; //! - TBranch *b_L2_2g5_loose; //! - TBranch *b_L2_2g7_loose; //! - TBranch *b_L2_2j30_xe12_noMu; //! - TBranch *b_L2_2j30_xe20_noMu; //! - TBranch *b_L2_2j30_xe30_noMu; //! - TBranch *b_L2_2j35_jetNoEF_xe20_noMu; //! - TBranch *b_L2_2j35_jetNoEF_xe30_noMu; //! - TBranch *b_L2_2j35_jetNoEF_xe40_noMu; //! - TBranch *b_L2_2mu0_NoAlg; //! - TBranch *b_L2_2mu10; //! - TBranch *b_L2_2mu10_NoAlg; //! - TBranch *b_L2_2mu4; //! - TBranch *b_L2_2mu4_Bmumu; //! - TBranch *b_L2_2mu4_Bmumux; //! - TBranch *b_L2_2mu4_DiMu; //! - TBranch *b_L2_2mu4_DiMu_SiTrk; //! - TBranch *b_L2_2mu4_DiMu_noVtx; //! - TBranch *b_L2_2mu4_DiMu_noVtx_noOS; //! - TBranch *b_L2_2mu4_Jpsimumu; //! - TBranch *b_L2_2mu4_Jpsimumu_IDTrkNoCut; //! - TBranch *b_L2_2mu4_Upsimumu; //! - TBranch *b_L2_2mu6; //! - TBranch *b_L2_2mu6_Bmumu; //! - TBranch *b_L2_2mu6_Bmumux; //! - TBranch *b_L2_2mu6_DiMu; //! - TBranch *b_L2_2mu6_Jpsimumu; //! - TBranch *b_L2_2mu6_MG; //! - TBranch *b_L2_2mu6_NoAlg; //! - TBranch *b_L2_2mu6_Upsimumu; //! - TBranch *b_L2_2mu6_g10_loose; //! - TBranch *b_L2_e20_loose_xe20; //! - TBranch *b_L2_e20_loose_xe20_noMu; //! - TBranch *b_L2_e20_loose_xe30; //! - TBranch *b_L2_e20_loose_xe30_noMu; //! - TBranch *b_L2_g10_loose; //! - TBranch *b_L2_g11_etcut; //! - TBranch *b_L2_g15_loose; //! - TBranch *b_L2_g17_etcut; //! - TBranch *b_L2_g17_etcut_EFxe20_noMu; //! - TBranch *b_L2_g17_etcut_EFxe30_noMu; //! - TBranch *b_L2_g20_loose; //! - TBranch *b_L2_g20_loose_cnv; //! - TBranch *b_L2_g20_loose_xe20_noMu; //! - TBranch *b_L2_g20_loose_xe30_noMu; //! - TBranch *b_L2_g20_tight; //! - TBranch *b_L2_g25_loose_xe30_noMu; //! - TBranch *b_L2_g30_loose; //! - TBranch *b_L2_g30_tight; //! - TBranch *b_L2_g3_NoCut_unpaired_iso; //! - TBranch *b_L2_g3_NoCut_unpaired_noniso; //! - TBranch *b_L2_g40_loose; //! - TBranch *b_L2_g40_tight; //! - TBranch *b_L2_g50_loose; //! - TBranch *b_L2_g5_NoCut_cosmic; //! - TBranch *b_L2_g5_loose; //! - TBranch *b_L2_g5_loose_cnv; //! - TBranch *b_L2_g7_loose; //! - TBranch *b_L2_j30_jetNoCut_xe20_e15_medium; //! - TBranch *b_L2_j30_xe20_e15_medium; //! - TBranch *b_L2_j35_jetNoCut_xe30_mu15; //! - TBranch *b_L2_j35_xe30_mu15; //! - TBranch *b_L2_j45_xe12_noMu; //! - TBranch *b_L2_j45_xe20_noMu; //! - TBranch *b_L2_j45_xe30_noMu; //! - TBranch *b_L2_mu0_NoAlg; //! - TBranch *b_L2_mu0_comm_NoAlg; //! - TBranch *b_L2_mu0_comm_empty_NoAlg; //! - TBranch *b_L2_mu0_comm_firstempty_NoAlg; //! - TBranch *b_L2_mu0_comm_unpaired_iso_NoAlg; //! - TBranch *b_L2_mu0_comm_unpaired_noniso_NoAlg; //! - TBranch *b_L2_mu0_empty_NoAlg; //! - TBranch *b_L2_mu0_firstempty_NoAlg; //! - TBranch *b_L2_mu0_missingRoi; //! - TBranch *b_L2_mu0_outOfTime1; //! - TBranch *b_L2_mu0_outOfTime2; //! - TBranch *b_L2_mu0_rpcOnly; //! - TBranch *b_L2_mu0_unpaired_iso_NoAlg; //! - TBranch *b_L2_mu0_unpaired_noniso_NoAlg; //! - TBranch *b_L2_mu10; //! - TBranch *b_L2_mu10_Ecut12; //! - TBranch *b_L2_mu10_Ecut123; //! - TBranch *b_L2_mu10_Ecut13; //! - TBranch *b_L2_mu10_IDTrkNoCut; //! - TBranch *b_L2_mu10_MG; //! - TBranch *b_L2_mu10_MSonly; //! - TBranch *b_L2_mu10_MSonly_Ecut12; //! - TBranch *b_L2_mu10_MSonly_Ecut123; //! - TBranch *b_L2_mu10_MSonly_Ecut13; //! - TBranch *b_L2_mu10_MSonly_tight; //! - TBranch *b_L2_mu10_NoAlg; //! - TBranch *b_L2_mu10_SiTrk; //! - TBranch *b_L2_mu10_j30; //! - TBranch *b_L2_mu10_tight; //! - TBranch *b_L2_mu10i_loose; //! - TBranch *b_L2_mu13; //! - TBranch *b_L2_mu13_MG; //! - TBranch *b_L2_mu13_MG_tight; //! - TBranch *b_L2_mu13_tight; //! - TBranch *b_L2_mu15; //! - TBranch *b_L2_mu15_MG; //! - TBranch *b_L2_mu15_NoAlg; //! - TBranch *b_L2_mu20; //! - TBranch *b_L2_mu20_MSonly; //! - TBranch *b_L2_mu20_NoAlg; //! - TBranch *b_L2_mu20_passHLT; //! - TBranch *b_L2_mu20_slow; //! - TBranch *b_L2_mu30_MSonly; //! - TBranch *b_L2_mu4; //! - TBranch *b_L2_mu40_MSonly; //! - TBranch *b_L2_mu4_Bmumu; //! - TBranch *b_L2_mu4_BmumuX; //! - TBranch *b_L2_mu4_DiMu; //! - TBranch *b_L2_mu4_DiMu_FS; //! - TBranch *b_L2_mu4_DiMu_FS_noOS; //! - TBranch *b_L2_mu4_DiMu_MG; //! - TBranch *b_L2_mu4_DiMu_MG_FS; //! - TBranch *b_L2_mu4_DiMu_SiTrk; //! - TBranch *b_L2_mu4_DiMu_SiTrk_FS; //! - TBranch *b_L2_mu4_DiMu_noOS; //! - TBranch *b_L2_mu4_IDTrkNoCut; //! - TBranch *b_L2_mu4_Jpsie5e3; //! - TBranch *b_L2_mu4_Jpsie5e3_FS; //! - TBranch *b_L2_mu4_Jpsie5e3_SiTrk; //! - TBranch *b_L2_mu4_Jpsie5e3_SiTrk_FS; //! - TBranch *b_L2_mu4_Jpsimumu; //! - TBranch *b_L2_mu4_Jpsimumu_FS; //! - TBranch *b_L2_mu4_Jpsimumu_SiTrk_FS; //! - TBranch *b_L2_mu4_L1J10_matched; //! - TBranch *b_L2_mu4_L1J15_matched; //! - TBranch *b_L2_mu4_L1J30_matched; //! - TBranch *b_L2_mu4_L1J55_matched; //! - TBranch *b_L2_mu4_L1J5_matched; //! - TBranch *b_L2_mu4_L2MSonly_EFFS_passL2; //! - TBranch *b_L2_mu4_MG; //! - TBranch *b_L2_mu4_MSonly; //! - TBranch *b_L2_mu4_MSonly_EFFS_passL2; //! - TBranch *b_L2_mu4_MSonly_MB2_noL2_EFFS; //! - TBranch *b_L2_mu4_MSonly_cosmic; //! - TBranch *b_L2_mu4_MSonly_outOfTime; //! - TBranch *b_L2_mu4_MV; //! - TBranch *b_L2_mu4_SiTrk; //! - TBranch *b_L2_mu4_Trk_Jpsi; //! - TBranch *b_L2_mu4_Trk_Jpsi_FS; //! - TBranch *b_L2_mu4_Trk_Jpsi_loose; //! - TBranch *b_L2_mu4_Trk_Upsi_FS; //! - TBranch *b_L2_mu4_Trk_Upsi_loose_FS; //! - TBranch *b_L2_mu4_Upsimumu_FS; //! - TBranch *b_L2_mu4_Upsimumu_SiTrk_FS; //! - TBranch *b_L2_mu4_comm_MSonly_cosmic; //! - TBranch *b_L2_mu4_comm_cosmic; //! - TBranch *b_L2_mu4_comm_firstempty; //! - TBranch *b_L2_mu4_comm_unpaired_iso; //! - TBranch *b_L2_mu4_cosmic; //! - TBranch *b_L2_mu4_firstempty; //! - TBranch *b_L2_mu4_j20; //! - TBranch *b_L2_mu4_j20_jetNoEF; //! - TBranch *b_L2_mu4_j25; //! - TBranch *b_L2_mu4_mu6; //! - TBranch *b_L2_mu4_muCombTag; //! - TBranch *b_L2_mu4_tile; //! - TBranch *b_L2_mu4_tile_cosmic; //! - TBranch *b_L2_mu4_unpaired_iso; //! - TBranch *b_L2_mu4mu6_Bmumu; //! - TBranch *b_L2_mu4mu6_BmumuX; //! - TBranch *b_L2_mu4mu6_DiMu; //! - TBranch *b_L2_mu4mu6_Jpsimumu; //! - TBranch *b_L2_mu4mu6_Jpsimumu_IDTrkNoCut; //! - TBranch *b_L2_mu4mu6_Upsimumu; //! - TBranch *b_L2_mu6; //! - TBranch *b_L2_mu6_Bmumu; //! - TBranch *b_L2_mu6_BmumuX; //! - TBranch *b_L2_mu6_DiMu; //! - TBranch *b_L2_mu6_Ecut12; //! - TBranch *b_L2_mu6_Ecut123; //! - TBranch *b_L2_mu6_Ecut13; //! - TBranch *b_L2_mu6_Ecut2; //! - TBranch *b_L2_mu6_Ecut3; //! - TBranch *b_L2_mu6_IDTrkNoCut; //! - TBranch *b_L2_mu6_Jpsie5e3; //! - TBranch *b_L2_mu6_Jpsie5e3_FS; //! - TBranch *b_L2_mu6_Jpsie5e3_SiTrk; //! - TBranch *b_L2_mu6_Jpsie5e3_SiTrk_FS; //! - TBranch *b_L2_mu6_Jpsimumu; //! - TBranch *b_L2_mu6_MG; //! - TBranch *b_L2_mu6_MSonly; //! - TBranch *b_L2_mu6_MSonly_Ecut12; //! - TBranch *b_L2_mu6_MSonly_Ecut123; //! - TBranch *b_L2_mu6_MSonly_Ecut13; //! - TBranch *b_L2_mu6_MSonly_Ecut2; //! - TBranch *b_L2_mu6_MSonly_Ecut3; //! - TBranch *b_L2_mu6_MSonly_outOfTime; //! - TBranch *b_L2_mu6_NoAlg; //! - TBranch *b_L2_mu6_SiTrk; //! - TBranch *b_L2_mu6_Trk_Jpsi; //! - TBranch *b_L2_mu6_Upsimumu_FS; //! - TBranch *b_L2_mu6_muCombTag; //! - TBranch *b_L2_tau12_loose_IdScan_xe15_noMu; //! - TBranch *b_L2_tau12_loose_xe15_noMu; //! - TBranch *b_L2_tau12_loose_xe20_noMu; //! - TBranch *b_L2_tau16_loose_xe20_noMu; //! - TBranch *b_L2_tau16_loose_xe25_noMu; //! - TBranch *b_L2_tau16_loose_xe25_tight_noMu; //! - TBranch *b_L2_tau16_loose_xe30_noMu; //! - TBranch *b_L2_tau16_medium_xe22_noMu; //! - TBranch *b_L2_tau16_medium_xe25_noMu; //! - TBranch *b_L2_tau16_medium_xe25_tight_noMu; //! - TBranch *b_L2_tau20_loose_xe25_noMu; //! - TBranch *b_L2_tauNoCut_hasTrk6_IdScan_xe20_noMu; //! - TBranch *b_L2_tauNoCut_hasTrk6_xe20_noMu; //! - TBranch *b_L2_tauNoCut_hasTrk9_xe20_noMu; //! - TBranch *b_L2_tauNoCut_hasTrk_xe20_noMu; //! - TBranch *b_L2_xe12; //! - TBranch *b_L2_xe12_loose; //! - TBranch *b_L2_xe12_loose_noMu; //! - TBranch *b_L2_xe12_medium; //! - TBranch *b_L2_xe12_medium_noMu; //! - TBranch *b_L2_xe12_noMu; //! - TBranch *b_L2_xe15; //! - TBranch *b_L2_xe15_medium; //! - TBranch *b_L2_xe15_medium_noMu; //! - TBranch *b_L2_xe15_medium_vfj_noMu; //! - TBranch *b_L2_xe15_noMu; //! - TBranch *b_L2_xe15_tight_noMu; //! - TBranch *b_L2_xe15_tight_vfj_noMu; //! - TBranch *b_L2_xe15_unbiased_noMu; //! - TBranch *b_L2_xe15_vfj_noMu; //! - TBranch *b_L2_xe17_tight_noMu; //! - TBranch *b_L2_xe17_tight_vfj_noMu; //! - TBranch *b_L2_xe20; //! - TBranch *b_L2_xe20_noMu; //! - TBranch *b_L2_xe20_vfj_noMu; //! - TBranch *b_L2_xe22_loose_noMu; //! - TBranch *b_L2_xe22_tight_noMu; //! - TBranch *b_L2_xe22_tight_vfj_noMu; //! - TBranch *b_L2_xe25; //! - TBranch *b_L2_xe25_noMu; //! - TBranch *b_L2_xe27_tight_noMu; //! - TBranch *b_L2_xe30; //! - TBranch *b_L2_xe30_allL1; //! - TBranch *b_L2_xe30_allL1_FEB; //! - TBranch *b_L2_xe30_allL1_allCells; //! - TBranch *b_L2_xe30_allL1_noMu; //! - TBranch *b_L2_xe30_noMu; //! - TBranch *b_L2_xe32_tight_noMu; //! - TBranch *b_L2_xe35; //! - TBranch *b_L2_xe35_noMu; //! - TBranch *b_L2_xe40_medium; //! - TBranch *b_L2_xe40_medium_noMu; //! - TBranch *b_L2_xe45; //! - TBranch *b_L2_xe45_noMu; //! - TBranch *b_L2_xe60_medium; //! - TBranch *b_L2_xe60_medium_noMu; //! - TBranch *b_mu_muid_n; //! - TBranch *b_mu_muid_E; //! - TBranch *b_mu_muid_pt; //! - TBranch *b_mu_muid_m; //! - TBranch *b_mu_muid_eta; //! - TBranch *b_mu_muid_phi; //! - TBranch *b_mu_muid_px; //! - TBranch *b_mu_muid_py; //! - TBranch *b_mu_muid_pz; //! - TBranch *b_mu_muid_charge; //! - TBranch *b_mu_muid_allauthor; //! - TBranch *b_mu_muid_author; //! - TBranch *b_mu_muid_beta; //! - TBranch *b_mu_muid_isMuonLikelihood; //! - TBranch *b_mu_muid_matchchi2; //! - TBranch *b_mu_muid_matchndof; //! - TBranch *b_mu_muid_etcone20; //! - TBranch *b_mu_muid_etcone30; //! - TBranch *b_mu_muid_etcone40; //! - TBranch *b_mu_muid_nucone20; //! - TBranch *b_mu_muid_nucone30; //! - TBranch *b_mu_muid_nucone40; //! - TBranch *b_mu_muid_ptcone20; //! - TBranch *b_mu_muid_ptcone30; //! - TBranch *b_mu_muid_ptcone40; //! - TBranch *b_mu_muid_energyLossPar; //! - TBranch *b_mu_muid_energyLossErr; //! - TBranch *b_mu_muid_etCore; //! - TBranch *b_mu_muid_energyLossType; //! - TBranch *b_mu_muid_caloMuonIdTag; //! - TBranch *b_mu_muid_caloLRLikelihood; //! - TBranch *b_mu_muid_bestMatch; //! - TBranch *b_mu_muid_isStandAloneMuon; //! - TBranch *b_mu_muid_isCombinedMuon; //! - TBranch *b_mu_muid_isLowPtReconstructedMuon; //! - TBranch *b_mu_muid_loose; //! - TBranch *b_mu_muid_medium; //! - TBranch *b_mu_muid_tight; //! - TBranch *b_mu_muid_d0_exPV; //! - TBranch *b_mu_muid_z0_exPV; //! - TBranch *b_mu_muid_phi_exPV; //! - TBranch *b_mu_muid_theta_exPV; //! - TBranch *b_mu_muid_qoverp_exPV; //! - TBranch *b_mu_muid_cb_d0_exPV; //! - TBranch *b_mu_muid_cb_z0_exPV; //! - TBranch *b_mu_muid_cb_phi_exPV; //! - TBranch *b_mu_muid_cb_theta_exPV; //! - TBranch *b_mu_muid_cb_qoverp_exPV; //! - TBranch *b_mu_muid_id_d0_exPV; //! - TBranch *b_mu_muid_id_z0_exPV; //! - TBranch *b_mu_muid_id_phi_exPV; //! - TBranch *b_mu_muid_id_theta_exPV; //! - TBranch *b_mu_muid_id_qoverp_exPV; //! - TBranch *b_mu_muid_me_d0_exPV; //! - TBranch *b_mu_muid_me_z0_exPV; //! - TBranch *b_mu_muid_me_phi_exPV; //! - TBranch *b_mu_muid_me_theta_exPV; //! - TBranch *b_mu_muid_me_qoverp_exPV; //! - TBranch *b_mu_muid_ie_d0_exPV; //! - TBranch *b_mu_muid_ie_z0_exPV; //! - TBranch *b_mu_muid_ie_phi_exPV; //! - TBranch *b_mu_muid_ie_theta_exPV; //! - TBranch *b_mu_muid_ie_qoverp_exPV; //! - TBranch *b_mu_muid_SpaceTime_detID; //! - TBranch *b_mu_muid_SpaceTime_t; //! - TBranch *b_mu_muid_SpaceTime_tError; //! - TBranch *b_mu_muid_SpaceTime_weight; //! - TBranch *b_mu_muid_SpaceTime_x; //! - TBranch *b_mu_muid_SpaceTime_y; //! - TBranch *b_mu_muid_SpaceTime_z; //! - TBranch *b_mu_muid_SpaceTime_t_Tile; //! - TBranch *b_mu_muid_SpaceTime_tError_Tile; //! - TBranch *b_mu_muid_SpaceTime_weight_Tile; //! - TBranch *b_mu_muid_SpaceTime_x_Tile; //! - TBranch *b_mu_muid_SpaceTime_y_Tile; //! - TBranch *b_mu_muid_SpaceTime_z_Tile; //! - TBranch *b_mu_muid_SpaceTime_t_TRT; //! - TBranch *b_mu_muid_SpaceTime_tError_TRT; //! - TBranch *b_mu_muid_SpaceTime_weight_TRT; //! - TBranch *b_mu_muid_SpaceTime_x_TRT; //! - TBranch *b_mu_muid_SpaceTime_y_TRT; //! - TBranch *b_mu_muid_SpaceTime_z_TRT; //! - TBranch *b_mu_muid_SpaceTime_t_MDT; //! - TBranch *b_mu_muid_SpaceTime_tError_MDT; //! - TBranch *b_mu_muid_SpaceTime_weight_MDT; //! - TBranch *b_mu_muid_SpaceTime_x_MDT; //! - TBranch *b_mu_muid_SpaceTime_y_MDT; //! - TBranch *b_mu_muid_SpaceTime_z_MDT; //! - TBranch *b_mu_muid_TileCellEnergyLayer1; //! - TBranch *b_mu_muid_TileTimeLayer1; //! - TBranch *b_mu_muid_TileCellRmsNoiseLayer1; //! - TBranch *b_mu_muid_TileCellSignLayer1; //! - TBranch *b_mu_muid_TileCellEnergyLayer2; //! - TBranch *b_mu_muid_TileTimeLayer2; //! - TBranch *b_mu_muid_TileCellRmsNoiseLayer2; //! - TBranch *b_mu_muid_TileCellSignLayer2; //! - TBranch *b_mu_muid_TileCellEnergyLayer3; //! - TBranch *b_mu_muid_TileTimeLayer3; //! - TBranch *b_mu_muid_TileCellRmsNoiseLayer3; //! - TBranch *b_mu_muid_TileCellSignLayer3; //! - TBranch *b_mu_muid_MSTrkT0_1; //! - TBranch *b_mu_muid_MSTrkT0_2; //! - TBranch *b_mu_muid_MSTrkT0_3; //! - TBranch *b_mu_muid_cov_d0_exPV; //! - TBranch *b_mu_muid_cov_z0_exPV; //! - TBranch *b_mu_muid_cov_phi_exPV; //! - TBranch *b_mu_muid_cov_theta_exPV; //! - TBranch *b_mu_muid_cov_qoverp_exPV; //! - TBranch *b_mu_muid_cov_d0_z0_exPV; //! - TBranch *b_mu_muid_cov_d0_phi_exPV; //! - TBranch *b_mu_muid_cov_d0_theta_exPV; //! - TBranch *b_mu_muid_cov_d0_qoverp_exPV; //! - TBranch *b_mu_muid_cov_z0_phi_exPV; //! - TBranch *b_mu_muid_cov_z0_theta_exPV; //! - TBranch *b_mu_muid_cov_z0_qoverp_exPV; //! - TBranch *b_mu_muid_cov_phi_theta_exPV; //! - TBranch *b_mu_muid_cov_phi_qoverp_exPV; //! - TBranch *b_mu_muid_cov_theta_qoverp_exPV; //! - TBranch *b_mu_muid_id_cov_d0_exPV; //! - TBranch *b_mu_muid_id_cov_z0_exPV; //! - TBranch *b_mu_muid_id_cov_phi_exPV; //! - TBranch *b_mu_muid_id_cov_theta_exPV; //! - TBranch *b_mu_muid_id_cov_qoverp_exPV; //! - TBranch *b_mu_muid_id_cov_d0_z0_exPV; //! - TBranch *b_mu_muid_id_cov_d0_phi_exPV; //! - TBranch *b_mu_muid_id_cov_d0_theta_exPV; //! - TBranch *b_mu_muid_id_cov_d0_qoverp_exPV; //! - TBranch *b_mu_muid_id_cov_z0_phi_exPV; //! - TBranch *b_mu_muid_id_cov_z0_theta_exPV; //! - TBranch *b_mu_muid_id_cov_z0_qoverp_exPV; //! - TBranch *b_mu_muid_id_cov_phi_theta_exPV; //! - TBranch *b_mu_muid_id_cov_phi_qoverp_exPV; //! - TBranch *b_mu_muid_id_cov_theta_qoverp_exPV; //! - TBranch *b_mu_muid_me_cov_d0_exPV; //! - TBranch *b_mu_muid_me_cov_z0_exPV; //! - TBranch *b_mu_muid_me_cov_phi_exPV; //! - TBranch *b_mu_muid_me_cov_theta_exPV; //! - TBranch *b_mu_muid_me_cov_qoverp_exPV; //! - TBranch *b_mu_muid_me_cov_d0_z0_exPV; //! - TBranch *b_mu_muid_me_cov_d0_phi_exPV; //! - TBranch *b_mu_muid_me_cov_d0_theta_exPV; //! - TBranch *b_mu_muid_me_cov_d0_qoverp_exPV; //! - TBranch *b_mu_muid_me_cov_z0_phi_exPV; //! - TBranch *b_mu_muid_me_cov_z0_theta_exPV; //! - TBranch *b_mu_muid_me_cov_z0_qoverp_exPV; //! - TBranch *b_mu_muid_me_cov_phi_theta_exPV; //! - TBranch *b_mu_muid_me_cov_phi_qoverp_exPV; //! - TBranch *b_mu_muid_me_cov_theta_qoverp_exPV; //! - TBranch *b_mu_muid_ms_d0; //! - TBranch *b_mu_muid_ms_z0; //! - TBranch *b_mu_muid_ms_phi; //! - TBranch *b_mu_muid_ms_theta; //! - TBranch *b_mu_muid_ms_qoverp; //! - TBranch *b_mu_muid_id_d0; //! - TBranch *b_mu_muid_id_z0; //! - TBranch *b_mu_muid_id_phi; //! - TBranch *b_mu_muid_id_theta; //! - TBranch *b_mu_muid_id_qoverp; //! - TBranch *b_mu_muid_me_d0; //! - TBranch *b_mu_muid_me_z0; //! - TBranch *b_mu_muid_me_phi; //! - TBranch *b_mu_muid_me_theta; //! - TBranch *b_mu_muid_me_qoverp; //! - TBranch *b_mu_muid_ie_d0; //! - TBranch *b_mu_muid_ie_z0; //! - TBranch *b_mu_muid_ie_phi; //! - TBranch *b_mu_muid_ie_theta; //! - TBranch *b_mu_muid_ie_qoverp; //! - TBranch *b_mu_muid_nOutliersOnTrack; //! - TBranch *b_mu_muid_nBLHits; //! - TBranch *b_mu_muid_nPixHits; //! - TBranch *b_mu_muid_nSCTHits; //! - TBranch *b_mu_muid_nTRTHits; //! - TBranch *b_mu_muid_nTRTHighTHits; //! - TBranch *b_mu_muid_nBLSharedHits; //! - TBranch *b_mu_muid_nPixSharedHits; //! - TBranch *b_mu_muid_nPixHoles; //! - TBranch *b_mu_muid_nSCTSharedHits; //! - TBranch *b_mu_muid_nSCTHoles; //! - TBranch *b_mu_muid_nTRTOutliers; //! - TBranch *b_mu_muid_nTRTHighTOutliers; //! - TBranch *b_mu_muid_nGangedPixels; //! - TBranch *b_mu_muid_nPixelDeadSensors; //! - TBranch *b_mu_muid_nSCTDeadSensors; //! - TBranch *b_mu_muid_nTRTDeadStraws; //! - TBranch *b_mu_muid_expectBLayerHit; //! - TBranch *b_mu_muid_nMDTHits; //! - TBranch *b_mu_muid_nMDTHoles; //! - TBranch *b_mu_muid_nCSCEtaHits; //! - TBranch *b_mu_muid_nCSCEtaHoles; //! - TBranch *b_mu_muid_nCSCPhiHits; //! - TBranch *b_mu_muid_nCSCPhiHoles; //! - TBranch *b_mu_muid_nRPCEtaHits; //! - TBranch *b_mu_muid_nRPCEtaHoles; //! - TBranch *b_mu_muid_nRPCPhiHits; //! - TBranch *b_mu_muid_nRPCPhiHoles; //! - TBranch *b_mu_muid_nTGCEtaHits; //! - TBranch *b_mu_muid_nTGCEtaHoles; //! - TBranch *b_mu_muid_nTGCPhiHits; //! - TBranch *b_mu_muid_nTGCPhiHoles; //! - TBranch *b_mu_muid_nMDTBIHits; //! - TBranch *b_mu_muid_nMDTBMHits; //! - TBranch *b_mu_muid_nMDTBOHits; //! - TBranch *b_mu_muid_nMDTBEEHits; //! - TBranch *b_mu_muid_nMDTBIS78Hits; //! - TBranch *b_mu_muid_nMDTEIHits; //! - TBranch *b_mu_muid_nMDTEMHits; //! - TBranch *b_mu_muid_nMDTEOHits; //! - TBranch *b_mu_muid_nMDTEEHits; //! - TBranch *b_mu_muid_nRPCLayer1EtaHits; //! - TBranch *b_mu_muid_nRPCLayer2EtaHits; //! - TBranch *b_mu_muid_nRPCLayer3EtaHits; //! - TBranch *b_mu_muid_nRPCLayer1PhiHits; //! - TBranch *b_mu_muid_nRPCLayer2PhiHits; //! - TBranch *b_mu_muid_nRPCLayer3PhiHits; //! - TBranch *b_mu_muid_nTGCLayer1EtaHits; //! - TBranch *b_mu_muid_nTGCLayer2EtaHits; //! - TBranch *b_mu_muid_nTGCLayer3EtaHits; //! - TBranch *b_mu_muid_nTGCLayer4EtaHits; //! - TBranch *b_mu_muid_nTGCLayer1PhiHits; //! - TBranch *b_mu_muid_nTGCLayer2PhiHits; //! - TBranch *b_mu_muid_nTGCLayer3PhiHits; //! - TBranch *b_mu_muid_nTGCLayer4PhiHits; //! - TBranch *b_mu_muid_barrelSectors; //! - TBranch *b_mu_muid_endcapSectors; //! - TBranch *b_mu_muid_trackd0; //! - TBranch *b_mu_muid_trackz0; //! - TBranch *b_mu_muid_trackphi; //! - TBranch *b_mu_muid_tracktheta; //! - TBranch *b_mu_muid_trackqoverp; //! - TBranch *b_mu_muid_trackcov_d0; //! - TBranch *b_mu_muid_trackcov_z0; //! - TBranch *b_mu_muid_trackcov_phi; //! - TBranch *b_mu_muid_trackcov_theta; //! - TBranch *b_mu_muid_trackcov_qoverp; //! - TBranch *b_mu_muid_trackcov_d0_z0; //! - TBranch *b_mu_muid_trackcov_d0_phi; //! - TBranch *b_mu_muid_trackcov_d0_theta; //! - TBranch *b_mu_muid_trackcov_d0_qoverp; //! - TBranch *b_mu_muid_trackcov_z0_phi; //! - TBranch *b_mu_muid_trackcov_z0_theta; //! - TBranch *b_mu_muid_trackcov_z0_qoverp; //! - TBranch *b_mu_muid_trackcov_phi_theta; //! - TBranch *b_mu_muid_trackcov_phi_qoverp; //! - TBranch *b_mu_muid_trackcov_theta_qoverp; //! - TBranch *b_mu_muid_trackfitchi2; //! - TBranch *b_mu_muid_trackfitndof; //! - TBranch *b_mu_muid_hastrack; //! - TBranch *b_mu_muid_truth_dr; //! - TBranch *b_mu_muid_truth_E; //! - TBranch *b_mu_muid_truth_pt; //! - TBranch *b_mu_muid_truth_eta; //! - TBranch *b_mu_muid_truth_phi; //! - TBranch *b_mu_muid_truth_type; //! - TBranch *b_mu_muid_truth_status; //! - TBranch *b_mu_muid_truth_barcode; //! - TBranch *b_mu_muid_truth_mothertype; //! - TBranch *b_mu_muid_truth_motherbarcode; //! - TBranch *b_mu_muid_truth_matched; //! - TBranch *b_mu_muid_EFCB_dr; //! - TBranch *b_mu_muid_EFCB_index; //! - TBranch *b_mu_muid_EFMG_dr; //! - TBranch *b_mu_muid_EFMG_index; //! - TBranch *b_mu_muid_EFME_dr; //! - TBranch *b_mu_muid_EFME_index; //! - TBranch *b_mu_muid_L2CB_dr; //! - TBranch *b_mu_muid_L2CB_index; //! - TBranch *b_mu_muid_L1_dr; //! - TBranch *b_mu_muid_L1_index; //! - TBranch *b_mu_staco_n; //! - TBranch *b_mu_staco_E; //! - TBranch *b_mu_staco_pt; //! - TBranch *b_mu_staco_m; //! - TBranch *b_mu_staco_eta; //! - TBranch *b_mu_staco_phi; //! - TBranch *b_mu_staco_px; //! - TBranch *b_mu_staco_py; //! - TBranch *b_mu_staco_pz; //! - TBranch *b_mu_staco_charge; //! - TBranch *b_mu_staco_allauthor; //! - TBranch *b_mu_staco_author; //! - TBranch *b_mu_staco_beta; //! - TBranch *b_mu_staco_isMuonLikelihood; //! - TBranch *b_mu_staco_matchchi2; //! - TBranch *b_mu_staco_matchndof; //! - TBranch *b_mu_staco_etcone20; //! - TBranch *b_mu_staco_etcone30; //! - TBranch *b_mu_staco_etcone40; //! - TBranch *b_mu_staco_nucone20; //! - TBranch *b_mu_staco_nucone30; //! - TBranch *b_mu_staco_nucone40; //! - TBranch *b_mu_staco_ptcone20; //! - TBranch *b_mu_staco_ptcone30; //! - TBranch *b_mu_staco_ptcone40; //! - TBranch *b_mu_staco_energyLossPar; //! - TBranch *b_mu_staco_energyLossErr; //! - TBranch *b_mu_staco_etCore; //! - TBranch *b_mu_staco_energyLossType; //! - TBranch *b_mu_staco_caloMuonIdTag; //! - TBranch *b_mu_staco_caloLRLikelihood; //! - TBranch *b_mu_staco_bestMatch; //! - TBranch *b_mu_staco_isStandAloneMuon; //! - TBranch *b_mu_staco_isCombinedMuon; //! - TBranch *b_mu_staco_isLowPtReconstructedMuon; //! - TBranch *b_mu_staco_loose; //! - TBranch *b_mu_staco_medium; //! - TBranch *b_mu_staco_tight; //! - TBranch *b_mu_staco_d0_exPV; //! - TBranch *b_mu_staco_z0_exPV; //! - TBranch *b_mu_staco_phi_exPV; //! - TBranch *b_mu_staco_theta_exPV; //! - TBranch *b_mu_staco_qoverp_exPV; //! - TBranch *b_mu_staco_cb_d0_exPV; //! - TBranch *b_mu_staco_cb_z0_exPV; //! - TBranch *b_mu_staco_cb_phi_exPV; //! - TBranch *b_mu_staco_cb_theta_exPV; //! - TBranch *b_mu_staco_cb_qoverp_exPV; //! - TBranch *b_mu_staco_id_d0_exPV; //! - TBranch *b_mu_staco_id_z0_exPV; //! - TBranch *b_mu_staco_id_phi_exPV; //! - TBranch *b_mu_staco_id_theta_exPV; //! - TBranch *b_mu_staco_id_qoverp_exPV; //! - TBranch *b_mu_staco_me_d0_exPV; //! - TBranch *b_mu_staco_me_z0_exPV; //! - TBranch *b_mu_staco_me_phi_exPV; //! - TBranch *b_mu_staco_me_theta_exPV; //! - TBranch *b_mu_staco_me_qoverp_exPV; //! - TBranch *b_mu_staco_ie_d0_exPV; //! - TBranch *b_mu_staco_ie_z0_exPV; //! - TBranch *b_mu_staco_ie_phi_exPV; //! - TBranch *b_mu_staco_ie_theta_exPV; //! - TBranch *b_mu_staco_ie_qoverp_exPV; //! - TBranch *b_mu_staco_SpaceTime_detID; //! - TBranch *b_mu_staco_SpaceTime_t; //! - TBranch *b_mu_staco_SpaceTime_tError; //! - TBranch *b_mu_staco_SpaceTime_weight; //! - TBranch *b_mu_staco_SpaceTime_x; //! - TBranch *b_mu_staco_SpaceTime_y; //! - TBranch *b_mu_staco_SpaceTime_z; //! - TBranch *b_mu_staco_SpaceTime_t_Tile; //! - TBranch *b_mu_staco_SpaceTime_tError_Tile; //! - TBranch *b_mu_staco_SpaceTime_weight_Tile; //! - TBranch *b_mu_staco_SpaceTime_x_Tile; //! - TBranch *b_mu_staco_SpaceTime_y_Tile; //! - TBranch *b_mu_staco_SpaceTime_z_Tile; //! - TBranch *b_mu_staco_SpaceTime_t_TRT; //! - TBranch *b_mu_staco_SpaceTime_tError_TRT; //! - TBranch *b_mu_staco_SpaceTime_weight_TRT; //! - TBranch *b_mu_staco_SpaceTime_x_TRT; //! - TBranch *b_mu_staco_SpaceTime_y_TRT; //! - TBranch *b_mu_staco_SpaceTime_z_TRT; //! - TBranch *b_mu_staco_SpaceTime_t_MDT; //! - TBranch *b_mu_staco_SpaceTime_tError_MDT; //! - TBranch *b_mu_staco_SpaceTime_weight_MDT; //! - TBranch *b_mu_staco_SpaceTime_x_MDT; //! - TBranch *b_mu_staco_SpaceTime_y_MDT; //! - TBranch *b_mu_staco_SpaceTime_z_MDT; //! - TBranch *b_mu_staco_TileCellEnergyLayer1; //! - TBranch *b_mu_staco_TileTimeLayer1; //! - TBranch *b_mu_staco_TileCellRmsNoiseLayer1; //! - TBranch *b_mu_staco_TileCellSignLayer1; //! - TBranch *b_mu_staco_TileCellEnergyLayer2; //! - TBranch *b_mu_staco_TileTimeLayer2; //! - TBranch *b_mu_staco_TileCellRmsNoiseLayer2; //! - TBranch *b_mu_staco_TileCellSignLayer2; //! - TBranch *b_mu_staco_TileCellEnergyLayer3; //! - TBranch *b_mu_staco_TileTimeLayer3; //! - TBranch *b_mu_staco_TileCellRmsNoiseLayer3; //! - TBranch *b_mu_staco_TileCellSignLayer3; //! - TBranch *b_mu_staco_MSTrkT0_1; //! - TBranch *b_mu_staco_MSTrkT0_2; //! - TBranch *b_mu_staco_MSTrkT0_3; //! - TBranch *b_mu_staco_cov_d0_exPV; //! - TBranch *b_mu_staco_cov_z0_exPV; //! - TBranch *b_mu_staco_cov_phi_exPV; //! - TBranch *b_mu_staco_cov_theta_exPV; //! - TBranch *b_mu_staco_cov_qoverp_exPV; //! - TBranch *b_mu_staco_cov_d0_z0_exPV; //! - TBranch *b_mu_staco_cov_d0_phi_exPV; //! - TBranch *b_mu_staco_cov_d0_theta_exPV; //! - TBranch *b_mu_staco_cov_d0_qoverp_exPV; //! - TBranch *b_mu_staco_cov_z0_phi_exPV; //! - TBranch *b_mu_staco_cov_z0_theta_exPV; //! - TBranch *b_mu_staco_cov_z0_qoverp_exPV; //! - TBranch *b_mu_staco_cov_phi_theta_exPV; //! - TBranch *b_mu_staco_cov_phi_qoverp_exPV; //! - TBranch *b_mu_staco_cov_theta_qoverp_exPV; //! - TBranch *b_mu_staco_id_cov_d0_exPV; //! - TBranch *b_mu_staco_id_cov_z0_exPV; //! - TBranch *b_mu_staco_id_cov_phi_exPV; //! - TBranch *b_mu_staco_id_cov_theta_exPV; //! - TBranch *b_mu_staco_id_cov_qoverp_exPV; //! - TBranch *b_mu_staco_id_cov_d0_z0_exPV; //! - TBranch *b_mu_staco_id_cov_d0_phi_exPV; //! - TBranch *b_mu_staco_id_cov_d0_theta_exPV; //! - TBranch *b_mu_staco_id_cov_d0_qoverp_exPV; //! - TBranch *b_mu_staco_id_cov_z0_phi_exPV; //! - TBranch *b_mu_staco_id_cov_z0_theta_exPV; //! - TBranch *b_mu_staco_id_cov_z0_qoverp_exPV; //! - TBranch *b_mu_staco_id_cov_phi_theta_exPV; //! - TBranch *b_mu_staco_id_cov_phi_qoverp_exPV; //! - TBranch *b_mu_staco_id_cov_theta_qoverp_exPV; //! - TBranch *b_mu_staco_me_cov_d0_exPV; //! - TBranch *b_mu_staco_me_cov_z0_exPV; //! - TBranch *b_mu_staco_me_cov_phi_exPV; //! - TBranch *b_mu_staco_me_cov_theta_exPV; //! - TBranch *b_mu_staco_me_cov_qoverp_exPV; //! - TBranch *b_mu_staco_me_cov_d0_z0_exPV; //! - TBranch *b_mu_staco_me_cov_d0_phi_exPV; //! - TBranch *b_mu_staco_me_cov_d0_theta_exPV; //! - TBranch *b_mu_staco_me_cov_d0_qoverp_exPV; //! - TBranch *b_mu_staco_me_cov_z0_phi_exPV; //! - TBranch *b_mu_staco_me_cov_z0_theta_exPV; //! - TBranch *b_mu_staco_me_cov_z0_qoverp_exPV; //! - TBranch *b_mu_staco_me_cov_phi_theta_exPV; //! - TBranch *b_mu_staco_me_cov_phi_qoverp_exPV; //! - TBranch *b_mu_staco_me_cov_theta_qoverp_exPV; //! - TBranch *b_mu_staco_ms_d0; //! - TBranch *b_mu_staco_ms_z0; //! - TBranch *b_mu_staco_ms_phi; //! - TBranch *b_mu_staco_ms_theta; //! - TBranch *b_mu_staco_ms_qoverp; //! - TBranch *b_mu_staco_id_d0; //! - TBranch *b_mu_staco_id_z0; //! - TBranch *b_mu_staco_id_phi; //! - TBranch *b_mu_staco_id_theta; //! - TBranch *b_mu_staco_id_qoverp; //! - TBranch *b_mu_staco_me_d0; //! - TBranch *b_mu_staco_me_z0; //! - TBranch *b_mu_staco_me_phi; //! - TBranch *b_mu_staco_me_theta; //! - TBranch *b_mu_staco_me_qoverp; //! - TBranch *b_mu_staco_ie_d0; //! - TBranch *b_mu_staco_ie_z0; //! - TBranch *b_mu_staco_ie_phi; //! - TBranch *b_mu_staco_ie_theta; //! - TBranch *b_mu_staco_ie_qoverp; //! - TBranch *b_mu_staco_nOutliersOnTrack; //! - TBranch *b_mu_staco_nBLHits; //! - TBranch *b_mu_staco_nPixHits; //! - TBranch *b_mu_staco_nSCTHits; //! - TBranch *b_mu_staco_nTRTHits; //! - TBranch *b_mu_staco_nTRTHighTHits; //! - TBranch *b_mu_staco_nBLSharedHits; //! - TBranch *b_mu_staco_nPixSharedHits; //! - TBranch *b_mu_staco_nPixHoles; //! - TBranch *b_mu_staco_nSCTSharedHits; //! - TBranch *b_mu_staco_nSCTHoles; //! - TBranch *b_mu_staco_nTRTOutliers; //! - TBranch *b_mu_staco_nTRTHighTOutliers; //! - TBranch *b_mu_staco_nGangedPixels; //! - TBranch *b_mu_staco_nPixelDeadSensors; //! - TBranch *b_mu_staco_nSCTDeadSensors; //! - TBranch *b_mu_staco_nTRTDeadStraws; //! - TBranch *b_mu_staco_expectBLayerHit; //! - TBranch *b_mu_staco_nMDTHits; //! - TBranch *b_mu_staco_nMDTHoles; //! - TBranch *b_mu_staco_nCSCEtaHits; //! - TBranch *b_mu_staco_nCSCEtaHoles; //! - TBranch *b_mu_staco_nCSCPhiHits; //! - TBranch *b_mu_staco_nCSCPhiHoles; //! - TBranch *b_mu_staco_nRPCEtaHits; //! - TBranch *b_mu_staco_nRPCEtaHoles; //! - TBranch *b_mu_staco_nRPCPhiHits; //! - TBranch *b_mu_staco_nRPCPhiHoles; //! - TBranch *b_mu_staco_nTGCEtaHits; //! - TBranch *b_mu_staco_nTGCEtaHoles; //! - TBranch *b_mu_staco_nTGCPhiHits; //! - TBranch *b_mu_staco_nTGCPhiHoles; //! - TBranch *b_mu_staco_nMDTBIHits; //! - TBranch *b_mu_staco_nMDTBMHits; //! - TBranch *b_mu_staco_nMDTBOHits; //! - TBranch *b_mu_staco_nMDTBEEHits; //! - TBranch *b_mu_staco_nMDTBIS78Hits; //! - TBranch *b_mu_staco_nMDTEIHits; //! - TBranch *b_mu_staco_nMDTEMHits; //! - TBranch *b_mu_staco_nMDTEOHits; //! - TBranch *b_mu_staco_nMDTEEHits; //! - TBranch *b_mu_staco_nRPCLayer1EtaHits; //! - TBranch *b_mu_staco_nRPCLayer2EtaHits; //! - TBranch *b_mu_staco_nRPCLayer3EtaHits; //! - TBranch *b_mu_staco_nRPCLayer1PhiHits; //! - TBranch *b_mu_staco_nRPCLayer2PhiHits; //! - TBranch *b_mu_staco_nRPCLayer3PhiHits; //! - TBranch *b_mu_staco_nTGCLayer1EtaHits; //! - TBranch *b_mu_staco_nTGCLayer2EtaHits; //! - TBranch *b_mu_staco_nTGCLayer3EtaHits; //! - TBranch *b_mu_staco_nTGCLayer4EtaHits; //! - TBranch *b_mu_staco_nTGCLayer1PhiHits; //! - TBranch *b_mu_staco_nTGCLayer2PhiHits; //! - TBranch *b_mu_staco_nTGCLayer3PhiHits; //! - TBranch *b_mu_staco_nTGCLayer4PhiHits; //! - TBranch *b_mu_staco_barrelSectors; //! - TBranch *b_mu_staco_endcapSectors; //! - TBranch *b_mu_staco_trackd0; //! - TBranch *b_mu_staco_trackz0; //! - TBranch *b_mu_staco_trackphi; //! - TBranch *b_mu_staco_tracktheta; //! - TBranch *b_mu_staco_trackqoverp; //! - TBranch *b_mu_staco_trackcov_d0; //! - TBranch *b_mu_staco_trackcov_z0; //! - TBranch *b_mu_staco_trackcov_phi; //! - TBranch *b_mu_staco_trackcov_theta; //! - TBranch *b_mu_staco_trackcov_qoverp; //! - TBranch *b_mu_staco_trackcov_d0_z0; //! - TBranch *b_mu_staco_trackcov_d0_phi; //! - TBranch *b_mu_staco_trackcov_d0_theta; //! - TBranch *b_mu_staco_trackcov_d0_qoverp; //! - TBranch *b_mu_staco_trackcov_z0_phi; //! - TBranch *b_mu_staco_trackcov_z0_theta; //! - TBranch *b_mu_staco_trackcov_z0_qoverp; //! - TBranch *b_mu_staco_trackcov_phi_theta; //! - TBranch *b_mu_staco_trackcov_phi_qoverp; //! - TBranch *b_mu_staco_trackcov_theta_qoverp; //! - TBranch *b_mu_staco_trackfitchi2; //! - TBranch *b_mu_staco_trackfitndof; //! - TBranch *b_mu_staco_hastrack; //! - TBranch *b_mu_staco_truth_dr; //! - TBranch *b_mu_staco_truth_E; //! - TBranch *b_mu_staco_truth_pt; //! - TBranch *b_mu_staco_truth_eta; //! - TBranch *b_mu_staco_truth_phi; //! - TBranch *b_mu_staco_truth_type; //! - TBranch *b_mu_staco_truth_status; //! - TBranch *b_mu_staco_truth_barcode; //! - TBranch *b_mu_staco_truth_mothertype; //! - TBranch *b_mu_staco_truth_motherbarcode; //! - TBranch *b_mu_staco_truth_matched; //! - TBranch *b_mu_staco_EFCB_dr; //! - TBranch *b_mu_staco_EFCB_index; //! - TBranch *b_mu_staco_EFMG_dr; //! - TBranch *b_mu_staco_EFMG_index; //! - TBranch *b_mu_staco_EFME_dr; //! - TBranch *b_mu_staco_EFME_index; //! - TBranch *b_mu_staco_L2CB_dr; //! - TBranch *b_mu_staco_L2CB_index; //! - TBranch *b_mu_staco_L1_dr; //! - TBranch *b_mu_staco_L1_index; //! - TBranch *b_mu_calo_n; //! - TBranch *b_mu_calo_E; //! - TBranch *b_mu_calo_pt; //! - TBranch *b_mu_calo_m; //! - TBranch *b_mu_calo_eta; //! - TBranch *b_mu_calo_phi; //! - TBranch *b_mu_calo_px; //! - TBranch *b_mu_calo_py; //! - TBranch *b_mu_calo_pz; //! - TBranch *b_mu_calo_charge; //! - TBranch *b_mu_calo_allauthor; //! - TBranch *b_mu_calo_hastrack; //! - TBranch *b_mu_calo_truth_dr; //! - TBranch *b_mu_calo_truth_E; //! - TBranch *b_mu_calo_truth_pt; //! - TBranch *b_mu_calo_truth_eta; //! - TBranch *b_mu_calo_truth_phi; //! - TBranch *b_mu_calo_truth_type; //! - TBranch *b_mu_calo_truth_status; //! - TBranch *b_mu_calo_truth_barcode; //! - TBranch *b_mu_calo_truth_mothertype; //! - TBranch *b_mu_calo_truth_motherbarcode; //! - TBranch *b_mu_calo_truth_matched; //! - TBranch *b_jet_akt4topoem_n; //! - TBranch *b_jet_akt4topoem_E; //! - TBranch *b_jet_akt4topoem_pt; //! - TBranch *b_jet_akt4topoem_m; //! - TBranch *b_jet_akt4topoem_eta; //! - TBranch *b_jet_akt4topoem_phi; //! - TBranch *b_jet_akt4topoem_EtaOrigin; //! - TBranch *b_jet_akt4topoem_PhiOrigin; //! - TBranch *b_jet_akt4topoem_MOrigin; //! - TBranch *b_jet_akt4topoem_EtaOriginEM; //! - TBranch *b_jet_akt4topoem_PhiOriginEM; //! - TBranch *b_jet_akt4topoem_MOriginEM; //! - TBranch *b_jet_akt4topoem_WIDTH; //! - TBranch *b_jet_akt4topoem_n90; //! - TBranch *b_jet_akt4topoem_Timing; //! - TBranch *b_jet_akt4topoem_LArQuality; //! - TBranch *b_jet_akt4topoem_nTrk; //! - TBranch *b_jet_akt4topoem_sumPtTrk; //! - TBranch *b_jet_akt4topoem_OriginIndex; //! - TBranch *b_jet_akt4topoem_HECQuality; //! - TBranch *b_jet_akt4topoem_NegativeE; //! - TBranch *b_jet_akt4topoem_YFlip12; //! - TBranch *b_jet_akt4topoem_YFlip23; //! - TBranch *b_jet_akt4topoem_BCH_CORR_CELL; //! - TBranch *b_jet_akt4topoem_BCH_CORR_DOTX; //! - TBranch *b_jet_akt4topoem_BCH_CORR_JET; //! - TBranch *b_jet_akt4topoem_BCH_CORR_JET_FORCELL; //! - TBranch *b_jet_akt4topoem_ENG_BAD_CELLS; //! - TBranch *b_jet_akt4topoem_N_BAD_CELLS; //! - TBranch *b_jet_akt4topoem_N_BAD_CELLS_CORR; //! - TBranch *b_jet_akt4topoem_BAD_CELLS_CORR_E; //! - TBranch *b_jet_akt4topoem_NumTowers; //! - TBranch *b_jet_akt4topoem_SamplingMax; //! - TBranch *b_jet_akt4topoem_fracSamplingMax; //! - TBranch *b_jet_akt4topoem_hecf; //! - TBranch *b_jet_akt4topoem_tgap3f; //! - TBranch *b_jet_akt4topoem_isUgly; //! - TBranch *b_jet_akt4topoem_isBadLoose; //! - TBranch *b_jet_akt4topoem_isBadMedium; //! - TBranch *b_jet_akt4topoem_isBadTight; //! - TBranch *b_jet_akt4topoem_emfrac; //! - TBranch *b_jet_akt4topoem_Offset; //! - TBranch *b_jet_akt4topoem_EMJES; //! - TBranch *b_jet_akt4topoem_EMJES_EtaCorr; //! - TBranch *b_jet_akt4topoem_EMJESnooffset; //! - TBranch *b_jet_akt4topoem_GCWJES; //! - TBranch *b_jet_akt4topoem_GCWJES_EtaCorr; //! - TBranch *b_jet_akt4topoem_CB; //! - TBranch *b_jet_akt4topoem_emscale_E; //! - TBranch *b_jet_akt4topoem_emscale_pt; //! - TBranch *b_jet_akt4topoem_emscale_m; //! - TBranch *b_jet_akt4topoem_emscale_eta; //! - TBranch *b_jet_akt4topoem_emscale_phi; //! - TBranch *b_jet_akt4topoem_jvtxf; //! - TBranch *b_jet_akt4topoem_jvtx_x; //! - TBranch *b_jet_akt4topoem_jvtx_y; //! - TBranch *b_jet_akt4topoem_jvtx_z; //! - TBranch *b_jet_akt4topoem_GSCFactorF; //! - TBranch *b_jet_akt4topoem_WidthFraction; //! - TBranch *b_jet_akt4topoem_flavor_component_ip2d_pu; //! - TBranch *b_jet_akt4topoem_flavor_component_ip2d_pb; //! - TBranch *b_jet_akt4topoem_flavor_component_ip2d_ntrk; //! - TBranch *b_jet_akt4topoem_flavor_component_ip3d_pu; //! - TBranch *b_jet_akt4topoem_flavor_component_ip3d_pb; //! - TBranch *b_jet_akt4topoem_flavor_component_ip3d_ntrk; //! - TBranch *b_jet_akt4topoem_flavor_component_sv1_pu; //! - TBranch *b_jet_akt4topoem_flavor_component_sv1_pb; //! - TBranch *b_jet_akt4topoem_flavor_component_sv2_pu; //! - TBranch *b_jet_akt4topoem_flavor_component_sv2_pb; //! - TBranch *b_jet_akt4topoem_flavor_component_svp_mass; //! - TBranch *b_jet_akt4topoem_flavor_component_svp_n2t; //! - TBranch *b_jet_akt4topoem_flavor_component_svp_svok; //! - TBranch *b_jet_akt4topoem_flavor_component_svp_ntrk; //! - TBranch *b_jet_akt4topoem_flavor_component_svp_ntrkv; //! - TBranch *b_jet_akt4topoem_flavor_component_svp_ntrkj; //! - TBranch *b_jet_akt4topoem_flavor_component_svp_efrc; //! - TBranch *b_jet_akt4topoem_flavor_component_sv0p_mass; //! - TBranch *b_jet_akt4topoem_flavor_component_sv0p_n2t; //! - TBranch *b_jet_akt4topoem_flavor_component_sv0p_svok; //! - TBranch *b_jet_akt4topoem_flavor_component_sv0p_ntrk; //! - TBranch *b_jet_akt4topoem_flavor_component_sv0p_ntrkv; //! - TBranch *b_jet_akt4topoem_flavor_component_sv0p_ntrkj; //! - TBranch *b_jet_akt4topoem_flavor_component_sv0p_efrc; //! - TBranch *b_jet_akt4topoem_flavor_component_jfit_pu; //! - TBranch *b_jet_akt4topoem_flavor_component_jfit_pb; //! - TBranch *b_jet_akt4topoem_flavor_component_jfit_nvtxnt; //! - TBranch *b_jet_akt4topoem_flavor_component_jfit_nvtx1t; //! - TBranch *b_jet_akt4topoem_flavor_component_jfit_ntrk; //! - TBranch *b_jet_akt4topoem_flavor_component_jfit_efrc; //! - TBranch *b_jet_akt4topoem_flavor_component_jfit_mass; //! - TBranch *b_jet_akt4topoem_flavor_component_jfit_sig3d; //! - TBranch *b_jet_akt4topoem_flavor_weight_TrackCounting2D; //! - TBranch *b_jet_akt4topoem_flavor_weight_JetProb; //! - TBranch *b_jet_akt4topoem_flavor_weight_IP1D; //! - TBranch *b_jet_akt4topoem_flavor_weight_IP2D; //! - TBranch *b_jet_akt4topoem_flavor_weight_IP3D; //! - TBranch *b_jet_akt4topoem_flavor_weight_SV0; //! - TBranch *b_jet_akt4topoem_flavor_weight_SV1; //! - TBranch *b_jet_akt4topoem_flavor_weight_SV2; //! - TBranch *b_jet_akt4topoem_flavor_weight_JetFitterTag; //! - TBranch *b_jet_akt4topoem_flavor_weight_JetFitterCOMB; //! - TBranch *b_jet_akt4topoem_flavor_weight_JetFitterTagNN; //! - TBranch *b_jet_akt4topoem_flavor_weight_JetFitterCOMBNN; //! - TBranch *b_jet_akt4topoem_flavor_weight_SoftMuonTag; //! - TBranch *b_jet_akt4topoem_flavor_weight_SoftElectronTag; //! - TBranch *b_jet_akt4topoem_flavor_weight_IP3DSV1; //! - TBranch *b_jet_akt4topoem_flavor_truth_dRminToB; //! - TBranch *b_jet_akt4topoem_flavor_truth_dRminToC; //! - TBranch *b_jet_akt4topoem_flavor_truth_dRminToT; //! - TBranch *b_jet_akt4topoem_flavor_truth_BHadronpdg; //! - TBranch *b_jet_akt4topoem_flavor_truth_trueflav; //! - TBranch *b_jet_akt4topoem_el_dr; //! - TBranch *b_jet_akt4topoem_el_matched; //! - TBranch *b_jet_akt4topoem_mu_dr; //! - TBranch *b_jet_akt4topoem_mu_matched; //! - TBranch *b_jet_akt4topoem_L1_dr; //! - TBranch *b_jet_akt4topoem_L1_matched; //! - TBranch *b_jet_akt4topoem_L2_dr; //! - TBranch *b_jet_akt4topoem_L2_matched; //! - TBranch *b_jet_akt4topoem_EF_dr; //! - TBranch *b_jet_akt4topoem_EF_matched; //! - TBranch *b_jet_akt6topoem_n; //! - TBranch *b_jet_akt6topoem_E; //! - TBranch *b_jet_akt6topoem_pt; //! - TBranch *b_jet_akt6topoem_m; //! - TBranch *b_jet_akt6topoem_eta; //! - TBranch *b_jet_akt6topoem_phi; //! - TBranch *b_jet_akt6topoem_EtaOrigin; //! - TBranch *b_jet_akt6topoem_PhiOrigin; //! - TBranch *b_jet_akt6topoem_MOrigin; //! - TBranch *b_jet_akt6topoem_EtaOriginEM; //! - TBranch *b_jet_akt6topoem_PhiOriginEM; //! - TBranch *b_jet_akt6topoem_MOriginEM; //! - TBranch *b_jet_akt6topoem_WIDTH; //! - TBranch *b_jet_akt6topoem_n90; //! - TBranch *b_jet_akt6topoem_Timing; //! - TBranch *b_jet_akt6topoem_LArQuality; //! - TBranch *b_jet_akt6topoem_nTrk; //! - TBranch *b_jet_akt6topoem_sumPtTrk; //! - TBranch *b_jet_akt6topoem_OriginIndex; //! - TBranch *b_jet_akt6topoem_HECQuality; //! - TBranch *b_jet_akt6topoem_NegativeE; //! - TBranch *b_jet_akt6topoem_YFlip12; //! - TBranch *b_jet_akt6topoem_YFlip23; //! - TBranch *b_jet_akt6topoem_BCH_CORR_CELL; //! - TBranch *b_jet_akt6topoem_BCH_CORR_DOTX; //! - TBranch *b_jet_akt6topoem_BCH_CORR_JET; //! - TBranch *b_jet_akt6topoem_BCH_CORR_JET_FORCELL; //! - TBranch *b_jet_akt6topoem_ENG_BAD_CELLS; //! - TBranch *b_jet_akt6topoem_N_BAD_CELLS; //! - TBranch *b_jet_akt6topoem_N_BAD_CELLS_CORR; //! - TBranch *b_jet_akt6topoem_BAD_CELLS_CORR_E; //! - TBranch *b_jet_akt6topoem_NumTowers; //! - TBranch *b_jet_akt6topoem_SamplingMax; //! - TBranch *b_jet_akt6topoem_fracSamplingMax; //! - TBranch *b_jet_akt6topoem_hecf; //! - TBranch *b_jet_akt6topoem_tgap3f; //! - TBranch *b_jet_akt6topoem_isUgly; //! - TBranch *b_jet_akt6topoem_isBadLoose; //! - TBranch *b_jet_akt6topoem_isBadMedium; //! - TBranch *b_jet_akt6topoem_isBadTight; //! - TBranch *b_jet_akt6topoem_emfrac; //! - TBranch *b_jet_akt6topoem_Offset; //! - TBranch *b_jet_akt6topoem_EMJES; //! - TBranch *b_jet_akt6topoem_EMJES_EtaCorr; //! - TBranch *b_jet_akt6topoem_EMJESnooffset; //! - TBranch *b_jet_akt6topoem_GCWJES; //! - TBranch *b_jet_akt6topoem_GCWJES_EtaCorr; //! - TBranch *b_jet_akt6topoem_CB; //! - TBranch *b_jet_akt6topoem_emscale_E; //! - TBranch *b_jet_akt6topoem_emscale_pt; //! - TBranch *b_jet_akt6topoem_emscale_m; //! - TBranch *b_jet_akt6topoem_emscale_eta; //! - TBranch *b_jet_akt6topoem_emscale_phi; //! - TBranch *b_jet_akt6topoem_jvtxf; //! - TBranch *b_jet_akt6topoem_jvtx_x; //! - TBranch *b_jet_akt6topoem_jvtx_y; //! - TBranch *b_jet_akt6topoem_jvtx_z; //! - TBranch *b_jet_akt6topoem_GSCFactorF; //! - TBranch *b_jet_akt6topoem_WidthFraction; //! - TBranch *b_jet_akt6topoem_flavor_component_ip2d_pu; //! - TBranch *b_jet_akt6topoem_flavor_component_ip2d_pb; //! - TBranch *b_jet_akt6topoem_flavor_component_ip2d_ntrk; //! - TBranch *b_jet_akt6topoem_flavor_component_ip3d_pu; //! - TBranch *b_jet_akt6topoem_flavor_component_ip3d_pb; //! - TBranch *b_jet_akt6topoem_flavor_component_ip3d_ntrk; //! - TBranch *b_jet_akt6topoem_flavor_component_sv1_pu; //! - TBranch *b_jet_akt6topoem_flavor_component_sv1_pb; //! - TBranch *b_jet_akt6topoem_flavor_component_sv2_pu; //! - TBranch *b_jet_akt6topoem_flavor_component_sv2_pb; //! - TBranch *b_jet_akt6topoem_flavor_component_svp_mass; //! - TBranch *b_jet_akt6topoem_flavor_component_svp_n2t; //! - TBranch *b_jet_akt6topoem_flavor_component_svp_svok; //! - TBranch *b_jet_akt6topoem_flavor_component_svp_ntrk; //! - TBranch *b_jet_akt6topoem_flavor_component_svp_ntrkv; //! - TBranch *b_jet_akt6topoem_flavor_component_svp_ntrkj; //! - TBranch *b_jet_akt6topoem_flavor_component_svp_efrc; //! - TBranch *b_jet_akt6topoem_flavor_component_sv0p_mass; //! - TBranch *b_jet_akt6topoem_flavor_component_sv0p_n2t; //! - TBranch *b_jet_akt6topoem_flavor_component_sv0p_svok; //! - TBranch *b_jet_akt6topoem_flavor_component_sv0p_ntrk; //! - TBranch *b_jet_akt6topoem_flavor_component_sv0p_ntrkv; //! - TBranch *b_jet_akt6topoem_flavor_component_sv0p_ntrkj; //! - TBranch *b_jet_akt6topoem_flavor_component_sv0p_efrc; //! - TBranch *b_jet_akt6topoem_flavor_component_jfit_pu; //! - TBranch *b_jet_akt6topoem_flavor_component_jfit_pb; //! - TBranch *b_jet_akt6topoem_flavor_component_jfit_nvtxnt; //! - TBranch *b_jet_akt6topoem_flavor_component_jfit_nvtx1t; //! - TBranch *b_jet_akt6topoem_flavor_component_jfit_ntrk; //! - TBranch *b_jet_akt6topoem_flavor_component_jfit_efrc; //! - TBranch *b_jet_akt6topoem_flavor_component_jfit_mass; //! - TBranch *b_jet_akt6topoem_flavor_component_jfit_sig3d; //! - TBranch *b_jet_akt6topoem_flavor_weight_TrackCounting2D; //! - TBranch *b_jet_akt6topoem_flavor_weight_JetProb; //! - TBranch *b_jet_akt6topoem_flavor_weight_IP1D; //! - TBranch *b_jet_akt6topoem_flavor_weight_IP2D; //! - TBranch *b_jet_akt6topoem_flavor_weight_IP3D; //! - TBranch *b_jet_akt6topoem_flavor_weight_SV0; //! - TBranch *b_jet_akt6topoem_flavor_weight_SV1; //! - TBranch *b_jet_akt6topoem_flavor_weight_SV2; //! - TBranch *b_jet_akt6topoem_flavor_weight_JetFitterTag; //! - TBranch *b_jet_akt6topoem_flavor_weight_JetFitterCOMB; //! - TBranch *b_jet_akt6topoem_flavor_weight_JetFitterTagNN; //! - TBranch *b_jet_akt6topoem_flavor_weight_JetFitterCOMBNN; //! - TBranch *b_jet_akt6topoem_flavor_weight_SoftMuonTag; //! - TBranch *b_jet_akt6topoem_flavor_weight_SoftElectronTag; //! - TBranch *b_jet_akt6topoem_flavor_weight_IP3DSV1; //! - TBranch *b_jet_akt6topoem_flavor_truth_dRminToB; //! - TBranch *b_jet_akt6topoem_flavor_truth_dRminToC; //! - TBranch *b_jet_akt6topoem_flavor_truth_dRminToT; //! - TBranch *b_jet_akt6topoem_flavor_truth_BHadronpdg; //! - TBranch *b_jet_akt6topoem_flavor_truth_trueflav; //! - TBranch *b_jet_akt6topoem_el_dr; //! - TBranch *b_jet_akt6topoem_el_matched; //! - TBranch *b_jet_akt6topoem_mu_dr; //! - TBranch *b_jet_akt6topoem_mu_matched; //! - TBranch *b_jet_akt6topoem_L1_dr; //! - TBranch *b_jet_akt6topoem_L1_matched; //! - TBranch *b_jet_akt6topoem_L2_dr; //! - TBranch *b_jet_akt6topoem_L2_matched; //! - TBranch *b_jet_akt6topoem_EF_dr; //! - TBranch *b_jet_akt6topoem_EF_matched; //! - TBranch *b_top_hfor_type; //! - TBranch *b_MET_RefFinal_phi; //! - TBranch *b_MET_RefFinal_et; //! - TBranch *b_MET_RefFinal_sumet; //! - TBranch *b_MET_Cryo_phi; //! - TBranch *b_MET_Cryo_et; //! - TBranch *b_MET_Cryo_sumet; //! - TBranch *b_MET_RefEle_phi; //! - TBranch *b_MET_RefEle_et; //! - TBranch *b_MET_RefEle_sumet; //! - TBranch *b_MET_RefJet_phi; //! - TBranch *b_MET_RefJet_et; //! - TBranch *b_MET_RefJet_sumet; //! - TBranch *b_MET_SoftJets_phi; //! - TBranch *b_MET_SoftJets_et; //! - TBranch *b_MET_SoftJets_sumet; //! - TBranch *b_MET_RefMuon_phi; //! - TBranch *b_MET_RefMuon_et; //! - TBranch *b_MET_RefMuon_sumet; //! - TBranch *b_MET_RefMuon_Staco_phi; //! - TBranch *b_MET_RefMuon_Staco_et; //! - TBranch *b_MET_RefMuon_Staco_sumet; //! - TBranch *b_MET_RefMuon_Muid_phi; //! - TBranch *b_MET_RefMuon_Muid_et; //! - TBranch *b_MET_RefMuon_Muid_sumet; //! - TBranch *b_MET_RefGamma_phi; //! - TBranch *b_MET_RefGamma_et; //! - TBranch *b_MET_RefGamma_sumet; //! - TBranch *b_MET_RefTau_phi; //! - TBranch *b_MET_RefTau_et; //! - TBranch *b_MET_RefTau_sumet; //! - TBranch *b_MET_CellOut_phi; //! - TBranch *b_MET_CellOut_et; //! - TBranch *b_MET_CellOut_sumet; //! - TBranch *b_MET_Track_phi; //! - TBranch *b_MET_Track_et; //! - TBranch *b_MET_Track_sumet; //! - TBranch *b_MET_RefFinal_em_etx; //! - TBranch *b_MET_RefFinal_em_ety; //! - TBranch *b_MET_RefFinal_em_phi; //! - TBranch *b_MET_RefFinal_em_et; //! - TBranch *b_MET_RefFinal_em_sumet; //! - TBranch *b_MET_RefEle_em_phi; //! - TBranch *b_MET_RefEle_em_et; //! - TBranch *b_MET_RefEle_em_sumet; //! - TBranch *b_MET_RefJet_em_phi; //! - TBranch *b_MET_RefJet_em_et; //! - TBranch *b_MET_RefJet_em_sumet; //! - TBranch *b_MET_SoftJets_em_phi; //! - TBranch *b_MET_SoftJets_em_et; //! - TBranch *b_MET_SoftJets_em_sumet; //! - TBranch *b_MET_RefMuon_em_phi; //! - TBranch *b_MET_RefMuon_em_et; //! - TBranch *b_MET_RefMuon_em_sumet; //! - TBranch *b_MET_RefMuon_Track_em_phi; //! - TBranch *b_MET_RefMuon_Track_em_et; //! - TBranch *b_MET_RefMuon_Track_em_sumet; //! - TBranch *b_MET_RefGamma_em_phi; //! - TBranch *b_MET_RefGamma_em_et; //! - TBranch *b_MET_RefGamma_em_sumet; //! - TBranch *b_MET_RefTau_em_phi; //! - TBranch *b_MET_RefTau_em_et; //! - TBranch *b_MET_RefTau_em_sumet; //! - TBranch *b_MET_CellOut_em_etx; //! - TBranch *b_MET_CellOut_em_ety; //! - TBranch *b_MET_CellOut_em_phi; //! - TBranch *b_MET_CellOut_em_et; //! - TBranch *b_MET_CellOut_em_sumet; //! - TBranch *b_MET_Muon_Isol_Staco_phi; //! - TBranch *b_MET_Muon_Isol_Staco_et; //! - TBranch *b_MET_Muon_Isol_Staco_sumet; //! - TBranch *b_MET_Muon_NonIsol_Staco_phi; //! - TBranch *b_MET_Muon_NonIsol_Staco_et; //! - TBranch *b_MET_Muon_NonIsol_Staco_sumet; //! - TBranch *b_MET_Muon_Total_Staco_phi; //! - TBranch *b_MET_Muon_Total_Staco_et; //! - TBranch *b_MET_Muon_Total_Staco_sumet; //! - TBranch *b_MET_Muon_Isol_Muid_phi; //! - TBranch *b_MET_Muon_Isol_Muid_et; //! - TBranch *b_MET_Muon_Isol_Muid_sumet; //! - TBranch *b_MET_Muon_NonIsol_Muid_phi; //! - TBranch *b_MET_Muon_NonIsol_Muid_et; //! - TBranch *b_MET_Muon_NonIsol_Muid_sumet; //! - TBranch *b_MET_Muon_Total_Muid_phi; //! - TBranch *b_MET_Muon_Total_Muid_et; //! - TBranch *b_MET_Muon_Total_Muid_sumet; //! - TBranch *b_MET_MuonBoy_phi; //! - TBranch *b_MET_MuonBoy_et; //! - TBranch *b_MET_MuonBoy_sumet; //! - TBranch *b_MET_RefMuon_Track_phi; //! - TBranch *b_MET_RefMuon_Track_et; //! - TBranch *b_MET_RefMuon_Track_sumet; //! - TBranch *b_MET_RefMuon_Track_Staco_phi; //! - TBranch *b_MET_RefMuon_Track_Staco_et; //! - TBranch *b_MET_RefMuon_Track_Staco_sumet; //! - TBranch *b_MET_RefMuon_Track_Muid_phi; //! - TBranch *b_MET_RefMuon_Track_Muid_et; //! - TBranch *b_MET_RefMuon_Track_Muid_sumet; //! - TBranch *b_MET_CryoCone_phi; //! - TBranch *b_MET_CryoCone_et; //! - TBranch *b_MET_CryoCone_sumet; //! - TBranch *b_MET_Final_phi; //! - TBranch *b_MET_Final_et; //! - TBranch *b_MET_Final_sumet; //! - TBranch *b_MET_MuonBoy_Spectro_phi; //! - TBranch *b_MET_MuonBoy_Spectro_et; //! - TBranch *b_MET_MuonBoy_Spectro_sumet; //! - TBranch *b_MET_MuonBoy_Track_phi; //! - TBranch *b_MET_MuonBoy_Track_et; //! - TBranch *b_MET_MuonBoy_Track_sumet; //! - TBranch *b_MET_MuonMuid_phi; //! - TBranch *b_MET_MuonMuid_et; //! - TBranch *b_MET_MuonMuid_sumet; //! - TBranch *b_MET_Muid_phi; //! - TBranch *b_MET_Muid_et; //! - TBranch *b_MET_Muid_sumet; //! - TBranch *b_MET_Muid_Spectro_phi; //! - TBranch *b_MET_Muid_Spectro_et; //! - TBranch *b_MET_Muid_Spectro_sumet; //! - TBranch *b_MET_Muid_Track_phi; //! - TBranch *b_MET_Muid_Track_et; //! - TBranch *b_MET_Muid_Track_sumet; //! - TBranch *b_MET_Muon_phi; //! - TBranch *b_MET_Muon_et; //! - TBranch *b_MET_Muon_sumet; //! - TBranch *b_MET_TopoObj_phi; //! - TBranch *b_MET_TopoObj_et; //! - TBranch *b_MET_TopoObj_sumet; //! - TBranch *b_MET_LocHadTopoObj_phi; //! - TBranch *b_MET_LocHadTopoObj_et; //! - TBranch *b_MET_LocHadTopoObj_sumet; //! - TBranch *b_MET_Topo_phi; //! - TBranch *b_MET_Topo_et; //! - TBranch *b_MET_Topo_sumet; //! - TBranch *b_MET_Topo_SUMET_EMFrac; //! - TBranch *b_MET_Topo_etx_PEMB; //! - TBranch *b_MET_Topo_ety_PEMB; //! - TBranch *b_MET_Topo_sumet_PEMB; //! - TBranch *b_MET_Topo_phi_PEMB; //! - TBranch *b_MET_Topo_etx_EMB; //! - TBranch *b_MET_Topo_ety_EMB; //! - TBranch *b_MET_Topo_sumet_EMB; //! - TBranch *b_MET_Topo_phi_EMB; //! - TBranch *b_MET_Topo_etx_PEMEC; //! - TBranch *b_MET_Topo_ety_PEMEC; //! - TBranch *b_MET_Topo_sumet_PEMEC; //! - TBranch *b_MET_Topo_phi_PEMEC; //! - TBranch *b_MET_Topo_etx_EME; //! - TBranch *b_MET_Topo_ety_EME; //! - TBranch *b_MET_Topo_sumet_EME; //! - TBranch *b_MET_Topo_phi_EME; //! - TBranch *b_MET_Topo_etx_TILE; //! - TBranch *b_MET_Topo_ety_TILE; //! - TBranch *b_MET_Topo_sumet_TILE; //! - TBranch *b_MET_Topo_phi_TILE; //! - TBranch *b_MET_Topo_etx_HEC; //! - TBranch *b_MET_Topo_ety_HEC; //! - TBranch *b_MET_Topo_sumet_HEC; //! - TBranch *b_MET_Topo_phi_HEC; //! - TBranch *b_MET_Topo_etx_FCAL; //! - TBranch *b_MET_Topo_ety_FCAL; //! - TBranch *b_MET_Topo_sumet_FCAL; //! - TBranch *b_MET_Topo_phi_FCAL; //! - TBranch *b_MET_Topo_nCell_PEMB; //! - TBranch *b_MET_Topo_nCell_EMB; //! - TBranch *b_MET_Topo_nCell_PEMEC; //! - TBranch *b_MET_Topo_nCell_EME; //! - TBranch *b_MET_Topo_nCell_TILE; //! - TBranch *b_MET_Topo_nCell_HEC; //! - TBranch *b_MET_Topo_nCell_FCAL; //! - TBranch *b_MET_Topo_etx_CentralReg; //! - TBranch *b_MET_Topo_ety_CentralReg; //! - TBranch *b_MET_Topo_sumet_CentralReg; //! - TBranch *b_MET_Topo_phi_CentralReg; //! - TBranch *b_MET_Topo_etx_EndcapRegion; //! - TBranch *b_MET_Topo_ety_EndcapRegion; //! - TBranch *b_MET_Topo_sumet_EndcapRegion; //! - TBranch *b_MET_Topo_phi_EndcapRegion; //! - TBranch *b_MET_Topo_etx_ForwardReg; //! - TBranch *b_MET_Topo_ety_ForwardReg; //! - TBranch *b_MET_Topo_sumet_ForwardReg; //! - TBranch *b_MET_Topo_phi_ForwardReg; //! - TBranch *b_MET_CorrTopo_phi; //! - TBranch *b_MET_CorrTopo_et; //! - TBranch *b_MET_CorrTopo_sumet; //! - TBranch *b_MET_CorrTopo_SUMET_EMFrac; //! - TBranch *b_MET_CorrTopo_etx_PEMB; //! - TBranch *b_MET_CorrTopo_ety_PEMB; //! - TBranch *b_MET_CorrTopo_sumet_PEMB; //! - TBranch *b_MET_CorrTopo_phi_PEMB; //! - TBranch *b_MET_CorrTopo_etx_EMB; //! - TBranch *b_MET_CorrTopo_ety_EMB; //! - TBranch *b_MET_CorrTopo_sumet_EMB; //! - TBranch *b_MET_CorrTopo_phi_EMB; //! - TBranch *b_MET_CorrTopo_etx_PEMEC; //! - TBranch *b_MET_CorrTopo_ety_PEMEC; //! - TBranch *b_MET_CorrTopo_sumet_PEMEC; //! - TBranch *b_MET_CorrTopo_phi_PEMEC; //! - TBranch *b_MET_CorrTopo_etx_EME; //! - TBranch *b_MET_CorrTopo_ety_EME; //! - TBranch *b_MET_CorrTopo_sumet_EME; //! - TBranch *b_MET_CorrTopo_phi_EME; //! - TBranch *b_MET_CorrTopo_etx_TILE; //! - TBranch *b_MET_CorrTopo_ety_TILE; //! - TBranch *b_MET_CorrTopo_sumet_TILE; //! - TBranch *b_MET_CorrTopo_phi_TILE; //! - TBranch *b_MET_CorrTopo_etx_HEC; //! - TBranch *b_MET_CorrTopo_ety_HEC; //! - TBranch *b_MET_CorrTopo_sumet_HEC; //! - TBranch *b_MET_CorrTopo_phi_HEC; //! - TBranch *b_MET_CorrTopo_etx_FCAL; //! - TBranch *b_MET_CorrTopo_ety_FCAL; //! - TBranch *b_MET_CorrTopo_sumet_FCAL; //! - TBranch *b_MET_CorrTopo_phi_FCAL; //! - TBranch *b_MET_CorrTopo_nCell_PEMB; //! - TBranch *b_MET_CorrTopo_nCell_EMB; //! - TBranch *b_MET_CorrTopo_nCell_PEMEC; //! - TBranch *b_MET_CorrTopo_nCell_EME; //! - TBranch *b_MET_CorrTopo_nCell_TILE; //! - TBranch *b_MET_CorrTopo_nCell_HEC; //! - TBranch *b_MET_CorrTopo_nCell_FCAL; //! - TBranch *b_MET_CorrTopo_etx_CentralReg; //! - TBranch *b_MET_CorrTopo_ety_CentralReg; //! - TBranch *b_MET_CorrTopo_sumet_CentralReg; //! - TBranch *b_MET_CorrTopo_phi_CentralReg; //! - TBranch *b_MET_CorrTopo_etx_EndcapRegion; //! - TBranch *b_MET_CorrTopo_ety_EndcapRegion; //! - TBranch *b_MET_CorrTopo_sumet_EndcapRegion; //! - TBranch *b_MET_CorrTopo_phi_EndcapRegion; //! - TBranch *b_MET_CorrTopo_etx_ForwardReg; //! - TBranch *b_MET_CorrTopo_ety_ForwardReg; //! - TBranch *b_MET_CorrTopo_sumet_ForwardReg; //! - TBranch *b_MET_CorrTopo_phi_ForwardReg; //! - TBranch *b_MET_LocHadTopo_phi; //! - TBranch *b_MET_LocHadTopo_et; //! - TBranch *b_MET_LocHadTopo_sumet; //! - TBranch *b_MET_LocHadTopo_SUMET_EMFrac; //! - TBranch *b_MET_LocHadTopo_etx_PEMB; //! - TBranch *b_MET_LocHadTopo_ety_PEMB; //! - TBranch *b_MET_LocHadTopo_sumet_PEMB; //! - TBranch *b_MET_LocHadTopo_phi_PEMB; //! - TBranch *b_MET_LocHadTopo_etx_EMB; //! - TBranch *b_MET_LocHadTopo_ety_EMB; //! - TBranch *b_MET_LocHadTopo_sumet_EMB; //! - TBranch *b_MET_LocHadTopo_phi_EMB; //! - TBranch *b_MET_LocHadTopo_etx_PEMEC; //! - TBranch *b_MET_LocHadTopo_ety_PEMEC; //! - TBranch *b_MET_LocHadTopo_sumet_PEMEC; //! - TBranch *b_MET_LocHadTopo_phi_PEMEC; //! - TBranch *b_MET_LocHadTopo_etx_EME; //! - TBranch *b_MET_LocHadTopo_ety_EME; //! - TBranch *b_MET_LocHadTopo_sumet_EME; //! - TBranch *b_MET_LocHadTopo_phi_EME; //! - TBranch *b_MET_LocHadTopo_etx_TILE; //! - TBranch *b_MET_LocHadTopo_ety_TILE; //! - TBranch *b_MET_LocHadTopo_sumet_TILE; //! - TBranch *b_MET_LocHadTopo_phi_TILE; //! - TBranch *b_MET_LocHadTopo_etx_HEC; //! - TBranch *b_MET_LocHadTopo_ety_HEC; //! - TBranch *b_MET_LocHadTopo_sumet_HEC; //! - TBranch *b_MET_LocHadTopo_phi_HEC; //! - TBranch *b_MET_LocHadTopo_etx_FCAL; //! - TBranch *b_MET_LocHadTopo_ety_FCAL; //! - TBranch *b_MET_LocHadTopo_sumet_FCAL; //! - TBranch *b_MET_LocHadTopo_phi_FCAL; //! - TBranch *b_MET_LocHadTopo_nCell_PEMB; //! - TBranch *b_MET_LocHadTopo_nCell_EMB; //! - TBranch *b_MET_LocHadTopo_nCell_PEMEC; //! - TBranch *b_MET_LocHadTopo_nCell_EME; //! - TBranch *b_MET_LocHadTopo_nCell_TILE; //! - TBranch *b_MET_LocHadTopo_nCell_HEC; //! - TBranch *b_MET_LocHadTopo_nCell_FCAL; //! - TBranch *b_MET_LocHadTopo_etx_CentralReg; //! - TBranch *b_MET_LocHadTopo_ety_CentralReg; //! - TBranch *b_MET_LocHadTopo_sumet_CentralReg; //! - TBranch *b_MET_LocHadTopo_phi_CentralReg; //! - TBranch *b_MET_LocHadTopo_etx_EndcapRegion; //! - TBranch *b_MET_LocHadTopo_ety_EndcapRegion; //! - TBranch *b_MET_LocHadTopo_sumet_EndcapRegion; //! - TBranch *b_MET_LocHadTopo_phi_EndcapRegion; //! - TBranch *b_MET_LocHadTopo_etx_ForwardReg; //! - TBranch *b_MET_LocHadTopo_ety_ForwardReg; //! - TBranch *b_MET_LocHadTopo_sumet_ForwardReg; //! - TBranch *b_MET_LocHadTopo_phi_ForwardReg; //! - TBranch *b_MET_Calib_phi; //! - TBranch *b_MET_Calib_et; //! - TBranch *b_MET_Calib_sumet; //! - TBranch *b_MET_Calib_SUMET_EMFrac; //! - TBranch *b_MET_Calib_etx_PEMB; //! - TBranch *b_MET_Calib_ety_PEMB; //! - TBranch *b_MET_Calib_sumet_PEMB; //! - TBranch *b_MET_Calib_phi_PEMB; //! - TBranch *b_MET_Calib_etx_EMB; //! - TBranch *b_MET_Calib_ety_EMB; //! - TBranch *b_MET_Calib_sumet_EMB; //! - TBranch *b_MET_Calib_phi_EMB; //! - TBranch *b_MET_Calib_etx_PEMEC; //! - TBranch *b_MET_Calib_ety_PEMEC; //! - TBranch *b_MET_Calib_sumet_PEMEC; //! - TBranch *b_MET_Calib_phi_PEMEC; //! - TBranch *b_MET_Calib_etx_EME; //! - TBranch *b_MET_Calib_ety_EME; //! - TBranch *b_MET_Calib_sumet_EME; //! - TBranch *b_MET_Calib_phi_EME; //! - TBranch *b_MET_Calib_etx_TILE; //! - TBranch *b_MET_Calib_ety_TILE; //! - TBranch *b_MET_Calib_sumet_TILE; //! - TBranch *b_MET_Calib_phi_TILE; //! - TBranch *b_MET_Calib_etx_HEC; //! - TBranch *b_MET_Calib_ety_HEC; //! - TBranch *b_MET_Calib_sumet_HEC; //! - TBranch *b_MET_Calib_phi_HEC; //! - TBranch *b_MET_Calib_etx_FCAL; //! - TBranch *b_MET_Calib_ety_FCAL; //! - TBranch *b_MET_Calib_sumet_FCAL; //! - TBranch *b_MET_Calib_phi_FCAL; //! - TBranch *b_MET_Calib_nCell_PEMB; //! - TBranch *b_MET_Calib_nCell_EMB; //! - TBranch *b_MET_Calib_nCell_PEMEC; //! - TBranch *b_MET_Calib_nCell_EME; //! - TBranch *b_MET_Calib_nCell_TILE; //! - TBranch *b_MET_Calib_nCell_HEC; //! - TBranch *b_MET_Calib_nCell_FCAL; //! - TBranch *b_MET_Calib_etx_CentralReg; //! - TBranch *b_MET_Calib_ety_CentralReg; //! - TBranch *b_MET_Calib_sumet_CentralReg; //! - TBranch *b_MET_Calib_phi_CentralReg; //! - TBranch *b_MET_Calib_etx_EndcapRegion; //! - TBranch *b_MET_Calib_ety_EndcapRegion; //! - TBranch *b_MET_Calib_sumet_EndcapRegion; //! - TBranch *b_MET_Calib_phi_EndcapRegion; //! - TBranch *b_MET_Calib_etx_ForwardReg; //! - TBranch *b_MET_Calib_ety_ForwardReg; //! - TBranch *b_MET_Calib_sumet_ForwardReg; //! - TBranch *b_MET_Calib_phi_ForwardReg; //! - TBranch *b_MET_Truth_NonInt_etx; //! - TBranch *b_MET_Truth_NonInt_ety; //! - TBranch *b_MET_Truth_NonInt_phi; //! - TBranch *b_MET_Truth_NonInt_et; //! - TBranch *b_MET_Truth_NonInt_sumet; //! - TBranch *b_MET_Truth_Int_phi; //! - TBranch *b_MET_Truth_IntCentral_phi; //! - TBranch *b_MET_Truth_IntFwd_phi; //! - TBranch *b_MET_Truth_IntOutCover_phi; //! - TBranch *b_MET_Truth_IntMuons_phi; //! - TBranch *b_MET_Truth_Int_et; //! - TBranch *b_MET_Truth_IntCentral_et; //! - TBranch *b_MET_Truth_IntFwd_et; //! - TBranch *b_MET_Truth_IntOutCover_et; //! - TBranch *b_MET_Truth_IntMuons_et; //! - TBranch *b_MET_Truth_Int_sumet; //! - TBranch *b_MET_Truth_IntCentral_sumet; //! - TBranch *b_MET_Truth_IntFwd_sumet; //! - TBranch *b_MET_Truth_IntOutCover_sumet; //! - TBranch *b_MET_Truth_IntMuons_sumet; //! - TBranch *b_MET_Truth_PileUp_NonInt_etx; //! - TBranch *b_MET_Truth_PileUp_NonInt_ety; //! - TBranch *b_MET_Truth_PileUp_NonInt_phi; //! - TBranch *b_MET_Truth_PileUp_NonInt_et; //! - TBranch *b_MET_Truth_PileUp_NonInt_sumet; //! - TBranch *b_MET_Truth_PileUp_Int_etx; //! - TBranch *b_MET_Truth_PileUp_Int_ety; //! - TBranch *b_MET_Truth_PileUp_IntCentral_etx; //! - TBranch *b_MET_Truth_PileUp_IntCentral_ety; //! - TBranch *b_MET_Truth_PileUp_IntFwd_etx; //! - TBranch *b_MET_Truth_PileUp_IntFwd_ety; //! - TBranch *b_MET_Truth_PileUp_IntOutCover_etx; //! - TBranch *b_MET_Truth_PileUp_IntOutCover_ety; //! - TBranch *b_MET_Truth_PileUp_IntMuons_etx; //! - TBranch *b_MET_Truth_PileUp_IntMuons_ety; //! - TBranch *b_MET_Truth_PileUp_Int_phi; //! - TBranch *b_MET_Truth_PileUp_IntCentral_phi; //! - TBranch *b_MET_Truth_PileUp_IntFwd_phi; //! - TBranch *b_MET_Truth_PileUp_IntOutCover_phi; //! - TBranch *b_MET_Truth_PileUp_IntMuons_phi; //! - TBranch *b_MET_Truth_PileUp_Int_et; //! - TBranch *b_MET_Truth_PileUp_IntCentral_et; //! - TBranch *b_MET_Truth_PileUp_IntFwd_et; //! - TBranch *b_MET_Truth_PileUp_IntOutCover_et; //! - TBranch *b_MET_Truth_PileUp_IntMuons_et; //! - TBranch *b_MET_Truth_PileUp_Int_sumet; //! - TBranch *b_MET_Truth_PileUp_IntCentral_sumet; //! - TBranch *b_MET_Truth_PileUp_IntFwd_sumet; //! - TBranch *b_MET_Truth_PileUp_IntOutCover_sumet; //! - TBranch *b_MET_Truth_PileUp_IntMuons_sumet; //! - TBranch *b_MET_DM_Crack1_etx; //! - TBranch *b_MET_DM_Crack1_ety; //! - TBranch *b_MET_DM_Crack1_phi; //! - TBranch *b_MET_DM_Crack1_et; //! - TBranch *b_MET_DM_Crack1_sumet; //! - TBranch *b_MET_DM_Crack2_etx; //! - TBranch *b_MET_DM_Crack2_ety; //! - TBranch *b_MET_DM_Crack2_phi; //! - TBranch *b_MET_DM_Crack2_et; //! - TBranch *b_MET_DM_Crack2_sumet; //! - TBranch *b_MET_DM_All_etx; //! - TBranch *b_MET_DM_All_ety; //! - TBranch *b_MET_DM_All_phi; //! - TBranch *b_MET_DM_All_et; //! - TBranch *b_MET_DM_All_sumet; //! - TBranch *b_MET_DM_Cryo_etx; //! - TBranch *b_MET_DM_Cryo_ety; //! - TBranch *b_MET_DM_Cryo_phi; //! - TBranch *b_MET_DM_Cryo_et; //! - TBranch *b_MET_DM_Cryo_sumet; //! - TBranch *b_METJetsInfo_JetPtWeightedEventEMFraction; //! - TBranch *b_METJetsInfo_JetPtWeightedNumAssociatedTracks; //! - TBranch *b_METJetsInfo_JetPtWeightedSize; //! - TBranch *b_METJetsInfo_LeadingJetEt; //! - TBranch *b_METJetsInfo_LeadingJetEta; //! - TBranch *b_cl_n; //! - TBranch *b_cl_pt; //! - TBranch *b_cl_eta; //! - TBranch *b_cl_phi; //! - TBranch *b_clpt10_n; //! - TBranch *b_clpt10_pt; //! - TBranch *b_clpt10_eta; //! - TBranch *b_clpt10_phi; //! - TBranch *b_clpt10_E_em; //! - TBranch *b_clpt10_E_had; //! - TBranch *b_clpt10_firstEdens; //! - TBranch *b_clpt10_cellmaxfrac; //! - TBranch *b_clpt10_longitudinal; //! - TBranch *b_clpt10_secondlambda; //! - TBranch *b_clpt10_lateral; //! - TBranch *b_clpt10_secondR; //! - TBranch *b_clpt10_centerlambda; //! - TBranch *b_clpt10_deltaTheta; //! - TBranch *b_clpt10_deltaPhi; //! - TBranch *b_clpt10_time; //! - TBranch *b_clpt10_E_PreSamplerB; //! - TBranch *b_clpt10_E_EMB1; //! - TBranch *b_clpt10_E_EMB2; //! - TBranch *b_clpt10_E_EMB3; //! - TBranch *b_clpt10_E_PreSamplerE; //! - TBranch *b_clpt10_E_EME1; //! - TBranch *b_clpt10_E_EME2; //! - TBranch *b_clpt10_E_EME3; //! - TBranch *b_clpt10_E_HEC0; //! - TBranch *b_clpt10_E_HEC1; //! - TBranch *b_clpt10_E_HEC2; //! - TBranch *b_clpt10_E_HEC3; //! - TBranch *b_clpt10_E_TileBar0; //! - TBranch *b_clpt10_E_TileBar1; //! - TBranch *b_clpt10_E_TileBar2; //! - TBranch *b_clpt10_E_TileGap1; //! - TBranch *b_clpt10_E_TileGap2; //! - TBranch *b_clpt10_E_TileGap3; //! - TBranch *b_clpt10_E_TileExt0; //! - TBranch *b_clpt10_E_TileExt1; //! - TBranch *b_clpt10_E_TileExt2; //! - TBranch *b_clpt10_E_FCAL0; //! - TBranch *b_clpt10_E_FCAL1; //! - TBranch *b_clpt10_E_FCAL2; //! - TBranch *b_emclpt10_n; //! - TBranch *b_emclpt10_pt; //! - TBranch *b_emclpt10_eta; //! - TBranch *b_emclpt10_phi; //! - TBranch *b_emclpt10_E_em; //! - TBranch *b_emclpt10_E_had; //! - TBranch *b_emclpt10_firstEdens; //! - TBranch *b_emclpt10_cellmaxfrac; //! - TBranch *b_emclpt10_longitudinal; //! - TBranch *b_emclpt10_secondlambda; //! - TBranch *b_emclpt10_lateral; //! - TBranch *b_emclpt10_secondR; //! - TBranch *b_emclpt10_centerlambda; //! - TBranch *b_emclpt10_deltaTheta; //! - TBranch *b_emclpt10_deltaPhi; //! - TBranch *b_emclpt10_time; //! - TBranch *b_emclpt10_E_PreSamplerB; //! - TBranch *b_emclpt10_E_EMB1; //! - TBranch *b_emclpt10_E_EMB2; //! - TBranch *b_emclpt10_E_EMB3; //! - TBranch *b_emclpt10_E_PreSamplerE; //! - TBranch *b_emclpt10_E_EME1; //! - TBranch *b_emclpt10_E_EME2; //! - TBranch *b_emclpt10_E_EME3; //! - TBranch *b_emclpt10_E_HEC0; //! - TBranch *b_emclpt10_E_HEC1; //! - TBranch *b_emclpt10_E_HEC2; //! - TBranch *b_emclpt10_E_HEC3; //! - TBranch *b_emclpt10_E_TileBar0; //! - TBranch *b_emclpt10_E_TileBar1; //! - TBranch *b_emclpt10_E_TileBar2; //! - TBranch *b_emclpt10_E_TileGap1; //! - TBranch *b_emclpt10_E_TileGap2; //! - TBranch *b_emclpt10_E_TileGap3; //! - TBranch *b_emclpt10_E_TileExt0; //! - TBranch *b_emclpt10_E_TileExt1; //! - TBranch *b_emclpt10_E_TileExt2; //! - TBranch *b_emclpt10_E_FCAL0; //! - TBranch *b_emclpt10_E_FCAL1; //! - TBranch *b_emclpt10_E_FCAL2; //! - TBranch *b_emclpt10_eta_PreSamplerB; //! - TBranch *b_emclpt10_phi_PreSamplerB; //! - TBranch *b_emclpt10_eta_EMB1; //! - TBranch *b_emclpt10_phi_EMB1; //! - TBranch *b_emclpt10_eta_EMB2; //! - TBranch *b_emclpt10_phi_EMB2; //! - TBranch *b_emclpt10_eta_EMB3; //! - TBranch *b_emclpt10_phi_EMB3; //! - TBranch *b_emclpt10_eta_PreSamplerE; //! - TBranch *b_emclpt10_phi_PreSamplerE; //! - TBranch *b_emclpt10_eta_EME1; //! - TBranch *b_emclpt10_phi_EME1; //! - TBranch *b_emclpt10_eta_EME2; //! - TBranch *b_emclpt10_phi_EME2; //! - TBranch *b_emclpt10_eta_EME3; //! - TBranch *b_emclpt10_phi_EME3; //! - TBranch *b_emclpt10_eta_HEC0; //! - TBranch *b_emclpt10_phi_HEC0; //! - TBranch *b_emclpt10_eta_HEC1; //! - TBranch *b_emclpt10_phi_HEC1; //! - TBranch *b_emclpt10_eta_HEC2; //! - TBranch *b_emclpt10_phi_HEC2; //! - TBranch *b_emclpt10_eta_HEC3; //! - TBranch *b_emclpt10_phi_HEC3; //! - TBranch *b_emclpt10_eta_TileBar0; //! - TBranch *b_emclpt10_phi_TileBar0; //! - TBranch *b_emclpt10_eta_TileBar1; //! - TBranch *b_emclpt10_phi_TileBar1; //! - TBranch *b_emclpt10_eta_TileBar2; //! - TBranch *b_emclpt10_phi_TileBar2; //! - TBranch *b_emclpt10_eta_TileGap1; //! - TBranch *b_emclpt10_phi_TileGap1; //! - TBranch *b_emclpt10_eta_TileGap2; //! - TBranch *b_emclpt10_phi_TileGap2; //! - TBranch *b_emclpt10_eta_TileGap3; //! - TBranch *b_emclpt10_phi_TileGap3; //! - TBranch *b_emclpt10_eta_TileExt0; //! - TBranch *b_emclpt10_phi_TileExt0; //! - TBranch *b_emclpt10_eta_TileExt1; //! - TBranch *b_emclpt10_phi_TileExt1; //! - TBranch *b_emclpt10_eta_TileExt2; //! - TBranch *b_emclpt10_phi_TileExt2; //! - TBranch *b_emclpt10_eta_FCAL0; //! - TBranch *b_emclpt10_phi_FCAL0; //! - TBranch *b_emclpt10_eta_FCAL1; //! - TBranch *b_emclpt10_phi_FCAL1; //! - TBranch *b_emclpt10_eta_FCAL2; //! - TBranch *b_emclpt10_phi_FCAL2; //! - TBranch *b_trk_n; //! - TBranch *b_trk_pt; //! - TBranch *b_trk_eta; //! - TBranch *b_trk_d0_wrtPV; //! - TBranch *b_trk_z0_wrtPV; //! - TBranch *b_trk_phi_wrtPV; //! - TBranch *b_trk_theta_wrtPV; //! - TBranch *b_trk_qoverp_wrtPV; //! - TBranch *b_trk_chi2; //! - TBranch *b_trk_ndof; //! - TBranch *b_trkpt5_n; //! - TBranch *b_trkpt5_d0; //! - TBranch *b_trkpt5_z0; //! - TBranch *b_trkpt5_phi; //! - TBranch *b_trkpt5_theta; //! - TBranch *b_trkpt5_qoverp; //! - TBranch *b_trkpt5_pt; //! - TBranch *b_trkpt5_eta; //! - TBranch *b_trkpt5_err_d0; //! - TBranch *b_trkpt5_err_z0; //! - TBranch *b_trkpt5_err_phi; //! - TBranch *b_trkpt5_err_theta; //! - TBranch *b_trkpt5_err_qoverp; //! - TBranch *b_trkpt5_d0_wrtPV; //! - TBranch *b_trkpt5_z0_wrtPV; //! - TBranch *b_trkpt5_phi_wrtPV; //! - TBranch *b_trkpt5_err_d0_wrtPV; //! - TBranch *b_trkpt5_err_z0_wrtPV; //! - TBranch *b_trkpt5_err_phi_wrtPV; //! - TBranch *b_trkpt5_err_theta_wrtPV; //! - TBranch *b_trkpt5_err_qoverp_wrtPV; //! - TBranch *b_trkpt5_cov_d0_z0_wrtPV; //! - TBranch *b_trkpt5_cov_d0_phi_wrtPV; //! - TBranch *b_trkpt5_cov_d0_theta_wrtPV; //! - TBranch *b_trkpt5_cov_d0_qoverp_wrtPV; //! - TBranch *b_trkpt5_cov_z0_phi_wrtPV; //! - TBranch *b_trkpt5_cov_z0_theta_wrtPV; //! - TBranch *b_trkpt5_cov_z0_qoverp_wrtPV; //! - TBranch *b_trkpt5_cov_phi_theta_wrtPV; //! - TBranch *b_trkpt5_cov_phi_qoverp_wrtPV; //! - TBranch *b_trkpt5_cov_theta_qoverp_wrtPV; //! - TBranch *b_trkpt5_chi2; //! - TBranch *b_trkpt5_ndof; //! - TBranch *b_trkpt5_nBLHits; //! - TBranch *b_trkpt5_nPixHits; //! - TBranch *b_trkpt5_nSCTHits; //! - TBranch *b_trkpt5_nTRTHits; //! - TBranch *b_trkpt5_nTRTHighTHits; //! - TBranch *b_trkpt5_nPixHoles; //! - TBranch *b_trkpt5_nSCTHoles; //! - TBranch *b_trkpt5_nTRTHoles; //! - TBranch *b_trkpt5_expectBLayerHit; //! - TBranch *b_trkpt5_nMDTHits; //! - TBranch *b_trkpt5_nCSCEtaHits; //! - TBranch *b_trkpt5_nCSCPhiHits; //! - TBranch *b_trkpt5_nRPCEtaHits; //! - TBranch *b_trkpt5_nRPCPhiHits; //! - TBranch *b_trkpt5_nTGCEtaHits; //! - TBranch *b_trkpt5_nTGCPhiHits; //! - TBranch *b_trkpt5_nHits; //! - TBranch *b_trkpt5_nHoles; //! - TBranch *b_trkpt5_hitPattern; //! - TBranch *b_trkpt5_TRTHighTHitsRatio; //! - TBranch *b_trkpt5_TRTHighTOutliersRatio; //! - TBranch *b_trkpt5_mc_probability; //! - TBranch *b_trkpt5_mc_barcode; //! - TBranch *b_vxp_n; //! - TBranch *b_vxp_x; //! - TBranch *b_vxp_y; //! - TBranch *b_vxp_z; //! - TBranch *b_vxp_err_x; //! - TBranch *b_vxp_err_y; //! - TBranch *b_vxp_err_z; //! - TBranch *b_vxp_chi2; //! - TBranch *b_vxp_ndof; //! - TBranch *b_vxp_px; //! - TBranch *b_vxp_py; //! - TBranch *b_vxp_pz; //! - TBranch *b_vxp_E; //! - TBranch *b_vxp_m; //! - TBranch *b_vxp_nTracks; //! - TBranch *b_vxp_sumPt; //! - TBranch *b_vxp_type; //! - TBranch *b_vxp_trk_n; //! - TBranch *b_vxp_trk_weight; //! - TBranch *b_vxp_trk_index; //! - TBranch *b_mb_n; //! - TBranch *b_mb_E; //! - TBranch *b_mb_eta; //! - TBranch *b_mb_phi; //! - TBranch *b_mb_time; //! - TBranch *b_mb_quality; //! - TBranch *b_mb_type; //! - TBranch *b_mb_module; //! - TBranch *b_mb_channel; //! - TBranch *b_mbtime_timeDiff; //! - TBranch *b_mbtime_timeA; //! - TBranch *b_mbtime_timeC; //! - TBranch *b_mbtime_countA; //! - TBranch *b_mbtime_countC; //! - TBranch *b_L1_MBTS_1; //! - TBranch *b_L1_MBTS_1_1; //! - TBranch *b_L1_MBTS_1_1_EMPTY; //! - TBranch *b_L1_MBTS_1_1_UNPAIRED_ISO; //! - TBranch *b_L1_MBTS_1_EMPTY; //! - TBranch *b_L1_MBTS_1_UNPAIRED_ISO; //! - TBranch *b_L1_MBTS_2; //! - TBranch *b_L1_MBTS_2_EMPTY; //! - TBranch *b_L1_MBTS_2_UNPAIRED_ISO; //! - TBranch *b_L1_MBTS_2_UNPAIRED_NONISO; //! - TBranch *b_L1_MBTS_4_4; //! - TBranch *b_L1_MBTS_4_4_UNPAIRED_ISO; //! - TBranch *b_muonTruth_n; //! - TBranch *b_muonTruth_pt; //! - TBranch *b_muonTruth_m; //! - TBranch *b_muonTruth_eta; //! - TBranch *b_muonTruth_phi; //! - TBranch *b_muonTruth_charge; //! - TBranch *b_muonTruth_PDGID; //! - TBranch *b_muonTruth_barcode; //! - TBranch *b_muonTruth_type; //! - TBranch *b_muonTruth_origin; //! - TBranch *b_mcevt_n; //! - TBranch *b_mcevt_signal_process_id; //! - TBranch *b_mcevt_event_number; //! - TBranch *b_mcevt_event_scale; //! - TBranch *b_mcevt_alphaQCD; //! - TBranch *b_mcevt_alphaQED; //! - TBranch *b_mcevt_pdf_id1; //! - TBranch *b_mcevt_pdf_id2; //! - TBranch *b_mcevt_pdf_x1; //! - TBranch *b_mcevt_pdf_x2; //! - TBranch *b_mcevt_pdf_scale; //! - TBranch *b_mcevt_pdf1; //! - TBranch *b_mcevt_pdf2; //! - TBranch *b_mcevt_weight; //! - TBranch *b_mcevt_nparticle; //! - TBranch *b_mcevt_pileUpType; //! - TBranch *b_mc_n; //! - TBranch *b_mc_pt; //! - TBranch *b_mc_m; //! - TBranch *b_mc_eta; //! - TBranch *b_mc_phi; //! - TBranch *b_mc_status; //! - TBranch *b_mc_barcode; //! - TBranch *b_mc_parents; //! - TBranch *b_mc_children; //! - TBranch *b_mc_pdgId; //! - TBranch *b_mc_charge; //! - TBranch *b_mc_vx_x; //! - TBranch *b_mc_vx_y; //! - TBranch *b_mc_vx_z; //! - TBranch *b_mc_child_index; //! - TBranch *b_mc_parent_index; //! - TBranch *b_jet_antikt4truth_n; //! - TBranch *b_jet_antikt4truth_E; //! - TBranch *b_jet_antikt4truth_pt; //! - TBranch *b_jet_antikt4truth_m; //! - TBranch *b_jet_antikt4truth_eta; //! - TBranch *b_jet_antikt4truth_phi; //! - TBranch *b_jet_antikt4truth_EtaOrigin; //! - TBranch *b_jet_antikt4truth_PhiOrigin; //! - TBranch *b_jet_antikt4truth_MOrigin; //! - TBranch *b_jet_antikt4truth_EtaOriginEM; //! - TBranch *b_jet_antikt4truth_PhiOriginEM; //! - TBranch *b_jet_antikt4truth_MOriginEM; //! - TBranch *b_jet_antikt4truth_WIDTH; //! - TBranch *b_jet_antikt4truth_n90; //! - TBranch *b_jet_antikt4truth_Timing; //! - TBranch *b_jet_antikt4truth_LArQuality; //! - TBranch *b_jet_antikt4truth_nTrk; //! - TBranch *b_jet_antikt4truth_sumPtTrk; //! - TBranch *b_jet_antikt4truth_OriginIndex; //! - TBranch *b_jet_antikt4truth_HECQuality; //! - TBranch *b_jet_antikt4truth_NegativeE; //! - TBranch *b_jet_antikt4truth_YFlip12; //! - TBranch *b_jet_antikt4truth_YFlip23; //! - TBranch *b_jet_antikt4truth_BCH_CORR_CELL; //! - TBranch *b_jet_antikt4truth_BCH_CORR_DOTX; //! - TBranch *b_jet_antikt4truth_BCH_CORR_JET; //! - TBranch *b_jet_antikt4truth_BCH_CORR_JET_FORCELL; //! - TBranch *b_jet_antikt4truth_ENG_BAD_CELLS; //! - TBranch *b_jet_antikt4truth_N_BAD_CELLS; //! - TBranch *b_jet_antikt4truth_N_BAD_CELLS_CORR; //! - TBranch *b_jet_antikt4truth_BAD_CELLS_CORR_E; //! - TBranch *b_jet_antikt4truth_NumTowers; //! - TBranch *b_jet_antikt4truth_SamplingMax; //! - TBranch *b_jet_antikt4truth_fracSamplingMax; //! - TBranch *b_jet_antikt4truth_hecf; //! - TBranch *b_jet_antikt4truth_tgap3f; //! - TBranch *b_jet_antikt4truth_isUgly; //! - TBranch *b_jet_antikt4truth_isBadLoose; //! - TBranch *b_jet_antikt4truth_isBadMedium; //! - TBranch *b_jet_antikt4truth_isBadTight; //! - TBranch *b_jet_antikt4truth_emfrac; //! - TBranch *b_jet_antikt4truth_Offset; //! - TBranch *b_jet_antikt4truth_EMJES; //! - TBranch *b_jet_antikt4truth_EMJES_EtaCorr; //! - TBranch *b_jet_antikt4truth_EMJESnooffset; //! - TBranch *b_jet_antikt4truth_GCWJES; //! - TBranch *b_jet_antikt4truth_GCWJES_EtaCorr; //! - TBranch *b_jet_antikt4truth_CB; //! - TBranch *b_jet_antikt4truth_emscale_E; //! - TBranch *b_jet_antikt4truth_emscale_pt; //! - TBranch *b_jet_antikt4truth_emscale_m; //! - TBranch *b_jet_antikt4truth_emscale_eta; //! - TBranch *b_jet_antikt4truth_emscale_phi; //! - TBranch *b_jet_antikt4truth_el_dr; //! - TBranch *b_jet_antikt4truth_el_matched; //! - TBranch *b_jet_antikt4truth_mu_dr; //! - TBranch *b_jet_antikt4truth_mu_matched; //! - TBranch *b_jet_antikt4truth_L1_dr; //! - TBranch *b_jet_antikt4truth_L1_matched; //! - TBranch *b_jet_antikt4truth_L2_dr; //! - TBranch *b_jet_antikt4truth_L2_matched; //! - TBranch *b_jet_antikt4truth_EF_dr; //! - TBranch *b_jet_antikt4truth_EF_matched; //! - TBranch *b_jet_antikt6truth_n; //! - TBranch *b_jet_antikt6truth_E; //! - TBranch *b_jet_antikt6truth_pt; //! - TBranch *b_jet_antikt6truth_m; //! - TBranch *b_jet_antikt6truth_eta; //! - TBranch *b_jet_antikt6truth_phi; //! - TBranch *b_jet_antikt6truth_EtaOrigin; //! - TBranch *b_jet_antikt6truth_PhiOrigin; //! - TBranch *b_jet_antikt6truth_MOrigin; //! - TBranch *b_jet_antikt6truth_EtaOriginEM; //! - TBranch *b_jet_antikt6truth_PhiOriginEM; //! - TBranch *b_jet_antikt6truth_MOriginEM; //! - TBranch *b_jet_antikt6truth_WIDTH; //! - TBranch *b_jet_antikt6truth_n90; //! - TBranch *b_jet_antikt6truth_Timing; //! - TBranch *b_jet_antikt6truth_LArQuality; //! - TBranch *b_jet_antikt6truth_nTrk; //! - TBranch *b_jet_antikt6truth_sumPtTrk; //! - TBranch *b_jet_antikt6truth_OriginIndex; //! - TBranch *b_jet_antikt6truth_HECQuality; //! - TBranch *b_jet_antikt6truth_NegativeE; //! - TBranch *b_jet_antikt6truth_YFlip12; //! - TBranch *b_jet_antikt6truth_YFlip23; //! - TBranch *b_jet_antikt6truth_BCH_CORR_CELL; //! - TBranch *b_jet_antikt6truth_BCH_CORR_DOTX; //! - TBranch *b_jet_antikt6truth_BCH_CORR_JET; //! - TBranch *b_jet_antikt6truth_BCH_CORR_JET_FORCELL; //! - TBranch *b_jet_antikt6truth_ENG_BAD_CELLS; //! - TBranch *b_jet_antikt6truth_N_BAD_CELLS; //! - TBranch *b_jet_antikt6truth_N_BAD_CELLS_CORR; //! - TBranch *b_jet_antikt6truth_BAD_CELLS_CORR_E; //! - TBranch *b_jet_antikt6truth_NumTowers; //! - TBranch *b_jet_antikt6truth_SamplingMax; //! - TBranch *b_jet_antikt6truth_fracSamplingMax; //! - TBranch *b_jet_antikt6truth_hecf; //! - TBranch *b_jet_antikt6truth_tgap3f; //! - TBranch *b_jet_antikt6truth_isUgly; //! - TBranch *b_jet_antikt6truth_isBadLoose; //! - TBranch *b_jet_antikt6truth_isBadMedium; //! - TBranch *b_jet_antikt6truth_isBadTight; //! - TBranch *b_jet_antikt6truth_emfrac; //! - TBranch *b_jet_antikt6truth_Offset; //! - TBranch *b_jet_antikt6truth_EMJES; //! - TBranch *b_jet_antikt6truth_EMJES_EtaCorr; //! - TBranch *b_jet_antikt6truth_EMJESnooffset; //! - TBranch *b_jet_antikt6truth_GCWJES; //! - TBranch *b_jet_antikt6truth_GCWJES_EtaCorr; //! - TBranch *b_jet_antikt6truth_CB; //! - TBranch *b_jet_antikt6truth_emscale_E; //! - TBranch *b_jet_antikt6truth_emscale_pt; //! - TBranch *b_jet_antikt6truth_emscale_m; //! - TBranch *b_jet_antikt6truth_emscale_eta; //! - TBranch *b_jet_antikt6truth_emscale_phi; //! - TBranch *b_jet_antikt6truth_el_dr; //! - TBranch *b_jet_antikt6truth_el_matched; //! - TBranch *b_jet_antikt6truth_mu_dr; //! - TBranch *b_jet_antikt6truth_mu_matched; //! - TBranch *b_jet_antikt6truth_L1_dr; //! - TBranch *b_jet_antikt6truth_L1_matched; //! - TBranch *b_jet_antikt6truth_L2_dr; //! - TBranch *b_jet_antikt6truth_L2_matched; //! - TBranch *b_jet_antikt6truth_EF_dr; //! - TBranch *b_jet_antikt6truth_EF_matched; //! - TBranch *b_jet_antikt4truthALL_n; //! - TBranch *b_jet_antikt4truthALL_E; //! - TBranch *b_jet_antikt4truthALL_pt; //! - TBranch *b_jet_antikt4truthALL_m; //! - TBranch *b_jet_antikt4truthALL_eta; //! - TBranch *b_jet_antikt4truthALL_phi; //! - TBranch *b_jet_antikt4truthALL_EtaOrigin; //! - TBranch *b_jet_antikt4truthALL_PhiOrigin; //! - TBranch *b_jet_antikt4truthALL_MOrigin; //! - TBranch *b_jet_antikt4truthALL_EtaOriginEM; //! - TBranch *b_jet_antikt4truthALL_PhiOriginEM; //! - TBranch *b_jet_antikt4truthALL_MOriginEM; //! - TBranch *b_jet_antikt4truthALL_WIDTH; //! - TBranch *b_jet_antikt4truthALL_n90; //! - TBranch *b_jet_antikt4truthALL_Timing; //! - TBranch *b_jet_antikt4truthALL_LArQuality; //! - TBranch *b_jet_antikt4truthALL_nTrk; //! - TBranch *b_jet_antikt4truthALL_sumPtTrk; //! - TBranch *b_jet_antikt4truthALL_OriginIndex; //! - TBranch *b_jet_antikt4truthALL_HECQuality; //! - TBranch *b_jet_antikt4truthALL_NegativeE; //! - TBranch *b_jet_antikt4truthALL_YFlip12; //! - TBranch *b_jet_antikt4truthALL_YFlip23; //! - TBranch *b_jet_antikt4truthALL_BCH_CORR_CELL; //! - TBranch *b_jet_antikt4truthALL_BCH_CORR_DOTX; //! - TBranch *b_jet_antikt4truthALL_BCH_CORR_JET; //! - TBranch *b_jet_antikt4truthALL_BCH_CORR_JET_FORCELL; //! - TBranch *b_jet_antikt4truthALL_ENG_BAD_CELLS; //! - TBranch *b_jet_antikt4truthALL_N_BAD_CELLS; //! - TBranch *b_jet_antikt4truthALL_N_BAD_CELLS_CORR; //! - TBranch *b_jet_antikt4truthALL_BAD_CELLS_CORR_E; //! - TBranch *b_jet_antikt4truthALL_NumTowers; //! - TBranch *b_jet_antikt4truthALL_SamplingMax; //! - TBranch *b_jet_antikt4truthALL_fracSamplingMax; //! - TBranch *b_jet_antikt4truthALL_hecf; //! - TBranch *b_jet_antikt4truthALL_tgap3f; //! - TBranch *b_jet_antikt4truthALL_isUgly; //! - TBranch *b_jet_antikt4truthALL_isBadLoose; //! - TBranch *b_jet_antikt4truthALL_isBadMedium; //! - TBranch *b_jet_antikt4truthALL_isBadTight; //! - TBranch *b_jet_antikt4truthALL_emfrac; //! - TBranch *b_jet_antikt4truthALL_Offset; //! - TBranch *b_jet_antikt4truthALL_EMJES; //! - TBranch *b_jet_antikt4truthALL_EMJES_EtaCorr; //! - TBranch *b_jet_antikt4truthALL_EMJESnooffset; //! - TBranch *b_jet_antikt4truthALL_GCWJES; //! - TBranch *b_jet_antikt4truthALL_GCWJES_EtaCorr; //! - TBranch *b_jet_antikt4truthALL_CB; //! - TBranch *b_jet_antikt4truthALL_emscale_E; //! - TBranch *b_jet_antikt4truthALL_emscale_pt; //! - TBranch *b_jet_antikt4truthALL_emscale_m; //! - TBranch *b_jet_antikt4truthALL_emscale_eta; //! - TBranch *b_jet_antikt4truthALL_emscale_phi; //! - TBranch *b_jet_antikt4truthALL_el_dr; //! - TBranch *b_jet_antikt4truthALL_el_matched; //! - TBranch *b_jet_antikt4truthALL_mu_dr; //! - TBranch *b_jet_antikt4truthALL_mu_matched; //! - TBranch *b_jet_antikt4truthALL_L1_dr; //! - TBranch *b_jet_antikt4truthALL_L1_matched; //! - TBranch *b_jet_antikt4truthALL_L2_dr; //! - TBranch *b_jet_antikt4truthALL_L2_matched; //! - TBranch *b_jet_antikt4truthALL_EF_dr; //! - TBranch *b_jet_antikt4truthALL_EF_matched; //! - TBranch *b_jet_antikt6truthALL_n; //! - TBranch *b_jet_antikt6truthALL_E; //! - TBranch *b_jet_antikt6truthALL_pt; //! - TBranch *b_jet_antikt6truthALL_m; //! - TBranch *b_jet_antikt6truthALL_eta; //! - TBranch *b_jet_antikt6truthALL_phi; //! - TBranch *b_jet_antikt6truthALL_EtaOrigin; //! - TBranch *b_jet_antikt6truthALL_PhiOrigin; //! - TBranch *b_jet_antikt6truthALL_MOrigin; //! - TBranch *b_jet_antikt6truthALL_EtaOriginEM; //! - TBranch *b_jet_antikt6truthALL_PhiOriginEM; //! - TBranch *b_jet_antikt6truthALL_MOriginEM; //! - TBranch *b_jet_antikt6truthALL_WIDTH; //! - TBranch *b_jet_antikt6truthALL_n90; //! - TBranch *b_jet_antikt6truthALL_Timing; //! - TBranch *b_jet_antikt6truthALL_LArQuality; //! - TBranch *b_jet_antikt6truthALL_nTrk; //! - TBranch *b_jet_antikt6truthALL_sumPtTrk; //! - TBranch *b_jet_antikt6truthALL_OriginIndex; //! - TBranch *b_jet_antikt6truthALL_HECQuality; //! - TBranch *b_jet_antikt6truthALL_NegativeE; //! - TBranch *b_jet_antikt6truthALL_YFlip12; //! - TBranch *b_jet_antikt6truthALL_YFlip23; //! - TBranch *b_jet_antikt6truthALL_BCH_CORR_CELL; //! - TBranch *b_jet_antikt6truthALL_BCH_CORR_DOTX; //! - TBranch *b_jet_antikt6truthALL_BCH_CORR_JET; //! - TBranch *b_jet_antikt6truthALL_BCH_CORR_JET_FORCELL; //! - TBranch *b_jet_antikt6truthALL_ENG_BAD_CELLS; //! - TBranch *b_jet_antikt6truthALL_N_BAD_CELLS; //! - TBranch *b_jet_antikt6truthALL_N_BAD_CELLS_CORR; //! - TBranch *b_jet_antikt6truthALL_BAD_CELLS_CORR_E; //! - TBranch *b_jet_antikt6truthALL_NumTowers; //! - TBranch *b_jet_antikt6truthALL_SamplingMax; //! - TBranch *b_jet_antikt6truthALL_fracSamplingMax; //! - TBranch *b_jet_antikt6truthALL_hecf; //! - TBranch *b_jet_antikt6truthALL_tgap3f; //! - TBranch *b_jet_antikt6truthALL_isUgly; //! - TBranch *b_jet_antikt6truthALL_isBadLoose; //! - TBranch *b_jet_antikt6truthALL_isBadMedium; //! - TBranch *b_jet_antikt6truthALL_isBadTight; //! - TBranch *b_jet_antikt6truthALL_emfrac; //! - TBranch *b_jet_antikt6truthALL_Offset; //! - TBranch *b_jet_antikt6truthALL_EMJES; //! - TBranch *b_jet_antikt6truthALL_EMJES_EtaCorr; //! - TBranch *b_jet_antikt6truthALL_EMJESnooffset; //! - TBranch *b_jet_antikt6truthALL_GCWJES; //! - TBranch *b_jet_antikt6truthALL_GCWJES_EtaCorr; //! - TBranch *b_jet_antikt6truthALL_CB; //! - TBranch *b_jet_antikt6truthALL_emscale_E; //! - TBranch *b_jet_antikt6truthALL_emscale_pt; //! - TBranch *b_jet_antikt6truthALL_emscale_m; //! - TBranch *b_jet_antikt6truthALL_emscale_eta; //! - TBranch *b_jet_antikt6truthALL_emscale_phi; //! - TBranch *b_jet_antikt6truthALL_el_dr; //! - TBranch *b_jet_antikt6truthALL_el_matched; //! - TBranch *b_jet_antikt6truthALL_mu_dr; //! - TBranch *b_jet_antikt6truthALL_mu_matched; //! - TBranch *b_jet_antikt6truthALL_L1_dr; //! - TBranch *b_jet_antikt6truthALL_L1_matched; //! - TBranch *b_jet_antikt6truthALL_L2_dr; //! - TBranch *b_jet_antikt6truthALL_L2_matched; //! - TBranch *b_jet_antikt6truthALL_EF_dr; //! - TBranch *b_jet_antikt6truthALL_EF_matched; //! - TBranch *b_jet_antikt4truthWZ_n; //! - TBranch *b_jet_antikt4truthWZ_E; //! - TBranch *b_jet_antikt4truthWZ_pt; //! - TBranch *b_jet_antikt4truthWZ_m; //! - TBranch *b_jet_antikt4truthWZ_eta; //! - TBranch *b_jet_antikt4truthWZ_phi; //! - TBranch *b_jet_antikt4truthWZ_EtaOrigin; //! - TBranch *b_jet_antikt4truthWZ_PhiOrigin; //! - TBranch *b_jet_antikt4truthWZ_MOrigin; //! - TBranch *b_jet_antikt4truthWZ_EtaOriginEM; //! - TBranch *b_jet_antikt4truthWZ_PhiOriginEM; //! - TBranch *b_jet_antikt4truthWZ_MOriginEM; //! - TBranch *b_jet_antikt4truthWZ_WIDTH; //! - TBranch *b_jet_antikt4truthWZ_n90; //! - TBranch *b_jet_antikt4truthWZ_Timing; //! - TBranch *b_jet_antikt4truthWZ_LArQuality; //! - TBranch *b_jet_antikt4truthWZ_nTrk; //! - TBranch *b_jet_antikt4truthWZ_sumPtTrk; //! - TBranch *b_jet_antikt4truthWZ_OriginIndex; //! - TBranch *b_jet_antikt4truthWZ_HECQuality; //! - TBranch *b_jet_antikt4truthWZ_NegativeE; //! - TBranch *b_jet_antikt4truthWZ_YFlip12; //! - TBranch *b_jet_antikt4truthWZ_YFlip23; //! - TBranch *b_jet_antikt4truthWZ_BCH_CORR_CELL; //! - TBranch *b_jet_antikt4truthWZ_BCH_CORR_DOTX; //! - TBranch *b_jet_antikt4truthWZ_BCH_CORR_JET; //! - TBranch *b_jet_antikt4truthWZ_BCH_CORR_JET_FORCELL; //! - TBranch *b_jet_antikt4truthWZ_ENG_BAD_CELLS; //! - TBranch *b_jet_antikt4truthWZ_N_BAD_CELLS; //! - TBranch *b_jet_antikt4truthWZ_N_BAD_CELLS_CORR; //! - TBranch *b_jet_antikt4truthWZ_BAD_CELLS_CORR_E; //! - TBranch *b_jet_antikt4truthWZ_NumTowers; //! - TBranch *b_jet_antikt4truthWZ_SamplingMax; //! - TBranch *b_jet_antikt4truthWZ_fracSamplingMax; //! - TBranch *b_jet_antikt4truthWZ_hecf; //! - TBranch *b_jet_antikt4truthWZ_tgap3f; //! - TBranch *b_jet_antikt4truthWZ_isUgly; //! - TBranch *b_jet_antikt4truthWZ_isBadLoose; //! - TBranch *b_jet_antikt4truthWZ_isBadMedium; //! - TBranch *b_jet_antikt4truthWZ_isBadTight; //! - TBranch *b_jet_antikt4truthWZ_emfrac; //! - TBranch *b_jet_antikt4truthWZ_Offset; //! - TBranch *b_jet_antikt4truthWZ_EMJES; //! - TBranch *b_jet_antikt4truthWZ_EMJES_EtaCorr; //! - TBranch *b_jet_antikt4truthWZ_EMJESnooffset; //! - TBranch *b_jet_antikt4truthWZ_GCWJES; //! - TBranch *b_jet_antikt4truthWZ_GCWJES_EtaCorr; //! - TBranch *b_jet_antikt4truthWZ_CB; //! - TBranch *b_jet_antikt4truthWZ_emscale_E; //! - TBranch *b_jet_antikt4truthWZ_emscale_pt; //! - TBranch *b_jet_antikt4truthWZ_emscale_m; //! - TBranch *b_jet_antikt4truthWZ_emscale_eta; //! - TBranch *b_jet_antikt4truthWZ_emscale_phi; //! - TBranch *b_jet_antikt4truthWZ_el_dr; //! - TBranch *b_jet_antikt4truthWZ_el_matched; //! - TBranch *b_jet_antikt4truthWZ_mu_dr; //! - TBranch *b_jet_antikt4truthWZ_mu_matched; //! - TBranch *b_jet_antikt4truthWZ_L1_dr; //! - TBranch *b_jet_antikt4truthWZ_L1_matched; //! - TBranch *b_jet_antikt4truthWZ_L2_dr; //! - TBranch *b_jet_antikt4truthWZ_L2_matched; //! - TBranch *b_jet_antikt4truthWZ_EF_dr; //! - TBranch *b_jet_antikt4truthWZ_EF_matched; //! - TBranch *b_jet_antikt6truthWZ_n; //! - TBranch *b_jet_antikt6truthWZ_E; //! - TBranch *b_jet_antikt6truthWZ_pt; //! - TBranch *b_jet_antikt6truthWZ_m; //! - TBranch *b_jet_antikt6truthWZ_eta; //! - TBranch *b_jet_antikt6truthWZ_phi; //! - TBranch *b_jet_antikt6truthWZ_EtaOrigin; //! - TBranch *b_jet_antikt6truthWZ_PhiOrigin; //! - TBranch *b_jet_antikt6truthWZ_MOrigin; //! - TBranch *b_jet_antikt6truthWZ_EtaOriginEM; //! - TBranch *b_jet_antikt6truthWZ_PhiOriginEM; //! - TBranch *b_jet_antikt6truthWZ_MOriginEM; //! - TBranch *b_jet_antikt6truthWZ_WIDTH; //! - TBranch *b_jet_antikt6truthWZ_n90; //! - TBranch *b_jet_antikt6truthWZ_Timing; //! - TBranch *b_jet_antikt6truthWZ_LArQuality; //! - TBranch *b_jet_antikt6truthWZ_nTrk; //! - TBranch *b_jet_antikt6truthWZ_sumPtTrk; //! - TBranch *b_jet_antikt6truthWZ_OriginIndex; //! - TBranch *b_jet_antikt6truthWZ_HECQuality; //! - TBranch *b_jet_antikt6truthWZ_NegativeE; //! - TBranch *b_jet_antikt6truthWZ_YFlip12; //! - TBranch *b_jet_antikt6truthWZ_YFlip23; //! - TBranch *b_jet_antikt6truthWZ_BCH_CORR_CELL; //! - TBranch *b_jet_antikt6truthWZ_BCH_CORR_DOTX; //! - TBranch *b_jet_antikt6truthWZ_BCH_CORR_JET; //! - TBranch *b_jet_antikt6truthWZ_BCH_CORR_JET_FORCELL; //! - TBranch *b_jet_antikt6truthWZ_ENG_BAD_CELLS; //! - TBranch *b_jet_antikt6truthWZ_N_BAD_CELLS; //! - TBranch *b_jet_antikt6truthWZ_N_BAD_CELLS_CORR; //! - TBranch *b_jet_antikt6truthWZ_BAD_CELLS_CORR_E; //! - TBranch *b_jet_antikt6truthWZ_NumTowers; //! - TBranch *b_jet_antikt6truthWZ_SamplingMax; //! - TBranch *b_jet_antikt6truthWZ_fracSamplingMax; //! - TBranch *b_jet_antikt6truthWZ_hecf; //! - TBranch *b_jet_antikt6truthWZ_tgap3f; //! - TBranch *b_jet_antikt6truthWZ_isUgly; //! - TBranch *b_jet_antikt6truthWZ_isBadLoose; //! - TBranch *b_jet_antikt6truthWZ_isBadMedium; //! - TBranch *b_jet_antikt6truthWZ_isBadTight; //! - TBranch *b_jet_antikt6truthWZ_emfrac; //! - TBranch *b_jet_antikt6truthWZ_Offset; //! - TBranch *b_jet_antikt6truthWZ_EMJES; //! - TBranch *b_jet_antikt6truthWZ_EMJES_EtaCorr; //! - TBranch *b_jet_antikt6truthWZ_EMJESnooffset; //! - TBranch *b_jet_antikt6truthWZ_GCWJES; //! - TBranch *b_jet_antikt6truthWZ_GCWJES_EtaCorr; //! - TBranch *b_jet_antikt6truthWZ_CB; //! - TBranch *b_jet_antikt6truthWZ_emscale_E; //! - TBranch *b_jet_antikt6truthWZ_emscale_pt; //! - TBranch *b_jet_antikt6truthWZ_emscale_m; //! - TBranch *b_jet_antikt6truthWZ_emscale_eta; //! - TBranch *b_jet_antikt6truthWZ_emscale_phi; //! - TBranch *b_jet_antikt6truthWZ_el_dr; //! - TBranch *b_jet_antikt6truthWZ_el_matched; //! - TBranch *b_jet_antikt6truthWZ_mu_dr; //! - TBranch *b_jet_antikt6truthWZ_mu_matched; //! - TBranch *b_jet_antikt6truthWZ_L1_dr; //! - TBranch *b_jet_antikt6truthWZ_L1_matched; //! - TBranch *b_jet_antikt6truthWZ_L2_dr; //! - TBranch *b_jet_antikt6truthWZ_L2_matched; //! - TBranch *b_jet_antikt6truthWZ_EF_dr; //! - TBranch *b_jet_antikt6truthWZ_EF_matched; //! - TBranch *b_trig_L1_TAV; //! - TBranch *b_trig_L2_passedPhysics; //! - TBranch *b_trig_EF_passedPhysics; //! - TBranch *b_trig_L1_TBP; //! - TBranch *b_trig_L1_TAP; //! - TBranch *b_trig_L2_passedRaw; //! - TBranch *b_trig_EF_passedRaw; //! - TBranch *b_trig_L2_truncated; //! - TBranch *b_trig_EF_truncated; //! - TBranch *b_trig_L2_resurrected; //! - TBranch *b_trig_EF_resurrected; //! - TBranch *b_trig_L2_passedThrough; //! - TBranch *b_trig_EF_passedThrough; //! - TBranch *b_trig_DB_SMK; //! - TBranch *b_trig_DB_L1PSK; //! - TBranch *b_trig_DB_HLTPSK; //! - TBranch *b_trig_bgCode; //! - TBranch *b_trig_L1_emtau_n; //! - TBranch *b_trig_L1_emtau_eta; //! - TBranch *b_trig_L1_emtau_phi; //! - TBranch *b_trig_L1_emtau_thrNames; //! - TBranch *b_trig_L1_emtau_thrValues; //! - TBranch *b_trig_L2_emcl_n; //! - TBranch *b_trig_L2_emcl_quality; //! - TBranch *b_trig_L2_emcl_E; //! - TBranch *b_trig_L2_emcl_Et; //! - TBranch *b_trig_L2_emcl_eta; //! - TBranch *b_trig_L2_emcl_phi; //! - TBranch *b_trig_L2_trk_idscan_eGamma_n; //! - TBranch *b_trig_L2_trk_idscan_eGamma_algorithmId; //! - TBranch *b_trig_L2_trk_idscan_eGamma_trackStatus; //! - TBranch *b_trig_L2_trk_idscan_eGamma_chi2Ndof; //! - TBranch *b_trig_L2_trk_idscan_eGamma_param_a0; //! - TBranch *b_trig_L2_trk_idscan_eGamma_param_z0; //! - TBranch *b_trig_L2_trk_idscan_eGamma_param_phi0; //! - TBranch *b_trig_L2_trk_idscan_eGamma_param_eta; //! - TBranch *b_trig_L2_trk_idscan_eGamma_param_pt; //! - TBranch *b_trig_L2_trk_sitrack_eGamma_n; //! - TBranch *b_trig_L2_trk_sitrack_eGamma_algorithmId; //! - TBranch *b_trig_L2_trk_sitrack_eGamma_trackStatus; //! - TBranch *b_trig_L2_trk_sitrack_eGamma_chi2Ndof; //! - TBranch *b_trig_L2_trk_sitrack_eGamma_param_a0; //! - TBranch *b_trig_L2_trk_sitrack_eGamma_param_z0; //! - TBranch *b_trig_L2_trk_sitrack_eGamma_param_phi0; //! - TBranch *b_trig_L2_trk_sitrack_eGamma_param_eta; //! - TBranch *b_trig_L2_trk_sitrack_eGamma_param_pt; //! - TBranch *b_trig_L2_el_n; //! - TBranch *b_trig_L2_el_E; //! - TBranch *b_trig_L2_el_Et; //! - TBranch *b_trig_L2_el_pt; //! - TBranch *b_trig_L2_el_eta; //! - TBranch *b_trig_L2_el_phi; //! - TBranch *b_trig_L2_el_RoIWord; //! - TBranch *b_trig_L2_el_zvertex; //! - TBranch *b_trig_L2_el_charge; //! - TBranch *b_trig_L2_ph_n; //! - TBranch *b_trig_L2_ph_E; //! - TBranch *b_trig_L2_ph_Et; //! - TBranch *b_trig_L2_ph_pt; //! - TBranch *b_trig_L2_ph_eta; //! - TBranch *b_trig_L2_ph_phi; //! - TBranch *b_trig_L2_ph_RoIWord; //! - TBranch *b_trig_EF_emcl_n; //! - TBranch *b_trig_EF_emcl_pt; //! - TBranch *b_trig_EF_emcl_eta; //! - TBranch *b_trig_EF_emcl_phi; //! - TBranch *b_trig_EF_emcl_E_em; //! - TBranch *b_trig_EF_emcl_E_had; //! - TBranch *b_trig_EF_emcl_slw_n; //! - TBranch *b_trig_EF_emcl_slw_pt; //! - TBranch *b_trig_EF_emcl_slw_eta; //! - TBranch *b_trig_EF_emcl_slw_phi; //! - TBranch *b_trig_EF_emcl_slw_E_em; //! - TBranch *b_trig_EF_emcl_slw_E_had; //! - TBranch *b_trig_EF_el_n; //! - TBranch *b_trig_EF_el_E; //! - TBranch *b_trig_EF_el_Et; //! - TBranch *b_trig_EF_el_pt; //! - TBranch *b_trig_EF_el_m; //! - TBranch *b_trig_EF_el_eta; //! - TBranch *b_trig_EF_el_phi; //! - TBranch *b_trig_EF_el_px; //! - TBranch *b_trig_EF_el_py; //! - TBranch *b_trig_EF_el_pz; //! - TBranch *b_trig_EF_el_charge; //! - TBranch *b_trig_EF_el_author; //! - TBranch *b_trig_EF_el_isEM; //! - TBranch *b_trig_EF_el_loose; //! - TBranch *b_trig_EF_el_medium; //! - TBranch *b_trig_EF_el_mediumIso; //! - TBranch *b_trig_EF_el_tight; //! - TBranch *b_trig_EF_el_tightIso; //! - TBranch *b_trig_EF_el_vertweight; //! - TBranch *b_trig_EF_el_hastrack; //! - TBranch *b_trig_EF_ph_n; //! - TBranch *b_trig_EF_ph_E; //! - TBranch *b_trig_EF_ph_Et; //! - TBranch *b_trig_EF_ph_pt; //! - TBranch *b_trig_EF_ph_m; //! - TBranch *b_trig_EF_ph_eta; //! - TBranch *b_trig_EF_ph_phi; //! - TBranch *b_trig_EF_ph_px; //! - TBranch *b_trig_EF_ph_py; //! - TBranch *b_trig_EF_ph_pz; //! - TBranch *b_trig_EF_ph_author; //! - TBranch *b_trig_EF_ph_isRecovered; //! - TBranch *b_trig_EF_ph_isEM; //! - TBranch *b_trig_EF_ph_convFlag; //! - TBranch *b_trig_EF_ph_isConv; //! - TBranch *b_trig_EF_ph_nConv; //! - TBranch *b_trig_EF_ph_nSingleTrackConv; //! - TBranch *b_trig_EF_ph_nDoubleTrackConv; //! - TBranch *b_trig_EF_ph_loose; //! - TBranch *b_trig_EF_ph_tight; //! - TBranch *b_trig_EF_ph_tightIso; //! - TBranch *b_trig_Nav_n; //! - TBranch *b_trig_Nav_chain_ChainId; //! - TBranch *b_trig_Nav_chain_RoIType; //! - TBranch *b_trig_Nav_chain_RoIIndex; //! - TBranch *b_trig_RoI_L2_e_n; //! - TBranch *b_trig_RoI_EF_e_n; //! - TBranch *b_trig_L1_mu_n; //! - TBranch *b_trig_L1_mu_pt; //! - TBranch *b_trig_L1_mu_eta; //! - TBranch *b_trig_L1_mu_phi; //! - TBranch *b_trig_L1_mu_thrName; //! - TBranch *b_trig_L2_muonfeature_n; //! - TBranch *b_trig_L2_muonfeature_pt; //! - TBranch *b_trig_L2_muonfeature_eta; //! - TBranch *b_trig_L2_muonfeature_phi; //! - TBranch *b_trig_L2_muonfeaturedetails_n; //! - TBranch *b_trig_L2_combmuonfeature_n; //! - TBranch *b_trig_L2_combmuonfeature_pt; //! - TBranch *b_trig_L2_combmuonfeature_eta; //! - TBranch *b_trig_L2_combmuonfeature_phi; //! - TBranch *b_trig_L2_combmuonfeature_idscantrk_index; //! - TBranch *b_trig_L2_combmuonfeature_sitracktrk_index; //! - TBranch *b_trig_L2_isomuonfeature_n; //! - TBranch *b_trig_L2_isomuonfeature_pt; //! - TBranch *b_trig_L2_isomuonfeature_eta; //! - TBranch *b_trig_L2_isomuonfeature_phi; //! - TBranch *b_trig_L2_isomuonfeature_EtInnerConeEC; //! - TBranch *b_trig_L2_isomuonfeature_EtOuterConeEC; //! - TBranch *b_trig_L2_isomuonfeature_EtInnerConeHC; //! - TBranch *b_trig_L2_isomuonfeature_EtOuterConeHC; //! - TBranch *b_trig_L2_isomuonfeature_NTracksCone; //! - TBranch *b_trig_L2_isomuonfeature_SumPtTracksCone; //! - TBranch *b_trig_L2_isomuonfeature_PtMuTracksCone; //! - TBranch *b_trig_L2_tilemufeature_n; //! - TBranch *b_trig_L2_tilemufeature_eta; //! - TBranch *b_trig_L2_tilemufeature_phi; //! - TBranch *b_trig_L2_tiletrackmufeature_n; //! - TBranch *b_trig_L2_tiletrackmufeature_pt; //! - TBranch *b_trig_L2_tiletrackmufeature_eta; //! - TBranch *b_trig_L2_tiletrackmufeature_phi; //! - TBranch *b_trig_L2_tiletrackmufeature_tilemu_index; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_algorithmId; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_trackStatus; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_chi2Ndof; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_a0; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_z0; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_phi0; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_eta; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_pt; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_hasidtrkfitpar; //! - TBranch *b_trig_L2_tiletrackmufeature_idtrk_hasidtrk; //! - TBranch *b_trig_EF_trigmuonef_n; //! - TBranch *b_trig_EF_trigmuonef_track_n; //! - TBranch *b_trig_EF_trigmuonef_track_MuonType; //! - TBranch *b_trig_EF_trigmuonef_track_MS_pt; //! - TBranch *b_trig_EF_trigmuonef_track_MS_eta; //! - TBranch *b_trig_EF_trigmuonef_track_MS_phi; //! - TBranch *b_trig_EF_trigmuonef_track_MS_hasMS; //! - TBranch *b_trig_EF_trigmuonef_track_SA_pt; //! - TBranch *b_trig_EF_trigmuonef_track_SA_eta; //! - TBranch *b_trig_EF_trigmuonef_track_SA_phi; //! - TBranch *b_trig_EF_trigmuonef_track_SA_hasSA; //! - TBranch *b_trig_EF_trigmuonef_track_CB_pt; //! - TBranch *b_trig_EF_trigmuonef_track_CB_eta; //! - TBranch *b_trig_EF_trigmuonef_track_CB_phi; //! - TBranch *b_trig_EF_trigmuonef_track_CB_hasCB; //! - TBranch *b_trig_EF_trigmugirl_n; //! - TBranch *b_trig_EF_trigmugirl_track_n; //! - TBranch *b_trig_EF_trigmugirl_track_MuonType; //! - TBranch *b_trig_EF_trigmugirl_track_MS_pt; //! - TBranch *b_trig_EF_trigmugirl_track_MS_eta; //! - TBranch *b_trig_EF_trigmugirl_track_MS_phi; //! - TBranch *b_trig_EF_trigmugirl_track_MS_hasMS; //! - TBranch *b_trig_EF_trigmugirl_track_SA_pt; //! - TBranch *b_trig_EF_trigmugirl_track_SA_eta; //! - TBranch *b_trig_EF_trigmugirl_track_SA_phi; //! - TBranch *b_trig_EF_trigmugirl_track_SA_hasSA; //! - TBranch *b_trig_EF_trigmugirl_track_CB_pt; //! - TBranch *b_trig_EF_trigmugirl_track_CB_eta; //! - TBranch *b_trig_EF_trigmugirl_track_CB_phi; //! - TBranch *b_trig_EF_trigmugirl_track_CB_hasCB; //! - TBranch *b_trig_L2_sitrack_muon_n; //! - TBranch *b_trig_L2_sitrack_muon_algorithmId; //! - TBranch *b_trig_L2_sitrack_muon_trackStatus; //! - TBranch *b_trig_L2_sitrack_muon_chi2Ndof; //! - TBranch *b_trig_L2_sitrack_muon_param_a0; //! - TBranch *b_trig_L2_sitrack_muon_param_z0; //! - TBranch *b_trig_L2_sitrack_muon_param_phi0; //! - TBranch *b_trig_L2_sitrack_muon_param_eta; //! - TBranch *b_trig_L2_sitrack_muon_param_pt; //! - TBranch *b_trig_L2_idscan_muon_n; //! - TBranch *b_trig_L2_idscan_muon_algorithmId; //! - TBranch *b_trig_L2_idscan_muon_trackStatus; //! - TBranch *b_trig_L2_idscan_muon_chi2Ndof; //! - TBranch *b_trig_L2_idscan_muon_param_a0; //! - TBranch *b_trig_L2_idscan_muon_param_z0; //! - TBranch *b_trig_L2_idscan_muon_param_phi0; //! - TBranch *b_trig_L2_idscan_muon_param_eta; //! - TBranch *b_trig_L2_idscan_muon_param_pt; //! - TBranch *b_trig_L2_sitrack_isomuon_n; //! - TBranch *b_trig_L2_sitrack_isomuon_algorithmId; //! - TBranch *b_trig_L2_sitrack_isomuon_trackStatus; //! - TBranch *b_trig_L2_sitrack_isomuon_chi2Ndof; //! - TBranch *b_trig_L2_sitrack_isomuon_param_a0; //! - TBranch *b_trig_L2_sitrack_isomuon_param_z0; //! - TBranch *b_trig_L2_sitrack_isomuon_param_phi0; //! - TBranch *b_trig_L2_sitrack_isomuon_param_eta; //! - TBranch *b_trig_L2_sitrack_isomuon_param_pt; //! - TBranch *b_trig_L2_idscan_isomuon_n; //! - TBranch *b_trig_L2_idscan_isomuon_algorithmId; //! - TBranch *b_trig_L2_idscan_isomuon_trackStatus; //! - TBranch *b_trig_L2_idscan_isomuon_chi2Ndof; //! - TBranch *b_trig_L2_idscan_isomuon_param_a0; //! - TBranch *b_trig_L2_idscan_isomuon_param_z0; //! - TBranch *b_trig_L2_idscan_isomuon_param_phi0; //! - TBranch *b_trig_L2_idscan_isomuon_param_eta; //! - TBranch *b_trig_L2_idscan_isomuon_param_pt; //! - TBranch *b_trig_roidescriptor_forID_n; //! - TBranch *b_trig_roidescriptor_forID_phi; //! - TBranch *b_trig_roidescriptor_forID_eta; //! - TBranch *b_trig_roidescriptor_forID_zed0; //! - TBranch *b_trig_RoI_L2_mu_n; //! - TBranch *b_trig_RoI_L2_mu_type; //! - TBranch *b_trig_RoI_L2_mu_lastStep; //! - TBranch *b_trig_RoI_L2_mu_TrigRoiDescriptor_forID; //! - TBranch *b_trig_RoI_L2_mu_TrigRoiDescriptor_forIDStatus; //! - TBranch *b_trig_RoI_L2_mu_MuonFeature; //! - TBranch *b_trig_RoI_L2_mu_MuonFeatureStatus; //! - TBranch *b_trig_RoI_L2_mu_MuonFeatureDetails; //! - TBranch *b_trig_RoI_L2_mu_MuonFeatureDetailsStatus; //! - TBranch *b_trig_RoI_L2_mu_CombinedMuonFeature; //! - TBranch *b_trig_RoI_L2_mu_CombinedMuonFeatureStatus; //! - TBranch *b_trig_RoI_L2_mu_IsoMuonFeature; //! - TBranch *b_trig_RoI_L2_mu_IsoMuonFeatureStatus; //! - TBranch *b_trig_RoI_L2_mu_Muon_ROI; //! - TBranch *b_trig_RoI_L2_mu_Muon_ROIStatus; //! - TBranch *b_trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_Muon; //! - TBranch *b_trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_MuonStatus; //! - TBranch *b_trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_Muon; //! - TBranch *b_trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_MuonStatus; //! - TBranch *b_trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_muonIso; //! - TBranch *b_trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_muonIsoStatus; //! - TBranch *b_trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIso; //! - TBranch *b_trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIsoStatus; //! - TBranch *b_trig_RoI_L2_TileMu_n; //! - TBranch *b_trig_RoI_L2_TileMu_type; //! - TBranch *b_trig_RoI_L2_TileMu_lastStep; //! - TBranch *b_trig_RoI_L2_TileMu_TileMuFeature; //! - TBranch *b_trig_RoI_L2_TileMu_TileMuFeatureStatus; //! - TBranch *b_trig_RoI_L2_TileMu_TileTrackMuFeature; //! - TBranch *b_trig_RoI_L2_TileMu_TileTrackMuFeatureStatus; //! - TBranch *b_trig_RoI_L2_TileMu_Muon_ROI; //! - TBranch *b_trig_RoI_L2_TileMu_Muon_ROIStatus; //! - TBranch *b_trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigSiTrack_Tile; //! - TBranch *b_trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigSiTrack_TileStatus; //! - TBranch *b_trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigIDSCAN_Tile; //! - TBranch *b_trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigIDSCAN_TileStatus; //! - TBranch *b_trig_RoI_EF_mu_n; //! - TBranch *b_trig_RoI_EF_mu_type; //! - TBranch *b_trig_RoI_EF_mu_lastStep; //! - TBranch *b_trig_RoI_EF_mu_Muon_ROI; //! - TBranch *b_trig_RoI_EF_mu_Muon_ROIStatus; //! - TBranch *b_trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFID; //! - TBranch *b_trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFIDStatus; //! - TBranch *b_trig_RoI_EF_mu_TrigMuonEFInfoContainer; //! - TBranch *b_trig_RoI_EF_mu_TrigMuonEFInfoContainerStatus; //! - TBranch *b_trig_RoI_EF_mu_TrigMuonEFInfoContainer_MuGirl; //! - TBranch *b_trig_RoI_EF_mu_TrigMuonEFInfoContainer_MuGirlStatus; //! - TBranch *b_trig_RoI_EF_mu_TrigMuonEFInfoContainer_MuTagIMO_EF; //! - TBranch *b_trig_RoI_EF_mu_TrigMuonEFInfoContainer_MuTagIMO_EFStatus; //! - TBranch *b_trig_RoI_EF_TileMu_n; //! - TBranch *b_trig_RoI_EF_TileMu_type; //! - TBranch *b_trig_RoI_EF_TileMu_lastStep; //! - TBranch *b_trig_RoI_EF_TileMu_Muon_ROI; //! - TBranch *b_trig_RoI_EF_TileMu_Muon_ROIStatus; //! - TBranch *b_trig_RoI_EF_TileMu_TrigMuonEFContainer; //! - TBranch *b_trig_RoI_EF_TileMu_TrigMuonEFContainerStatus; //! - TBranch *b_trig_RoI_EF_TileMu_TrigMuonEFInfoContainer; //! - TBranch *b_trig_RoI_EF_TileMu_TrigMuonEFInfoContainerStatus; //! - TBranch *b_trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuGirl; //! - TBranch *b_trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuGirlStatus; //! - TBranch *b_trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuTagIMO_EF; //! - TBranch *b_trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuTagIMO_EFStatus; //! - TBranch *b_trig_L1_esum_thrNames; //! - TBranch *b_trig_L1_esum_ExMiss; //! - TBranch *b_trig_L1_esum_EyMiss; //! - TBranch *b_trig_L1_esum_energyT; //! - TBranch *b_trig_L1_esum_overflowX; //! - TBranch *b_trig_L1_esum_overflowY; //! - TBranch *b_trig_L1_esum_overflowT; //! - TBranch *b_trig_L1_esum_RoIWord0; //! - TBranch *b_trig_L1_esum_RoIWord1; //! - TBranch *b_trig_L1_esum_RoIWord2; //! - TBranch *b_trig_L2_met_MEx; //! - TBranch *b_trig_L2_met_MEy; //! - TBranch *b_trig_L2_met_MEz; //! - TBranch *b_trig_L2_met_sumEt; //! - TBranch *b_trig_L2_met_sumE; //! - TBranch *b_trig_L2_met_flag; //! - TBranch *b_trig_L2_met_nameOfComponent; //! - TBranch *b_trig_L2_met_MExComponent; //! - TBranch *b_trig_L2_met_MEyComponent; //! - TBranch *b_trig_L2_met_MEzComponent; //! - TBranch *b_trig_L2_met_sumEtComponent; //! - TBranch *b_trig_L2_met_sumEComponent; //! - TBranch *b_trig_L2_met_componentCalib0; //! - TBranch *b_trig_L2_met_componentCalib1; //! - TBranch *b_trig_L2_met_sumOfSigns; //! - TBranch *b_trig_L2_met_usedChannels; //! - TBranch *b_trig_L2_met_status; //! - TBranch *b_trig_EF_met_MEx; //! - TBranch *b_trig_EF_met_MEy; //! - TBranch *b_trig_EF_met_MEz; //! - TBranch *b_trig_EF_met_sumEt; //! - TBranch *b_trig_EF_met_sumE; //! - TBranch *b_trig_EF_met_flag; //! - TBranch *b_trig_EF_met_nameOfComponent; //! - TBranch *b_trig_EF_met_MExComponent; //! - TBranch *b_trig_EF_met_MEyComponent; //! - TBranch *b_trig_EF_met_MEzComponent; //! - TBranch *b_trig_EF_met_sumEtComponent; //! - TBranch *b_trig_EF_met_sumEComponent; //! - TBranch *b_trig_EF_met_componentCalib0; //! - TBranch *b_trig_EF_met_componentCalib1; //! - TBranch *b_trig_EF_met_sumOfSigns; //! - TBranch *b_trig_EF_met_usedChannels; //! - TBranch *b_trig_EF_met_status; //! - - physics(TTree *tree=0); - virtual ~physics(); - virtual Int_t Cut(Long64_t entry); - virtual Int_t GetEntry(Long64_t entry); - virtual Long64_t LoadTree(Long64_t entry); - virtual void Init(TTree *tree); - virtual void Loop(); - virtual Bool_t Notify(); - virtual void Show(Long64_t entry = -1); - - private : - - virtual void fill(); - - -}; - -#endif - -#ifdef physics_cxx -physics::physics(TTree *tree) -{ -// if parameter tree is not specified (or zero), connect the file -// used to generate this class and read the Tree. - if (tree == 0) { - TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("physics.root"); - if (!f) { - f = new TFile("physics.root"); - } - tree = (TTree*)gDirectory->Get("physics"); - - } - Init(tree); -} - -physics::~physics() -{ - if (!fChain) return; - delete fChain->GetCurrentFile(); -} - - -void physics::fill() { - cout << "this method is virtual" << endl; - -} - -#endif // #ifdef physics_cxx diff --git a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/test/MuonCombinedRecRTT_TestConfiguration.xml b/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/test/MuonCombinedRecRTT_TestConfiguration.xml deleted file mode 100644 index 7b3bc41020710b6d51e174261dc28699b79b328a..0000000000000000000000000000000000000000 --- a/Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT/test/MuonCombinedRecRTT_TestConfiguration.xml +++ /dev/null @@ -1,110 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> - -<unifiedTestConfiguration> -<atn/> -<kv/> -<rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt"> - <rttContactPerson>Biagio Di Micco (Biagio.Di.Micco@cern.ch)</rttContactPerson> - <mailto>Biagio.Di.Micco@NOSPAMcern.ch</mailto> - <refRelease>15.6.2</refRelease> - - <jobList> - <classification> - <displayClass>OfflineValidation</displayClass> - <displayProcess>Reco</displayProcess> - <displayComponent>Perf-CombMuon</displayComponent> - </classification> - - <chain> - <chainName>MuonCombinedRecRTTjobs</chainName> - - <parallel> - - <chainElement> - <athena userJobId="Zmumu" > - <doc>Muon Combined Reconstruction with Z->mumu events</doc> - <displayName>MuonCombinedRecRTT_Reco_Zmumu</displayName> - <commandLineFlags>EvtMax=-1</commandLineFlags> - <options>MuonCombinedRecRTT.py</options> - <package>Reconstruction/MuonIdentification/MuonCombinedValidation/MuonCombinedRecRTT</package> - <group>MuonCBRec</group> - <queue>long</queue> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000088.pool.root.2</datasetName> - </dataset_info> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000092.pool.root.2</datasetName> - </dataset_info> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000100.pool.root.2</datasetName> - </dataset_info> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000192.pool.root.2</datasetName> - </dataset_info> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000302.pool.root.2</datasetName> - </dataset_info> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000312.pool.root.2</datasetName> - </dataset_info> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000407.pool.root.2</datasetName> - </dataset_info> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000427.pool.root.2</datasetName> - </dataset_info> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000459.pool.root.2</datasetName> - </dataset_info> - <dataset_info> - <dc2 /> - <datasetName>/eos/atlas/atlascerngroupdisk/perf-muon/MuonCombinedRTTInputs/Zmumu/ESD.213372._000027.pool.root.2</datasetName> - </dataset_info> - - <alwaysRunPostProc /> - </athena> - </chainElement> - - </parallel> - </chain> - </jobList> - - <jobGroups> - <jobGroup name="AthenaMuonCBRec" parent="Athena"> - <keepFilePattern>*.gif</keepFilePattern> - <keepFilePattern>*.html</keepFilePattern> - - <auxFilePattern>histos_MCP_RTT.C</auxFilePattern> - <auxFilePattern>histos_MCP_RTT.h</auxFilePattern> - <auxFilePattern>physics_MCP_RTT.C</auxFilePattern> - <auxFilePattern>physics_MCP_RTT.h</auxFilePattern> - <auxFilePattern>MCP_RTT_makeHistos.C</auxFilePattern> - <auxFilePattern>MuonParamDefs.h</auxFilePattern> - <auxFilePattern>ALL_MuonCombinedRecRTT_Plots.html</auxFilePattern> - - <action position="a"> - <modulename>RttLibraryTools</modulename> - <testname>ROOTMacroRunner</testname> - <arg> - <argname>macro</argname> - <argvalue>MCP_RTT_makeHistos.C</argvalue> - </arg> - </action> - - </jobGroup> - - </jobGroups> - -</rtt> -</unifiedTestConfiguration> - diff --git a/Reconstruction/RecAlgs/CMakeLists.txt b/Reconstruction/RecAlgs/CMakeLists.txt index 5c4c7fa5995a9c2751ff640327e0e5e2fbe01222..1158aeb6f72e0862476e6067088083031c8feb74 100644 --- a/Reconstruction/RecAlgs/CMakeLists.txt +++ b/Reconstruction/RecAlgs/CMakeLists.txt @@ -1,25 +1,14 @@ -################################################################################ -# Package: RecAlgs -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecAlgs ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Control/AthenaBaseComps - Control/StoreGate - Event/xAOD/xAODEventInfo - GaudiKernel - Reconstruction/RecEvent ) - # External dependencies: -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) +find_package( ROOT COMPONENTS Core ) # Component(s) in the package: atlas_add_component( RecAlgs src/*.cxx src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps StoreGateLib SGtests xAODEventInfo GaudiKernel RecEvent ) - + LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps xAODEventInfo GaudiKernel RecEvent ) diff --git a/Reconstruction/RecBackground/RecBackgroundAlgs/CMakeLists.txt b/Reconstruction/RecBackground/RecBackgroundAlgs/CMakeLists.txt index 2cb147df3a49d9c459237f57a650edaf90f61310..72cfa9623f5accac41a339492821ceec861e03b5 100644 --- a/Reconstruction/RecBackground/RecBackgroundAlgs/CMakeLists.txt +++ b/Reconstruction/RecBackground/RecBackgroundAlgs/CMakeLists.txt @@ -1,47 +1,13 @@ -################################################################################ -# Package: RecBackgroundAlgs -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecBackgroundAlgs ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthLinks - Control/AthenaBaseComps - Event/xAOD/xAODCaloEvent - Event/xAOD/xAODEventInfo - Event/xAOD/xAODJet - GaudiKernel - MuonSpectrometer/MuonIdHelpers - MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment - MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools - Reconstruction/RecBackground/RecBackgroundEvent - Tracking/TrkEvent/TrkSegment - PRIVATE - Calorimeter/CaloGeoHelpers - Control/AthenaKernel - Control/StoreGate - DetectorDescription/GeoPrimitives - ForwardDetectors/LUCID/LUCID_RawEvent - InnerDetector/InDetRecEvent/BCM_CollisionTime - LArCalorimeter/LArRecEvent - MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData - PhysicsAnalysis/EventTag/TagEvent - TileCalorimeter/TileEvent ) - -# External dependencies: -find_package( Eigen ) -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) - # Component(s) in the package: atlas_add_component( RecBackgroundAlgs src/*.cxx src/components/*.cxx - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} ${EIGEN_LIBRARIES} AthLinks AthenaBaseComps xAODCaloEvent xAODEventInfo xAODJet GaudiKernel MuonIdHelpersLib MuonSegment MuonRecHelperToolsLib RecBackgroundEvent TrkSegment CaloGeoHelpers AthenaKernel StoreGateLib SGtests GeoPrimitives LUCID_RawEvent LArRecEvent MuonPrepRawData TagEvent TileEvent BCM_CollisionTimeLib ) + LINK_LIBRARIES AthLinks AthenaBaseComps xAODCaloEvent xAODEventInfo xAODJet GaudiKernel MuonIdHelpersLib MuonSegment MuonRecHelperToolsLib RecBackgroundEvent TrkSegment CaloGeoHelpers AthenaKernel GeoPrimitives LUCID_RawEvent LArRecEvent MuonPrepRawData TagEvent TileEvent BCM_CollisionTimeLib ) # Install files from the package: -atlas_install_headers( RecBackgroundAlgs ) atlas_install_joboptions( share/*.py ) - diff --git a/Reconstruction/RecBackground/RecBackgroundEvent/CMakeLists.txt b/Reconstruction/RecBackground/RecBackgroundEvent/CMakeLists.txt index 9fbd98de8a2ab0bf7ffcaefb2f3e125813874f1b..edb7e0b2c3754b2b0866872edcbd13c280ce91fb 100644 --- a/Reconstruction/RecBackground/RecBackgroundEvent/CMakeLists.txt +++ b/Reconstruction/RecBackground/RecBackgroundEvent/CMakeLists.txt @@ -1,18 +1,8 @@ -################################################################################ -# Package: RecBackgroundEvent -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecBackgroundEvent ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaKernel - Control/AthLinks - Event/xAOD/xAODCaloEvent - Event/xAOD/xAODJet - Tracking/TrkEvent/TrkSegment ) - # Component(s) in the package: atlas_add_library( RecBackgroundEvent src/*.cxx diff --git a/Reconstruction/RecEvent/CMakeLists.txt b/Reconstruction/RecEvent/CMakeLists.txt index 1b469bd87f529b49e76bf2e1b8ac7c92cb4fbf7c..dfdb88732be9488df2ed0daafd78c3ed69d23c5b 100644 --- a/Reconstruction/RecEvent/CMakeLists.txt +++ b/Reconstruction/RecEvent/CMakeLists.txt @@ -1,29 +1,15 @@ -################################################################################ -# Package: RecEvent -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecEvent ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaKernel - Control/SGTools ) - -# External dependencies: -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) - # Component(s) in the package: atlas_add_library( RecEvent src/*.cxx PUBLIC_HEADERS RecEvent - PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES SGTools AthenaKernel - PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ) + LINK_LIBRARIES SGTools AthenaKernel ) atlas_add_dictionary( RecEventDict RecEvent/RecEventDict.h RecEvent/selection.xml - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} SGTools RecEvent ) - + LINK_LIBRARIES RecEvent ) diff --git a/Reconstruction/RecEventAthenaPool/CMakeLists.txt b/Reconstruction/RecEventAthenaPool/CMakeLists.txt index 7bf27ff44682f51998b1d398d6c8c250b1d117ae..ac21958e0e7bab120a61c7c981e981c1d8806fda 100644 --- a/Reconstruction/RecEventAthenaPool/CMakeLists.txt +++ b/Reconstruction/RecEventAthenaPool/CMakeLists.txt @@ -1,20 +1,8 @@ -################################################################################ -# Package: RecEventAthenaPool -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecEventAthenaPool ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Database/AthenaPOOL/AthenaPoolUtilities - Database/AtlasSealCLHEP - PRIVATE - Database/AthenaPOOL/AthenaPoolCnvSvc - GaudiKernel - Reconstruction/RecEvent - Reconstruction/RecEventTPCnv ) - # Component(s) in the package: atlas_add_poolcnv_library( RecEventAthenaPoolPoolCnv src/*.cxx diff --git a/Reconstruction/RecEventTPCnv/CMakeLists.txt b/Reconstruction/RecEventTPCnv/CMakeLists.txt index 3209af5df198f030c9906526a7db51feb8ec7f8e..96e717fe7c332c38827e92bf7053be132396a732 100644 --- a/Reconstruction/RecEventTPCnv/CMakeLists.txt +++ b/Reconstruction/RecEventTPCnv/CMakeLists.txt @@ -1,30 +1,15 @@ -################################################################################ -# Package: RecEventTPCnv -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecEventTPCnv ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Database/AthenaPOOL/AthenaPoolCnvSvc - Reconstruction/RecEvent - PRIVATE - Control/AthenaKernel ) - -# External dependencies: -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) - # Component(s) in the package: atlas_add_tpcnv_library( RecEventTPCnv src/*.cxx PUBLIC_HEADERS RecEventTPCnv - PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib RecEvent AthenaKernel ) + LINK_LIBRARIES AthenaPoolCnvSvcLib RecEvent AthenaKernel ) atlas_add_dictionary( RecEventTPCnvDict RecEventTPCnv/RecEventTPCnvDict.h RecEventTPCnv/selection.xml - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaPoolCnvSvcLib RecEvent AthenaKernel RecEventTPCnv ) - + LINK_LIBRARIES RecEvent RecEventTPCnv ) diff --git a/Reconstruction/RecExample/RecExAnaTest/CMakeLists.txt b/Reconstruction/RecExample/RecExAnaTest/CMakeLists.txt deleted file mode 100644 index 2746823d4fb66e8c01542926e32c1a442ea0780b..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -################################################################################ -# Package: RecExAnaTest -################################################################################ - -# Declare the package name: -atlas_subdir( RecExAnaTest ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( test/RecExAnaTest_TestConfiguration.xml share/run_memleak_reat.sh ) - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all.py b/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all.py deleted file mode 100755 index bf2c6def9d73094b92b0ccabf2c1dd8d576e831d..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all.py +++ /dev/null @@ -1,8 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") -rec.AutoConfiguration = ['FieldAndGeo'] - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all_fullSim.py b/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all_fullSim.py deleted file mode 100755 index f95094fe206a55924f4112ba4d228828dc3c4416..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all_fullSim.py +++ /dev/null @@ -1,12 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -include ("RecExCond/RecExCommon_flags.py") -TriggerFlags.triggerMenuSetup = 'MC_lumi1E31_simpleL1Calib_physics_prescale' -TriggerFlags.L1PrescaleSet = '' -TriggerFlags.HLTPrescaleSet = '' -TriggerFlags.useL1CaloCalibration = True -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all_phys.py b/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all_phys.py deleted file mode 100755 index cb9eeaf2c5466e52063db85bdf3610b1a69d37de..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all_phys.py +++ /dev/null @@ -1,14 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -include ("RecExCond/RecExCommon_flags.py") -TriggerFlags.triggerMenuSetup = 'Physics_lumi1E31_simpleL1Calib' -#TriggerFlags.L1PrescaleSet = '' -#TriggerFlags.HLTPrescaleSet = '' -TriggerFlags.useL1CaloCalibration = False -TriggerFlags.L1PrescaleSet = 'L1Prescales100_Physics_lumi1E31_simpleL1Calib' -TriggerFlags.HLTPrescaleSet = 'HLTPrescales100_Physics_lumi1E31_simpleL1Calib' -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all_stdSim.py b/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all_stdSim.py deleted file mode 100755 index f263f1a5b8a17b8ff9ce6c00a6ffdd3113147274..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_all_stdSim.py +++ /dev/null @@ -1,12 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -include ("RecExCond/RecExCommon_flags.py") -# TriggerFlags.triggerMenuSetup = 'MC_lumi1E31_simpleL1Calib_physics_prescale' -# TriggerFlags.L1PrescaleSet = '' -# TriggerFlags.HLTPrescaleSet = '' -# TriggerFlags.useL1CaloCalibration = True -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_alllowlumi.py b/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_alllowlumi.py deleted file mode 100755 index 620832dc7438dbef8211ef0e90a218e9dfa597f6..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_alllowlumi.py +++ /dev/null @@ -1,14 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -# For 2 10**33 luminosity - KAA -from AthenaCommon.BeamFlags import jobproperties -jobproperties.Beam.override=False -jobproperties.Beam.bunchSpacing=25 -jobproperties.Beam.numberOfCollisions=4.6 - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_nopers.py b/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_nopers.py deleted file mode 100755 index 51ed2f07e974d0c048a1143d8b3736202b9a3ac9..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_nopers.py +++ /dev/null @@ -1,11 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -rec.doWriteESD=False -rec.doWriteAOD=False -rec.doWriteTAG=False - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_nopersnotrigger.py b/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_nopersnotrigger.py deleted file mode 100755 index 4c3c7b4e7a531e07cc97d79b376645ec6795dbb4..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_nopersnotrigger.py +++ /dev/null @@ -1,11 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -rec.doWriteESD=False -rec.doWriteAOD=False -rec.doWriteTAG=False - -rec.doTrigger=False -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_notrigger.py b/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_notrigger.py deleted file mode 100755 index 0a2ed624e5e64800f2016b2a91dc8dd69d28ff2d..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_notrigger.py +++ /dev/null @@ -1,12 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") -rec.doTrigger=False -rec.AutoConfiguration = ['FieldAndGeo'] - -include ("RecExCommon/RecExCommon_flags.py") - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_prod.py b/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_prod.py deleted file mode 100755 index ddea4f0ff5d536217e7b4de00babf2b1b3f896af..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/RecExAnaTest_RTT_prod.py +++ /dev/null @@ -1,15 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -from RecExConfig.RecFlags import rec -rec.Production=True - - -# main jobOption -include ("RecExCommon/RecExCommon_flags.py") - -# mof for default production -AODFlags.FastTrackParticle=False - -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExAnaTest/share/aodtoaod_RTT.py b/Reconstruction/RecExample/RecExAnaTest/share/aodtoaod_RTT.py deleted file mode 100644 index 3d8ec5235c2df236f4132bacd0be92f42654759f..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/aodtoaod_RTT.py +++ /dev/null @@ -1,3 +0,0 @@ -include("RecExCommon/aodtoaod.py") -include("RecExRecoTest/rttchainhack.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/aodtoaodtocbnt_RTT.py b/Reconstruction/RecExample/RecExAnaTest/share/aodtoaodtocbnt_RTT.py deleted file mode 100644 index a74fba5668264d373d0286c0f6e97d031a688645..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/aodtoaodtocbnt_RTT.py +++ /dev/null @@ -1,5 +0,0 @@ -PoolAODInput=["copy_AOD.pool.root"] -rec.RootNtupleOutput="ntuple_fromAODcopy.root" -include("RecExCommon/aodtocbnt.py") -include("RecExRecoTest/rttchainhack.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/aodtocbnt_RTT.py b/Reconstruction/RecExample/RecExAnaTest/share/aodtocbnt_RTT.py deleted file mode 100644 index a1a6bb9f099abd7a825cd7dcc896078a6410adbc..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/aodtocbnt_RTT.py +++ /dev/null @@ -1,3 +0,0 @@ -include("RecExCommon/aodtocbnt.py") -include("RecExRecoTest/rttchainhack.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/aodtotag_RTT.py b/Reconstruction/RecExample/RecExAnaTest/share/aodtotag_RTT.py deleted file mode 100644 index 6be7152234cb484ff060a0d276047594dfeaa77f..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/aodtotag_RTT.py +++ /dev/null @@ -1,3 +0,0 @@ -include("RecExCommon/aodtotag.py") -include("RecExRecoTest/rttchainhack.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/esdtoaod_RTT.py b/Reconstruction/RecExample/RecExAnaTest/share/esdtoaod_RTT.py deleted file mode 100644 index 99ad1c112df9ff5f3ff3e829e61f0d396de68996..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/esdtoaod_RTT.py +++ /dev/null @@ -1,4 +0,0 @@ -rec.RootNtupleOutput="ntuple_fromESDwhileAOD.root" -include("RecExCommon/esdtoaod.py") -include("RecExRecoTest/rttchainhack.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/share/run_memleak_reat.sh b/Reconstruction/RecExample/RecExAnaTest/share/run_memleak_reat.sh deleted file mode 100755 index cf461c10d8828ddbd9f77b037465fea2a4d56ba0..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/run_memleak_reat.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -if [ $# -eq 0 ]; then - echo "stop, no arguments given !" -fi - -RUN=0 - -if [[ $1 == "esd_notrig_memleakAna" ]]; then - echo "running $1 with CMTCONFIG $CMTCONFIG" - if [[ $CMTCONFIG = x86_64-* ]]; then - echo "64 bit : igprof" - export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/afs/cern.ch/atlas/offline/external/igprof/5.9.2/${CMTCONFIG}/lib - export PATH=${PATH}:/afs/cern.ch/atlas/offline/external/igprof/5.9.2/${CMTCONFIG}/bin - igprof -mp -z -t python athena.py -c "jp.AthenaCommonFlags.EvtMax=50; rec.doCBNT=False ;jp.AthenaCommonFlags.FilesInput=['/afs/cern.ch/atlas/project/rig/referencefiles/dataStreams_high_mu/high_mu-data11_7TeV.00179725.physics_JetTauEtmiss.merge.RAW._lb0021.data'] " RecExAnaTest/RecExAnaTest_RTT_notrigger.py --stdcmalloc - mkdir -p web/data - cp /afs/cern.ch/atlas/offline/external/igprof/5.9.2/${CMTCONFIG}/bin/igprof-navigator web - igprof-analyse --sqlite -d -v -g -r MEM_LIVE igprof.*.gz | sqlite3 web/data/igreport_total.sql3 - else - echo "32 bit leak check execute" - athena.py -c "jp.AthenaCommonFlags.EvtMax=50; rec.doCBNT=False ;jp.AthenaCommonFlags.FilesInput=['/afs/cern.ch/atlas/project/rig/referencefiles/dataStreams_high_mu/high_mu-data11_7TeV.00179725.physics_JetTauEtmiss.merge.RAW._lb0021.data'] " RecExAnaTest/RecExAnaTest_RTT_notrigger.py --leak-check-execute - fi - RUN=1 -fi - -if [[ $1 == "esd_memleakAna" ]]; then - echo "running $1 with CMTCONFIG $CMTCONFIG" - if [[ $CMTCONFIG = x86_64-* ]]; then - echo "64 bit : igprof" - export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/afs/cern.ch/atlas/offline/external/igprof/5.9.2/${CMTCONFIG}/lib - export PATH=${PATH}:/afs/cern.ch/atlas/offline/external/igprof/5.9.2/${CMTCONFIG}/bin - igprof -mp -z -t python athena.py -c "jp.AthenaCommonFlags.EvtMax=-1; rec.doCBNT=False ;jp.AthenaCommonFlags.FilesInput=[\"/afs/cern.ch/atlas/project/rig/referencefiles/MC/valid1.105200.T1_McAtNlo_Jimmy.digit.RDO.e835_s1256_s1258_d566_tid464353_00/RDO.464353._000001.pool.root.1\"] " RecExAnaTest/RecExAnaTest_RTT_all.py --stdcmalloc - mkdir -p web/data - cp /afs/cern.ch/atlas/offline/external/igprof/5.9.2/${CMTCONFIG}/bin/igprof-navigator web - igprof-analyse --sqlite -d -v -g -r MEM_LIVE igprof.*.gz | sqlite3 web/data/igreport_total.sql3 - else - echo "32 bit : leak check execute" - athena.py -c "jp.AthenaCommonFlags.EvtMax=-1; rec.doCBNT=False ;jp.AthenaCommonFlags.FilesInput=[\"/afs/cern.ch/atlas/project/rig/referencefiles/MC/valid1.105200.T1_McAtNlo_Jimmy.digit.RDO.e835_s1256_s1258_d566_tid464353_00/RDO.464353._000001.pool.root.1\"] " RecExAnaTest/RecExAnaTest_RTT_all.py --leak-check-execute - fi - RUN=1 -fi - -if [ $RUN -eq 0 ]; then - echo "don't understand the parameter $1" -fi diff --git a/Reconstruction/RecExample/RecExAnaTest/share/tagtocbnt_RTT.py b/Reconstruction/RecExample/RecExAnaTest/share/tagtocbnt_RTT.py deleted file mode 100644 index 60f45b6075f898243d9b514df28fec53180691d4..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/share/tagtocbnt_RTT.py +++ /dev/null @@ -1,3 +0,0 @@ -include("RecExCommon/tagtocbnt.py") -include("RecExRecoTest/rttchainhack.py") - diff --git a/Reconstruction/RecExample/RecExAnaTest/test/RecExAnaTest_TestConfiguration.xml b/Reconstruction/RecExample/RecExAnaTest/test/RecExAnaTest_TestConfiguration.xml deleted file mode 100755 index e5f8bcc050b54cb9d6d512fd06a1907d2e848647..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExAnaTest/test/RecExAnaTest_TestConfiguration.xml +++ /dev/null @@ -1,436 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> - -<unifiedTestConfiguration> - - <atn> - - <TEST name="aaaempty" type="athena" suite="aaaempty"> - <options_atn>-c "rec.doDetailedAuditor=True ; rec.doNameAuditor=True " RecExRecoTest/RecExRecoTest_RTT_empty.py</options_atn> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="all_notrig" type="athena" suite="all_notrig"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExAnaTest/RecExAnaTest_RTT_notrigger.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>rm -f $ATN_WORK_AREA/*.pool.root</prescript> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="all_notrig_fpe" type="athena" suite="all_notrig_fpe"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5 ; doFloatingPointException=True ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " RecExAnaTest/RecExAnaTest_RTT_notrigger.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - <prescript>rm -f $ATN_WORK_AREA/*.pool.root</prescript> - </TEST> - - <TEST name="RECOSHIFT_all" type="athena" suite="all"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExAnaTest/RecExAnaTest_RTT_all.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - <prescript>rm -f $ATN_WORK_AREA/*.pool.root</prescript> - </TEST> - - <TEST name="all_drop-and-reload" type="athena" suite="all_drop-and-reload"> - <options_atn> --drop-and-reload -c "jp.AthenaCommonFlags.EvtMax=5 ; " RecExAnaTest/RecExAnaTest_RTT_all.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - <prescript>rm -f jobOptions.py</prescript> - </TEST> - - <TEST name="all_fpe" type="athena" suite="all_fpe"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5 ; doFloatingPointException=True ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " RecExAnaTest/RecExAnaTest_RTT_all.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - <prescript>rm -f $ATN_WORK_AREA/*.pool.root</prescript> - </TEST> - - <TEST name="notrig0_esd" type="athena" suite="reconotrig"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_esd.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - <prescript>rm -f $ATN_WORK_AREA/*.pool.root</prescript> - </TEST> - - <TEST name="notrig1_esdtoaod" type="athena" suite="reconotrig"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExCommon/esdtoaod.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - </TEST> - - - <TEST name="notrig2_aodtotag" type="athena" suite="reconotrig"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExCommon/aodtotag.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - </TEST> - - <TEST name="notrig3_tagtoaod" type="athena" suite="reconotrig"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5;rec.doDetailedAuditor=True;jp.AthenaCommonFlags.PoolInputQuery='(EventNumber == 22023 || EventNumber == 22037)'; rec.doNameAuditor=True" RecExCommon/tagtoaod.py </options_atn> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - </TEST> - - <TEST name="RECOSHIFT_std0_esd" type="athena" suite="recowithtrig"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExTrigTest/RecExTrigTest_RTT_esdtrigger.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - <prescript>rm -f $ATN_WORK_AREA/*.pool.root</prescript> - </TEST> - - <TEST name="RECOSHIFT_std1_esdtoaod" type="athena" suite="recowithtrig"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExCommon/esdtoaod.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - </TEST> - - - <TEST name="RECOSHIFT_std2_aodtotag" type="athena" suite="recowithtrig"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExCommon/aodtotag.py</options_atn> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - </TEST> - - <!-- <TEST name="RECOSHIFT_std3_aodtoD3PD" type="athena" suite="recowithtrig"> --> - <!-- <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py D3PDMakerConfig/AODToEgammaD3PD.py</options_atn> --> - <!-- <author> Xiaohu Sun </author> --> - <!-- <mailto> atlas.rig@cern.ch </mailto> --> - <!-- </TEST> --> - - <TEST name="RECOSHIFT_std3_tagtoaod" type="athena" suite="recowithtrig"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5;jp.AthenaCommonFlags.PoolInputQuery='(EventNumber == 22003 || EventNumber == 22023)' ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True" RecExCommon/tagtoaod.py </options_atn> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - </TEST> - - <TEST name="RECOSHIFT_bs0_rdotobs" type="athena" suite="recobs"> - <options_atn> -c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ;jp.AthenaCommonFlags.FilesInput=['/afs/cern.ch/atlas/project/rig/referencefiles/mc15/RDO.pool.root'] " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_common.py RecExCommon/rdotobs.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <platform>opt</platform> - <prescript>RecExCommon_links.sh</prescript> - <prescript>rm -f $ATN_WORK_AREA/*.pool.root</prescript> - </TEST> - - <!-- bs1..4 have been failing for a long time. See ATR-16665. - <TEST name="RECOSHIFT_bs1_bstoesd" type="athena" suite="recobs"> - <options_atn> -c "rec.AutoConfiguration=['everything']; jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doTruth=False " RecExRecoTest/RecExRecoTest_RTT_common.py RecExCommon/bstoesd.py </options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <platform>opt</platform> - </TEST> - - <TEST name="RECOSHIFT_bs2_esdtoaod" type="athena" suite="recobs"> - <options_atn> -c "rec.AutoConfiguration=['everything']; jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doTruth=False ; rec.doNameAuditor=True " RecExRecoTest/RecExRecoTest_RTT_common.py RecExCommon/esdtoaod.py </options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <platform>opt</platform> - </TEST> - - <TEST name="RECOSHIFT_bs3_aodtotag" type="athena" suite="recobs"> - <options_atn> -c "rec.AutoConfiguration=['everything']; jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doTruth=False ; rec.doNameAuditor=True " RecExRecoTest/RecExRecoTest_RTT_common.py RecExCommon/aodtotag.py </options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <platform>opt</platform> - </TEST> - - <TEST name="RECOSHIFT_bs4_tagtoaod" type="athena" suite="recobs"> - <options_atn> -c "rec.AutoConfiguration=['everything'];jp.AthenaCommonFlags.EvtMax=5;jp.AthenaCommonFlags.PoolInputQuery='(EventNumber == 2 || EventNumber == 4)'; rec.doDetailedAuditor=True ; rec.doTruth=False ; rec.doNameAuditor=True " RecExCommon/tagtoaod.py </options_atn> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <platform>opt</platform> - </TEST> - --> - </atn> - - <kv/> - - <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt"> - - <rttContactPerson>Xiaohu Sun (Xiaohu.Sun@cern.ch)</rttContactPerson> - <mailto>atlas.rig@cern.ch</mailto> - <refRelease>10.0.0</refRelease> - - <jobList> - - <classification> - <displayClass>OfflineValidation</displayClass> - <displayProcess>Reco</displayProcess> - <displayComponent>Det-Combined</displayComponent> - </classification> - - <athena userJobId="mc15_all_fpeAna"> - <doc> Run all reco on default file with floating point exception enabled </doc> - <displayName>RecExAnaTest_RTT_mc15_all_fpe</displayName> - <commandLineFlags>jp.AthenaCommonFlags.EvtMax=300;doFloatingPointException=True;jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"]</commandLineFlags> - <options>RecExAnaTest_RTT_all</options> - <group>RecExAna</group> - <queue>medium</queue> - </athena> - - <athena userJobId="mc12_all_notriggerAna"> - <doc> Run reco without trigger </doc> - <displayName>RecExAnaTest_RTT_mc11_all_notrigger</displayName> - <commandLineFlags>jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"]</commandLineFlags> - <options>RecExAnaTest_RTT_notrigger</options> - <group>RecExAna</group> - <queue>medium</queue> - </athena> - - <athena userJobId="mc12_all_nopersAna"> - <doc> Run reco without persistency </doc> - <displayName>RecExAnaTest_RTT_mc11_all_nopers</displayName> - <commandLineFlags>jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"]</commandLineFlags> - <options>RecExAnaTest_RTT_nopers</options> - <group>RecExAna</group> - <queue>medium</queue> - </athena> - - <chain> - <chainName>RecExAnaTest_RTT_notrig_steps_mc12</chainName> - <sequential> - - <chainElement> - <athena userJobId="mc12_chain_withouttrigger_RDOtoESD"> - <doc>Chain without trigger configuration for mc12 RDO->ESD</doc> - <displayName>RecExAnaTest_RTT_notrig_steps_mc12_RDOtoESD</displayName> - <commandLineFlags> - jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.PoolESDOutput="RecExAnaTest_notrig_steps_mc12_ESD.pool.root";jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch///eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"] - </commandLineFlags> - <options>RecExRecoTest/RecExRecoTest_RTT_esd</options> - <group>RecExAna</group> - <queue>medium</queue> - </athena> - <chainfileout>RecExAnaTest_notrig_steps_mc12_ESD.pool.root</chainfileout> - </chainElement> - - <chainElement> - <athena userJobId="mc12_chain_withouttrigger_ESDtoAOD"> - <doc> Chain without trigger configuration for mc12 ESD->AOD</doc> - <displayName>RecExAnaTest_RTT_notrig_steps_mc12_ESDtoAOD</displayName> - <commandLineFlags>jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.PoolESDInput=["RecExAnaTest_notrig_steps_mc12_ESD.pool.root"];jp.AthenaCommonFlags.PoolAODOutput="RecExAnaTest_notrig_steps_mc12_AOD.pool.root"</commandLineFlags> - <options>RecExAnaTest/esdtoaod_RTT</options> - <group>RecExAna</group> - <queue>medium</queue> - <chaindataset_info> - <dc2/> - <chaindatasetName>RecExAnaTest_notrig_steps_mc12_ESD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc5-gcc43-opt/AtlasProduction/Reconstruction/RecExample/RecExAnaTest/RecExAnaTest_RTT_notrig_steps_mc12/RecExAnaTest_notrig_steps_mc12_ESD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <athenaCommonFlags /> - </athena> - <chainfileout>RecExAnaTest_notrig_steps_mc12_AOD.pool.root</chainfileout> - <chainfileout>PoolFileCatalog.xml</chainfileout> - </chainElement> - - <chainElement> - <athena userJobId="mc12_chain_withouttrigger_AODtoTAG"> - <doc> Chain without trigger configuration for mc12 AOD->TAG</doc> - <displayName>RecExAnaTest_RTT_notrig_steps_mc12_AODtoTAG</displayName> - <commandLineFlags>jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.PoolTAGOutput="RecExAnaTest_notrig_steps_mc12_TAG.pool.root"</commandLineFlags> - <options>RecExAnaTest/aodtotag_RTT</options> - <group>RecExAna</group> - <queue>medium</queue> - <chaindataset_info> - <dc2/> - <chaindatasetName>RecExAnaTest_notrig_steps_mc12_AOD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc5-gcc43-opt/AtlasProduction/Reconstruction/RecExample/RecExAnaTest/RecExAnaTest_RTT_notrig_steps_mc12/RecExAnaTest_notrig_steps_mc12_AOD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <athenaCommonFlags /> - </athena> - <chainfileout>RecExAnaTest_notrig_steps_mc12_TAG.pool.root</chainfileout> - </chainElement> - - <chainElement> - <jobTransform userJobId="mc12_chain_withouttrigger_TAGtoAOD"> - <doc>Chain without trigger configuration for mc12 TAG->AOD</doc> - <jobTransformJobName>displayName>RecExAnaTest_RTT_notrig_steps_mc12_TAGtoAOD</jobTransformJobName> - <jobTransformCmd> - pool_insertFileToCatalog.py RecExAnaTest_notrig_steps_mc12_AOD.pool.root; athena.py -c 'jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.FilesInput.set_Value_and_Lock(["RecExAnaTest_notrig_steps_mc12_TAG.pool.root"])' RecExCommon/tagtoaod.py - </jobTransformCmd> - <group>RecExAna</group> - <chaindataset_info> - <dc2/> - <chaindatasetName>RecExAnaTest_notrig_steps_mc12_AOD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc5-gcc43-opt/AtlasProduction/Reconstruction/RecExample/RecExAnaTest/RecExAnaTest_RTT_notrig_steps_mc12/RecExAnaTest_notrig_steps_mc12_AOD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <chaindataset_info> - <dc2/> - <chaindatasetName>RecExAnaTest_notrig_steps_mc12_TAG.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc5-gcc43-opt/AtlasProduction/Reconstruction/RecExample/RecExAnaTest/RecExAnaTest_RTT_notrig_steps_mc12/RecExAnaTest_notrig_steps_mc12_TAG.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - </jobTransform> - </chainElement> - - </sequential> - </chain> - - <chain> - <chainName>RecExAnaTest_RTT_prod_steps_mc12</chainName> - <sequential> - - <chainElement> - <athena userJobId="mc12_chain_prod_RDOtoESD"> - <doc>Chain in prod configuration for mc12 RDO->ESD</doc> - <displayName>RecExAnaTest_RTT_prod_steps_mc12_RDOtoESD</displayName> - <commandLineFlags> - jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.PoolESDOutput="RecExAnaTest_prod_steps_mc12_ESD.pool.root";jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"] - </commandLineFlags> - <options>RecExTrigTest/RecExTrigTest_RTT_esdprod</options> - <group>RecExAna</group> - <queue>medium</queue> - </athena> - <chainfileout>RecExAnaTest_prod_steps_mc12_ESD.pool.root</chainfileout> - </chainElement> - - <chainElement> - <athena userJobId="mc12_chain_prod_ESDtoAOD"> - <doc> Chain in prod configuration for mc12 ESD->AOD</doc> - <displayName>RecExAnaTest_RTT_prod_steps_mc12_ESDtoAOD</displayName> - <commandLineFlags>jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.PoolAODOutput="RecExAnaTest_prod_steps_mc12_AOD.pool.root"</commandLineFlags> - <options>RecExAnaTest/esdtoaod_RTT</options> - <group>RecExAna</group> - <queue>medium</queue> - <chaindataset_info> - <dc2/> - <chaindatasetName>RecExAnaTest_prod_steps_mc12_ESD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc5-gcc43-opt/AtlasProduction/Reconstruction/RecExample/RecExAnaTest/RecExAnaTest_RTT_prod_steps_mc12/RecExAnaTest_prod_steps_mc12_ESD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <athenaCommonFlags /> - </athena> - <chainfileout>RecExAnaTest_prod_steps_mc12_AOD.pool.root</chainfileout> - <chainfileout>PoolFileCatalog.xml</chainfileout> - </chainElement> - - <chainElement> - <athena userJobId="mc12_chain_prod_AODtoTAG"> - <doc> Chain in prod configuration for mc12 AOD->TAG</doc> - <displayName>RecExAnaTest_RTT_prod_steps_mc12_AODtoTAG</displayName> - <commandLineFlags>jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.PoolTAGOutput="RecExAnaTest_prod_steps_mc12_TAG.pool.root"</commandLineFlags> - <options>RecExAnaTest/aodtotag_RTT</options> - <group>RecExAna</group> - <queue>medium</queue> - <chaindataset_info> - <dc2/> - <chaindatasetName>RecExAnaTest_prod_steps_mc12_AOD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc5-gcc43-opt/AtlasProduction/Reconstruction/RecExample/RecExAnaTest/RecExAnaTest_RTT_prod_steps_mc12/RecExAnaTest_prod_steps_mc12_AOD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <athenaCommonFlags /> - </athena> - <chainfileout>RecExAnaTest_prod_steps_mc12_TAG.pool.root</chainfileout> - </chainElement> - - <chainElement> - <jobTransform userJobId="mc12_chain_prod_TAGtoAOD"> - <doc> Chain in prod configuration for mc12 TAG->AOD</doc> - <jobTransformJobName>RecExAnaTest_RTT_prod_steps_mc12_TAGtoAOD</jobTransformJobName> - <jobTransformCmd> - pool_insertFileToCatalog.py RecExAnaTest_prod_steps_mc12_AOD.pool.root;athena.py -c 'jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.FilesInput.set_Value_and_Lock(["RecExAnaTest_prod_steps_mc12_TAG.pool.root"])' RecExCommon/tagtoaod.py - </jobTransformCmd> - <group>RecExAna</group> - <chaindataset_info> - <dc2/> - <chaindatasetName>RecExAnaTest_prod_steps_mc12_AOD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc5-gcc43-opt/AtlasProduction/Reconstruction/RecExample/RecExAnaTest/RecExAnaTest_RTT_prod_steps_mc12/RecExAnaTest_prod_steps_mc12_AOD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <chaindataset_info> - <dc2/> - <chaindatasetName>RecExAnaTest_prod_steps_mc12_TAG.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc5-gcc43-opt/AtlasProduction/Reconstruction/RecExample/RecExAnaTest/RecExAnaTest_RTT_prod_steps_mc12/RecExAnaTest_prod_steps_mc12_TAG.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - </jobTransform> - </chainElement> - - </sequential> - </chain> - - </jobList> - - <jobGroups> - - <jobGroup name="RecExAna" parent="Transform"> - <keepFilePattern>web/*</keepFilePattern> - <keepFilePattern>web/data/*</keepFilePattern> - <keepFilePattern>*.txt</keepFilePattern> - <keepFilePattern>*.bz2</keepFilePattern> - <keepFilePattern>*_log.bz2</keepFilePattern> - - <auxFilePattern>PostProcessRecoRTTTests.py</auxFilePattern> - - <action position="1" runInAtlasEnv="yes"> - <modulename>PostProcessRecoRTTTests</modulename> - <testname>PostProcessRecoRTTTests</testname> - </action> - - </jobGroup> - - <jobGroup name="RecExAna_memleak" parent="Transform"> - <keepFilePattern>web/*</keepFilePattern> - <keepFilePattern>web/data/*</keepFilePattern> - <keepFilePattern>*.txt</keepFilePattern> - <keepFilePattern>*.bz2</keepFilePattern> - <keepFilePattern>*_log.bz2</keepFilePattern> - - <auxFilePattern>run_memleak_reat.sh</auxFilePattern> - <auxFilePattern>slurpRecoRTTTests.pl</auxFilePattern> - <auxFilePattern>PostProcessIgprofWeb.py</auxFilePattern> - <auxFilePattern>PostProcessRecoRTTTests.py</auxFilePattern> - - <action position="1" runInAtlasEnv="yes"> - <modulename>PostProcessRecoRTTTests</modulename> - <testname>PostProcessRecoRTTTests</testname> - </action> - - </jobGroup> - </jobGroups> - - </rtt> -</unifiedTestConfiguration> - diff --git a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py index a75c1fefaddfcfd7cb0ff26cd2441dc5eb4a476d..2c2bf69a7b95bc0b194be7920107392525d6b5c2 100644 --- a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py +++ b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py @@ -570,6 +570,7 @@ if rec.doTrigger: #MT part ## Outputs +from TriggerJobOpts.TriggerFlags import TriggerFlags if TriggerFlags.doMT() and rec.readESD() and rec.doAOD(): # Don't run any trigger - only pass the HLT contents from ESD to AOD # Add HLT output diff --git a/Reconstruction/RecExample/RecExCond/share/RecExCommon_flags.py b/Reconstruction/RecExample/RecExCond/share/RecExCommon_flags.py index 02a7462d2b73bf2fc8f2adec56d63d6b95c331fc..c4c508aece8f7926229d9f1acb5278e3025af7a3 100755 --- a/Reconstruction/RecExample/RecExCond/share/RecExCommon_flags.py +++ b/Reconstruction/RecExample/RecExCond/share/RecExCommon_flags.py @@ -465,14 +465,16 @@ else: jobproperties.set_JobProperties(data) else: i_value=RecExCommonFlags.get(i) - jpvalue = getattr(jobproperties.AthenaCommonFlags, i)() - if i!="PoolRDOInput": - if i_value!=jpvalue: - logRecExCommon_flags.info('inconsistency: for flag %s new flag: %s old flag:%s',i,jpvalue,i_value) - else: - if i_value!=jpvalue: - logRecExCommon_flags.info ('Modified value for flag %s new flag: %s old flag:%s',i,jpvalue,i_value) - + if getattr(jobproperties.AthenaCommonFlags, i).statusOn: + jpvalue = getattr(jobproperties.AthenaCommonFlags, i)() + if i!="PoolRDOInput": + if i_value!=jpvalue: + logRecExCommon_flags.info('inconsistency: for flag %s new flag: %s old flag:%s',i,jpvalue,i_value) + else: + if i_value!=jpvalue: + logRecExCommon_flags.info ('Modified value for flag %s new flag: %s old flag:%s',i,jpvalue,i_value) + else: + logRecExCommon_flags.info('Modified value for flag %s new flag: unset, old flag %s',i,i_value) # some special migration (temporary) if rec.doFloatingPointException() and not athenaCommonFlags.isOnline(): diff --git a/Reconstruction/RecExample/RecExRecoTest/CMakeLists.txt b/Reconstruction/RecExample/RecExRecoTest/CMakeLists.txt index b1dfbde7cb870f7746ef8573a374029c26e4ba46..3ea651b49ba8d772fef8fcf4541134a176fd84ae 100644 --- a/Reconstruction/RecExample/RecExRecoTest/CMakeLists.txt +++ b/Reconstruction/RecExample/RecExRecoTest/CMakeLists.txt @@ -1,14 +1,11 @@ -################################################################################ -# Package: RecExRecoTest -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecExRecoTest ) # Install files from the package: -atlas_install_python_modules( python/*.py ) atlas_install_joboptions( share/*.py ) -atlas_install_runtime( test/RecExRecoTest_TestConfiguration.xml python/PostProcessRecoRTTTests.py python/PostProcessIgprofWeb.py share/slurpRecoRTTTests.pl share/dumpPoolFileInchunks.sh share/diffPoolFilesRERT.sh share/run_memleak_rert.sh test/*.sh ) +atlas_install_runtime( test/*.sh ) atlas_install_scripts( test/MetaDataTest.py ) atlas_add_alias( metadata-test "MetaDataTest.py" ) diff --git a/Reconstruction/RecExample/RecExRecoTest/python/PostProcessIgprofWeb.py b/Reconstruction/RecExample/RecExRecoTest/python/PostProcessIgprofWeb.py deleted file mode 100644 index b67d8fab1634eead84096e3cfd5a3710cd184d75..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/python/PostProcessIgprofWeb.py +++ /dev/null @@ -1,27 +0,0 @@ -#! /usr/bin/env python - -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# module: PostProcessIgprofWeb.py - -from Logger import Logger - -class PostProcessIgprofWeb: - def __init__(self,argDict={}): - - self.logger = Logger() - descriptor = argDict.get('JobDescriptor', None) - - self.resPath = descriptor.resPath - self.logFile = descriptor.log - - def run(self): - - f = open('IgprofResults.html', 'w') - f.write('<html>\n<head>\n<title>You are being redirected to the igprof results</title>\n') - log=self.resPath[self.resPath.find('/Results/'):] - f.write('<META HTTP-EQUIV="refresh" CONTENT="2;URL=https://rig.web.cern.ch/rig/cgi-bin/igprof-navigator' + log + '/data/igreport_total/">') - f.write('</head>\n<body>\n<h1>You are being redirected to the igprof results</h1>\n') - f.write('<p>You are being forwarded to <a href="https://rig.web.cern.ch/rig/cgi-bin/igprof-navigator' + log + '/data/igreport_total/">https://rig.web.cern.ch/rig/cgi-bin/igprof-navigator' + log + '/data/igreport_total/</a>.</p>\n</body>\n</html>') - - return 0 diff --git a/Reconstruction/RecExample/RecExRecoTest/python/PostProcessRecoRTTTests.py b/Reconstruction/RecExample/RecExRecoTest/python/PostProcessRecoRTTTests.py deleted file mode 100644 index fa12627b427b8dfcd9823b819dfbb0305b6c994b..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/python/PostProcessRecoRTTTests.py +++ /dev/null @@ -1,63 +0,0 @@ -#! /usr/bin/env python - -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# module: PostProcessRecoRTTTests.py - -from Logger import Logger - -class PostProcessRecoRTTTests: - def __init__(self,argDict={}): - - self.logger = Logger() - descriptor = argDict.get('JobDescriptor', None) - - self.RttName = descriptor.name - self.DisName = descriptor.jobDisplayName - - self.NightlyType = descriptor.paths.branch # ==> e.g. dev, devval, 15.4.X.Y, etc. - self.ProjectName = descriptor.paths.topProject # ==> AtlasProduction, AtlasTier0, etc. - # self.cmtConfigStr = descriptor.paths.cmtConfig # ==> e.g. i686-slc4-gcc34-opt - self.PackageTag = descriptor.paths.packageTag # ==> e.g. PackageTag-00-01-20 - self.resPath = descriptor.resPath - self.logFile = descriptor.log - - def run(self): - - from subprocess import Popen, PIPE - import os - - releaseName = os.environ['AtlasVersion'] - atlasArea = os.environ['AtlasArea'] - cmtConfig = os.environ['CMTCONFIG'] - - # post processing the logfiles - self.logger.info("PostProcessRecoRTTTests run()") - - dp=os.environ['DATAPATH'] - self.logger.info(" echo DATAPATH : %s"%dp) - self.logger.info(" get_files slurpRecoRTTTests.pl") - try: - carg=[ "get_files", "slurpRecoRTTTests.pl" ] - - p = Popen(carg, stdout=PIPE) - out=p.communicate()[0] - self.logger.info(out) - - except IOError: - self.logger.info( 'not good. something is wrong with get_files slurpRecoRTTTests.pl' ) - return -1 - - self.logger.info(" proccessing logfile %s"%self.logFile) - try: - carg=[ "./slurpRecoRTTTests.pl", self.logFile ] - - p = Popen(carg, stdout=PIPE) - out=p.communicate()[0] - self.logger.info(out) - - except IOError: - self.logger.info( 'not good. something is wrong with slurpRecoRTTTests.pl' ) - return -1 - - return 0 diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_calo.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_calo.py deleted file mode 100755 index c25d222080183b6fd2888797d3e0e0a1b0f023cb..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_calo.py +++ /dev/null @@ -1,33 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="calo_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1=False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=False -rec.doMuon=False -rec.doCalo=True -rec.doEgamma=False -rec.doMuonCombined=False -rec.doJetMissingETTag=False -rec.doTau=False - - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_calomax.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_calomax.py deleted file mode 100644 index 814b0816229196e1d960c51d1669707b4a37ee38..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_calomax.py +++ /dev/null @@ -1,34 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec - -rec.doForwardDet=False -rec.doInDet=False -rec.doMuon=False -rec.doCalo=True - -# If tracking is off, this also needs to be off. -rec.doEgamma = False - - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_common.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_common.py deleted file mode 100755 index 27a5551e2db7236aa3691ff5948ff414e1d49eb9..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_common.py +++ /dev/null @@ -1,8 +0,0 @@ -# hold common configuration for RTT test - -from PerfMonComps.PerfMonFlags import jobproperties -jobproperties.PerfMonFlags.doMonitoring = True - -#FIXME DISABLE NAMEAUDITOR AS LONG AS LOG FILES ARE NOT COMPRESSED -#doNameAuditor=True - diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_common_postOptions.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_common_postOptions.py deleted file mode 100755 index ab9a62fc8a9ee75ee3a24348741f9ed29777ed19..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_common_postOptions.py +++ /dev/null @@ -1,8 +0,0 @@ -# hold common post option configuration for RTT test -#print memory usage for all events (in case of memory leak crash) -try: - CBNTAA_Audit().nEventPrintMem=999999 -except Exception: - printfunc ("no CBNTAA_Audit available") - import traceback - traceback.print_exc() diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_empty.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_empty.py deleted file mode 100755 index c12a2a428c2a88984c1887d510f3b37e79256ef9..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_empty.py +++ /dev/null @@ -1,31 +0,0 @@ -# run almost empty event loop -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -from RecExConfig.RecFlags import rec -from RecExConfig.RecAlgsFlags import recAlgs - -rec.doForwardDet=False -rec.doInDet=False -rec.doCalo=False -rec.doMuon=False - -rec.doTrigger = False; recAlgs.doTrigger=False # disable trigger (maybe necessary if detectors switched of) - - -rec.doTruth=False -rec.doESD = False # if false, all algorithms are switched off by defaults -rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esd.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esd.py deleted file mode 100755 index a5b2c19a5c14a9185f4e275b9cc17693d0f7c27b..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esd.py +++ /dev/null @@ -1,13 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -from BTagging.BTaggingFlags import BTaggingFlags -BTaggingFlags.Active=False - -# main jobOption -include ("RecExCommon/rdotoesdnotrigger.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - - diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esd_mu30.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esd_mu30.py deleted file mode 100755 index b33c016e795fecfad9299e6242b9745b4eda8bf1..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esd_mu30.py +++ /dev/null @@ -1,19 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -# For 2 10**33 luminosity - KAA -from AthenaCommon.BeamFlags import jobproperties -jobproperties.Beam.override=False -jobproperties.Beam.bunchSpacing=50 -jobproperties.Beam.numberOfCollisions=30.0 - -from CaloTools.CaloNoiseFlags import jobproperties -jobproperties.CaloNoiseFlags.FixedLuminosity.set_Value_and_Lock(1.45*30/8) - -rec.doCBNT=False -rec.doHist=False - -include ("RecExCommon/rdotoesdnotrigger.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - - diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esdlowlumi.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esdlowlumi.py deleted file mode 100755 index 1f7c718f9f73e0d903410cfea8dc0ccc5cd1ecba..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esdlowlumi.py +++ /dev/null @@ -1,16 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -# For 2 10**33 luminosity - KAA -from AthenaCommon.BeamFlags import jobproperties -jobproperties.Beam.override=False -jobproperties.Beam.bunchSpacing=25 -jobproperties.Beam.numberOfCollisions=4.6 - -rec.doCBNT=False -rec.doHist=False - -include ("RecExCommon/rdotoesdnotrigger.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - - diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esdprod.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esdprod.py deleted file mode 100755 index c0340ca743001c0f3475e0bbb1961cf249f9d826..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_esdprod.py +++ /dev/null @@ -1,8 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -rec.doTrigger=False -# main jobOption -include ("RecExCommon/rdotoesdprod.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") - diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_forwarddet.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_forwarddet.py deleted file mode 100644 index 9c4659a818a6ba07a8dc8fd7d185f510207f8a27..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_forwarddet.py +++ /dev/null @@ -1,29 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -jp.AthenaCommonFlags.PoolESDOutput="idcalo_ESD.pool.root" -rec.doTrigger=False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=True -rec.doInDet=False -rec.doMuon=False -rec.doCalo=False - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - -# If Calo/tracking is off, this needs to be off too. -from IsolationAlgs.IsoGetter import isoGetter -isoGetter (disable=True) - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_id.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_id.py deleted file mode 100755 index 0f920f1ec023f9081e6445e0632a8ee3a53eb65e..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_id.py +++ /dev/null @@ -1,34 +0,0 @@ - -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -jp.AthenaCommonFlags.PoolESDOutput="id_ESD.pool.root" -rec.doTrigger=False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=False -rec.doCalo=False -rec.doEgamma=False -rec.doMuonCombined=False -rec.doJetMissingETTag=False -rec.doTau=False - -from RecExConfig.RecAlgsFlags import recAlgs -recAlgs.doTrackParticleCellAssociation = False - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idcalo.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idcalo.py deleted file mode 100755 index c67dd10a7988721ba6b49d0a555e9c4b22219b87..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idcalo.py +++ /dev/null @@ -1,32 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -jp.AthenaCommonFlags.PoolESDOutput="idcalo_ESD.pool.root" -rec.doTrigger=False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec - -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=False -rec.doCalo=True -rec.doEgamma=False -rec.doMuonCombined=False -rec.doJetMissingETTag=False -rec.doTau=False - - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idcaloegamma.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idcaloegamma.py deleted file mode 100644 index ca3f66e114bc9acb917d97eeb70c10617b468783..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idcaloegamma.py +++ /dev/null @@ -1,34 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=False -rec.doCalo=True -rec.doEgamma=True -rec.doMuonCombined=False -rec.doJetMissingETTag=False -rec.doTau=False - - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idcalomax.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idcalomax.py deleted file mode 100644 index 3662e058f5b0ffd97571e279a27fd25b40e6f92d..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idcalomax.py +++ /dev/null @@ -1,32 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -jp.AthenaCommonFlags.PoolESDOutput="idcalo_ESD.pool.root" -rec.doTrigger=False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=False -rec.doCalo=True - -# If muons are not present, then eflow is not configured, -# which causes jet finding to fail. -rec.doJetMissingETTag = False - - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['everything'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmax.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmax.py deleted file mode 100644 index 1abded930f4b140711c3b819dff3f6eaee5733a9..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmax.py +++ /dev/null @@ -1,22 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - -jp.AthenaCommonFlags.PoolESDOutput="idcalo_ESD.pool.root" -rec.doTrigger=False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doCalo=False -rec.doMuon=False - - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuon.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuon.py deleted file mode 100755 index 0164d906c34e44f22b6c3fdc9e2707e2583ef886..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuon.py +++ /dev/null @@ -1,36 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1=False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=True -rec.doCalo=False -rec.doEgamma=False -rec.doMuonCombined=False -rec.doJetMissingETTag=False -rec.doTau=False - -from RecExConfig.RecAlgsFlags import recAlgs -recAlgs.doTrackParticleCellAssociation = False - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalo.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalo.py deleted file mode 100644 index 3459d25be652d63d773ea5d24a1a326ad3d7291a..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalo.py +++ /dev/null @@ -1,34 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=True -rec.doCalo=True -rec.doEgamma=False -rec.doMuonCombined=False -rec.doJetMissingETTag=False -rec.doTau=False - - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalomuoncomb.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalomuoncomb.py deleted file mode 100644 index 8a3c35f36c65e5db8735d48e413f28d2147f8439..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalomuoncomb.py +++ /dev/null @@ -1,34 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=True -rec.doCalo=True -rec.doEgamma=False -rec.doMuonCombined=True -rec.doJetMissingETTag=False -rec.doTau=False - - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['everything'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalomuoncombegamma.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalomuoncombegamma.py deleted file mode 100644 index 310b21bc79051d90d3d2237cfe89a40f7d36a134..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalomuoncombegamma.py +++ /dev/null @@ -1,28 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=True -rec.doCalo=True -rec.doEgamma=True -rec.doMuonCombined=True -rec.doJetMissingETTag=False -rec.doTau=False - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalomuoncombegammajet.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalomuoncombegammajet.py deleted file mode 100644 index a9abbb69f9141f782181e262b5542b77da526ab9..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuoncalomuoncombegammajet.py +++ /dev/null @@ -1,28 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=True -rec.doCalo=True -rec.doEgamma=True -rec.doMuonCombined=True -rec.doJetMissingETTag=True -rec.doTau=False - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuonmax.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuonmax.py deleted file mode 100644 index 66ff62b0c794aad1704db5da40f9097b9a297b4c..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_idmuonmax.py +++ /dev/null @@ -1,43 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=True -rec.doMuon=True -rec.doCalo=False -rec.doEgamma=False -rec.doJetMissingETTag=False - -# If Calo is off, this needs to be off too. -from MuonCombinedRecExample.MuonCombinedRecFlags import muonCombinedRecFlags -muonCombinedRecFlags.doCaloTrkMuId = False - -from RecExConfig.RecAlgsFlags import recAlgs -recAlgs.doTrackParticleCellAssociation = False - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['everything'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - -from TrkMaterialProvider import TrkMaterialProviderConf -trkMaterialProviderTool=TrkMaterialProviderConf.Trk__TrkMaterialProviderTool('TrkMaterialProviderTool', UseCaloEnergyMeasurement=False) -ToolSvc += trkMaterialProviderTool - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_muon.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_muon.py deleted file mode 100755 index 70ec591db0a2edf3e23facb1d9c57d62e9fb63a8..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_muon.py +++ /dev/null @@ -1,34 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -# obsolete doAODLVL1=False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=False -rec.doMuon=True -rec.doCalo=False -rec.doEgamma=False -rec.doMuonCombined=False -rec.doJetMissingETTag=False -rec.doTau=False - - -include ("RecExCond/RecExCommon_flags.py") -rec.AutoConfiguration = ['FieldAndGeo'] -import RecExConfig.AutoConfiguration as auto -auto.ConfigureFromListOfKeys(rec.AutoConfiguration()) - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_muonmax.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_muonmax.py deleted file mode 100644 index 535f924bfe19e53329b7424d9eaaf42d63fc744a..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_RTT_muonmax.py +++ /dev/null @@ -1,25 +0,0 @@ -include ("RecExRecoTest/RecExRecoTest_RTT_common.py") - - -jp.AthenaCommonFlags.PoolESDOutput="muon_ESD.pool.root" -rec.doTrigger=False -#obsolete doAODLVL1False -#rec.doWriteESD=False # uncomment if do not write ESD -rec.doAOD=False -rec.doWriteAOD=False # uncomment if do not write AOD -rec.doWriteTAG=False # uncomment if do not write TAG - - -from RecExConfig.RecFlags import rec -rec.doForwardDet=False -rec.doInDet=False -rec.doMuon=True -rec.doCalo=False - - - -# main jobOption -include ("RecExCommon/RecExCommon_topOptions.py") - - -include ("RecExRecoTest/RecExRecoTest_RTT_common_postOptions.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/diffPoolFilesRERT.sh b/Reconstruction/RecExample/RecExRecoTest/share/diffPoolFilesRERT.sh deleted file mode 100755 index f57d5de074cf2442bee81d686cb6d4d729fab8b9..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/diffPoolFilesRERT.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -diff_files() -{ - if [ "$2" ] - then - v=`echo $AtlasVersion | tail -c2` - packpath=`echo $1 | sed "s#/rel_$v/#/rel_$2/#g"` - for file in *.pool.root - do - for ref in `grep -h "/$file<" $packpath/rttjobinfo.xml | sed "s/\(.\+\)>\(.\+\)<\(.\+\)/\2/g"` - do - if [[ $ref == /castor* ]] - then - ref="root://castoratlas/$ref" - fi - # echo $file $ref - f=diff.$v.$2.txt - diffPoolFiles.py $file $ref &> $f - done - done - fi -} - -if [ "$1" ] -then - v=`echo $AtlasVersion | tail -c2` - for (( i=$v; i>=0; i-- )) - do - echo -n "comparing rel_$v to rel_$i : " - diff_files $1 $i - if [ -e diff.$v.$i.txt ]; then - grep "## Comparison : " diff.$v.$i.txt | sed "s/## Comparison : //g" - else - echo "n/a" - fi - done - for (( i=6; i>$v; i-- )) - do - echo -n "comparing rel_$v to rel_$i : " - diff_files $1 $i - if [ -e diff.$v.$i.txt ]; then - grep "## Comparison : " diff.$v.$i.txt | sed "s/## Comparison : //g" - else - echo "n/a" - fi - done -fi - -exit 0 - diff --git a/Reconstruction/RecExample/RecExRecoTest/share/dumpPoolFileInchunks.sh b/Reconstruction/RecExample/RecExRecoTest/share/dumpPoolFileInchunks.sh deleted file mode 100755 index b38905167d301b4f5e06036b9b87936bbb5f71bc..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/dumpPoolFileInchunks.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -TD=/tmp/$USER/dumprootfile.tmp.$EUID.$$ -if [ ! -z "$TMPDIR" ] -then - TD=$TMPDIR/dumprootfile.tmp.$EUID.$$ -fi - -mkdir -p $TD -echo "using as tempdir $TD" - -Nev=`acmd.py chk-file $1 2>&1 | grep "Nbr Events:" | gawk '{print $3 }'` - -Ident=`basename $1` - -echo "file has $Nev events" -RLAST=49 -RFIRST=0 -RANGE="$RFIRST:$RLAST" - -while [ ! -z $RANGE ] -do - echo dumping range of events of $RANGE - acmd.py dump-root --entries $RANGE $1 | gzip - > dumprootfile.$Ident.range-$RFIRST-$RLAST.log.gz - - RANGE="" - RFIRST=$(( $RFIRST + 50 )) - RLAST=$(( $RLAST + 50 )) - if [ $RFIRST -lt $Nev ] - then - RANGE="$RFIRST:$RLAST" - fi -done - -rm -fr $TD diff --git a/Reconstruction/RecExample/RecExRecoTest/share/esdtocbnt_RTT.py b/Reconstruction/RecExample/RecExRecoTest/share/esdtocbnt_RTT.py deleted file mode 100644 index 7274260c761882a3d4045740f4d472d7fbe55629..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/esdtocbnt_RTT.py +++ /dev/null @@ -1,10 +0,0 @@ -# steering file for ESD->CBNT step -# see myTopOptions.py for more info - -# jp.AthenaCommonFlags.PoolESDInput=["theesdfile"] - -rec.RootNtupleOutput="ntuple_fromESD.root" - -include ("RecExCommon/esdtocbnt.py") - -include("RecExRecoTest/rttchainhack.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/esdtoesd_RTT.py b/Reconstruction/RecExample/RecExRecoTest/share/esdtoesd_RTT.py deleted file mode 100644 index 677a4d49b94c4153ca57092e8a31bc456698abaf..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/esdtoesd_RTT.py +++ /dev/null @@ -1,2 +0,0 @@ -include ("RecExCommon/esdtoesd.py") -include("RecExRecoTest/rttchainhack.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/esdtoesdtocbnt_RTT.py b/Reconstruction/RecExample/RecExRecoTest/share/esdtoesdtocbnt_RTT.py deleted file mode 100644 index 54ed4bbb958759d1676c9964b78b0c326ebebe91..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/esdtoesdtocbnt_RTT.py +++ /dev/null @@ -1,4 +0,0 @@ -jp.AthenaCommonFlags.PoolESDInput=["copy_ESD.pool.root"] -rec.RootNtupleOutput="ntuple_fromESDcopy.root" -include ("RecExCommon/esdtocbnt.py") -include("RecExRecoTest/rttchainhack.py") diff --git a/Reconstruction/RecExample/RecExRecoTest/share/rttchainhack.py b/Reconstruction/RecExample/RecExRecoTest/share/rttchainhack.py deleted file mode 100644 index 6383a16deebf82383ab67938600024397f6714e9..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/rttchainhack.py +++ /dev/null @@ -1,10 +0,0 @@ -# This hack is to make the subsequent EventSelector.InputCollection lines dummy (D. Rousseau) - -class DummyEventSelector : - InputCollections = [] -class DummyServiceMgr : - EventSelector = DummyEventSelector -# Create a dummy ServiceMgr -ServiceMgr = DummyServiceMgr() - -# end of hack diff --git a/Reconstruction/RecExample/RecExRecoTest/share/run_memleak_rert.sh b/Reconstruction/RecExample/RecExRecoTest/share/run_memleak_rert.sh deleted file mode 100755 index 28e003cf405c07539b5e755427ea0e5c122bed77..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/run_memleak_rert.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -echo "running esdReco_memleak with CMTCONFIG $CMTCONFIG" -if [[ $CMTCONFIG = x86_64-* ]]; then - echo "64 bit : igprof" - export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/afs/cern.ch/atlas/offline/external/igprof/5.9.2/${CMTCONFIG}/lib - export PATH=${PATH}:/afs/cern.ch/atlas/offline/external/igprof/5.9.2/${CMTCONFIG}/bin - igprof -mp -z -t python athena.py -c "jp.AthenaCommonFlags.EvtMax=-1; rec.doCBNT=False ;jp.AthenaCommonFlags.FilesInput=['/afs/cern.ch/atlas/project/rig/referencefiles/dataStreams_high_mu/high_mu-data11_7TeV.00179725.physics_JetTauEtmiss.merge.RAW._lb0021.data'] " RecExRecoTest/RecExRecoTest_RTT_esd.py --stdcmalloc - mkdir -p web/data - cp /afs/cern.ch/atlas/offline/external/igprof/5.9.2/${CMTCONFIG}/bin/igprof-navigator web - igprof-analyse --sqlite -d -v -g -r MEM_LIVE igprof.*.gz | sqlite3 web/data/igreport_total.sql3 -else - echo "32 bit leak check execute" - athena.py -c "jp.AthenaCommonFlags.EvtMax=-1; rec.doCBNT=False ;jp.AthenaCommonFlags.FilesInput=['/afs/cern.ch/atlas/project/rig/referencefiles/dataStreams_high_mu/high_mu-data11_7TeV.00179725.physics_JetTauEtmiss.merge.RAW._lb0021.data'] " RecExRecoTest/RecExRecoTest_RTT_esd.py --leak-check-execute -fi diff --git a/Reconstruction/RecExample/RecExRecoTest/share/slurpRecoRTTTests.pl b/Reconstruction/RecExample/RecExRecoTest/share/slurpRecoRTTTests.pl deleted file mode 100755 index f5d98a4cbdfa1ca3785961a88efaf89f57a8f58d..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/share/slurpRecoRTTTests.pl +++ /dev/null @@ -1,179 +0,0 @@ -#!/usr/bin/perl - -# # #!/usr/bin/env perl - -use strict; - -use Storable; -use Digest::MD5 qw(md5_hex); - -my %rttHashArray = (); -my %pdate = (); -my %ptag = (); -my %savannahArray = (); -my %savannahSummary = (); -my %FPESummary = (); - -my %rttPackageInfos = (); -my $now=""; -my @packages = (); - -my % checks = (); - -sub sortMessages -{ - my ( $TMPRef ) = @_; - my %TArray = (); - my ( @TMP ) = @$TMPRef; - foreach my $mline (@TMP) - { - $mline =~ s/\s+$//; - if ( ! exists($TArray{$mline}) ) - { - $TArray{$mline} = 0; - } - $TArray{$mline} += 1; - } - return %TArray; -} - -sub processLog -{ - my ( $file ) = @_; - - open(FILE,"<$file") || die "Could not open $file !!\n\n"; - my @lines=<FILE>; - close(FILE); - - my $stage="athena"; - $checks{'Stage'}{'result'}="athena"; - - foreach my $line ( @lines ) - { - for my $href ( keys %checks ) - { - if ( $line =~ /$checks{$href}{'test'}/ ) - { - my $r0=$line; - $r0 =~ s/$checks{$href}{'test'}/\1/g; - $r0 =~ s/\s+$//; - if ( $href eq "Stage" ) - { - my $r1=$checks{$href}{'result'}; - # for Reco_trf stages, we actually find something here, reset to empty string - $r1="" if ( $r1 eq "athena" ); - # print "S : $href : $stage : $r1 + $r0\n" ; - $checks{$href}{'result'}="$r1<$r0>"; - $stage=$r0; - } - else - { - # print "R0 : $href : $stage : $r0\n" ; - if ( $href =~ m/^#/ ) - { - if ( ! exists($checks{$href}{'result'}{$stage}{$r0}) ) - { - $checks{$href}{'result'}{$stage}{$r0} = 0; - } - $checks{$href}{'result'}{$stage}{$r0} += 1; - } - else - { - my $r1=$checks{$href}{'result'}{$stage}; - # print "R1 : $href : $stage : $r1 + $r0\n" ; - $checks{$href}{'result'}{$stage}="$r1<$r0>"; - } - } - } - } - } - if ( $checks{ "CoreDump" }{'result'}{$stage} ne "" ) - { - my $r0="\n"; - my $r1=76; - foreach my $line ( @lines ) - { - $r1 = 75 if ( $line =~ m/^Core dump from CoreDumpSvc on / ); - if ( $r1 > 0 && $r1 < 76 ) - { - $r0 = $r0 . ">>>>" . $line; - $r1--; - } - } - $checks{ "CoreDump" }{'result'}{$stage} = $r0; - } - return scalar(@lines); -} - -$checks{ "ReturnCode" } = { test => '^Py:Athena\s+INFO leaving with code(.+)$' }; -$checks{ "FPEAuditor"} = { test => '^FPEAuditor\s+WARNING FPE (.+)$' }; -$checks{ "Stage" } = { test => '^Py:[A-Z].* *INFO Executing ([A-Za-z]*)\:.+$' }; -$checks{ "Events" } = { test => '^Py:PerfMonSvc *INFO Events processed: (\d+)' }; -$checks{ "Algorithms" } = { test => '^Py:PerfMonSvc *INFO job had (\[.*\]) algorithms' }; -$checks{ "Memory1" } = { test => '^Py:PerfMonSvc *INFO *first-evt vmem: (.*)' }; -$checks{ "Memory2" } = { test => '^Py:PerfMonSvc *INFO *10th -evt vmem: (.*)' }; -$checks{ "Memory3" } = { test => '^Py:PerfMonSvc *INFO *last -evt vmem: (.*)' }; -$checks{ "MemLeak" } = { test => '^Py:PerfMonSvc *INFO *.* fitted vmem-slope \(\d* points\): (.*)' }; -$checks{ "CPU" } = { test => '^Py:PerfMonSvc *INFO Si2k:.*>: (.*)' }; -$checks{ "Chrono" } = { test => '^ChronoStatSvc *INFO Time User : Tot=(.*)\s+#= 1$' }; -$checks{ "CoreDump" } = { test => '^Core dump from CoreDumpSvc on ' }; -$checks{ "#VERBOSE" } = { test => '^(\S+)\s+VERBOSE .+$' }; -$checks{ "#DEBUG" } = { test => '^(\S+)\s+DEBUG .+$' }; -$checks{ "#INFO" } = { test => '^(\S+)\s+INFO .+$' }; -$checks{ "#WARNING" } = { test => '^(\S+)\s+WARNING .+$' }; -$checks{ "#RECOVERABLE" } = { test => '^(\S+)\s+RECOVERABLE .+$' }; -$checks{ "#ERROR" } = { test => '^(\S+)\s+ERROR .+$' }; -$checks{ "#FATAL" } = { test => '^(\S+)\s+FATAL .+$' }; - -my $file="/afs/cern.ch/atlas/project/RTT/prod/Results/rtt_j_r/rel_3/devval/build/i686-slc5-gcc43-opt/offline/RecJobTransformTests/amitag_q122/amitag_q122_log"; -if ( $#ARGV >= 0 ) -{ - $file = $ARGV[0]; -} -print " processing logfile $file\n"; -my $lines = processLog($file); -print " done processing logfile with $lines lines\n"; - -my $logfilename="parsedlogfile.txt"; -open(LOGFILE,">" . $logfilename); - - -print LOGFILE ":LogFileName : $file\n"; - -print LOGFILE ":Stages : $checks{'Stage'}{'result'}\n"; -for my $s ( split(/>/, $checks{'Stage'}{'result'}) ) -{ - $s =~ s/^<//; - $s =~ s/\s+$//; - print LOGFILE "Stage : $s\n"; - for my $href ( keys %checks ) - { - if ( $href ne "Stage" ) - { - if ( $href =~ m/^#/ ) - { - print LOGFILE " $s " . substr($href,1) . "\n"; - my $t=0; - my $tt=0; - for my $m ( sort { $checks{$href}{'result'}{$s}{$b} <=> $checks{$href}{'result'}{$s}{$a} } keys %{ $checks{$href}{'result'}{$s} } ) - { - if ( $tt < 10 ) - { - print LOGFILE " $checks{$href}{'result'}{$s}{$m} $m\n"; - $tt++; - } - $t += $checks{$href}{'result'}{$s}{$m}; - } - if ( $t > 0 ) - { - print LOGFILE " $t " . substr($href,1) . "\n"; - } - } - else - { - print LOGFILE " $s $href $checks{$href}{'result'}{$s}\n"; - } - } - } -} -exit(0); diff --git a/Reconstruction/RecExample/RecExRecoTest/test/RecExRecoTest_TestConfiguration.xml b/Reconstruction/RecExample/RecExRecoTest/test/RecExRecoTest_TestConfiguration.xml deleted file mode 100755 index 5c2920c3bbbf9daca40537eaa1ee7edc224668aa..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecExRecoTest/test/RecExRecoTest_TestConfiguration.xml +++ /dev/null @@ -1,349 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> - -<unifiedTestConfiguration> - - <atn> - - <TEST name="aaaempty" type="athena" suite="aaaempty"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_empty.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="forward" type="athena" suite="forward"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_forwarddet.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="calo" type="athena" suite="calo"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_calo.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="id" type="athena" suite="id"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_id.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="muon" type="athena" suite="muon"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_muon.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="idmuon" type="athena" suite="idmuon"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_idmuon.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="idcalo" type="athena" suite="idcalo"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_idcalo.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="idmuoncalo" type="athena" suite="idmuoncalo"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_idmuoncalo.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="idcaloegamma" type="athena" suite="idcaloegamma"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_idcaloegamma.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="idmuoncalomuoncomb" type="athena" suite="idmuoncalomuoncomb"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_idmuoncalomuoncomb.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="calomax" type="athena" suite="calomax"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5 ; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_calomax.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlsa.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="idmuonmax" type="athena" suite="idmuonmax"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_idmuonmax.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="idcalomax" type="athena" suite="idcalomax"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_idcalomax.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="RECOSHIFT_esd" type="athena" suite="esd"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True " AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_esd.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - </TEST> - - <TEST name="esdtoesd" type="athena" suite="esd"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True ; rec.noESDTrigger=True " AthenaCommon/MemTraceInclude.py RecExCommon/esdtoesd.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - </TEST> - - <TEST name="esdtoesdwithreco" type="athena" suite="esd"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=5; rec.doDetailedAuditor=True ; rec.doNameAuditor=True ; rec.noESDTrigger=True ; rec.doESD.set_Value_and_Lock(True) ; jp.AthenaCommonFlags.PoolESDOutput='reco_ESD.pool.root' " AthenaCommon/MemTraceInclude.py RecExCommon/esdtoesd.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - </TEST> - - <TEST name="RECOSHIFT_esdzpileup" type="athena" suite="esdpileup"> - <options_atn>-c "jp.AthenaCommonFlags.EvtMax=2; jp.AthenaCommonFlags.SkipEvents=3 ; rec.AutoConfiguration=['everything']; rec.doDetailedAuditor=True ; rec.doNameAuditor=True ; jp.AthenaCommonFlags.PoolRDOInput=['root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/mc/mc15_13TeV.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e4032_s2608_s2183_r7011/RDO.06336725._000001.pool.root.1']" AthenaCommon/MemTraceInclude.py RecExRecoTest/RecExRecoTest_RTT_esdlowlumi.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>RecExCommon_links.sh</prescript> - <prescript>source ${ATN_PACKAGE}/test/atlascerngroupdisk_enviro.sh</prescript> - </TEST> - - <TEST name="rawtoesd_data_notrig" type="athena" suite="RecRecoData"> - <options_atn>-c 'jp.AthenaCommonFlags.FilesInput=["/afs/cern.ch/atlas/project/rig/referencefiles/dataStreams_high_mu/data12_8TeV/data12_8TeV.00209109.physics_JetTauEtmiss.merge.RAW._lb0186._SFO-1._0001.1"];rec.doTrigger.set_Value_and_Lock(False);rec.doDPD.set_Value_and_Lock(True);rec.doNameAuditor=True;jp.AthenaCommonFlags.PoolESDOutput="data_ESD.pool.root"' RecExCommon/rdotoesdnotrigger.py</options_atn> - <timelimit>30</timelimit> - <author> Xiaohu Sun </author> - <mailto> atlas.rig@cern.ch </mailto> - <prescript>rm -f $ATN_WORK_AREA/*.pool.root; env > env.txt</prescript> - </TEST> - - </atn> - - <kv/> - - <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt"> - <rttContactPerson>Xiaohu Sun (Xiaohu.Sun@cern.ch)</rttContactPerson> - <mailto>atlas.rig@cern.ch</mailto> - <refRelease>10.0.0</refRelease> - - <jobList> - <classification> - <displayClass>OfflineValidation</displayClass> - <displayProcess>Reco</displayProcess> - <displayComponent>Det-Combined</displayComponent> - </classification> - - <!-- XS: please update to mc15 --> - <athena userJobId="mc12_emptyReco"> - <doc>Test almost empty event loop on default MC12 </doc> - <commandLineFlags> - jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"] - </commandLineFlags> - <options>RecExRecoTest_RTT_empty</options> - <group>RecExCommon</group> - <queue>long</queue> - </athena> - - <athena userJobId="mc12_idReco"> - <doc>Test reco only ID only on default MC12 </doc> - <commandLineFlags> - jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"] - </commandLineFlags> - <options>RecExRecoTest_RTT_id</options> - <group>RecExCommon</group> - <queue>long</queue> - </athena> - - <athena userJobId="mc12_caloReco"> - <doc>Test reco only calo only on default MC12 </doc> - <commandLineFlags> - jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"] - </commandLineFlags> - <options>RecExRecoTest_RTT_calo</options> - <group>RecExCommon</group> - <queue>long</queue> - </athena> - - <athena userJobId="mc12_muonReco"> - <doc>Test reco only muon only on default MC12 </doc> - <commandLineFlags> - jp.AthenaCommonFlags.EvtMax=300;jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"] - </commandLineFlags> - <options>RecExRecoTest_RTT_muon</options> - <group>RecExCommon</group> - <queue>long</queue> - </athena> - - <athena userJobId="mc12_outputlevel_debugReco"> - <doc>Test reco with outputlevel debug to check length of logfile and number of messages</doc> - <commandLineFlags> - jp.AthenaCommonFlags.EvtMax=50;rec.doWriteESD=False;rec.OutputLevel=DEBUG;rec.doFloatingPointException=True;jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"] - </commandLineFlags> - <options>RecExRecoTest_RTT_esd</options> - <group>RecExCommon</group> - <queue>long</queue> - <action position="8" runInAtlasEnv="yes"> - <modulename>RttLibraryTools</modulename> - <testname>ExeRunner</testname> - <arg> - <argname>exeName</argname> - <argvalue>tail</argvalue> - </arg> - <arg> - <argname>exeParamString</argname> - <argvalue>--lines=500 mc12_outputlevel_debugReco_log > mc12_outputlevel_debugReco_log.txt</argvalue> - </arg> - </action> - <action position="9" runInAtlasEnv="yes"> - <modulename>RttLibraryTools</modulename> - <testname>ExeRunner</testname> - <arg> - <argname>exeName</argname> - <argvalue>bzip2</argvalue> - </arg> - <arg> - <argname>exeParamString</argname> - <argvalue>mc12_outputlevel_debugReco_log</argvalue> - </arg> - </action> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="mc12_outputlevel_verboseReco"> - <doc>Test reco with outputlevel verbose to check length of logfile and number of messages</doc> - <commandLineFlags> - jp.AthenaCommonFlags.EvtMax=50;rec.doWriteESD=False;rec.OutputLevel=VERBOSE;rec.doFloatingPointException=True;jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/phys-rig/pileupSamples/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700/RDO.01177879._000001.pool.root.1"] - </commandLineFlags> - <options>RecExRecoTest_RTT_esd</options> - <group>RecExCommon</group> - <queue>long</queue> - <action position="8" runInAtlasEnv="yes"> - <modulename>RttLibraryTools</modulename> - <testname>ExeRunner</testname> - <arg> - <argname>exeName</argname> - <argvalue>tail</argvalue> - </arg> - <arg> - <argname>exeParamString</argname> - <argvalue>--lines=500 mc12_outputlevel_verboseReco_log > mc12_outputlevel_verboseReco_log.txt</argvalue> - </arg> - </action> - <action position="9" runInAtlasEnv="yes"> - <modulename>RttLibraryTools</modulename> - <testname>ExeRunner</testname> - <arg> - <argname>exeName</argname> - <argvalue>bzip2</argvalue> - </arg> - <arg> - <argname>exeParamString</argname> - <argvalue>mc12_outputlevel_verboseReco_log</argvalue> - </arg> - </action> - <alwaysRunPostProc /> - </athena> - - <jobTransform userJobId="data11_7TeV_esdReco"> - <doc>Test reco up to ESD on high_mu data11</doc> - <jobTransformJobName>RecExRecoTest_RTT_data11_7TeV_high_mu</jobTransformJobName> - <jobTransformCmd> - athena.py -c 'jp.AthenaCommonFlags.EvtMax=-1;jp.AthenaCommonFlags.FilesInput=["/afs/cern.ch/atlas/project/rig/referencefiles/dataStreams_high_mu/high_mu-data11_7TeV.00179725.physics_JetTauEtmiss.merge.RAW._lb0021.data"];rec.doNameAuditor=True' RecExCommon/rdotoesdnotrigger.py - </jobTransformCmd> - <group>RecExReco</group> - <queue>long</queue> - </jobTransform> - - <jobTransform userJobId="data12_8TeV_esdReco"> - <doc>Test reco up to ESD on high_mu data12</doc> - <jobTransformJobName>RecExRecoTest_RTT_data12_7TeV_high_mu</jobTransformJobName> - <jobTransformCmd> - athena.py -c 'jp.AthenaCommonFlags.EvtMax=-1;jp.AthenaCommonFlags.FilesInput=["/afs/cern.ch/atlas/project/rig/referencefiles/dataStreams_high_mu/data12_8TeV/data12_8TeV.00209109.physics_JetTauEtmiss.merge.RAW._lb0186._SFO-1._0001.1"];rec.doNameAuditor=True' RecExCommon/rdotoesdnotrigger.py - </jobTransformCmd> - <group>RecExReco</group> - <queue>long</queue> - </jobTransform> - - </jobList> - - <jobGroups> - <jobGroup name="AthenaRecExCommon" parent="Athena"> - <keepFilePattern>*.root</keepFilePattern> - <keepFilePattern>*.perfmon.pdf</keepFilePattern> - <keepFilePattern>*.perfmon.summary.txt</keepFilePattern> - <keepFilePattern>*.pmon.gz</keepFilePattern> - <keepFilePattern>*.txt</keepFilePattern> - <keepFilePattern>*.bz2</keepFilePattern> - <keepFilePattern>logExtract.txt</keepFilePattern> - <keepFilePattern>memoryLeak.txt</keepFilePattern> - <keepFilePattern>SGAud*.out</keepFilePattern> - <keepFilePattern>dumprootfile.*.log.gz</keepFilePattern> - - <auxFilePattern>slurpRecoRTTTests.pl</auxFilePattern> - <auxFilePattern>dumpPoolFileInchunks.sh</auxFilePattern> - <auxFilePattern>diffPoolFilesRERT.sh</auxFilePattern> - - <action position="1" runInAtlasEnv="yes"> - <modulename>PostProcessRecoRTTTests</modulename> - <testname>PostProcessRecoRTTTests</testname> - </action> - </jobGroup> - - <jobGroup name="RecExReco" parent="Transform"> - <keepFilePattern>data/*</keepFilePattern> - <keepFilePattern>igprof.*.gz</keepFilePattern> - - <keepFilePattern>*.root</keepFilePattern> - <keepFilePattern>dumprootfile.*.log.gz</keepFilePattern> - - <keepFilePattern>*.txt</keepFilePattern> - <keepFilePattern>*.bz2</keepFilePattern> - <keepFilePattern>*.html</keepFilePattern> - <keepFilePattern>*_log.bz2</keepFilePattern> - - <auxFilePattern>run_memleak_rert.sh</auxFilePattern> - <auxFilePattern>slurpRecoRTTTests.pl</auxFilePattern> - <auxFilePattern>dumpPoolFileInchunks.sh</auxFilePattern> - <auxFilePattern>diffPoolFilesRERT.sh</auxFilePattern> - - <action position="1"> - <modulename>PostProcessRecoRTTTests</modulename> - <testname>PostProcessRecoRTTTests</testname> - </action> - - </jobGroup> - </jobGroups> - - </rtt> -</unifiedTestConfiguration> diff --git a/Reconstruction/RecExample/RecExTB/share/RecExTB_Combined_2004_jobOptions.py b/Reconstruction/RecExample/RecExTB/share/RecExTB_Combined_2004_jobOptions.py index f0a915d419c835f0eb05dc1f53c5272d81bc4e2d..30c36af111d27c7fa10905ee7ac3344707c6c05a 100755 --- a/Reconstruction/RecExample/RecExTB/share/RecExTB_Combined_2004_jobOptions.py +++ b/Reconstruction/RecExample/RecExTB/share/RecExTB_Combined_2004_jobOptions.py @@ -522,7 +522,6 @@ if doLAr or doTile: jobproperties.CaloCellFlags.doLArSporadicMasking = False jobproperties.CaloCellFlags.doLArCellEmMisCalib = False jobproperties.CaloCellFlags.doPedestalCorr = False - jobproperties.CaloCellFlags.doLArRecalibration = False jobproperties.CaloCellFlags.doDeadCellCorr = False include( "CaloTBRec/CaloTBRec_H8_Cell_jobOptions.py" ) diff --git a/Reconstruction/RecExample/RecExTB/share/RecExTB_H6_jobOptions.py b/Reconstruction/RecExample/RecExTB/share/RecExTB_H6_jobOptions.py index db2360ac3bf9cbb68d7c655d61f546ec34be0901..87d39914c09a195b8847f743323d8daa150838c3 100755 --- a/Reconstruction/RecExample/RecExTB/share/RecExTB_H6_jobOptions.py +++ b/Reconstruction/RecExample/RecExTB/share/RecExTB_H6_jobOptions.py @@ -238,7 +238,6 @@ jobproperties.CaloCellFlags.doLArHVCorr = False jobproperties.CaloCellFlags.doLArSporadicMasking = False jobproperties.CaloCellFlags.doLArCellEmMisCalib = False jobproperties.CaloCellFlags.doPedestalCorr = False -jobproperties.CaloCellFlags.doLArRecalibration = False jobproperties.CaloCellFlags.doLArBadFebMasking = False jobproperties.CaloCellFlags.doLArDeadOTXCorr = False diff --git a/Reconstruction/RecJiveXML/CMakeLists.txt b/Reconstruction/RecJiveXML/CMakeLists.txt index e8bf93c59fb9cfc330db550925149dd5de375513..867af5e2690a0370cda248bb097b2d04ca825fd2 100644 --- a/Reconstruction/RecJiveXML/CMakeLists.txt +++ b/Reconstruction/RecJiveXML/CMakeLists.txt @@ -1,24 +1,8 @@ -################################################################################ -# Package: RecJiveXML -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecJiveXML ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthenaBaseComps - Tracking/TrkEvent/TrkParameters - graphics/JiveXML - PRIVATE - Calorimeter/CaloEvent - Control/Navigation - GaudiKernel - PhysicsAnalysis/JetTagging/JetTagEvent - Reconstruction/Jet/JetEvent - Reconstruction/MissingETEvent - Tracking/TrkEvent/TrkTrack ) - # External dependencies: find_package( CLHEP ) @@ -27,9 +11,7 @@ atlas_add_component( RecJiveXML src/*.cxx src/components/*.cxx INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps TrkParameters JiveXMLLib CaloEvent Navigation GaudiKernel JetTagEvent JetEvent MissingETEvent TrkTrack ) + LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps TrkParameters JiveXMLLib CaloEvent Navigation JetTagEvent JetEvent MissingETEvent TrkTrack ) # Install files from the package: -atlas_install_headers( RecJiveXML ) atlas_install_joboptions( share/*.py ) - diff --git a/Reconstruction/RecJobTransforms/CMakeLists.txt b/Reconstruction/RecJobTransforms/CMakeLists.txt index d5819bc9aad7f0f97cda906b245dc3532e7831d7..85424aa442489cd450c201684af59938a13c0f1a 100644 --- a/Reconstruction/RecJobTransforms/CMakeLists.txt +++ b/Reconstruction/RecJobTransforms/CMakeLists.txt @@ -1,15 +1,8 @@ -################################################################################ -# Package: RecJobTransforms -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecJobTransforms ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Tools/PyJobTransforms - Tools/PyJobTransformsCore ) - # Install python modules atlas_install_python_modules( python/*.py ) # Install RDOtoRDOtrigger job opts with flake8 check diff --git a/Reconstruction/RecJobTransforms/scripts/Reco_tf.py b/Reconstruction/RecJobTransforms/scripts/Reco_tf.py index 958cb866868f1dc8dd3aab592ce46d9583747ea7..759fb5f4372138ca35853e9a71ef4f5733ccd553 100755 --- a/Reconstruction/RecJobTransforms/scripts/Reco_tf.py +++ b/Reconstruction/RecJobTransforms/scripts/Reco_tf.py @@ -65,9 +65,9 @@ def getTransform(RAWtoALL=False): # For digi step - make sure we can add the digitisation/simulation arguments # before we add this substep; allows Reco_tf to work without AtlasSimulation try: - from SimuJobTransforms.simTrfArgs import addForwardDetTrfArgs, addBasicDigiArgs, addPileUpTrfArgs, addCommonSimDigTrfArgs + from SimuJobTransforms.simTrfArgs import addForwardDetTrfArgs, addPileUpTrfArgs, addCommonSimDigTrfArgs from SimuJobTransforms.SimTransformUtils import addDigitizationSubstep - addBasicDigiArgs(trf.parser) + # NB "Basic Digi Args" are added by the overlay setup below, so no need for addBasicDigiArgs here addForwardDetTrfArgs(trf.parser) addPileUpTrfArgs(trf.parser) addCommonSimDigTrfArgs(trf.parser) diff --git a/Reconstruction/RecTPCnv/CMakeLists.txt b/Reconstruction/RecTPCnv/CMakeLists.txt index 981e6944481552bf8776d9ac233f8ad3b93c4e40..a61c1ef153555d8fc7232ffc2520b598e1d51c56 100644 --- a/Reconstruction/RecTPCnv/CMakeLists.txt +++ b/Reconstruction/RecTPCnv/CMakeLists.txt @@ -1,28 +1,8 @@ -################################################################################ -# Package: RecTPCnv -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( RecTPCnv ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/DataModelAthenaPool - Control/StoreGate - Database/AthenaPOOL/AthenaPoolCnvSvc - Event/EventCommonTPCnv - GaudiKernel - PhysicsAnalysis/AnalysisCommon/ParticleEventTPCnv - Reconstruction/MissingETEvent - Reconstruction/MuonIdentification/muonEvent - Tracking/TrkEvent/TrkMaterialOnTrack - Tracking/TrkEventCnv/TrkEventTPCnv - PRIVATE - AtlasTest/TestTools - Control/AthAllocators - Control/AthenaKernel - Database/AthenaPOOL/RootConversions ) - # External dependencies: find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) @@ -30,21 +10,20 @@ find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) atlas_add_tpcnv_library( RecTPCnv src/*.cxx PUBLIC_HEADERS RecTPCnv - PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} DataModelAthenaPoolLib StoreGateLib SGtests AthenaPoolCnvSvcLib EventCommonTPCnv GaudiKernel ParticleEventTPCnv MissingETEvent muonEvent TrkMaterialOnTrack TrkEventTPCnv TestTools AthAllocators AthenaKernel RootConversions ) + LINK_LIBRARIES AthenaPoolCnvSvcLib CxxUtils DataModelAthenaPoolLib EventCommonTPCnv GaudiKernel MissingETEvent ParticleEventTPCnv StoreGateLib TrkEventTPCnv TrkMaterialOnTrack muonEvent + PRIVATE_LINK_LIBRARIES AthenaKernel RootConversions ) atlas_add_dictionary( RecTPCnvDict RecTPCnv/RecTPCnvDict.h RecTPCnv/selection.xml - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} DataModelAthenaPoolLib StoreGateLib SGtests AthenaPoolCnvSvcLib EventCommonTPCnv GaudiKernel ParticleEventTPCnv MissingETEvent muonEvent TrkMaterialOnTrack TrkEventTPCnv TestTools AthAllocators AthenaKernel RootConversions RecTPCnv ) + LINK_LIBRARIES RecTPCnv ) atlas_add_dictionary( OLD_RecTPCnvDict RecTPCnv/RecTPCnvDict.h RecTPCnv/OLD_selection.xml - INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} DataModelAthenaPoolLib StoreGateLib SGtests AthenaPoolCnvSvcLib EventCommonTPCnv GaudiKernel ParticleEventTPCnv MissingETEvent muonEvent TrkMaterialOnTrack TrkEventTPCnv TestTools AthAllocators AthenaKernel RootConversions RecTPCnv ) + LINK_LIBRARIES RecTPCnv ) +# Tests in the package: atlas_add_test( CaloEnergyCnv_p1_test SOURCES test/CaloEnergyCnv_p1_test.cxx diff --git a/Reconstruction/RecoAlgs/CaloRingerAlgs/CMakeLists.txt b/Reconstruction/RecoAlgs/CaloRingerAlgs/CMakeLists.txt index 835e29fa66977bcbebe3b65164f649d39e092a7a..a53a963189824f3520755d9eb9e70450ca62c01e 100644 --- a/Reconstruction/RecoAlgs/CaloRingerAlgs/CMakeLists.txt +++ b/Reconstruction/RecoAlgs/CaloRingerAlgs/CMakeLists.txt @@ -1,32 +1,14 @@ -################################################################################ -# Package: CaloRingerAlgs -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( CaloRingerAlgs ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - GaudiKernel - PRIVATE - Calorimeter/CaloEvent - Control/AthContainers - Control/AthenaBaseComps - Control/AthenaKernel - Control/StoreGate - Event/xAOD/xAODBase - Event/xAOD/xAODCaloRings - Event/xAOD/xAODCore - Reconstruction/RecoTools/CaloRingerTools ) - # Component(s) in the package: atlas_add_component( CaloRingerAlgs src/*.cxx src/components/*.cxx - LINK_LIBRARIES GaudiKernel CaloEvent AthContainers AthenaBaseComps AthenaKernel StoreGateLib SGtests xAODBase xAODCaloRings xAODCore CaloRingerToolsLib ) + LINK_LIBRARIES GaudiKernel CaloEvent AthContainers AthenaBaseComps AthenaKernel StoreGateLib xAODBase xAODCaloRings xAODCore CaloRingerToolsLib ) # Install files from the package: -atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) atlas_install_joboptions( share/*.py ) -atlas_install_runtime( test/CaloRingerAlgs_TestConfiguration.xml share/NeuralNetTests_Ref.txt ) - diff --git a/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerAlgorithmBuilder.py b/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerAlgorithmBuilder.py index 0b844c1586a7f6b431eae348eee12dac175debaa..b44aabc82d4df79e4be504f53b163494e84ace0c 100644 --- a/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerAlgorithmBuilder.py +++ b/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerAlgorithmBuilder.py @@ -4,23 +4,18 @@ import traceback from . import CaloRingerAlgsConf # We use egammaRec.Factories as a helper to instantiate CaloRingerAlgorithm # handle -from GaudiKernel.GaudiHandles import PublicToolHandle, PublicToolHandleArray, GaudiHandle, GaudiHandleArray +from GaudiKernel.GaudiHandles import PublicToolHandleArray, GaudiHandle, GaudiHandleArray from egammaRec.Factories import AlgFactory, FcnWrapper from AthenaCommon.Resilience import treatException from AthenaCommon.Logging import logging from RecExConfig.Configured import Configured -from AthenaCommon.Include import include from AthenaCommon import CfgMgr from RecExConfig.RecFlags import rec from egammaRec.egammaRecFlags import jobproperties -from CaloRingerAlgs.CaloRingerKeys import * -from egammaRec import egammaKeys +from CaloRingerAlgs import CaloRingerKeys as ringer -from CaloRingerTools.CaloRingerToolsConf import Ringer__CaloRingsBuilder, \ - Ringer__CaloAsymRingsBuilder, \ - Ringer__CaloRingerElectronsReader, \ - Ringer__CaloRingerPhotonsReader +from CaloRingerTools.CaloRingerToolsConf import Ringer__CaloRingsBuilder, Ringer__CaloAsymRingsBuilder # noqa: F401 mlog = logging.getLogger( 'CaloRingerAlgorithmBuilder.py' ) mlog.info("Entering") @@ -54,7 +49,7 @@ def checkBuildElectronCaloRings(): mlog.info("Turning off ringer algorithm electron reconstruction since not doing ESD.") caloRingerFlags.buildElectronCaloRings = False return False - if not inputAvailable(inputElectronType(), inputElectronKey()): + if not inputAvailable(ringer.inputElectronType(), ringer.inputElectronKey()): if not jobproperties.egammaRecFlags.doEgammaCaloSeeded(): mlog.warning(("Requested to build ElectronCaloRings but egamma" " calo seeded is off. Deactivating ElectronCaloRings and electron selection.") @@ -83,10 +78,10 @@ def checkDoElectronIdentification(): asked to run electron identification.""" if caloRingerFlags.doElectronIdentification(): if not caloRingerFlags.buildElectronCaloRings(): - if not ( inputAvailable(outputCaloRingsType(), outputElectronCaloRingsKey()) or \ - inputAvailable(outputCaloRingsType(), outputElectronCaloAsymRingsKey()) ) or \ - not ( inputAvailable(outputRingSetType(), outputElectronRingSetsKey()) or \ - inputAvailable(outputRingSetType(), outputElectronAsymRingSetsKey()) ): + if not ( inputAvailable(ringer.outputCaloRingsType(), ringer.outputElectronCaloRingsKey()) or \ + inputAvailable(ringer.outputCaloRingsType(), ringer.outputElectronCaloAsymRingsKey()) ) or \ + not ( inputAvailable(ringer.outputRingSetType(), ringer.outputElectronRingSetsKey()) or \ + inputAvailable(ringer.outputRingSetType(), ringer.outputElectronAsymRingSetsKey()) ): mlog.warning(("Requested to do Electron identification using " "Ringer discrimination, but one or more of the Ringer needed " @@ -117,7 +112,7 @@ def checkBuildPhotonCaloRings(): mlog.info("Turning off ringer algorithm photon reconstruction since not doing ESD.") caloRingerFlags.buildPhotonCaloRings = False return False - if not inputAvailable(inputPhotonType(), inputPhotonKey()): + if not inputAvailable(ringer.inputPhotonType(), ringer.inputPhotonKey()): # Deadtivate photon calo rings if egamma calo seeded is off: if not jobproperties.egammaRecFlags.doEgammaCaloSeeded(): @@ -148,10 +143,10 @@ def checkDoPhotonIdentification(): asked to run electron identification.""" if caloRingerFlags.doPhotonIdentification(): if not caloRingerFlags.buildPhotonCaloRings(): - if not ( inputAvailable(outputCaloRingsType(), outputPhotonCaloRingsKey()) or \ - inputAvailable(outputCaloRingsType(), outputPhotonCaloAsymRingsKey()) ) or \ - not ( inputAvailable(outputRingSetType(), outputPhotonRingSetsKey()) or \ - inputAvailable(outputRingSetType(), outputPhotonAsymRingSetsKey()) ): + if not ( inputAvailable(ringer.outputCaloRingsType(), ringer.outputPhotonCaloRingsKey()) or \ + inputAvailable(ringer.outputCaloRingsType(), ringer.outputPhotonCaloAsymRingsKey()) ) or \ + not ( inputAvailable(ringer.outputRingSetType(), ringer.outputPhotonRingSetsKey()) or \ + inputAvailable(ringer.outputRingSetType(), ringer.outputPhotonAsymRingSetsKey()) ): mlog.warning(("Requested to do Photon identification using " "Ringer discrimination, but one or more of the Ringer needed " @@ -309,9 +304,8 @@ def getSelectors(inputReaders): def postponeEgammaLock(ringerAlg): "Postpone egamma locker tool to execute after the last tool on toolList" - from AthenaCommon.AlgSequence import AlgSequence, dumpSequence + from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() - from egammaRec.egammaLocker import egammaLocker # Make sure we add it before streams: foundRingerAlg = False foundEgammaLocker = False @@ -423,9 +417,9 @@ class CaloRingerAlgorithmBuilder ( Configured ): "without readers.")) if caloRingerFlags.buildCaloRingsOn(): - self._eventOutputs = { outputCaloRingsType() : \ + self._eventOutputs = { ringer.outputCaloRingsType() : \ getCaloRingerOutputs(self._caloRingerAlg.inputReaderTools,addRingSetsContainers=False), \ - outputRingSetType() : \ + ringer.outputRingSetType() : \ getCaloRingerOutputs(self._caloRingerAlg.inputReaderTools,addCaloRingsContainers=False) \ } self._output.update(self._eventOutputs) @@ -435,15 +429,15 @@ class CaloRingerAlgorithmBuilder ( Configured ): if not self.ignoreExistingDataObject() \ and ( ( caloRingerFlags.buildElectronCaloRings() and \ - ( inputAvailable(outputCaloRingsType(), outputElectronCaloRingsKey()) or \ - inputAvailable(outputCaloRingsType(), outputElectronCaloAsymRingsKey()) ) or \ - ( inputAvailable(outputRingSetType(), outputElectronRingSetsKey()) or \ - inputAvailable(outputRingSetType(), outputElectronAsymRingSetsKey()) ) ) \ + ( inputAvailable(ringer.outputCaloRingsType(), ringer.outputElectronCaloRingsKey()) or \ + inputAvailable(ringer.outputCaloRingsType(), ringer.outputElectronCaloAsymRingsKey()) ) or \ + ( inputAvailable(ringer.outputRingSetType(), ringer.outputElectronRingSetsKey()) or \ + inputAvailable(ringer.outputRingSetType(), ringer.outputElectronAsymRingSetsKey()) ) ) \ or ( caloRingerFlags.buildPhotonCaloRings() and \ - ( inputAvailable(outputCaloRingsType(), outputPhotonCaloRingsKey()) or \ - inputAvailable(outputCaloRingsType(), outputPhotonCaloAsymRingsKey()) ) or \ - ( inputAvailable(outputRingSetType(), outputPhotonRingSetsKey()) or \ - inputAvailable(outputRingSetType(), outputPhotonAsymRingSetsKey()) ) ) ): + ( inputAvailable(ringer.outputCaloRingsType(), ringer.outputPhotonCaloRingsKey()) or \ + inputAvailable(ringer.outputCaloRingsType(), ringer.outputPhotonCaloAsymRingsKey()) ) or \ + ( inputAvailable(ringer.outputRingSetType(), ringer.outputPhotonRingSetsKey()) or \ + inputAvailable(ringer.outputRingSetType(), ringer.outputPhotonAsymRingSetsKey()) ) ) ): raise RuntimeError(("Already existing input will be overwriten and not set Ringer flag " "ignoreExistingDataObject.")) diff --git a/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerLocker.py b/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerLocker.py index 738719e9b9a1215a1fadf8e0f9613d6f6f8ce28e..0f088a056106bd22ca9408463ae550540e849ae3 100644 --- a/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerLocker.py +++ b/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerLocker.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration __doc__ = "Algorithm to lock CaloRinger containers (based on egammaLocker by Bruno Lenzi)" __author__ = "Werner Freund <wsfreund@cern.ch>" @@ -68,7 +68,7 @@ class CaloRingerLocker( PyAthena.Alg ): "Loop over event dict items and yield (key, type) for those that pass filterKey" for cType, cKeys in self.CaloRingerDict.items(): for cKey in cKeys: - if not self.filterKey(cKey) or not cKey in self.storeGateSvc.keys(): + if not self.filterKey(cKey) or cKey not in self.storeGateSvc.keys(): continue yield cKey, cType @@ -76,7 +76,7 @@ class CaloRingerLocker( PyAthena.Alg ): "Loop over event dict items and yield (key, type) for those that pass filterKey" for cType, cKeys in self.CaloRingerMetaDict.items(): for cKey in cKeys: - if not self.filterKey(cKey) or not cKey in self.metaDataStore.keys(): + if not self.filterKey(cKey) or cKey not in self.metaDataStore.keys(): continue yield cKey, cType @@ -98,9 +98,9 @@ class CaloRingerLocker( PyAthena.Alg ): self.msg.debug( 'Keys are: %r', self.keys) for cKey, cType in self.keys.items(): - self.msg.debug('Locking container %s of type %s' % (cKey, cType)) + self.msg.debug('Locking container %s of type %s', cKey, cType) if self.storeGateSvc.setConst( self.storeGateSvc[cKey] ).isFailure(): - self.msg.error('Problem locking container %s of type %s' % (cKey, cType)) + self.msg.error('Problem locking container %s of type %s', cKey, cType) # Flag that a failure happened, but keep looping to try to lock other # containers sc = StatusCode.Failure @@ -118,9 +118,9 @@ class CaloRingerLocker( PyAthena.Alg ): metaKeys = dict( self.getMetadataKeys() ) for cKey, cType in metaKeys.items(): - self.msg.debug('Locking Metadata container %s of type %s' % (cKey, cType)) + self.msg.debug('Locking Metadata container %s of type %s', cKey, cType) if self.metaDataStore.setConst( self.metaDataStore[cKey] ).isFailure(): - self.msg.error('Problem locking Metadata container %s of type %s' % (cKey, cType)) + self.msg.error('Problem locking Metadata container %s of type %s', cKey, cType) # Flag that a failure happened, but keep looping to try to lock other # containers sc = StatusCode.Failure diff --git a/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerMetaDataBuilder.py b/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerMetaDataBuilder.py index fcc458179878a1afc74b818fc411d9cadea683ea..9ebfd24ceab4b07c2e38b96e3ee125b1e5db8006 100644 --- a/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerMetaDataBuilder.py +++ b/Reconstruction/RecoAlgs/CaloRingerAlgs/python/CaloRingerMetaDataBuilder.py @@ -4,11 +4,10 @@ import traceback from . import CaloRingerAlgsConf from AthenaCommon.Resilience import treatException from RecExConfig.Configured import Configured -from CaloRingerAlgs.CaloRingerKeys import * +from CaloRingerAlgs import CaloRingerKeys as ringer from CaloRingerAlgs.CaloRingerFlags import caloRingerFlags from CaloRingerAlgs.CaloRingerAlgorithmBuilder import removeFromTopSequence -from egammaRec.Factories import AlgFactory, FcnWrapper - +from egammaRec.Factories import AlgFactory from AthenaCommon.Logging import logging @@ -82,17 +81,17 @@ class CaloRingerMetaDataBuilder ( Configured ): if crBuilder.usable(): builderNames = [tool.getName() for tool in crBuilder.getCaloRingerBuilderHandles()] if any(['Electron' in builderName for builderName in builderNames]): - outputList.append(outputElectronRingSetsConfKey()) - electronMetaAvailable = metaDataInputAvailable(outputRingSetConfType(), outputElectronRingSetsConfKey()) + outputList.append(ringer.outputElectronRingSetsConfKey()) + electronMetaAvailable = metaDataInputAvailable(ringer.outputRingSetConfType(), ringer.outputElectronRingSetsConfKey()) if electronMetaAvailable: self._overwriting = True if any(['Photon' in builderName for builderName in builderNames]): - outputList.append(outputPhotonRingSetsConfKey()) - photonMetaAvailable = metaDataInputAvailable(outputRingSetConfType(), outputPhotonRingSetsConfKey()) + outputList.append(ringer.outputPhotonRingSetsConfKey()) + photonMetaAvailable = metaDataInputAvailable(ringer.outputRingSetConfType(), ringer.outputPhotonRingSetsConfKey()) if photonMetaAvailable: self. _overwriting = True metaBuilder.RingSetConfContainerNames = outputList - self._outputMetaData = {outputRingSetConfType() : outputList } + self._outputMetaData = {ringer.outputRingSetConfType() : outputList } self._output.update(self._outputMetaData) diff --git a/Reconstruction/RecoAlgs/CaloRingerAlgs/share/NeuralNetTests_Ref.txt b/Reconstruction/RecoAlgs/CaloRingerAlgs/share/NeuralNetTests_Ref.txt deleted file mode 100644 index 4eb30ea80f81e203764f1667ba5123cfc2cbdc02..0000000000000000000000000000000000000000 --- a/Reconstruction/RecoAlgs/CaloRingerAlgs/share/NeuralNetTests_Ref.txt +++ /dev/null @@ -1,127 +0,0 @@ -stdout: -- FileGrepResult -- - fn: /pool/lsf/rtt/765127316/caloringeralgs_log - pattern: Output space - pmax: 9223372036854775807 - pmin: 1 - success: True - vetoFlag: False - matchLines [117]: - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.538683] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.538683] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.538683] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.621306] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.621306] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.621306] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.996962] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.948311] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.999008] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.993593] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.99887] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.996962] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.948311] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.999008] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.993593] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.99887] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.996962] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.948311] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.999008] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.993593] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.99887] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.563287] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.993328] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.999104] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.563287] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.993328] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.999104] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.563287] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.993328] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.999104] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.997245] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.996499] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.992486] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.943482] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.996376] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.999961] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.960854] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.997812] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.984893] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.993568] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.997245] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.996499] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.992486] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.943482] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.996376] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.999961] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.960854] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.997812] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.984893] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.993568] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.997245] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.996499] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.992486] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.943482] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.996376] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.999961] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.960854] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.997812] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.984893] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.993568] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.991852] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.999668] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.991852] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.999668] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.991852] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.999668] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.103501] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.103501] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.103501] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.999808] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [0.624281] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.999808] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [0.624281] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.999808] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [0.624281] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.995596] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.908205] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.991354] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.999076] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.95908] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.969097] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.994815] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.995596] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.908205] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.991354] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.999076] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.95908] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.969097] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.994815] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.995596] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.908205] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.991354] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.999076] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.95908] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.969097] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.994815] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.981325] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.951614] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.998283] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.981325] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.951614] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.998283] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.981325] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.951614] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.998283] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.970742] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.970742] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.970742] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.981591] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.982775] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.981591] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.982775] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.981591] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.982775] - ToolSvc.ElectronRingerSelector_TestLoose DEBUG Applying UniqueThreshold (Value: 0.948). Output space is: [-0.998898] - ToolSvc.ElectronRingerSelector_TestMedium DEBUG Applying UniqueThreshold (Value: 0.2644). Output space is: [-0.998898] - ToolSvc.ElectronRingerSelector_TestTight DEBUG Applying UniqueThreshold (Value: 0.2826). Output space is: [-0.998898] - -stderr: diff --git a/Reconstruction/RecoAlgs/CaloRingerAlgs/test/CaloRingerAlgs_TestConfiguration.xml b/Reconstruction/RecoAlgs/CaloRingerAlgs/test/CaloRingerAlgs_TestConfiguration.xml deleted file mode 100755 index 85c9fdfac4fdb418203b33c484df18fd4f3cc379..0000000000000000000000000000000000000000 --- a/Reconstruction/RecoAlgs/CaloRingerAlgs/test/CaloRingerAlgs_TestConfiguration.xml +++ /dev/null @@ -1,138 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> - -<unifiedTestConfiguration> - <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt"> - <rttContactPerson>Nicolas Bulla</rttContactPerson> - <mailto>nbullacr@cern.ch, wsfreund@cern.ch</mailto> - - <jobList> - <chain> - <chainName>MyChainJob</chainName> - <sequential> - <chainElement> - <athena userJobId="caloringeralgs"> - <doc>CaloRinger Algorithm Nightly Test</doc> - <options>CaloRingerAlgs/CaloRinger_ATN</options> - <group>RTT:Athena</group> - <queue>medium</queue> - <dataset_info> - <dc2 /> - - <datasetName>/afs/cern.ch/atlas/project/rig/referencefiles/QTests-Run2/RDO-run2.Nov27.2014-500events.pool.root</datasetName> - </dataset_info> - - <test position="1"> - <modulename>RttLibraryTools</modulename> - <testname>FileGrepper</testname> - <outputFile>myRingSetFile.txt</outputFile> - <arg> - <argname>inputFile</argname> - <argvalue>caloringeralgs_log</argvalue> - </arg> - <arg> - <argname>searchList</argname> - <argvalue>Ringset</argvalue> - </arg> - <keepFilePattern>myRingSetFile.txt</keepFilePattern> - </test> - - <test position="2"> - <modulename>RttLibraryTools</modulename> - <testname>FileComparatorRunner</testname> - <outputFile>myRingComparatorFile.txt</outputFile> - <arg> - <argname>testFile</argname> - <argvalue>myRingSetFile.txt</argvalue> - </arg> - <arg> - <argname>refFile</argname> - <argvalue>RingerTests_Builders.txt</argvalue> - </arg> - <keepFilePattern>myRingComparatorFile.txt</keepFilePattern> - <noalarm/> - </test> - - <test position="3"> - <modulename>RttLibraryTools</modulename> - <testname>FileGrepper</testname> - <outputFile>myNeuralNetOutput.txt</outputFile> - <arg> - <argname>inputFile</argname> - <argvalue>caloringeralgs_log</argvalue> - </arg> - <arg> - <argname>searchList</argname> - <argvalue>Output space</argvalue> - </arg> - <keepFilePattern>myNeuralNetOutput.txt</keepFilePattern> - </test> - - <test position="4"> - <modulename>RttLibraryTools</modulename> - <testname>FileComparatorRunner</testname> - <outputFile>myNetComparatorFile.txt</outputFile> - <arg> - <argname>testFile</argname> - <argvalue>myNeuralNetOutput.txt</argvalue> - </arg> - <arg> - <argname>refFile</argname> - <argvalue>NeuralNetTests_Ref.txt</argvalue> - </arg> - <keepFilePattern>myNetComparatorFile.txt</keepFilePattern> - <noalarm/> - </test> - - <test position="5"> - <modulename>RttLibraryTools</modulename> - <testname>FileGrepper</testname> - <outputFile>RingComparator_OK.txt</outputFile> - <arg> - <argname>inputFile</argname> - <argvalue>myRingComparatorFile.txt</argvalue> - </arg> - <arg> - <argname>vetoList</argname> - <argvalue>DEBUG Ringset</argvalue> - </arg> - <keepFilePattern>RingComparator_OK.txt</keepFilePattern> - </test> - - <test position="6"> - <modulename>RttLibraryTools</modulename> - <testname>FileGrepper</testname> - <outputFile>NetComparator_OK.txt</outputFile> - <arg> - <argname>inputFile</argname> - <argvalue>myNetComparatorFile.txt</argvalue> - </arg> - <arg> - <argname>vetoList</argname> - <argvalue>Output space</argvalue> - </arg> - <keepFilePattern>NetComparator_OK.txt</keepFilePattern> - </test> - - <auxFilePattern>myRingComparatorFile.txt</auxFilePattern> - <auxFilePattern>myNetComparatorFile.txt</auxFilePattern> - <auxFilePattern>RingerTests_Builders.txt</auxFilePattern> - <auxFilePattern>NeuralNetTests_Ref.txt</auxFilePattern> - </athena> - </chainElement> - </sequential> - </chain> - </jobList> - - <jobGroups> - <jobGroup name="CaloRinger" parent="RTT:Athena"> - <keepFilePattern>*.txt</keepFilePattern> - <keepFilePattern>*.log</keepFilePattern> - <keepFilePattern>*.root</keepFilePattern> - <auxFilePattern>RingerTests_Builders.txt</auxFilePattern> - <auxFilePattern>NeuralNetTests_Ref.txt</auxFilePattern> - <auxFilePattern>myRingComparatorFile.txt</auxFilePattern> - </jobGroup> - </jobGroups> - </rtt> -</unifiedTestConfiguration> diff --git a/Reconstruction/RecoAlgs/IsolationAlgs/CMakeLists.txt b/Reconstruction/RecoAlgs/IsolationAlgs/CMakeLists.txt index 6369845e1e719df755ba70474739be615c3535ff..b4f4d639bbdb8f26c93e02453be7d3f166788905 100644 --- a/Reconstruction/RecoAlgs/IsolationAlgs/CMakeLists.txt +++ b/Reconstruction/RecoAlgs/IsolationAlgs/CMakeLists.txt @@ -1,34 +1,15 @@ -################################################################################ -# Package: IsolationAlgs -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( IsolationAlgs ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - GaudiKernel - PRIVATE - Calorimeter/CaloEvent - Control/AthContainers - Control/AthenaBaseComps - Event/xAOD/xAODPrimitives - Event/xAOD/xAODEgamma - Event/xAOD/xAODBase - Reconstruction/RecoTools/RecoToolInterfaces - PhysicsAnalysis/ElectronPhotonID/IsolationCorrections ) - -# External dependencies: -find_package( Boost COMPONENTS filesystem thread system ) - # Component(s) in the package: atlas_add_component( IsolationAlgs src/*.cxx src/components/*.cxx - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} GaudiKernel CaloEvent AthContainers AthenaBaseComps xAODBase xAODPrimitives xAODEgamma RecoToolInterfaces IsolationCorrectionsLib) + LINK_LIBRARIES GaudiKernel CaloEvent AthContainers AthenaBaseComps StoreGateLib xAODBase xAODPrimitives xAODEgamma RecoToolInterfaces IsolationCorrectionsLib) # Install files from the package: -atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) atlas_install_joboptions( share/*.py ) diff --git a/Reconstruction/RecoAlgs/IsolationAlgs/python/IsoGetter.py b/Reconstruction/RecoAlgs/IsolationAlgs/python/IsoGetter.py index b6b2fbfe15883de1de313143857db550bf409898..c5d636540c581c0e8dc9fb4b19c92e17b1f34da8 100644 --- a/Reconstruction/RecoAlgs/IsolationAlgs/python/IsoGetter.py +++ b/Reconstruction/RecoAlgs/IsolationAlgs/python/IsoGetter.py @@ -3,7 +3,6 @@ from __future__ import print_function from AthenaCommon.Constants import INFO -from AthenaCommon.AppMgr import ToolSvc from AthenaCommon.Logging import logging from RecExConfig.RecFlags import rec @@ -281,13 +280,13 @@ isoBuilder = AlgFactory(IsolationBuilder, FeIsoTypes = [] if not rec.doEgamma() else IsoTypesFe, FeCorTypes = IsoCorFe, FeCorTypesExtra = IsoCorFeExtra, - ElIsoTypes = [] if not rec.doEgamma() else IsoTypes, + ElIsoTypes = [] if not rec.doEgamma() else IsoTypes, ElCorTypes = IsoCorEg, ElCorTypesExtra = IsoCorEgExtra, - PhIsoTypes = [] if not rec.doEgamma() else IsoTypes, + PhIsoTypes = [] if not rec.doEgamma() else IsoTypes, PhCorTypes = IsoCorEg, PhCorTypesExtra = IsoCorEgExtra, - MuIsoTypes = IsoTypes if rec.doMuon() and muonRecFlags.doMuonIso() else [], + MuIsoTypes = IsoTypes if rec.doMuon() and muonRecFlags.doMuonIso() else [], MuCorTypes = IsoCorMu, MuCorTypesExtra = IsoCorMuExtra ) diff --git a/Reconstruction/RecoAlgs/TrackParticleAssociationAlgs/CMakeLists.txt b/Reconstruction/RecoAlgs/TrackParticleAssociationAlgs/CMakeLists.txt index 919b823866d0dd37638f91875cbf9c90586e31a8..9819ccd5322061d5b784598e001deb9c8ef42979 100644 --- a/Reconstruction/RecoAlgs/TrackParticleAssociationAlgs/CMakeLists.txt +++ b/Reconstruction/RecoAlgs/TrackParticleAssociationAlgs/CMakeLists.txt @@ -1,6 +1,4 @@ -################################################################################ -# Package: TrackParticleAssociationAlgs -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( TrackParticleAssociationAlgs ) @@ -9,6 +7,4 @@ atlas_subdir( TrackParticleAssociationAlgs ) atlas_add_component( TrackParticleAssociationAlgs src/*.cxx src/components/*.cxx - INCLUDE_DIRS - LINK_LIBRARIES CaloUtilsLib AthenaBaseComps xAODAssociations xAODCaloEvent xAODTracking FourMomUtils GaudiKernel RecoToolInterfaces TrackToCaloLib TrkToolInterfaces ) - + LINK_LIBRARIES AthContainers AthenaBaseComps CaloUtilsLib FourMomUtils GaudiKernel RecoToolInterfaces StoreGateLib TrackToCaloLib TrackVertexAssociationToolLib TrkCaloExtension xAODAssociations xAODCaloEvent xAODTracking ) diff --git a/Reconstruction/RecoEvent/ParticleCaloExtension/CMakeLists.txt b/Reconstruction/RecoEvent/ParticleCaloExtension/CMakeLists.txt index 0d4b58d6208e2f7121716d2474f23f1e212dfc7d..22a9af308c84c6d9030f7f1b8a0871c8378334bc 100644 --- a/Reconstruction/RecoEvent/ParticleCaloExtension/CMakeLists.txt +++ b/Reconstruction/RecoEvent/ParticleCaloExtension/CMakeLists.txt @@ -1,21 +1,10 @@ -################################################################################ -# Package: ParticleCaloExtension -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( ParticleCaloExtension ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Calorimeter/CaloEvent - Control/AthContainers - Event/xAOD/xAODCaloEvent - Event/xAOD/xAODCore - Tracking/TrkEvent/TrkCaloExtension) - # Component(s) in the package: atlas_add_library( ParticleCaloExtension src/*.cxx PUBLIC_HEADERS ParticleCaloExtension - LINK_LIBRARIES CaloEvent AthContainers xAODCaloEvent xAODCore TrkCaloExtension ) - + LINK_LIBRARIES CaloEvent AthContainers xAODCaloEvent xAODCore TrkCaloExtension ) diff --git a/Reconstruction/RecoTools/CaloRingerTools/CMakeLists.txt b/Reconstruction/RecoTools/CaloRingerTools/CMakeLists.txt index 893fcf0eedc02a7dfbe8c77971d6ad28be6b848e..017d06e259b651d258ada0d774b0c1dba0d6a395 100644 --- a/Reconstruction/RecoTools/CaloRingerTools/CMakeLists.txt +++ b/Reconstruction/RecoTools/CaloRingerTools/CMakeLists.txt @@ -1,28 +1,8 @@ -################################################################################ -# Package: CaloRingerTools -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( CaloRingerTools ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/AthLinks - Event/xAOD/xAODBase - Event/xAOD/xAODCaloEvent - Event/xAOD/xAODCaloRings - GaudiKernel - PRIVATE - Calorimeter/CaloEvent - Calorimeter/CaloGeoHelpers - Calorimeter/CaloUtils - Control/AthenaBaseComps - Control/AthenaKernel - Control/CxxUtils - Event/xAOD/xAODEgamma - PhysicsAnalysis/AnalysisCommon/PATCore - PhysicsAnalysis/RingerSelectorTools ) - atlas_add_library( CaloRingerToolsLib CaloRingerTools/*.h INTERFACE @@ -33,8 +13,7 @@ atlas_add_library( CaloRingerToolsLib atlas_add_component( CaloRingerTools src/*.cxx src/components/*.cxx - LINK_LIBRARIES CaloRingerToolsLib xAODCaloRings CaloEvent CaloGeoHelpers CaloUtilsLib AthenaBaseComps AthenaKernel CxxUtils xAODEgamma PATCoreLib RingerSelectorToolsLib ) + LINK_LIBRARIES AthContainers AthLinks AthenaBaseComps AthenaKernel CaloEvent CaloGeoHelpers CaloRingerToolsLib CaloUtilsLib GaudiKernel PATCoreAcceptLib RingerSelectorToolsEnumsLib StoreGateLib xAODBase xAODCaloEvent xAODCaloRings xAODEgamma ) # Install files from the package: -atlas_install_python_modules( python/*.py ) - +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerBuilderFactories.py b/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerBuilderFactories.py index 43e60ccda6ff6194c6f51f101a8b145b38f7e2f2..7b263c07e928cbc47861c2465386761ac13154e1 100644 --- a/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerBuilderFactories.py +++ b/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerBuilderFactories.py @@ -74,7 +74,7 @@ class AsymRings( object ): self.doPhiAxesDivision = doPhiAxesDivision def resizeNRingsAsymRings(self, obj): - if ((obj.doEtaAxesDivision == True) and (obj.doPhiAxesDivision == True)): + if ((obj.doEtaAxesDivision is True) and (obj.doPhiAxesDivision is True)): obj.NRings = [(rings-1)*4+1 for rings in obj.NRings] else: obj.NRings = [(rings-1)*2+1 for rings in obj.NRings] diff --git a/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerInputReaderFactories.py b/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerInputReaderFactories.py index fc8322a0d39785a3c9e6f1415444f57b43a61124..0da538d5b23dc56dd6b1c2f560b94c91d9d4761f 100644 --- a/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerInputReaderFactories.py +++ b/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerInputReaderFactories.py @@ -60,7 +60,6 @@ CaloRingerElectronsReaderTool = PublicToolFactory(CaloRingerToolsConf.Ringer__Ca ) from CaloRingerAlgs.CaloRingerAlgorithmBuilder import checkBuildPhotonCaloRings -from CaloRingerAlgs.CaloRingerAlgorithmBuilder import checkDoPhotonIdentification CaloRingerPhotonsReaderTool = PublicToolFactory(CaloRingerToolsConf.Ringer__CaloRingerPhotonsReader, name = "CaloRingerPhotonsReaderTool", inputKey = CaloRingerKeys.inputPhotonKey(), diff --git a/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerSelectorsBuilders.py b/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerSelectorsBuilders.py index 686e6fc7fcd8203a31ab64fc0c9597b025261aff..d0a9b71e471181ec5ca204fb2ca34e0bbe15b756 100644 --- a/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerSelectorsBuilders.py +++ b/Reconstruction/RecoTools/CaloRingerTools/python/CaloRingerSelectorsBuilders.py @@ -70,7 +70,7 @@ class CaloRingerElectronSelectorsBuilder ( Configured ): if not isinstance(customElectronSelectors,(list)): customElectronSelectors = list(customElectronSelectors) for selector in customElectronSelectors: - if not selector.getType() is "Ringer::AsgElectronRingerSelector": + if selector.getType() != "Ringer::AsgElectronRingerSelector": raise ValueError(("Selector must be of type Ringer::AsgElectronRingerSelector" "and is of type %s"),selector.getType()) self._customSelectors.extend( customElectronSelectors ) diff --git a/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilder.py b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilder.py index 54fd5b468b6b006069d83dcce95257268552b74f..183a8ce8f2c5fe5dc6303ac4cad29df9a9ea5f27 100644 --- a/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilder.py +++ b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilder.py @@ -74,6 +74,8 @@ class egammaBremCollectionBuilder (egammaAlgsConf.EMBremCollectionBuilder): GSFBuildTRT_ElectronPidTool = ( TrackingCommon.getInDetTRT_ElectronPidTool( name="GSFBuildTRT_ElectronPidTool", + CalculateNNPid=True, + MinimumTrackPtForNNPid=0., private=True)) # diff --git a/Reconstruction/tauRecTools/src/TauShotFinder.cxx b/Reconstruction/tauRecTools/src/TauShotFinder.cxx index 04c9964045d9a5f5f3154ff07d0d98a51f4f0567..b47604d2e3e9d5d9cdfcb410094a149241df6f1f 100644 --- a/Reconstruction/tauRecTools/src/TauShotFinder.cxx +++ b/Reconstruction/tauRecTools/src/TauShotFinder.cxx @@ -263,7 +263,7 @@ bool TauShotFinder::isPhiNeighbour(IdentifierHash cell1Hash, IdentifierHash cell // Next cell in phi direction m_calo_id->get_neighbours(cell1Hash,LArNeighbours::nextInPhi,neigHashes); if (neigHashes.size() > 1) { - ATH_MSG_WARNING(cell1Hash << " has " << neigHashes.size() << " neighbours in the next phi direction !"); + ATH_MSG_DEBUG(cell1Hash << " has " << neigHashes.size() << " neighbours in the next phi direction !"); } if (std::find(neigHashes.begin(), neigHashes.end(), cell2Hash) != neigHashes.end()) { return true; @@ -272,7 +272,7 @@ bool TauShotFinder::isPhiNeighbour(IdentifierHash cell1Hash, IdentifierHash cell // Previous cell in phi direction m_calo_id->get_neighbours(cell1Hash,LArNeighbours::prevInPhi,neigHashes); if (neigHashes.size() > 1) { - ATH_MSG_WARNING(cell1Hash << " has " << neigHashes.size() << " neighbours in the previous phi direction !"); + ATH_MSG_DEBUG(cell1Hash << " has " << neigHashes.size() << " neighbours in the previous phi direction !"); } if (std::find(neigHashes.begin(), neigHashes.end(), cell2Hash) != neigHashes.end()) { return true; @@ -355,7 +355,7 @@ void TauShotFinder::addEtaNeighbours(const CaloCell& cell, this->addEtaNeighbours(*newCell, cellContainer, cells, depth, maxDepth, next); if (neigHashes.size() > 1) { - ATH_MSG_WARNING(cellHash << " has " << neigHashes.size() << " neighbours in the eta direction !"); + ATH_MSG_DEBUG(cellHash << " has " << neigHashes.size() << " neighbours in the eta direction !"); break; } } diff --git a/Simulation/Digitization/python/DigitizationConfigFlags.py b/Simulation/Digitization/python/DigitizationConfigFlags.py index 0a9b688717fc01c31fce3f8f50bd61d516546201..9bd2e33ff737f667d4c49bc24e0e364e21fda3ee 100644 --- a/Simulation/Digitization/python/DigitizationConfigFlags.py +++ b/Simulation/Digitization/python/DigitizationConfigFlags.py @@ -64,6 +64,9 @@ def constBunchSpacingPattern(constBunchSpacing): def createDigitizationCfgFlags(): """Return an AthConfigFlags object with required flags""" flags = AthConfigFlags() + # Digitization Steering - needed for easy comparison with the + # old-style configuration, but can potentially drop + flags.addFlag("Digitization.DigiSteeringConf", "StandardPileUpToolsAlg") # Run Inner Detector noise simulation flags.addFlag("Digitization.DoInnerDetectorNoise", True) # Run pile-up digitization on one bunch crossing at a time? diff --git a/Simulation/Digitization/python/PileUpMergeSvcConfigNew.py b/Simulation/Digitization/python/PileUpMergeSvcConfigNew.py index c19d73763523ddea7932bdcc02c7dbf3be0d0e1d..45b9b5b3c029a77076dac36fff28f7ba1548c935 100644 --- a/Simulation/Digitization/python/PileUpMergeSvcConfigNew.py +++ b/Simulation/Digitization/python/PileUpMergeSvcConfigNew.py @@ -14,7 +14,7 @@ def PileUpMergeSvcCfg(flags, name="PileUpMergeSvc", Intervals=[], **kwargs): """ acc = ComponentAccumulator() - if flags.Digitization.DoXingByXingPileUp: + if not flags.Digitization.DoXingByXingPileUp: # handle input type variety if not isinstance(Intervals, list): Intervals = [Intervals] diff --git a/Simulation/Digitization/python/PileUpToolsConfig.py b/Simulation/Digitization/python/PileUpToolsConfig.py index e8b4af5e4624d99f33f7d2916b1510429d1904e6..35b913ddd1b2b999461c417010fa84b0bcd03ccc 100644 --- a/Simulation/Digitization/python/PileUpToolsConfig.py +++ b/Simulation/Digitization/python/PileUpToolsConfig.py @@ -7,7 +7,7 @@ from AthenaConfiguration.ComponentFactory import CompFactory PileUpToolsAlg, DigitizationAlg=CompFactory.getComps("PileUpToolsAlg","DigitizationAlg") -def PileUpToolsCfg(flags, name="StandardPileUpToolsAlg", **kwargs): +def PileUpToolsCfg(flags, **kwargs): """ Return ComponentAccumulator with the correct algorithm to carry Digitization PileUpTools @@ -29,5 +29,5 @@ def PileUpToolsCfg(flags, name="StandardPileUpToolsAlg", **kwargs): else: Alg = DigitizationAlg - acc.addEventAlgo(Alg(name, **kwargs)) + acc.addEventAlgo(Alg(flags.Digitization.DigiSteeringConf, **kwargs)) return acc diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx index c22215cd2959b8c025d26ab0ca3ac33215356bdf..11d066c1a01218983704defdf97490b1424f3cda 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ // class header @@ -305,9 +305,31 @@ StatusCode iGeant4::G4TransportTool::simulateVector( const ISF::ConstISFParticle return StatusCode::FAILURE; } + // Get user actions that return secondaries + auto actionsFound = m_secondaryActions.find( std::this_thread::get_id() ); + if ( actionsFound == m_secondaryActions.end() ) { + // Get all UAs + std::vector< G4UserSteppingAction* > allActions; + StatusCode sc = m_userActionSvc->getSecondaryActions( allActions ); + if ( !sc.isSuccess() ) { + ATH_MSG_ERROR( "Failed to retrieve secondaries from UASvc" ); + return sc; + } + + // Find the UAs that can return secondaries + for ( G4UserSteppingAction* action : allActions ) { + passbackAction_t* castAction = dynamic_cast< passbackAction_t* >( action ); + if ( castAction ) { + m_secondaryActions[ std::this_thread::get_id() ].push_back( castAction ); + } + } + + actionsFound = m_secondaryActions.find( std::this_thread::get_id() ); + } + // Retrieve secondaries from user actions - for ( auto& parent : particles ) { - for ( auto* action : m_secondaryActions ) { + for ( auto* action : actionsFound->second ) { + for ( auto& parent : particles ) { ISF::ISFParticleContainer someSecondaries = action->ReturnSecondaries( parent ); @@ -326,23 +348,6 @@ StatusCode iGeant4::G4TransportTool::simulateVector( const ISF::ConstISFParticle // not implemented yet... need to get particle stack from Geant4 and convert to ISFParticle ATH_MSG_VERBOSE( "Simulation done" ); - Slot& slot = *m_slots; - Slot::lock_t lock (slot.m_mutex); - - for (auto* cisp : particles) { - // return any secondaries associated with this particle - auto searchResult = slot.m_secondariesMap.find( cisp ); - if ( searchResult == slot.m_secondariesMap.end() ) { - - ATH_MSG_VERBOSE( "Found no secondaries" ); - - } else { - - ATH_MSG_VERBOSE( "Found secondaries: " << searchResult->second.size() ); - secondaries.splice( end(secondaries), std::move(searchResult->second) ); //append vector - slot.m_secondariesMap.erase( searchResult ); - } - } // Geant4 call done return StatusCode::SUCCESS; } @@ -380,26 +385,6 @@ StatusCode iGeant4::G4TransportTool::setupEvent() // make sure SD collections are properly initialized in every Athena event G4SDManager::GetSDMpointer()->PrepareNewEvent(); - if ( m_secondaryActions.empty() ) - { - // Get all UAs - std::vector< G4UserSteppingAction* > actions; - StatusCode sc = m_userActionSvc->getSecondaryActions( actions ); - if ( !sc.isSuccess() ) { - ATH_MSG_ERROR( "Failed to retrieve secondaries from UASvc" ); - return sc; - } - - // Find the UAs that can return secondaries - m_secondaryActions.reserve( actions.size() ); - for ( G4UserSteppingAction* action : actions ) { - G4UA::iGeant4::TrackProcessorUserActionBase * castAction = dynamic_cast< G4UA::iGeant4::TrackProcessorUserActionBase* >( action ); - if ( castAction ) { - m_secondaryActions.push_back( castAction ); - } - } - } - return StatusCode::SUCCESS; } diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h index 2b07f93465dd4b69ff52e4ff8e9196e3cc3efd36..9afc3bd06f87f5d0f1299675a4aa1adade2a05c2 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef ISF_GEANT4TOOLS_TRANSPORTTOOL_H @@ -7,7 +7,10 @@ // STL headers #include <string> -#include <unordered_map> +#include <thread> + +// TBB +#include "tbb/concurrent_unordered_map.h" // Gaudi headers #include "GaudiKernel/ToolHandle.h" @@ -110,17 +113,11 @@ namespace iGeant4 G4Timer* m_eventTimer{nullptr}; // user actions that can return secondaries - std::vector< G4UA::iGeant4::TrackProcessorUserActionBase* > m_secondaryActions; - - // store secondary particles that have been pushed back - struct Slot - { - std::unordered_map< ISF::ISFParticle const*, ISF::ISFParticleContainer > m_secondariesMap; - typedef std::mutex mutex_t; - typedef std::lock_guard<mutex_t> lock_t; - mutex_t m_mutex; - }; - mutable SG::SlotSpecificObj<Slot> m_slots ATLAS_THREAD_SAFE; + // Must be indexed by thread ID, and accessible from multiple threads + using passbackAction_t = G4UA::iGeant4::TrackProcessorUserActionBase; + using passbackActionMap_t = tbb::concurrent_unordered_map< std::thread::id, std::vector< passbackAction_t* >, std::hash<std::thread::id> >; + mutable passbackActionMap_t m_secondaryActions ATLAS_THREAD_SAFE; + Gaudi::Property<std::string> m_mcEventCollectionName{this, "McEventCollection", "TruthEvent", ""}; /// Helper Tool to provide G4RunManager // PublicToolHandle<ISF::IG4RunManagerHelper> m_g4RunManagerHelper{this, "G4RunManagerHelper", "iGeant4::G4RunManagerHelper/G4RunManagerHelper", ""}; diff --git a/Tools/PyJobTransforms/python/trfExe.py b/Tools/PyJobTransforms/python/trfExe.py index 29cd8dfd123a22d39fe9d5c117af5c7c9802575a..d5739d9b9b2f63a47b9c46e7307c027e7123b8ec 100755 --- a/Tools/PyJobTransforms/python/trfExe.py +++ b/Tools/PyJobTransforms/python/trfExe.py @@ -955,14 +955,8 @@ class athenaExecutor(scriptExecutor): msg.info('input event count is UNDEFINED, setting expectedEvents to 0') expectedEvents = 0 - # Check the consistency of parallel configuration: CLI flags + evnironment - # 1. Both --multithreaded and --multiprocess flags have been set - if ('multithreaded' in self.conf._argdict and - 'multiprocess' in self.conf._argdict): - raise trfExceptions.TransformExecutionException(trfExit.nameToCode('TRF_SETUP'), - 'both --multithreaded and --multiprocess command line options provided. Please use only one of them') - - # 2. One of the parallel command-line flags has been provided but ATHENA_CORE_NUMBER environment has not been set + # Check the consistency of parallel configuration: CLI flags + evnironment. + # At least one of the parallel command-line flags has been provided but ATHENA_CORE_NUMBER environment has not been set if (('multithreaded' in self.conf._argdict or 'multiprocess' in self.conf._argdict) and ('ATHENA_CORE_NUMBER' not in os.environ)): raise trfExceptions.TransformExecutionException(trfExit.nameToCode('TRF_SETUP'), @@ -974,12 +968,6 @@ class athenaExecutor(scriptExecutor): # Try to detect AthenaMP mode and number of workers self._athenaMP = detectAthenaMPProcs(self.conf.argdict,self.name) - # Another constistency check: make sure we don't have a configuration like follows: - # ... --multithreaded --athenaopts=--nprocs=N - if (self.name != 'BSRDOtoRAW' and self._athenaMT != 0 and self._athenaMP != 0): - raise trfExceptions.TransformExecutionException(trfExit.nameToCode('TRF_SETUP'), - 'transform configured to run Athena in both MT and MP modes. Only one parallel mode at a time must be used') - if self._disableMP: self._athenaMP = 0 else: diff --git a/Trigger/TrigAlgorithms/TrigPartialEventBuilding/src/PEBInfoWriterAlg.cxx b/Trigger/TrigAlgorithms/TrigPartialEventBuilding/src/PEBInfoWriterAlg.cxx index b556667b4d81616c230558d338d5fd7d1fe62375..0af90d9b69d14ad4f801dc39fabad77c06263bd4 100644 --- a/Trigger/TrigAlgorithms/TrigPartialEventBuilding/src/PEBInfoWriterAlg.cxx +++ b/Trigger/TrigAlgorithms/TrigPartialEventBuilding/src/PEBInfoWriterAlg.cxx @@ -18,7 +18,6 @@ using TrigCompositeUtils::createAndStore; using TrigCompositeUtils::decisionIDs; using TrigCompositeUtils::linkToPrevious; using TrigCompositeUtils::newDecisionIn; -using TrigCompositeUtils::initialRoIString; using TrigCompositeUtils::featureString; using TrigCompositeUtils::roiString; using TrigCompositeUtils::findLink; @@ -74,7 +73,7 @@ StatusCode PEBInfoWriterAlg::execute(const EventContext& eventContext) const { size_t counter = 0; for (const Decision* previousDecision: *previousDecisionsHandle) { // Get RoI - auto roiELInfo = findLink<TrigRoiDescriptorCollection>(previousDecision, initialRoIString()); + auto roiELInfo = findLink<TrigRoiDescriptorCollection>(previousDecision, roiString()); auto roiEL = roiELInfo.link; ATH_CHECK(roiEL.isValid()); diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.cxx index 90f2295d9b17ba4440fe8f9de68927e407650a5c..47bf5d63ce8f27743168590edcc7befe76d0fbb6 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.cxx +++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.cxx @@ -17,6 +17,10 @@ #include <cmath> +using TrigCompositeUtils::Decision; +using TrigCompositeUtils::DecisionIDContainer; + + TrigMultiTrkComboHypoTool::TrigMultiTrkComboHypoTool(const std::string& type, const std::string& name, const IInterface* parent) : ComboHypoToolBase(type, name, parent) {} diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.h index d53ad64b2fc2144d8dcca4b3a46f36e7c2fb4b31..50895ba0228b4a2729397f9b0b6e637fd9798c88 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.h +++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.h @@ -29,15 +29,12 @@ #include "AthenaMonitoringKernel/Monitored.h" #include "AthenaMonitoringKernel/GenericMonitoringTool.h" -using TrigCompositeUtils::Decision; -using TrigCompositeUtils::DecisionIDContainer; - class TrigMultiTrkComboHypoTool: public ComboHypoToolBase { public: TrigMultiTrkComboHypoTool(const std::string& type, const std::string& name, const IInterface* parent); virtual StatusCode initialize() override; - virtual StatusCode decideOnSingleObject(Decision*, const std::vector<DecisionIDContainer*>&) const override; + virtual StatusCode decideOnSingleObject(TrigCompositeUtils::Decision*, const std::vector<TrigCompositeUtils::DecisionIDContainer*>&) const override; private: bool passed(const xAOD::TrigBphys*) const; diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py b/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py index d6f20a19e46f079ad332c39fbad1e1b85579a204..3090bec3e6ced6ee492c8c8e50db22739ac4286f 100644 --- a/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py +++ b/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py @@ -219,6 +219,9 @@ def TrigMETMonConfig(inputFlags): path='Shifter/tcpufit',xbins=sumet_bins,xmin=sumet_min,xmax=sumet_max) metGroup.defineHistogram('tcpufit_sumEt_log',title='tcpufit sumEt log;log_{10}(sumEt/GeV);Events', path='Shifter/tcpufit',xbins=sumet_bins_log,xmin=sumet_min_log,xmax=sumet_max_log) + metGroup.defineHistogram('tcpufit_sumEt;tcpufit_sumEt_etweight',title='tcpufit sumEt (etweighted);sumEt [GeV];E_{T} weighted events', + weight='tcpufit_Et', + path='Shifter/tcpufit',xbins=sumet_bins,xmin=sumet_min,xmax=sumet_max) metGroup.defineHistogram('tcpufit_sumE',title='tcpufit sumE;sumE [GeV];Events', path='Shifter/tcpufit',xbins=sume_bins,xmin=sume_min,xmax=sume_max) metGroup.defineHistogram('tcpufit_sumE_log',title='tcpufit sumE log;log_{10}(sumE/GeV);Events', @@ -253,7 +256,7 @@ def TrigMETMonConfig(inputFlags): path='Shifter/mht',xbins=ec_bins,xmin=ec_min,xmax=ec_max) metGroup.defineHistogram('mht_Ey_log',title='mht Missing E_{y} log;sgn(E_{y}) log_{10}(E_{y}/GeV);Events', path='Shifter/mht',xbins=ec_bins_log,xmin=ec_min_log,xmax=ec_max_log) - metGroup.defineHistogram('mht_Et', title='mht E_{T};E_{T} [GeV];Events', + metGroup.defineHistogram('mht_Et', title='mht Missing E_{T};E_{T} [GeV];Events', path='Shifter/mht',xbins=et_bins,xmin=et_min,xmax=et_max) metGroup.defineHistogram('mht_Et_log',title='mht Missing E_{T} log;log_{10}(E_{T}/GeV);Events', path='Shifter/mht',xbins=et_bins_log,xmin=et_min_log,xmax=et_max_log) @@ -273,6 +276,35 @@ def TrigMETMonConfig(inputFlags): weight='mht_Et', path='Shifter/mht', xbins=eta_bins_2d,xmin=eta_min,xmax=eta_max,ybins=phi_bins_2d,ymin=phi_min,ymax=phi_max) + ## HLT tc_em + metGroup.defineHistogram('tc_em_Ex',title='tc_em Missing E_{x};E_{x} [GeV];Events', + path='Shifter/tc_em',xbins=ec_bins,xmin=ec_min,xmax=ec_max) + metGroup.defineHistogram('tc_em_Ex_log',title='tc_em Missing E_{x} log;sgn(E_{x}) log_{10}(E_{x}/GeV);Events', + path='Shifter/tc_em',xbins=ec_bins_log,xmin=ec_min_log,xmax=ec_max_log) + metGroup.defineHistogram('tc_em_Ey',title='tc_em Missing E_{y};E_{y} [GeV];Events', + path='Shifter/tc_em',xbins=ec_bins,xmin=ec_min,xmax=ec_max) + metGroup.defineHistogram('tc_em_Ey_log',title='tc_em Missing E_{y} log;sgn(E_{y}) log_{10}(E_{y}/GeV);Events', + path='Shifter/tc_em',xbins=ec_bins_log,xmin=ec_min_log,xmax=ec_max_log) + metGroup.defineHistogram('tc_em_Et', title='tc_em Missing E_{T};E_{T} [GeV];Events', + path='Shifter/tc_em',xbins=et_bins,xmin=et_min,xmax=et_max) + metGroup.defineHistogram('tc_em_Et_log',title='tc_em Missing E_{T} log;log_{10}(E_{T}/GeV);Events', + path='Shifter/tc_em',xbins=et_bins_log,xmin=et_min_log,xmax=et_max_log) + metGroup.defineHistogram('tc_em_sumEt',title='tc_em sumEt;sumEt [GeV];Events', + path='Shifter/tc_em',xbins=sumet_bins,xmin=sumet_min,xmax=sumet_max) + metGroup.defineHistogram('tc_em_sumEt_log',title='tc_em sumEt log;log_{10}(sumEt/GeV);Events', + path='Shifter/tc_em',xbins=sumet_bins_log,xmin=sumet_min_log,xmax=sumet_max_log) + metGroup.defineHistogram('tc_em_phi',title='tc_em #phi;#phi;Events', + path='Shifter/tc_em',xbins=phi_bins,xmin=phi_min,xmax=phi_max) + metGroup.defineHistogram('tc_em_phi;tc_em_phi_etweight', title='tc_em #phi (etweighted);#phi;E_{T} weighted events', + weight='tc_em_Et', + path='Shifter/tc_em',xbins=phi_bins,xmin=phi_min,xmax=phi_max) + metGroup.defineHistogram('tc_em_eta,cell_phi;tc_em_eta_phi', type='TH2F', title='tc_em #eta - #phi;#eta;#phi', + path='Shifter/tc_em', + xbins=eta_bins_2d,xmin=eta_min,xmax=eta_max,ybins=phi_bins_2d,ymin=phi_min,ymax=phi_max) + metGroup.defineHistogram('tc_em_eta,tc_em_phi;tc_em_eta_phi_etweight', type='TH2F', title='tc_em #eta - #phi (etweighted);#eta;#phi', + weight='tc_em_Et', + path='Shifter/tc_em', + xbins=eta_bins_2d,xmin=eta_min,xmax=eta_max,ybins=phi_bins_2d,ymin=phi_min,ymax=phi_max) ## HLT pfsum metGroup.defineHistogram('pfsum_Ex',title='pfsum Missing E_{x};E_{x} [GeV];Events', path='Shifter/pfsum',xbins=ec_bins,xmin=ec_min,xmax=ec_max) @@ -282,7 +314,7 @@ def TrigMETMonConfig(inputFlags): path='Shifter/pfsum',xbins=ec_bins,xmin=ec_min,xmax=ec_max) metGroup.defineHistogram('pfsum_Ey_log',title='pfsum Missing E_{y} log;sgn(E_{y}) log_{10}(E_{y}/GeV);Events', path='Shifter/pfsum',xbins=ec_bins_log,xmin=ec_min_log,xmax=ec_max_log) - metGroup.defineHistogram('pfsum_Et', title='pfsum E_{T};E_{T} [GeV];Events', + metGroup.defineHistogram('pfsum_Et', title='pfsum Missing E_{T};E_{T} [GeV];Events', path='Shifter/pfsum',xbins=et_bins,xmin=et_min,xmax=et_max) metGroup.defineHistogram('pfsum_Et_log',title='pfsum Missing E_{T} log;log_{10}(E_{T}/GeV);Events', path='Shifter/pfsum',xbins=et_bins_log,xmin=et_min_log,xmax=et_max_log) @@ -304,7 +336,7 @@ def TrigMETMonConfig(inputFlags): path='Shifter/pfopufit',xbins=ec_bins,xmin=ec_min,xmax=ec_max) metGroup.defineHistogram('pfopufit_Ey_log',title='pfopufit Missing E_{y} log;sgn(E_{y}) log_{10}(E_{y}/GeV);Events', path='Shifter/pfopufit',xbins=ec_bins_log,xmin=ec_min_log,xmax=ec_max_log) - metGroup.defineHistogram('pfopufit_Et', title='pfopufit E_{T};E_{T} [GeV];Events', + metGroup.defineHistogram('pfopufit_Et', title='pfopufit Missing E_{T};E_{T} [GeV];Events', path='Shifter/pfopufit',xbins=et_bins,xmin=et_min,xmax=et_max) metGroup.defineHistogram('pfopufit_Et_log',title='pfopufit Missing E_{T} log;log_{10}(E_{T}/GeV);Events', path='Shifter/pfopufit',xbins=et_bins_log,xmin=et_min_log,xmax=et_max_log) @@ -326,7 +358,7 @@ def TrigMETMonConfig(inputFlags): path='Shifter/cvfpufit',xbins=ec_bins,xmin=ec_min,xmax=ec_max) metGroup.defineHistogram('cvfpufit_Ey_log',title='cvfpufit Missing E_{y} log;sgn(E_{y}) log_{10}(E_{y}/GeV);Events', path='Shifter/cvfpufit',xbins=ec_bins_log,xmin=ec_min_log,xmax=ec_max_log) - metGroup.defineHistogram('cvfpufit_Et', title='cvfpufit E_{T};E_{T} [GeV];Events', + metGroup.defineHistogram('cvfpufit_Et', title='cvfpufit Missing E_{T};E_{T} [GeV];Events', path='Shifter/cvfpufit',xbins=et_bins,xmin=et_min,xmax=et_max) metGroup.defineHistogram('cvfpufit_Et_log',title='cvfpufit Missing E_{T} log;log_{10}(E_{T}/GeV);Events', path='Shifter/cvfpufit',xbins=et_bins_log,xmin=et_min_log,xmax=et_max_log) @@ -348,7 +380,7 @@ def TrigMETMonConfig(inputFlags): path='Shifter/mhtpufit_pf',xbins=ec_bins,xmin=ec_min,xmax=ec_max) metGroup.defineHistogram('mhtpufit_pf_Ey_log',title='mhtpufit_pf Missing E_{y} log;sgn(E_{y}) log_{10}(E_{y}/GeV);Events', path='Shifter/mhtpufit_pf',xbins=ec_bins_log,xmin=ec_min_log,xmax=ec_max_log) - metGroup.defineHistogram('mhtpufit_pf_Et', title='mhtpufit_pf E_{T};E_{T} [GeV];Events', + metGroup.defineHistogram('mhtpufit_pf_Et', title='mhtpufit_pf Missing E_{T};E_{T} [GeV];Events', path='Shifter/mhtpufit_pf',xbins=et_bins,xmin=et_min,xmax=et_max) metGroup.defineHistogram('mhtpufit_pf_Et_log',title='mhtpufit_pf Missing E_{T} log;log_{10}(E_{T}/GeV);Events', path='Shifter/mhtpufit_pf',xbins=et_bins_log,xmin=et_min_log,xmax=et_max_log) @@ -370,7 +402,7 @@ def TrigMETMonConfig(inputFlags): path='Shifter/mhtpufit_em',xbins=ec_bins,xmin=ec_min,xmax=ec_max) metGroup.defineHistogram('mhtpufit_em_Ey_log',title='mhtpufit_em Missing E_{y} log;sgn(E_{y}) log_{10}(E_{y}/GeV);Events', path='Shifter/mhtpufit_em',xbins=ec_bins_log,xmin=ec_min_log,xmax=ec_max_log) - metGroup.defineHistogram('mhtpufit_em_Et', title='mhtpufit_em E_{T};E_{T} [GeV];Events', + metGroup.defineHistogram('mhtpufit_em_Et', title='mhtpufit_em Missing E_{T};E_{T} [GeV];Events', path='Shifter/mhtpufit_em',xbins=et_bins,xmin=et_min,xmax=et_max) metGroup.defineHistogram('mhtpufit_em_Et_log',title='mhtpufit_em Missing E_{T} log;log_{10}(E_{T}/GeV);Events', path='Shifter/mhtpufit_em',xbins=et_bins_log,xmin=et_min_log,xmax=et_max_log) @@ -388,7 +420,7 @@ def TrigMETMonConfig(inputFlags): path='Expert/tc',xbins=ec_bins,xmin=ec_min,xmax=ec_max) metGroup.defineHistogram('tc_Ey',title='tc Missing E_{y};E_{y} [GeV];Events', path='Expert/tc',xbins=ec_bins,xmin=ec_min,xmax=ec_max) - metGroup.defineHistogram('tc_Et', title='tc E_{T};E_{T} [GeV];Events', + metGroup.defineHistogram('tc_Et', title='tc Missing E_{T};E_{T} [GeV];Events', path='Expert/tc',xbins=et_bins,xmin=et_min,xmax=et_max) ## Chain specific metChain1Group.defineHistogram('cell_Ex',title='cell Missing E_{x};E_{x} [GeV];Events', diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx index 2b95787a71a7b3bf86f3ce6e6781ec8ec2150bb0..8794ce5dcf0941801706118095df97554609d037 100644 --- a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx @@ -12,6 +12,7 @@ TrigMETMonitorAlgorithm::TrigMETMonitorAlgorithm( const std::string& name, ISvcL , m_hlt_cell_met_key("HLT_MET_cell") , m_hlt_mht_met_key("HLT_MET_mht") , m_hlt_tc_met_key("HLT_MET_tc") + , m_hlt_tc_em_met_key("HLT_MET_tc_em") , m_hlt_tcpufit_met_key("HLT_MET_tcpufit") , m_hlt_trkmht_met_key("HLT_MET_trkmht") , m_hlt_pfsum_met_key("HLT_MET_pfsum") @@ -26,6 +27,7 @@ TrigMETMonitorAlgorithm::TrigMETMonitorAlgorithm( const std::string& name, ISvcL declareProperty("hlt_cell_key", m_hlt_cell_met_key); declareProperty("hlt_mht_key", m_hlt_mht_met_key); declareProperty("hlt_tc_key", m_hlt_tc_met_key); + declareProperty("hlt_tc_em_key", m_hlt_tc_em_met_key); declareProperty("hlt_tcpufit_key", m_hlt_tcpufit_met_key); declareProperty("hlt_trkmht_key", m_hlt_trkmht_met_key); declareProperty("hlt_pfsum_key", m_hlt_pfsum_met_key); @@ -49,6 +51,7 @@ StatusCode TrigMETMonitorAlgorithm::initialize() { ATH_CHECK( m_hlt_cell_met_key.initialize() ); ATH_CHECK( m_hlt_mht_met_key.initialize() ); ATH_CHECK( m_hlt_tc_met_key.initialize() ); + ATH_CHECK( m_hlt_tc_em_met_key.initialize() ); ATH_CHECK( m_hlt_tcpufit_met_key.initialize() ); ATH_CHECK( m_hlt_trkmht_met_key.initialize() ); ATH_CHECK( m_hlt_pfsum_met_key.initialize() ); @@ -89,7 +92,12 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_tc_met_cont(m_hlt_tc_met_key, ctx); if (! hlt_tc_met_cont.isValid() || hlt_tc_met_cont->size()==0 ) { - ATH_MSG_DEBUG("Container "<< m_hlt_tc_met_key << " does not exist or is empty"); + ATH_MSG_DEBUG("Container "<< m_hlt_tc_met_key << " does not exist or is empty"); + } + + SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_tc_em_met_cont(m_hlt_tc_em_met_key, ctx); + if (! hlt_tc_em_met_cont.isValid() || hlt_tc_em_met_cont->size()==0 ) { + ATH_MSG_DEBUG("Container "<< m_hlt_tc_em_met_key << " does not exist or is empty"); } SG::ReadHandle<xAOD::TrigMissingETContainer> hlt_tcpufit_met_cont(m_hlt_tcpufit_met_key, ctx); @@ -162,6 +170,16 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co auto mht_sumEt_log = Monitored::Scalar<float>("mht_sumEt_log",0.0); auto mht_eta = Monitored::Scalar<float>("mht_eta",0.0); auto mht_phi = Monitored::Scalar<float>("mht_phi",0.0); + auto tc_em_Ex = Monitored::Scalar<float>("tc_em_Ex",0.0); + auto tc_em_Ey = Monitored::Scalar<float>("tc_em_Ey",0.0); + auto tc_em_Et = Monitored::Scalar<float>("tc_em_Et",0.0); + auto tc_em_sumEt = Monitored::Scalar<float>("tc_em_sumEt",0.0); + auto tc_em_Ex_log = Monitored::Scalar<float>("tc_em_Ex_log",0.0); + auto tc_em_Ey_log = Monitored::Scalar<float>("tc_em_Ey_log",0.0); + auto tc_em_Et_log = Monitored::Scalar<float>("tc_em_Et_log",0.0); + auto tc_em_sumEt_log = Monitored::Scalar<float>("tc_em_sumEt_log",0.0); + auto tc_em_eta = Monitored::Scalar<float>("tc_em_eta",0.0); + auto tc_em_phi = Monitored::Scalar<float>("tc_em_phi",0.0); auto tc_Ex = Monitored::Scalar<float>("tc_Ex",0.0); auto tc_Ey = Monitored::Scalar<float>("tc_Ey",0.0); auto tc_Et = Monitored::Scalar<float>("tc_Et",0.0); @@ -297,6 +315,25 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co } ATH_MSG_DEBUG("mht_Et = " << mht_Et); + // access HLT tc_em MET values + if ( hlt_tc_em_met_cont.isValid() && hlt_tc_em_met_cont->size() > 0 ) { + hlt_met = hlt_tc_em_met_cont->at(0); + tc_em_Ex = (hlt_met->ex())/1000.; + tc_em_Ey = (hlt_met->ey())/1000.; + float tc_em_Ez = (hlt_met->ez())/1000.; + tc_em_Et = std::sqrt(tc_em_Ex*tc_em_Ex + tc_em_Ey*tc_em_Ey); + tc_em_sumEt = (hlt_met->sumEt())/1000.; + tc_em_Ex_log = signed_log(tc_em_Ex, epsilon); + tc_em_Ey_log = signed_log(tc_em_Ey, epsilon); + tc_em_Et_log = signed_log(tc_em_Et, epsilon); + tc_em_sumEt_log = signed_log(tc_em_sumEt, epsilon); + + TVector3 v(tc_em_Ex, tc_em_Ey, tc_em_Ez); + tc_em_eta = v.Eta(); + tc_em_phi = v.Phi(); + } + ATH_MSG_DEBUG("tc_em_Et = " << tc_em_Et); + // access HLT tclcw MET values if ( hlt_tc_met_cont.isValid() && hlt_tc_met_cont->size() > 0 ) { hlt_met = hlt_tc_met_cont->at(0); @@ -445,18 +482,6 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co ATH_MSG_DEBUG("pass " << m_HLTChain2 << " = " << pass_HLT2); - // check active triggers - // This does not work for now - /* - auto chaingroup = m_trigDecTool->getChainGroup("HLT_xe.*"); - for(auto &trig : chainGroup->getListOfTriggers()) { - auto cg = m_trigDecTool->getChainGroup(trig); - std::string thisTrig = trig; - ATH_MSG_DEBUG (thisTrig << " chain prescale = " << cg->getPrescale()); - } - */ - - // Fill. First argument is the tool (GMT) name as defined in the py file, // all others are the variables to be saved. //fill("TrigMETMonitor",L1_Ex,L1_Ey,L1_Et,pass_HLT1); @@ -472,6 +497,9 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co mht_Ex,mht_Ey,mht_Et,mht_sumEt, mht_Ex_log,mht_Ey_log,mht_Et_log,mht_sumEt_log, mht_eta,mht_phi, + tc_em_Ex,tc_em_Ey,tc_em_Et,tc_em_sumEt, + tc_em_Ex_log,tc_em_Ey_log,tc_em_Et_log,tc_em_sumEt_log, + tc_em_eta,tc_em_phi, tc_Ex,tc_Ey,tc_Et, trkmht_Ex,trkmht_Ey,trkmht_Et,trkmht_sumEt, trkmht_Ex_log,trkmht_Ey_log,trkmht_Et_log,trkmht_sumEt_log, diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h index 70efa912b191bc65654e9ea21480a50c4a68aacc..de40caf14e901ec0fd71b2f43d7225ebc94bf646 100644 --- a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h +++ b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h @@ -33,6 +33,7 @@ class TrigMETMonitorAlgorithm : public AthMonitorAlgorithm { SG::ReadHandleKey<xAOD::TrigMissingETContainer> m_hlt_cell_met_key; SG::ReadHandleKey<xAOD::TrigMissingETContainer> m_hlt_mht_met_key; SG::ReadHandleKey<xAOD::TrigMissingETContainer> m_hlt_tc_met_key; + SG::ReadHandleKey<xAOD::TrigMissingETContainer> m_hlt_tc_em_met_key; SG::ReadHandleKey<xAOD::TrigMissingETContainer> m_hlt_tcpufit_met_key; SG::ReadHandleKey<xAOD::TrigMissingETContainer> m_hlt_trkmht_met_key; SG::ReadHandleKey<xAOD::TrigMissingETContainer> m_hlt_pfsum_met_key; diff --git a/Trigger/TrigSteer/DecisionHandling/python/EmuStepProcessingConfig.py b/Trigger/TrigSteer/DecisionHandling/python/EmuStepProcessingConfig.py index 0d80f0e9ddbc3f5132e09a37b0cbe64071a8d35a..83402868c1f1ee122944d87217336cff5284d131 100644 --- a/Trigger/TrigSteer/DecisionHandling/python/EmuStepProcessingConfig.py +++ b/Trigger/TrigSteer/DecisionHandling/python/EmuStepProcessingConfig.py @@ -325,8 +325,8 @@ def generateChainsManually(): # FSNOSEED not implemented in emulation # L1Thresholds=["MU6", "MU6"], makeChain(name='HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6', L1Thresholds=["MU6", "MU6"], ChainSteps=[ - makeChainStep("Step1_2muAs_empty", multiplicity=[]), - makeChainStep("Step2_2muAs", [mu21, mu21], multiplicity=[1,1]) ]) + makeChainStep("Step1_2muAs_empty", multiplicity=[]), + makeChainStep("Step2_2muAs", [mu21, mu21], multiplicity=[1,1]) ]) ] diff --git a/Trigger/TrigSteer/DecisionHandling/share/emu_step_menu_processing.ref b/Trigger/TrigSteer/DecisionHandling/share/emu_step_menu_processing.ref index 15ce53a33d18d01b3a378e4a1f60877177776e9f..5b79e11c73ac5acd93621007f9483ca7e4bf63c9 100644 --- a/Trigger/TrigSteer/DecisionHandling/share/emu_step_menu_processing.ref +++ b/Trigger/TrigSteer/DecisionHandling/share/emu_step_menu_processing.ref @@ -1,7 +1,13 @@ -TriggerSummaryStep1 1 0 DEBUG In summary 4 chains passed: +TriggerSummaryStep1 0 0 DEBUG In summary 0 chains passed: +TriggerSummaryStep2 0 0 DEBUG In summary 0 chains passed: +TriggerSummaryStep1 1 0 DEBUG In summary 8 chains passed: +TriggerSummaryStep1 1 0 DEBUG +++ HLT_2TestChain6_muv1_L12MU6 ID#1408409992 TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain5_ev1_L1EM3 ID#1756953305 +TriggerSummaryStep1 1 0 DEBUG +++ leg000_HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#1790520567 TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain5_ev3_L1EM7 ID#2336588294 +TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3196402061 +TriggerSummaryStep1 1 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3844733695 TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain5_gv1_L1EM7 ID#3893303900 TriggerSummaryStep2 1 0 DEBUG In summary 3 chains passed: TriggerSummaryStep2 1 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 @@ -10,7 +16,7 @@ TriggerSummaryStep2 1 0 DEBUG +++ HLT_TestChain5_ev3 TriggerSummaryStep3 1 0 DEBUG In summary 2 chains passed: TriggerSummaryStep3 1 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 TriggerSummaryStep3 1 0 DEBUG +++ HLT_TestChain5_ev1_L1EM3 ID#1756953305 -TriggerSummaryStep1 2 0 DEBUG In summary 19 chains passed: +TriggerSummaryStep1 2 0 DEBUG In summary 20 chains passed: TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#64374772 TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#122300819 TriggerSummaryStep1 2 0 DEBUG +++ HLT_2TestChain6_muv1_L12MU6 ID#1408409992 @@ -23,6 +29,7 @@ TriggerSummaryStep1 2 0 DEBUG +++ HLT_2TestChain6_mu TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain8_muv1_L1MU10 ID#2288364952 TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain6_muEmpty2_L1MU6 ID#2511524900 TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#2599553377 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#2764921170 TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3196402061 TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#3476793373 TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain10_muv2_L1MU10 ID#3482819675 @@ -30,7 +37,7 @@ TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain8_muv TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3844733695 TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#4097287954 TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#4283304400 -TriggerSummaryStep2 2 0 DEBUG In summary 15 chains passed: +TriggerSummaryStep2 2 0 DEBUG In summary 19 chains passed: TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#64374772 TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#122300819 TriggerSummaryStep2 2 0 DEBUG +++ HLT_2TestChain6_muv1_L12MU6 ID#1408409992 @@ -40,10 +47,14 @@ TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain5_ev1 TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#1790520567 TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#1827802456 TriggerSummaryStep2 2 0 DEBUG +++ HLT_2TestChain6_muEmpty1_L12MU6 ID#2176116418 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain8_muv1_L1MU10 ID#2288364952 TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain6_muEmpty2_L1MU6 ID#2511524900 TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#2599553377 TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#2764921170 TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#3476793373 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain10_muv2_L1MU10 ID#3482819675 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain8_muv1step_L1MU6 ID#3588359947 +TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3844733695 TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#4097287954 TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#4283304400 TriggerSummaryStep3 2 0 DEBUG In summary 10 chains passed: @@ -63,7 +74,8 @@ TriggerSummaryStep4 2 0 DEBUG +++ leg001_HLT_TestCha TriggerSummaryStep4 2 0 DEBUG +++ HLT_2TestChain6_muv1_L12MU6 ID#1408409992 TriggerSummaryStep4 2 0 DEBUG +++ leg000_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#1827802456 TriggerSummaryStep4 2 0 DEBUG +++ HLT_TestChain6_muEmpty2_L1MU6 ID#2511524900 -TriggerSummaryStep1 3 0 DEBUG In summary 8 chains passed: +TriggerSummaryStep1 3 0 DEBUG In summary 9 chains passed: +TriggerSummaryStep1 3 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#64374772 TriggerSummaryStep1 3 0 DEBUG +++ HLT_TestChain20_muv1_L1MU10 ID#356594709 TriggerSummaryStep1 3 0 DEBUG +++ leg001_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#1546253468 TriggerSummaryStep1 3 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 @@ -72,12 +84,14 @@ TriggerSummaryStep1 3 0 DEBUG +++ HLT_TestChain8_muv TriggerSummaryStep1 3 0 DEBUG +++ HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#3476793373 TriggerSummaryStep1 3 0 DEBUG +++ HLT_TestChain8_muv1step_L1MU6 ID#3588359947 TriggerSummaryStep1 3 0 DEBUG +++ leg000_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#4283304400 -TriggerSummaryStep2 3 0 DEBUG In summary 6 chains passed: +TriggerSummaryStep2 3 0 DEBUG In summary 8 chains passed: TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain20_muv1_L1MU10 ID#356594709 TriggerSummaryStep2 3 0 DEBUG +++ leg001_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#1546253468 TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 +TriggerSummaryStep2 3 0 DEBUG +++ leg000_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#1827802456 TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain8_muv1_L1MU10 ID#2288364952 TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#3476793373 +TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain8_muv1step_L1MU6 ID#3588359947 TriggerSummaryStep2 3 0 DEBUG +++ leg000_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#4283304400 TriggerSummaryStep3 3 0 DEBUG In summary 6 chains passed: TriggerSummaryStep3 3 0 DEBUG +++ HLT_TestChain20_muv1_L1MU10 ID#356594709 @@ -93,8 +107,8 @@ TrigSignatureMoniMT INFO HLT_2TestChain4_muv1dr_ TrigSignatureMoniMT INFO -- #3176095517 Events 0 0 0 0 0 0 0 TrigSignatureMoniMT INFO -- #3176095517 Features 0 0 0 0 TrigSignatureMoniMT INFO HLT_2TestChain6_muEmpty1_L12MU6 #2176116418 -TrigSignatureMoniMT INFO -- #2176116418 Events 1 1 0 1 - - 1 -TrigSignatureMoniMT INFO -- #2176116418 Features 0 6 - - +TrigSignatureMoniMT INFO -- #2176116418 Events 1 1 - 1 - - 1 +TrigSignatureMoniMT INFO -- #2176116418 Features - 6 - - TrigSignatureMoniMT INFO HLT_2TestChain6_muv1_L12MU6 #1408409992 TrigSignatureMoniMT INFO -- #1408409992 Events 2 2 1 1 1 1 1 TrigSignatureMoniMT INFO -- #1408409992 Features 6 6 6 6 @@ -102,8 +116,8 @@ TrigSignatureMoniMT INFO HLT_3TestChain6_muv1_L1 TrigSignatureMoniMT INFO -- #2217088100 Events 0 0 0 0 0 0 0 TrigSignatureMoniMT INFO -- #2217088100 Features 0 0 0 0 TrigSignatureMoniMT INFO HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 #2764921170 -TrigSignatureMoniMT INFO -- #2764921170 Events 1 1 0 1 - - 1 -TrigSignatureMoniMT INFO -- #2764921170 Features 0 3 - - +TrigSignatureMoniMT INFO -- #2764921170 Events 1 1 - 1 - - 1 +TrigSignatureMoniMT INFO -- #2764921170 Features - 3 - - TrigSignatureMoniMT INFO HLT_TestChain10_muv2_L1MU10 #3482819675 TrigSignatureMoniMT INFO -- #3482819675 Events 2 2 1 0 0 - 0 TrigSignatureMoniMT INFO -- #3482819675 Features 1 0 0 - @@ -126,8 +140,8 @@ TrigSignatureMoniMT INFO HLT_TestChain5_gv1_L1EM TrigSignatureMoniMT INFO -- #3893303900 Events 1 1 1 - - - 1 TrigSignatureMoniMT INFO -- #3893303900 Features 2 - - - TrigSignatureMoniMT INFO HLT_TestChain6_muEmpty2_L1MU6 #2511524900 -TrigSignatureMoniMT INFO -- #2511524900 Events 1 1 1 0 1 1 1 -TrigSignatureMoniMT INFO -- #2511524900 Features 3 0 3 3 +TrigSignatureMoniMT INFO -- #2511524900 Events 1 1 1 - 1 1 1 +TrigSignatureMoniMT INFO -- #2511524900 Features 3 - 3 3 TrigSignatureMoniMT INFO HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 #64374772 TrigSignatureMoniMT INFO -- #64374772 Events 2 2 1 1 1 1 1 TrigSignatureMoniMT INFO -- #64374772 Features 3 3 3 3 diff --git a/Trigger/TrigSteer/DecisionHandling/share/emu_step_processing.ref b/Trigger/TrigSteer/DecisionHandling/share/emu_step_processing.ref index 143c5713c64a76ad1aace89d776f4b767db4f6b3..c561eca08f8b5de841062724d55121405d1e3e8a 100644 --- a/Trigger/TrigSteer/DecisionHandling/share/emu_step_processing.ref +++ b/Trigger/TrigSteer/DecisionHandling/share/emu_step_processing.ref @@ -1,7 +1,14 @@ -TriggerSummaryStep1 1 0 DEBUG In summary 4 chains passed: +TriggerSummaryStep1 0 0 DEBUG In summary 0 chains passed: +TriggerSummaryStep2 0 0 DEBUG In summary 0 chains passed: +TriggerSummaryStep3 0 0 DEBUG In summary 0 chains passed: +TriggerSummaryStep1 1 0 DEBUG In summary 8 chains passed: +TriggerSummaryStep1 1 0 DEBUG +++ HLT_2TestChain6_muv1_L12MU6 ID#1408409992 TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain5_ev1_L1EM3 ID#1756953305 +TriggerSummaryStep1 1 0 DEBUG +++ leg000_HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#1790520567 TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain5_ev3_L1EM7 ID#2336588294 +TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3196402061 +TriggerSummaryStep1 1 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3844733695 TriggerSummaryStep1 1 0 DEBUG +++ HLT_TestChain5_gv1_L1EM7 ID#3893303900 TriggerSummaryStep2 1 0 DEBUG In summary 3 chains passed: TriggerSummaryStep2 1 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 @@ -10,7 +17,7 @@ TriggerSummaryStep2 1 0 DEBUG +++ HLT_TestChain5_ev3 TriggerSummaryStep3 1 0 DEBUG In summary 2 chains passed: TriggerSummaryStep3 1 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 TriggerSummaryStep3 1 0 DEBUG +++ HLT_TestChain5_ev1_L1EM3 ID#1756953305 -TriggerSummaryStep1 2 0 DEBUG In summary 23 chains passed: +TriggerSummaryStep1 2 0 DEBUG In summary 24 chains passed: TriggerSummaryStep1 2 0 DEBUG +++ leg002_HLT_TestChain5_ev1_TestChain8_ev1_2TestChain6_muv1_L1EM3_L1EM5_L12MU6 ID#56278684 TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#64374772 TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#122300819 @@ -26,6 +33,7 @@ TriggerSummaryStep1 2 0 DEBUG +++ HLT_2TestChain6_mu TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain8_muv1_L1MU10 ID#2288364952 TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain6_muEmpty2_L1MU6 ID#2511524900 TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#2599553377 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#2764921170 TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_TestChain5_ev1_TestChain8_ev1_2TestChain6_muv1_L1EM3_L1EM5_L12MU6 ID#3037831603 TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3196402061 TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#3476793373 @@ -34,7 +42,7 @@ TriggerSummaryStep1 2 0 DEBUG +++ HLT_TestChain8_muv TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3844733695 TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#4097287954 TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#4283304400 -TriggerSummaryStep2 2 0 DEBUG In summary 19 chains passed: +TriggerSummaryStep2 2 0 DEBUG In summary 23 chains passed: TriggerSummaryStep2 2 0 DEBUG +++ leg002_HLT_TestChain5_ev1_TestChain8_ev1_2TestChain6_muv1_L1EM3_L1EM5_L12MU6 ID#56278684 TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#64374772 TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#122300819 @@ -47,14 +55,19 @@ TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_TestCha TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain5_ev1_TestChain8_ev1_2TestChain6_muv1_L1EM3_L1EM5_L12MU6 ID#1820214917 TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#1827802456 TriggerSummaryStep2 2 0 DEBUG +++ HLT_2TestChain6_muEmpty1_L12MU6 ID#2176116418 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain8_muv1_L1MU10 ID#2288364952 TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain6_muEmpty2_L1MU6 ID#2511524900 TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#2599553377 TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#2764921170 TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_TestChain5_ev1_TestChain8_ev1_2TestChain6_muv1_L1EM3_L1EM5_L12MU6 ID#3037831603 TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#3476793373 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain10_muv2_L1MU10 ID#3482819675 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_TestChain8_muv1step_L1MU6 ID#3588359947 +TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 ID#3844733695 TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 ID#4097287954 TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#4283304400 -TriggerSummaryStep3 2 0 DEBUG In summary 5 chains passed: +TriggerSummaryStep3 2 0 DEBUG In summary 6 chains passed: +TriggerSummaryStep3 2 0 DEBUG +++ HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#64374772 TriggerSummaryStep3 2 0 DEBUG +++ leg001_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#122300819 TriggerSummaryStep3 2 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 TriggerSummaryStep3 2 0 DEBUG +++ HLT_TestChain5_ev1_L1EM3 ID#1756953305 @@ -76,12 +89,14 @@ TriggerSummaryStep1 3 0 DEBUG +++ HLT_TestChain8_muv TriggerSummaryStep1 3 0 DEBUG +++ HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#3476793373 TriggerSummaryStep1 3 0 DEBUG +++ HLT_TestChain8_muv1step_L1MU6 ID#3588359947 TriggerSummaryStep1 3 0 DEBUG +++ leg000_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#4283304400 -TriggerSummaryStep2 3 0 DEBUG In summary 6 chains passed: +TriggerSummaryStep2 3 0 DEBUG In summary 8 chains passed: TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain20_muv1_L1MU10 ID#356594709 TriggerSummaryStep2 3 0 DEBUG +++ leg001_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#1546253468 TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain8_ev1_L1EM5 ID#1677577445 +TriggerSummaryStep2 3 0 DEBUG +++ leg000_HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 ID#1827802456 TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain8_muv1_L1MU10 ID#2288364952 TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#3476793373 +TriggerSummaryStep2 3 0 DEBUG +++ HLT_TestChain8_muv1step_L1MU6 ID#3588359947 TriggerSummaryStep2 3 0 DEBUG +++ leg000_HLT_TestChain6_muv2_TestChain8_ev2_L1MU6_EM5 ID#4283304400 TriggerSummaryStep3 3 0 DEBUG In summary 3 chains passed: TriggerSummaryStep3 3 0 DEBUG +++ HLT_TestChain20_muv1_L1MU10 ID#356594709 @@ -94,8 +109,8 @@ TrigSignatureMoniMT INFO HLT_2TestChain4_muv1dr_ TrigSignatureMoniMT INFO -- #3176095517 Events 0 0 0 0 - - 0 TrigSignatureMoniMT INFO -- #3176095517 Features 0 0 - - TrigSignatureMoniMT INFO HLT_2TestChain6_muEmpty1_L12MU6 #2176116418 -TrigSignatureMoniMT INFO -- #2176116418 Events 1 1 0 1 - - 1 -TrigSignatureMoniMT INFO -- #2176116418 Features 0 6 - - +TrigSignatureMoniMT INFO -- #2176116418 Events 1 1 - 1 - - 1 +TrigSignatureMoniMT INFO -- #2176116418 Features - 6 - - TrigSignatureMoniMT INFO HLT_2TestChain6_muv1_L12MU6 #1408409992 TrigSignatureMoniMT INFO -- #1408409992 Events 2 2 1 1 - - 1 TrigSignatureMoniMT INFO -- #1408409992 Features 6 6 - - @@ -103,8 +118,8 @@ TrigSignatureMoniMT INFO HLT_3TestChain6_muv1_L1 TrigSignatureMoniMT INFO -- #2217088100 Events 0 0 0 0 - - 0 TrigSignatureMoniMT INFO -- #2217088100 Features 0 0 - - TrigSignatureMoniMT INFO HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6 #2764921170 -TrigSignatureMoniMT INFO -- #2764921170 Events 1 1 0 1 - - 1 -TrigSignatureMoniMT INFO -- #2764921170 Features 0 3 - - +TrigSignatureMoniMT INFO -- #2764921170 Events 1 1 - 1 - - 1 +TrigSignatureMoniMT INFO -- #2764921170 Features - 3 - - TrigSignatureMoniMT INFO HLT_TestChain10_muv2_L1MU10 #3482819675 TrigSignatureMoniMT INFO -- #3482819675 Events 2 2 1 0 0 - 0 TrigSignatureMoniMT INFO -- #3482819675 Features 1 0 0 - @@ -130,11 +145,11 @@ TrigSignatureMoniMT INFO HLT_TestChain5_gv1_L1EM TrigSignatureMoniMT INFO -- #3893303900 Events 1 1 1 - - - 1 TrigSignatureMoniMT INFO -- #3893303900 Features 2 - - - TrigSignatureMoniMT INFO HLT_TestChain6_muEmpty2_L1MU6 #2511524900 -TrigSignatureMoniMT INFO -- #2511524900 Events 1 1 1 0 1 1 1 -TrigSignatureMoniMT INFO -- #2511524900 Features 3 0 3 3 +TrigSignatureMoniMT INFO -- #2511524900 Events 1 1 1 - 1 1 1 +TrigSignatureMoniMT INFO -- #2511524900 Features 3 - 3 3 TrigSignatureMoniMT INFO HLT_TestChain6_muv1_TestChain10_ev1_L1MU6_EM5 #64374772 -TrigSignatureMoniMT INFO -- #64374772 Events 2 2 2 1 0 1 1 -TrigSignatureMoniMT INFO -- #64374772 Features 4 3 0 3 +TrigSignatureMoniMT INFO -- #64374772 Events 2 2 2 1 - 1 1 +TrigSignatureMoniMT INFO -- #64374772 Features 4 3 - 3 TrigSignatureMoniMT INFO HLT_TestChain6_muv1_TestChain10_muv1_L12MU6 #3196402061 TrigSignatureMoniMT INFO -- #3196402061 Events 2 2 1 0 - - 0 TrigSignatureMoniMT INFO -- #3196402061 Features 3 0 - - diff --git a/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.cxx b/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.cxx index 2e95d1959e3968b4764a02aec9c3451f5a5ea444..7a34923d7d9eb4a7983770eeb65beee2d3acf98c 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.cxx @@ -27,7 +27,6 @@ StatusCode RoRSeqFilter::initialize() CHECK( not m_inputKeys.empty() ); CHECK( not m_outputKeys.empty() ); - CHECK( m_inputKeys.initialize() ); CHECK( m_outputKeys.initialize() ); @@ -87,6 +86,7 @@ StatusCode RoRSeqFilter::initialize() for ( const std::string& el: m_chainsProperty ) m_chains.insert( HLT::Identifier( el ).numeric() ); + m_chainsPerInput.resize( m_chainsPerInputProperty.size() ); for ( size_t i = 0; i < m_chainsPerInputProperty.size(); ++i ) { diff --git a/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.h b/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.h index ea0846269006eb9c8aa497511163c11adce9b9d8..f049903e52f63198cc566d464ca61de0c75ae10c 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.h +++ b/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.h @@ -61,6 +61,7 @@ class RoRSeqFilter **/ virtual StatusCode execute(const EventContext& ctx) const override; + private: RoRSeqFilter(); SG::ReadHandleKeyArray<TrigCompositeUtils::DecisionContainer> m_inputKeys{ this, "Input", {}, "Inputs to the filter" }; @@ -68,10 +69,10 @@ class RoRSeqFilter Gaudi::Property<std::vector<std::string> > m_chainsProperty{ this, "Chains", {}, "Chains of which this filter is concerned" }; std::set<HLT::Identifier> m_chains; - + Gaudi::Property<std::vector <std::vector<std::string>> > m_chainsPerInputProperty{ this, "ChainsPerInput", {}, "Chains of which this filter is concerned" }; std::vector<std::set<HLT::Identifier>> m_chainsPerInput; - + /** * It can be used to define a custom routing from input to output collections * Example: [[0,1,3], [2]] means that inputs 0, 1, and 3 are directed to output 0, and input under the index 2 to aoutput 1 diff --git a/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py b/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py index 72d702e36405e26f18b9b89200c71158fd23495b..602b111f6b51f235919dd9d4039c049a8d367ac7 100644 --- a/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py +++ b/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py @@ -2,7 +2,6 @@ # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # -from six import iteritems from AthenaCommon.Logging import logging log = logging.getLogger('L1DecoderConfig') from AthenaConfiguration.ComponentFactory import CompFactory @@ -22,7 +21,7 @@ def mapThresholdToL1DecisionCollection(threshold): "TE" : "HLTNav_L1MET" } # remove actual threshold value from L1 threshold string - for (thresholdType, l1Collection) in iteritems(mapThresholdToL1Decoder): + for (thresholdType, l1Collection) in mapThresholdToL1Decoder.items(): if threshold.startswith( thresholdType ): return l1Collection @@ -43,7 +42,7 @@ def mapThresholdToL1RoICollection(threshold): "TE" : "HLT_FSRoI" } # remove actual threshold value from L1 threshold string - for (thresholdType, l1Collection) in iteritems(mapThresholdToL1Decoder): + for (thresholdType, l1Collection) in mapThresholdToL1Decoder.items(): if threshold.startswith( thresholdType ): return l1Collection diff --git a/Trigger/TrigSteer/L1Decoder/src/EMRoIsUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/EMRoIsUnpackingTool.h index 7236bf93f1a73138f7703d6369bcfd7f449495f6..776998b49c2689a3beb36ba2fee718e618c9e20f 100644 --- a/Trigger/TrigSteer/L1Decoder/src/EMRoIsUnpackingTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/EMRoIsUnpackingTool.h @@ -42,12 +42,15 @@ private: ///@{ @name Properties SG::WriteHandleKey<TrigRoiDescriptorCollection> m_trigRoIsKey{ - this, "OutputTrigRoIs", "HLT_EMRoIs", "Name of the RoIs object produced by the unpacker"}; + this, "OutputTrigRoIs", "HLT_EMRoIs", + "Name of the RoIs object produced by the unpacker"}; SG::WriteHandleKey< DataVector<LVL1::RecEmTauRoI> > m_recRoIsKey{ - this, "OutputRecRoIs", "HLT_RecEMRoIs", "Name of the RoIs object produced by the unpacker"}; + this, "OutputRecRoIs", "HLT_RecEMRoIs", + "Name of the RoIs object produced by the unpacker"}; - Gaudi::Property<float> m_roIWidth{this, "RoIWidth", 0.1, "Size of RoI in eta/ phi"}; + Gaudi::Property<float> m_roIWidth{ + this, "RoIWidth", 0.1, "Size of RoI in eta/ phi"}; ///@} ServiceHandle<TrigConf::ILVL1ConfigSvc> m_configSvc; diff --git a/Trigger/TrigSteer/L1Decoder/src/FSRoIsUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/FSRoIsUnpackingTool.h index 95f5f1ad9275ccabe3bce42d877f7b65d9afdcc3..e5e98b1a90aab8d0f716db22d6ba6247376ca21d 100644 --- a/Trigger/TrigSteer/L1Decoder/src/FSRoIsUnpackingTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/FSRoIsUnpackingTool.h @@ -30,7 +30,8 @@ public: virtual StatusCode start() override; private: - SG::WriteHandleKey<TrigRoiDescriptorCollection> m_fsRoIKey{ this, "OutputTrigRoIs", "HLT_FSRoI", "The key of FS RoI" }; + SG::WriteHandleKey<TrigRoiDescriptorCollection> m_fsRoIKey{ + this, "OutputTrigRoIs", "HLT_FSRoI", "The key of FS RoI" }; ServiceHandle<TrigConf::ILVL1ConfigSvc> m_configSvc; HLT::IDSet m_allFSChains; diff --git a/Trigger/TrigSteer/L1Decoder/src/JRoIsUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/JRoIsUnpackingTool.h index 6d7078ad03ec432b5ad557053edfa8a38b3ac51a..97bb5de1217a0807b00ecb96e87fd862834e4e59 100644 --- a/Trigger/TrigSteer/L1Decoder/src/JRoIsUnpackingTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/JRoIsUnpackingTool.h @@ -16,39 +16,43 @@ #include "RoIsUnpackingToolBase.h" -class JRoIsUnpackingTool : public RoIsUnpackingToolBase { -public: +class JRoIsUnpackingTool : public RoIsUnpackingToolBase { +public: JRoIsUnpackingTool( const std::string& type, - const std::string& name, + const std::string& name, const IInterface* parent ); StatusCode unpack(const EventContext& ctx, const ROIB::RoIBResult& roib, const HLT::IDSet& activeChains) const override; - + virtual StatusCode initialize() override; virtual StatusCode updateConfiguration() override; virtual StatusCode finalize() override { return StatusCode::SUCCESS; } virtual StatusCode start() override; -private: +private: SG::WriteHandleKey<TrigRoiDescriptorCollection> m_trigRoIsKey{ - this, "OutputTrigRoIs", "HLT_JETRoIs", "Name of the RoIs object produced by the unpacker"}; + this, "OutputTrigRoIs", "HLT_JETRoIs", + "Name of the RoIs object produced by the unpacker"}; SG::WriteHandleKey< DataVector<LVL1::RecJetRoI> > m_recRoIsKey{ - this, "OutputRecRoIs", "HLT_RecJETRoIs", "Name of the RoIs object produced by the unpacker"}; + this, "OutputRecRoIs", "HLT_RecJETRoIs", + "Name of the RoIs object produced by the unpacker"}; - Gaudi::Property<float> m_roIWidth{ + Gaudi::Property<float> m_roIWidth{ this, "RoIWidth", 0.4, "Size of RoI in eta/ phi"}; - - Gaudi::Property<std::string> m_fsRoIKey{ this, "FSRoIKey", "HLT_FSRoI", "The key of FS RoI made earlier by the L1Decoder" }; + + Gaudi::Property<std::string> m_fsRoIKey{ + this, "FSRoIKey", "HLT_FSRoI", + "The key of FS RoI made earlier by the L1Decoder" }; ServiceHandle<TrigConf::ILVL1ConfigSvc> m_configSvc; std::vector<TrigConf::TriggerThreshold*> m_jetThresholds; -}; +}; #endif //> !L1DECODER_JROISUNPACKINGTOOL_H diff --git a/Trigger/TrigSteer/L1Decoder/src/L1Decoder.h b/Trigger/TrigSteer/L1Decoder/src/L1Decoder.h index bd399dc1b0a3b0fd50478085b11dc52cc5d4d73d..dcfee96251fdae3160650b329ff869226581e538 100644 --- a/Trigger/TrigSteer/L1Decoder/src/L1Decoder.h +++ b/Trigger/TrigSteer/L1Decoder/src/L1Decoder.h @@ -22,7 +22,7 @@ /* @brief an algorithm used to unpack the RoIB result and provide CTP bits, active chains and RoIs - All the unpacking is outsourced to tools. However the menu mapping, this is from CTP items to chains + All the unpacking is outsourced to tools. However the menu mapping, this is from CTP items to chains and threshods to chains is maintained in this algorithm and provided to unpacking tools. */ @@ -48,39 +48,49 @@ private: ///@{ @name Properties /// Level-1 result with RoIs from Run-2 hardware systems - SG::ReadHandleKey<ROIB::RoIBResult> m_RoIBResultKey{this, "RoIBResult", "RoIBResult", - "Name of RoIBResult"}; + SG::ReadHandleKey<ROIB::RoIBResult> m_RoIBResultKey{ + this, "RoIBResult", "RoIBResult", "Name of RoIBResult"}; /// Level-1 result with RoIs from Run-3 hardware systems - SG::ReadHandleKey<xAOD::TrigCompositeContainer> m_l1TriggerResultKey{this, "L1TriggerResult", "L1TriggerResult", - "Name of the L1 Trigger Result"}; + SG::ReadHandleKey<xAOD::TrigCompositeContainer> m_l1TriggerResultKey{ + this, "L1TriggerResult", "L1TriggerResult", + "Name of the L1 Trigger Result"}; - SG::WriteHandleKey<TrigCompositeUtils::DecisionContainer> m_summaryKey{this, "L1DecoderSummaryKey", "L1DecoderSummary", - "Chains status after L1 and prescaling"}; // Note: was previously property 'Chains' with default value 'HLTChains' + SG::WriteHandleKey<TrigCompositeUtils::DecisionContainer> m_summaryKey{ + this, "L1DecoderSummaryKey", "L1DecoderSummary", + "Chains status after L1 and prescaling"}; // Note: was previously property 'Chains' with default value 'HLTChains' - SG::WriteHandleKey<TrigTimeStamp> m_startStampKey{ this, "StartStampKey", "L1DecoderStart", - "Object with the time stamp when decoding started" }; + SG::WriteHandleKey<TrigTimeStamp> m_startStampKey{ + this, "StartStampKey", "L1DecoderStart", + "Object with the time stamp when decoding started" }; - Gaudi::Property<bool> m_doCostMonitoring{this, "DoCostMonitoring", false, + Gaudi::Property<bool> m_doCostMonitoring{ + this, "DoCostMonitoring", false, "Enables start-of-event cost monitoring behavior."}; - Gaudi::Property<std::string> m_costMonitoringChain{this, "CostMonitoringChain", "HLT_costmonitor_CostMonDS_L1All", + Gaudi::Property<std::string> m_costMonitoringChain{ + this, "CostMonitoringChain", "HLT_costmonitor_CostMonDS_L1All", "Name of the chain which should enable HLT cost montoring."}; - ServiceHandle<ITrigCostMTSvc> m_trigCostSvcHandle { this, "TrigCostMTSvc", "TrigCostMTSvc", - "The trigger cost service" }; + ServiceHandle<ITrigCostMTSvc> m_trigCostSvcHandle { + this, "TrigCostMTSvc", "TrigCostMTSvc", + "The trigger cost service" }; - ToolHandle<ICTPUnpackingTool> m_ctpUnpacker{this, "ctpUnpacker", "CTPUnpackingTool/CTPUnpackingTool", - "Tool used to unpack the CTP info"}; + ToolHandle<ICTPUnpackingTool> m_ctpUnpacker{ + this, "ctpUnpacker", "CTPUnpackingTool/CTPUnpackingTool", + "Tool used to unpack the CTP info"}; - ToolHandleArray<IRoIsUnpackingTool> m_roiUnpackers{this, "roiUnpackers", {}, - "Tools unpacking RoIs"}; + ToolHandleArray<IRoIsUnpackingTool> m_roiUnpackers{ + this, "roiUnpackers", {}, + "Tools unpacking RoIs"}; - ToolHandle<IPrescalingTool> m_prescaler{this, "prescaler", "PrescalingTool/PrescalingTool", - "Prescaling tool"}; + ToolHandle<IPrescalingTool> m_prescaler{ + this, "prescaler", "PrescalingTool/PrescalingTool", + "Prescaling tool"}; - ToolHandle<TrigConf::IKeyWriterTool> m_keyWriterTool{this, "KeyWriterTool", "", - "Writes the keys used when the trigger executes on an event"}; + ToolHandle<TrigConf::IKeyWriterTool> m_keyWriterTool{ + this, "KeyWriterTool", "", + "Writes the keys used when the trigger executes on an event"}; }; diff --git a/Trigger/TrigSteer/L1Decoder/src/L1TestDecoder.h b/Trigger/TrigSteer/L1Decoder/src/L1TestDecoder.h index 843d42cdfb7cab4f54e350a28fd91097423bb391..1054de37894c1733038a098abae93f0b8938170f 100644 --- a/Trigger/TrigSteer/L1Decoder/src/L1TestDecoder.h +++ b/Trigger/TrigSteer/L1Decoder/src/L1TestDecoder.h @@ -31,18 +31,21 @@ public: private: ///@{ @name Properties - SG::ReadHandleKey<ROIB::RoIBResult> m_RoIBResultKey{this, "RoIBResult", "RoIBResult", - "Name of RoIBResult"}; - + SG::ReadHandleKey<ROIB::RoIBResult> m_RoIBResultKey{ + this, "RoIBResult", "RoIBResult", + "Name of RoIBResult"}; + SG::WriteHandleKey<TrigRoiDescriptorCollection> m_trigEMRoIsKey{ - this, "EMRoIs", "HLT_TestEMRoIs", "Name of the EM RoIs object produced by the unpacker"}; + this, "EMRoIs", "HLT_TestEMRoIs", + "Name of the EM RoIs object produced by the unpacker"}; SG::WriteHandleKey<TrigCompositeUtils::DecisionContainer> m_EMDecisionsKey{ this, "EMDecisions", "HLTNav_TestL1EM", "Decisions for each EM RoI"}; - + SG::WriteHandleKey<TrigRoiDescriptorCollection> m_trigFSRoIKey{ - this, "OutputTrigFSRoI", "HLT_TestFSRoI", "Name of the Full Scan RoIs object produced by the unpacker"}; + this, "OutputTrigFSRoI", "HLT_TestFSRoI", + "Name of the Full Scan RoIs object produced by the unpacker"}; float m_roIWidth = 0.2; }; diff --git a/Trigger/TrigSteer/L1Decoder/src/L1TriggerResultMaker.h b/Trigger/TrigSteer/L1Decoder/src/L1TriggerResultMaker.h index be3e56030c30e13f060a65134db6569d8cafc0c3..60e0ac59739f020aa7fd3b671c0a9ec706b74be3 100644 --- a/Trigger/TrigSteer/L1Decoder/src/L1TriggerResultMaker.h +++ b/Trigger/TrigSteer/L1Decoder/src/L1TriggerResultMaker.h @@ -29,13 +29,17 @@ public: private: // ------------------------- Properties -------------------------------------- SG::WriteHandleKey<xAOD::TrigCompositeContainer> m_l1TriggerResultWHKey { - this, "L1TriggerResultWHKey", "L1TriggerResult", "Key of the output L1 Trigger Result"}; + this, "L1TriggerResultWHKey", "L1TriggerResult", + "Key of the output L1 Trigger Result"}; // Muon RoIs SG::ReadHandleKey<xAOD::MuonRoIContainer> m_muRoIKey { - this, "MuRoIKey", "LVL1MuonRoIs", "Key of the muon RoI container to be linked to L1 Trigger Result"}; + this, "MuRoIKey", "LVL1MuonRoIs", + "Key of the muon RoI container to be linked to L1 Trigger Result"}; + Gaudi::Property<std::string> m_muRoILinkName { - this, "MuRoILinkName", "mu_roi", "Name of the link to be created from L1 Trigger Result to muon RoI container"}; + this, "MuRoILinkName", "mu_roi", + "Name of the link to be created from L1 Trigger Result to muon RoI container"}; // Placeholder for other L1 xAOD outputs: // - CTP result diff --git a/Trigger/TrigSteer/L1Decoder/src/MURoIsUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/MURoIsUnpackingTool.h index 2af1e894ef941a3e67c00bf6f28f8116b98cff3f..01485854ecea774a8c2f806c6cba73a3da4737aa 100644 --- a/Trigger/TrigSteer/L1Decoder/src/MURoIsUnpackingTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/MURoIsUnpackingTool.h @@ -40,12 +40,15 @@ private: ///@{ @name Properties SG::WriteHandleKey< TrigRoiDescriptorCollection > m_trigRoIsKey{ - this, "OutputTrigRoIs", "HLT_MURoIs", "Name of the RoIs object produced by the unpacker"}; + this, "OutputTrigRoIs", "HLT_MURoIs", + "Name of the RoIs object produced by the unpacker"}; SG::WriteHandleKey< DataVector<LVL1::RecMuonRoI> > m_recRoIsKey{ - this, "OutputRecRoIs", "HLT_RecMURoIs", "Name of the RoIs object produced by the unpacker"}; + this, "OutputRecRoIs", "HLT_RecMURoIs", + "Name of the RoIs object produced by the unpacker"}; - Gaudi::Property<float> m_roIWidth{"RoIWidth", 0.1, "Size of RoI in eta/ phi"}; + Gaudi::Property<float> m_roIWidth{ + this, "RoIWidth", 0.1, "Size of RoI in eta/ phi"}; ///@} ServiceHandle<TrigConf::ILVL1ConfigSvc> m_configSvc; diff --git a/Trigger/TrigSteer/L1Decoder/src/PrescalingEmulationTool.h b/Trigger/TrigSteer/L1Decoder/src/PrescalingEmulationTool.h index 56271438f4011bb5dfe4d36c25fe646e467ab512..31943a444bf310afac860ebaa428683e8a01a0ac 100644 --- a/Trigger/TrigSteer/L1Decoder/src/PrescalingEmulationTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/PrescalingEmulationTool.h @@ -43,8 +43,14 @@ public: private: PrescalingEmulationTool(); - Gaudi::Property<bool> m_keepUnknownChains{ this, "KeepUnknownChains", true, "If True then chains for which prescaling information is not set are kept" }; - Gaudi::Property< std::vector<std::string> > m_prescalingConfig{ this, "Prescales", {}, "The prescaling info in the form: \"chainName:PSValue\"" }; + Gaudi::Property<bool> m_keepUnknownChains{ + this, "KeepUnknownChains", true, + "If True then chains for which prescaling information is not set are kept" }; + + Gaudi::Property< std::vector<std::string> > m_prescalingConfig{ + this, "Prescales", {}, + "The prescaling info in the form: \"chainName:PSValue\"" }; + ATHRNG::RNGWrapper m_RNGEngines; typedef std::map<HLT::Identifier, float> PrescalingInfo; diff --git a/Trigger/TrigSteer/L1Decoder/src/PrescalingTool.h b/Trigger/TrigSteer/L1Decoder/src/PrescalingTool.h index a7f57c120450ab9b98992dc79236e7397c2c34e4..c94746503538b3165f6f2ceb0133d8cbf151142e 100644 --- a/Trigger/TrigSteer/L1Decoder/src/PrescalingTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/PrescalingTool.h @@ -58,12 +58,18 @@ class PrescalingTool : public extends<AthAlgTool, IPrescalingTool> { private: // input data - SG::ReadCondHandleKey<TrigConf::HLTPrescalesSet> m_hltPrescaleSetInputKey{ this, "HLTPrescales", "HLTPrescales", "HLT prescales set"}; - SG::ReadHandleKey<xAOD::EventInfo> m_eventInfoKey{ this, "EventInfo", "EventInfo", "Event Info Object Key"}; + SG::ReadCondHandleKey<TrigConf::HLTPrescalesSet> m_hltPrescaleSetInputKey{ + this, "HLTPrescales", "HLTPrescales", "HLT prescales set"}; + + SG::ReadHandleKey<xAOD::EventInfo> m_eventInfoKey{ + this, "EventInfo", "EventInfo", "Event Info Object Key"}; // properties - Gaudi::Property<bool> m_keepUnknownChains{ this, "KeepUnknownChains", true, "If True then chains for which prescaling information is not set are kept" }; - ToolHandle<GenericMonitoringTool> m_monTool{this,"MonTool","","Monitoring tool"}; + Gaudi::Property<bool> m_keepUnknownChains{ + this, "KeepUnknownChains", true, + "If True then chains for which prescaling information is not set are kept" }; + + ToolHandle<GenericMonitoringTool> m_monTool{this, "MonTool", "", "Monitoring tool"}; // random engine for calculating prescales ATHRNG::RNGWrapper m_RNGEngines; diff --git a/Trigger/TrigSteer/L1Decoder/src/RerunRoIsUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/RerunRoIsUnpackingTool.h index bb8d84c5c944b456c75270a9845d44dcbcb4f724..ed468bba20b3854b236d30365aab98e55d363cde 100644 --- a/Trigger/TrigSteer/L1Decoder/src/RerunRoIsUnpackingTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/RerunRoIsUnpackingTool.h @@ -18,19 +18,19 @@ /** * @class $(klass)s - * @brief + * @brief **/ class RerunRoIsUnpackingTool : public RoIsUnpackingToolBase -{ +{ - public: + public: RerunRoIsUnpackingTool( const std::string& type, - const std::string& name, + const std::string& name, const IInterface* parent ); - virtual ~RerunRoIsUnpackingTool(); + virtual ~RerunRoIsUnpackingTool(); virtual StatusCode initialize() override; virtual StatusCode finalize() override; virtual StatusCode updateConfiguration() override; @@ -40,10 +40,12 @@ class RerunRoIsUnpackingTool : public RoIsUnpackingToolBase const HLT::IDSet& activeChains ) const override; - private: - SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> m_sourceKey{ this, "SourceDecisions", "UnspecifiedRoIDecisionsForRerunning", "The collection which has to be checked for RoIs to re-enable" }; + private: + SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> m_sourceKey{ + this, "SourceDecisions", "UnspecifiedRoIDecisionsForRerunning", + "The collection which has to be checked for RoIs to re-enable" }; -}; +}; #endif //> !L1DECODER_RERUNROISUNPACKINGTOOL_H diff --git a/Trigger/TrigSteer/L1Decoder/src/RoIsUnpackingEmulationTool.h b/Trigger/TrigSteer/L1Decoder/src/RoIsUnpackingEmulationTool.h index 0eb526904bd01f2c5672baef7d8f71ef1abe2f71..45ac2614d2fc26db189d9183ca2181fd5f7f6840 100644 --- a/Trigger/TrigSteer/L1Decoder/src/RoIsUnpackingEmulationTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/RoIsUnpackingEmulationTool.h @@ -39,8 +39,12 @@ class RoIsUnpackingEmulationTool : public RoIsUnpackingToolBase { Gaudi::Property<float> m_roIWidth{"RoIWidth", 0.1, "Size of RoI in eta/ phi"}; - Gaudi::Property<std::string> m_inputFilename{this, "InputFilename", "RoIEmulation.dat", "FakeROI input filename"}; - Gaudi::Property<std::string> m_thresholdPrefix{this, "ThresholdPrefix", "EM", "Activate chains that are seed from threshold that have this prefix in the name"}; + Gaudi::Property<std::string> m_inputFilename{ + this, "InputFilename", "RoIEmulation.dat", "FakeROI input filename"}; + + Gaudi::Property<std::string> m_thresholdPrefix{ + this, "ThresholdPrefix", "EM", + "Activate chains that are seed from threshold that have this prefix in the name"}; ///@} // emulation diff --git a/Trigger/TrigSteer/L1Decoder/src/RoIsUnpackingToolBase.h b/Trigger/TrigSteer/L1Decoder/src/RoIsUnpackingToolBase.h index 0c10650f1fd5613f96f9b36dd035ac4e3fc2199e..1bef62f45712b54571fbc23244193b0997bf2067 100644 --- a/Trigger/TrigSteer/L1Decoder/src/RoIsUnpackingToolBase.h +++ b/Trigger/TrigSteer/L1Decoder/src/RoIsUnpackingToolBase.h @@ -49,10 +49,11 @@ protected: SG::WriteHandleKey<TrigCompositeUtils::DecisionContainer> m_decisionsKey{ this, "Decisions", "RoIDecisions", "Decisions for each RoI"}; - SG::ReadHandleKey<TrigConf::HLTMenu> m_HLTMenuKey{this, "HLTTriggerMenu", "DetectorStore+HLTTriggerMenu", - "HLT Menu"}; + SG::ReadHandleKey<TrigConf::HLTMenu> m_HLTMenuKey{ + this, "HLTTriggerMenu", "DetectorStore+HLTTriggerMenu", "HLT Menu"}; - ToolHandle<GenericMonitoringTool> m_monTool{this, "MonTool", "", "Monitoring tool"}; + ToolHandle<GenericMonitoringTool> m_monTool{ + this, "MonTool", "", "Monitoring tool"}; ///@} std::map<HLT::Identifier, HLT::IDVec> m_thresholdToChainMapping; diff --git a/Trigger/TrigSteer/L1Decoder/src/TAURoIsUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/TAURoIsUnpackingTool.h index 7ac52afcd914aa7d180599357333e9b46518658e..2c4980a17fee6cc5468006e03e50250df13f5ee0 100644 --- a/Trigger/TrigSteer/L1Decoder/src/TAURoIsUnpackingTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/TAURoIsUnpackingTool.h @@ -41,12 +41,15 @@ private: ///@{ @name Properties SG::WriteHandleKey<TrigRoiDescriptorCollection> m_trigRoIsKey{ - this, "OutputTrigRoIs", "HLT_TAURoIs", "Name of the RoIs object produced by the unpacker"}; + this, "OutputTrigRoIs", "HLT_TAURoIs", + "Name of the RoIs object produced by the unpacker"}; SG::WriteHandleKey< DataVector<LVL1::RecEmTauRoI> > m_recRoIsKey{ - this, "OutputRecRoIs", "HLT_RecTAURoIs", "Name of the RoIs object produced by the unpacker"}; + this, "OutputRecRoIs", "HLT_RecTAURoIs", + "Name of the RoIs object produced by the unpacker"}; - Gaudi::Property<float> m_roIWidth{this, "RoIWidth", 0.1, "Size of RoI in eta/ phi"}; + Gaudi::Property<float> m_roIWidth{ + this, "RoIWidth", 0.1, "Size of RoI in eta/ phi"}; ///@} ServiceHandle<TrigConf::ILVL1ConfigSvc> m_configSvc; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl2.cxx index adca231c44502e720fb3f3b20a97e92f5e55b2f2..a9ee935a7fa3e8ce8257199da60ba0bd3d83c191 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl2.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl2.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /********************************* * DeltaRApproxBoxCutIncl2.cpp @@ -33,7 +33,7 @@ namespace { unsigned int calcDeltaEta(const TCS::GenericTOB* tob1, const TCS::GenericTOB* tob2) { - double deta = fabs( tob1->eta() - tob2->eta() ); + double deta = std::abs( tob1->eta() - tob2->eta() ); return deta; } } diff --git a/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Cnv.cxx b/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Cnv.cxx index 2083ea628e10b3e8674cdc5694f2330b6fe363c5..1a24f5bfc258e6a859be41e8717e92151b5e3a6e 100644 --- a/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Cnv.cxx +++ b/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Cnv.cxx @@ -115,7 +115,7 @@ StatusCode PpmByteStreamV1Cnv::createObj( IOpaqueAddress* pAddr, return StatusCode::SUCCESS; } - ATH_CHECK( m_tool->convert(robFrags, ttCollection.get()) ); + ATH_CHECK( m_tool->convert(nm, robFrags, ttCollection.get()) ); pObj = SG::asStorable(std::move(ttCollection)); diff --git a/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Tool.cxx b/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Tool.cxx index 5296aa3a451ca6551a16f4758063e252a995bc49..f01fc67231961eac8d3088895300a40917978fa0 100644 --- a/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Tool.cxx +++ b/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Tool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ @@ -25,10 +25,11 @@ #include "L1CaloSubBlock.h" #include "L1CaloUserHeader.h" #include "ModifySlices.h" -#include "PpmSubBlockV1.h" #include "PpmByteStreamV1Tool.h" +#include "CxxUtils/checker_macros.h" + namespace LVL1BS { @@ -56,9 +57,7 @@ PpmByteStreamV1Tool::PpmByteStreamV1Tool(const std::string &type, m_errorTool("LVL1BS::L1CaloErrorByteStreamTool/L1CaloErrorByteStreamTool"), m_sms("SegMemSvc/SegMemSvc", name), m_version(1), m_compVers(4), - m_dataChannels(true), m_spareChannels(false), m_muonChannels(false), - m_subDetector(eformat::TDAQ_CALO_PREPROC), - m_srcIdMap(0), m_towerKey(0), m_errorBlock(0), m_rodStatus(0), m_fea(0) + m_subDetector(eformat::TDAQ_CALO_PREPROC) { declareInterface<PpmByteStreamV1Tool>(this); @@ -75,7 +74,7 @@ PpmByteStreamV1Tool::PpmByteStreamV1Tool(const std::string &type, // Properties for reading bytestream only declareProperty("ZeroSuppress", m_zeroSuppress = 0, "Only make trigger towers with non-zero EM or Had energy"); - declareProperty("ROBSourceIDs", m_sourceIDs, + declareProperty("ROBSourceIDs", m_sourceIDsProp, "ROB fragment source identifiers"); declareProperty("PedestalValue", m_pedestal = 10, "Pedestal value - needed for compressed formats 0,1 only"); @@ -113,37 +112,12 @@ PpmByteStreamV1Tool::~PpmByteStreamV1Tool() StatusCode PpmByteStreamV1Tool::initialize() { - msg(MSG::INFO) << "Initializing " << name() << " - package version " - << PACKAGE_VERSION << endmsg; + ATH_MSG_INFO ( "Initializing " << name() << " - package version " + << PACKAGE_VERSION); - StatusCode sc = m_ppmMaps.retrieve(); - if (sc.isFailure()) - { - msg(MSG::ERROR) << "Failed to retrieve tool " << m_ppmMaps << endmsg; - return sc; - } - else msg(MSG::INFO) << "Retrieved tool " << m_ppmMaps << endmsg; - - sc = m_errorTool.retrieve(); - if (sc.isFailure()) - { - msg(MSG::ERROR) << "Failed to retrieve tool " << m_errorTool << endmsg; - return sc; - } - else msg(MSG::INFO) << "Retrieved tool " << m_errorTool << endmsg; - - sc = m_sms.retrieve(); - if (sc.isFailure()) - { - msg(MSG::ERROR) << "Failed to retrieve service " << m_sms << endmsg; - return sc; - } - else msg(MSG::INFO) << "Retrieved service " << m_sms << endmsg; - - m_srcIdMap = new L1CaloSrcIdMap(); - m_towerKey = new LVL1::TriggerTowerKey(); - m_rodStatus = new std::vector<uint32_t>(2); - m_fea = new FullEventAssembler<L1CaloSrcIdMap>(); + ATH_CHECK( m_ppmMaps.retrieve() ); + ATH_CHECK( m_errorTool.retrieve() ); + ATH_CHECK( m_sms.retrieve() ); return StatusCode::SUCCESS; } @@ -157,44 +131,55 @@ StatusCode PpmByteStreamV1Tool::finalize() msg(MSG::INFO); printCompStats(); } - delete m_fea; - delete m_rodStatus; - delete m_errorBlock; - delete m_towerKey; - delete m_srcIdMap; return StatusCode::SUCCESS; } + // Conversion bytestream to trigger towers StatusCode PpmByteStreamV1Tool::convert( + const std::string& sgKey, const IROBDataProviderSvc::VROBFRAG &robFrags, - DataVector<LVL1::TriggerTower> *const ttCollection) + DataVector<LVL1::TriggerTower> *const ttCollection) const { const bool debug = msgLvl(MSG::DEBUG); const bool verbose = msgLvl(MSG::VERBOSE); if (debug) msg(MSG::DEBUG); + const std::string flag("Spare"); + const std::string::size_type pos = sgKey.find(flag); + bool spareChannels = + (pos != std::string::npos && pos == (sgKey.length() - flag.length())); + const std::string flag2("Muon"); + const std::string::size_type pos2 = sgKey.find(flag2); + bool muonChannels = + (pos2 != std::string::npos && pos2 == (sgKey.length() - flag2.length())); + bool dataChannels = (!spareChannels && !muonChannels); + // Set up TriggerTower pool and mappings // (NB. This assumes mappings won't change during the course of a job) const int maxChannels = s_crates * s_modules * s_channels; const int chanBitVecSize = maxChannels / 32; - if (m_ttData.empty()) + + SlotData& sd = *m_slotData; + std::lock_guard guard (sd.m_mutex); + + if (sd.m_ttData.empty()) { const int spareSize = maxChannels - 2 * s_dataSize; const int muonSize = 2 * s_channels; const int modBitVecSize = (s_crates * s_modules) / 32; - m_ttData.reserve(s_dataSize); - m_ttSpare.reserve(spareSize); - m_ttMuon.reserve(muonSize); - m_ttPos.resize(maxChannels); - m_chanLayer.resize(chanBitVecSize); - m_dataChan.resize(chanBitVecSize); - m_spareChan.resize(chanBitVecSize); - m_muonChan.resize(chanBitVecSize); - m_dataMod.resize(modBitVecSize); - m_spareMod.resize(modBitVecSize); - m_muonMod.resize(modBitVecSize); + sd.m_ttData.reserve(s_dataSize); + sd.m_ttSpare.reserve(spareSize); + sd.m_ttMuon.reserve(muonSize); + sd.m_ttPos.resize(maxChannels); + sd.m_chanLayer.resize(chanBitVecSize); + sd.m_dataChan.resize(chanBitVecSize); + sd.m_spareChan.resize(chanBitVecSize); + sd.m_muonChan.resize(chanBitVecSize); + sd.m_dataMod.resize(modBitVecSize); + sd.m_spareMod.resize(modBitVecSize); + sd.m_muonMod.resize(modBitVecSize); TriggerTowerMap ttMap; TriggerTowerMap::iterator itt; std::vector<int> dummyS; @@ -221,7 +206,7 @@ StatusCode PpmByteStreamV1Tool::convert( if (m_ppmMaps->mapping(crate, module, channel, eta, phi, layer)) { // Data channels - key = m_towerKey->ttKey(phi, eta); + key = sd.m_towerKey.ttKey(phi, eta); itt = ttMap.find(key); if (itt == ttMap.end()) { @@ -230,18 +215,18 @@ StatusCode PpmByteStreamV1Tool::convert( LVL1::TriggerTower(phi, eta, key, dummyF, dummyL, dummyF, dummyL, 0, 0, 0, dummyF, dummyL, dummyF, dummyL, 0, 0, 0); - m_ttData.push_back(tt); + sd.m_ttData.push_back(tt); const int count = dataCount++; - m_ttPos[index] = count; + sd.m_ttPos[index] = count; ttMap.insert(std::make_pair(key, count)); } else { - m_ttPos[index] = itt->second; + sd.m_ttPos[index] = itt->second; } - m_chanLayer[word] |= (layer << bit); - m_dataChan[word] |= (1 << bit); - m_dataMod[word2] |= (1 << bit2); + sd.m_chanLayer[word] |= (layer << bit); + sd.m_dataChan[word] |= (1 << bit); + sd.m_dataMod[word2] |= (1 << bit2); } else { @@ -258,16 +243,16 @@ StatusCode PpmByteStreamV1Tool::convert( LVL1::TriggerTower(phi, eta, key, dummyF, dummyL, dummyF, dummyL, 0, 0, 0, dummyS, dummyS, dummyS, dummyS, 0, 0, 0); - m_ttSpare.push_back(tt); - m_ttPos[index] = spareCount++; - m_chanLayer[word] |= (layer << bit); - m_spareChan[word] |= (1 << bit); - m_spareMod[word2] |= (1 << bit2); + sd.m_ttSpare.push_back(tt); + sd.m_ttPos[index] = spareCount++; + sd.m_chanLayer[word] |= (layer << bit); + sd.m_spareChan[word] |= (1 << bit); + sd.m_spareMod[word2] |= (1 << bit2); if ((crate == 2 || crate == 3) && (module == 0)) { - m_ttMuon.push_back(tt); - m_muonChan[word] |= (1 << bit); - m_muonMod[word2] |= (1 << bit2); + sd.m_ttMuon.push_back(tt); + sd.m_muonChan[word] |= (1 << bit); + sd.m_muonMod[word2] |= (1 << bit2); } } } @@ -277,23 +262,23 @@ StatusCode PpmByteStreamV1Tool::convert( // Set up according to the collection we want - TriggerTowerVector &ttCol((m_dataChannels) ? m_ttData - : (m_spareChannels) - ? m_ttSpare - : m_ttMuon); - TriggerTowerVector &ttColRef((m_dataChannels) ? m_ttData - : m_ttSpare); - ChannelBitVector &colChan((m_dataChannels) ? m_dataChan - : (m_spareChannels) - ? m_spareChan - : m_muonChan); - ChannelBitVector &colMod((m_dataChannels) ? m_dataMod - : (m_spareChannels) - ? m_spareMod - : m_muonMod); - const int colSize = (m_dataChannels) ? 2 * ttCol.size() + TriggerTowerVector &ttCol(dataChannels ? sd.m_ttData + : spareChannels + ? sd.m_ttSpare + : sd.m_ttMuon); + TriggerTowerVector &ttColRef(dataChannels ? sd.m_ttData + : sd.m_ttSpare); + const ChannelBitVector &colChan(dataChannels ? sd.m_dataChan + : spareChannels + ? sd.m_spareChan + : sd.m_muonChan); + const ChannelBitVector &colMod(dataChannels ? sd.m_dataMod + : spareChannels + ? sd.m_spareMod + : sd.m_muonMod); + const int colSize = dataChannels ? 2 * ttCol.size() : ttCol.size(); - m_foundChan.assign(chanBitVecSize, 0); + sd.m_foundChan.assign(chanBitVecSize, 0); int ttCount = 0; // Vectors to unpack into @@ -304,6 +289,8 @@ StatusCode PpmByteStreamV1Tool::convert( // Loop over ROB fragments + int fadcBaseline = m_fadcBaseline; + int robCount = 0; std::set<uint32_t> dupCheck; ROBIterator rob = robFrags.begin(); @@ -357,11 +344,11 @@ StatusCode PpmByteStreamV1Tool::convert( // Check identifier const uint32_t sourceID = (*rob)->rod_source_id(); - if (m_srcIdMap->getRobID(sourceID) != robid || - m_srcIdMap->subDet(sourceID) != m_subDetector || - m_srcIdMap->daqOrRoi(sourceID) != 0 || - m_srcIdMap->slink(sourceID) >= m_slinks || - m_srcIdMap->crate(sourceID) >= s_crates) + if (m_srcIdMap.getRobID(sourceID) != robid || + m_srcIdMap.subDet(sourceID) != m_subDetector || + m_srcIdMap.daqOrRoi(sourceID) != 0 || + m_srcIdMap.slink(sourceID) >= m_slinks || + m_srcIdMap.crate(sourceID) >= s_crates) { m_errorTool->rodError(robid, L1CaloSubBlock::ERROR_ROD_ID); if (debug) @@ -375,16 +362,16 @@ StatusCode PpmByteStreamV1Tool::convert( // Check minor version const int minorVersion = (*rob)->rod_version() & 0xffff; - if (minorVersion > m_srcIdMap->minorVersionPreLS1()) + if (minorVersion > m_srcIdMap.minorVersionPreLS1()) { if (debug) msg() << "Skipping post-LS1 data" << endmsg; continue; } - const int rodCrate = m_srcIdMap->crate(sourceID); + const int rodCrate = m_srcIdMap.crate(sourceID); if (debug) { msg() << "Treating crate " << rodCrate - << " slink " << m_srcIdMap->slink(sourceID) << endmsg; + << " slink " << m_srcIdMap.slink(sourceID) << endmsg; } // First word should be User Header @@ -412,14 +399,14 @@ StatusCode PpmByteStreamV1Tool::convert( const int trigLut = userHeader.ppmLut(); const int trigFadc = userHeader.ppmFadc(); // FADC baseline lower bound - m_fadcBaseline = userHeader.lowerBound(); + fadcBaseline = userHeader.lowerBound(); if (debug) { msg() << "Minor format version number: " << MSG::hex << minorVersion << MSG::dec << endmsg << "LUT triggered slice offset: " << trigLut << endmsg << "FADC triggered slice offset: " << trigFadc << endmsg - << "FADC baseline lower bound: " << m_fadcBaseline << endmsg; + << "FADC baseline lower bound: " << fadcBaseline << endmsg; } const int runNumber = (*rob)->rod_run_no() & 0xffffff; @@ -440,11 +427,11 @@ StatusCode PpmByteStreamV1Tool::convert( } firstBlock = true; firstWord = *payload; - if (m_ppmBlocks.empty()) + if (sd.m_ppmBlocks.empty()) { - m_ppmBlocks.push_back(new PpmSubBlockV1()); + sd.m_ppmBlocks.push_back(new PpmSubBlockV1()); } - PpmSubBlockV1 *const subBlock = m_ppmBlocks[0]; + PpmSubBlockV1 *const subBlock = sd.m_ppmBlocks[0]; subBlock->clear(); payloadFirst = subBlock->read(payload, payloadEnd); chanPerSubBlock = subBlock->channelsPerSubBlock(); @@ -465,12 +452,12 @@ StatusCode PpmByteStreamV1Tool::convert( continue; } const int numSubBlocks = s_channels / chanPerSubBlock; - const int size = m_ppmBlocks.size(); + const int size = sd.m_ppmBlocks.size(); if (numSubBlocks > size) { for (int i = size; i < numSubBlocks; ++i) { - m_ppmBlocks.push_back(new PpmSubBlockV1()); + sd.m_ppmBlocks.push_back(new PpmSubBlockV1()); } } @@ -510,7 +497,7 @@ StatusCode PpmByteStreamV1Tool::convert( rodErr = L1CaloSubBlock::ERROR_MISSING_SUBBLOCK; break; } - PpmSubBlockV1 *const subBlock = m_ppmBlocks[block]; + PpmSubBlockV1 *const subBlock = sd.m_ppmBlocks[block]; nPpmBlocks++; if (firstBlock) { @@ -576,32 +563,31 @@ StatusCode PpmByteStreamV1Tool::convert( && PpmSubBlockV1::errorBlock(*payload)) { if (debug) msg() << "Error block found" << endmsg; - if (!m_errorBlock) m_errorBlock = new PpmSubBlockV1(); - else m_errorBlock->clear(); + sd.m_errorBlock.clear(); isErrBlock = true; - payload = m_errorBlock->read(payload, payloadEnd); - if (m_errorBlock->crate() != crate) + payload = sd.m_errorBlock.read(payload, payloadEnd); + if (sd.m_errorBlock.crate() != crate) { if (debug) msg() << "Inconsistent crate number in error block" << endmsg; rodErr = L1CaloSubBlock::ERROR_CRATE_NUMBER; break; } - if (m_errorBlock->module() != module) + if (sd.m_errorBlock.module() != module) { if (debug) msg() << "Inconsistent module number in error block" << endmsg; rodErr = L1CaloSubBlock::ERROR_MODULE_NUMBER; break; } - if (m_errorBlock->dataWords() && !m_errorBlock->unpack()) + if (sd.m_errorBlock.dataWords() && !sd.m_errorBlock.unpack()) { if (debug) { - std::string errMsg(m_errorBlock->unpackErrorMsg()); + std::string errMsg(sd.m_errorBlock.unpackErrorMsg()); msg() << "Unpacking error block failed: " << errMsg << endmsg; } - rodErr = m_errorBlock->unpackErrorCode(); + rodErr = sd.m_errorBlock.unpackErrorCode(); break; } } @@ -618,11 +604,11 @@ StatusCode PpmByteStreamV1Tool::convert( for (int block = 0; block < nPpmBlocks; ++block) { - PpmSubBlockV1 *const subBlock = m_ppmBlocks[block]; + PpmSubBlockV1 *const subBlock = sd.m_ppmBlocks[block]; subBlock->setLutOffset(trigLut); subBlock->setFadcOffset(trigFadc); subBlock->setPedestal(m_pedestal); - subBlock->setFadcBaseline(m_fadcBaseline); + subBlock->setFadcBaseline(fadcBaseline); subBlock->setRunNumber(runNumber); if (debug) { @@ -648,7 +634,7 @@ StatusCode PpmByteStreamV1Tool::convert( const int word = index / 32; const int bit = index % 32; if (!((colChan[word] >> bit) & 1)) continue; // skip unwanted channels - if (((m_foundChan[word] >> bit) & 1)) + if (((sd.m_foundChan[word] >> bit) & 1)) { if (debug) msg() << "Duplicate data for crate/module/channel: " << crate << "/" << module << "/" << channel @@ -687,16 +673,16 @@ StatusCode PpmByteStreamV1Tool::convert( if (isErrBlock) { errorBits.set(LVL1::DataError::PPMErrorWord, - m_errorBlock->ppmError(channel)); + sd.m_errorBlock.ppmError(channel)); errorBits.set(LVL1::DataError::SubStatusWord, - m_errorBlock->subStatus()); + sd.m_errorBlock.subStatus()); } else { errorBits.set(LVL1::DataError::PPMErrorWord, subBlock->ppmError(channel)); const PpmSubBlockV1 *const lastBlock = - m_ppmBlocks[nPpmBlocks - 1]; + sd.m_ppmBlocks[nPpmBlocks - 1]; errorBits.set(LVL1::DataError::SubStatusWord, lastBlock->subStatus()); } @@ -720,10 +706,10 @@ StatusCode PpmByteStreamV1Tool::convert( printVec(bcidFadc); msg() << MSG::hex << error << MSG::dec << "/"; } - m_foundChan[word] |= (1 << bit); + sd.m_foundChan[word] |= (1 << bit); ++ttCount; - LVL1::TriggerTower *tt = ttColRef[m_ttPos[index]]; - const int layer = ((m_chanLayer[word] >> bit) & 1); + LVL1::TriggerTower *tt = ttColRef[sd.m_ttPos[index]]; + const int layer = ((sd.m_chanLayer[word] >> bit) & 1); if (layer == 0) // EM { tt->addEM(fadc, lut, bcidFadc, bcidLut, error, trigLut, trigFadc); @@ -752,20 +738,20 @@ StatusCode PpmByteStreamV1Tool::convert( std::vector<int> dummy(1); for (int word = 0; word < chanBitVecSize; ++word) { - if (m_foundChan[word] != colChan[word]) + if (sd.m_foundChan[word] != colChan[word]) { for (int bit = 0; bit < 32; ++bit) { - if (((m_foundChan[word] >> bit) & 1) != ((colChan[word] >> bit) & 1)) + if (((sd.m_foundChan[word] >> bit) & 1) != ((colChan[word] >> bit) & 1)) { const int index = word * 32 + bit; - LVL1::TriggerTower *tt = ttColRef[m_ttPos[index]]; - const int layer = ((m_chanLayer[word] >> bit) & 1); + LVL1::TriggerTower *tt = ttColRef[sd.m_ttPos[index]]; + const int layer = ((sd.m_chanLayer[word] >> bit) & 1); if (layer == 0) // EM { tt->addEM(dummy, dummy, dummy, dummy, 0, 0, 0); } - else if (m_dataChannels) // Had + else if (dataChannels) // Had { tt->addHad(dummy, dummy, dummy, dummy, 0, 0, 0); } @@ -783,7 +769,7 @@ StatusCode PpmByteStreamV1Tool::convert( TriggerTowerVector::iterator itrE = ttCol.end(); for (; itr != itrE; ++itr) { - if ((*itr)->emEnergy() || (m_dataChannels && (*itr)->hadEnergy())) + if ((*itr)->emEnergy() || (dataChannels && (*itr)->hadEnergy())) { ttCollection->push_back(*itr); } @@ -801,25 +787,30 @@ StatusCode PpmByteStreamV1Tool::convert( StatusCode PpmByteStreamV1Tool::convert( const DataVector<LVL1::TriggerTower> *const ttCollection, - RawEventWrite *const re) + RawEventWrite *const re) const { const bool debug = msgLvl(MSG::DEBUG); if (debug) msg(MSG::DEBUG); // Clear the event assembler - - m_fea->clear(); - const uint16_t minorVersion = m_srcIdMap->minorVersionPreLS1(); - m_fea->setRodMinorVersion(minorVersion); - m_rodStatusMap.clear(); + FullEventAssembler<L1CaloSrcIdMap> fea; + fea.clear(); + const uint16_t minorVersion = m_srcIdMap.minorVersionPreLS1(); + fea.setRodMinorVersion(minorVersion); // Pointer to ROD data vector FullEventAssembler<L1CaloSrcIdMap>::RODDATA *theROD = 0; + LVL1::TriggerTowerKey towerKey; + // Set up trigger tower maps - setupTTMaps(ttCollection); + // Trigger tower map for conversion EM to bytestream + TriggerTowerMapConst ttEmMap; + // Trigger tower map for conversion Had to bytestream + TriggerTowerMapConst ttHadMap; + setupTTMaps(ttCollection, ttEmMap, ttHadMap, towerKey); // Create the sub-blocks to do the packing @@ -861,7 +852,9 @@ StatusCode PpmByteStreamV1Tool::convert( // Get number of slices and triggered slice offsets // for this slink if ( ! slinkSlices(crate, module, modulesPerSlink, - slicesLut, slicesFadc, trigLut, trigFadc)) + slicesLut, slicesFadc, trigLut, trigFadc, + ttEmMap, ttHadMap, + towerKey)) { msg(MSG::ERROR) << "Inconsistent number of slices or " << "triggered slice offsets in data for crate " @@ -893,11 +886,10 @@ StatusCode PpmByteStreamV1Tool::convert( userHeader.setPpmLut(trigLutNew); userHeader.setPpmFadc(trigFadcNew); userHeader.setLowerBound(m_fadcBaseline); - const uint32_t rodIdPpm = m_srcIdMap->getRodID(crate, slink, daqOrRoi, + const uint32_t rodIdPpm = m_srcIdMap.getRodID(crate, slink, daqOrRoi, m_subDetector); - theROD = m_fea->getRodData(rodIdPpm); + theROD = fea.getRodData(rodIdPpm); theROD->push_back(userHeader.header()); - m_rodStatusMap.insert(make_pair(rodIdPpm, m_rodStatus)); } if (debug) msg() << "Module " << module << endmsg; @@ -938,7 +930,7 @@ StatusCode PpmByteStreamV1Tool::convert( int layer = 0; if (m_ppmMaps->mapping(crate, module, channel, eta, phi, layer)) { - tt = findLayerTriggerTower(eta, phi, layer); + tt = findLayerTriggerTower(eta, phi, layer, ttEmMap, ttHadMap, towerKey); } if (tt ) { @@ -1057,23 +1049,22 @@ StatusCode PpmByteStreamV1Tool::convert( // Fill the raw event - m_fea->fill(re, msg()); - - // Set ROD status words - - //L1CaloRodStatus::setStatus(re, m_rodStatusMap, m_srcIdMap); + fea.fill(re, msg()); return StatusCode::SUCCESS; } // Add compression stats to totals -void PpmByteStreamV1Tool::addCompStats(const std::vector<uint32_t> &stats) +void PpmByteStreamV1Tool::addCompStats(const std::vector<uint32_t> &stats) const { if (stats.empty()) return; - const int n = stats.size(); - if (m_compStats.empty()) m_compStats.resize(n); - for (int i = 0; i < n; ++i) m_compStats[i] += stats[i]; + const int n = std::min (stats.size(), static_cast<size_t>(MAXFORMATS)); + for (int i = 0; i < n; ++i) { + std::atomic<uint32_t>& stat ATLAS_THREAD_SAFE = + const_cast<std::atomic<uint32_t>&> (m_compStats[i]); + stat += stats[i]; + } } // Print compression stats @@ -1081,8 +1072,7 @@ void PpmByteStreamV1Tool::addCompStats(const std::vector<uint32_t> &stats) void PpmByteStreamV1Tool::printCompStats() const { msg() << "Compression stats format/count: "; - const int n = m_compStats.size(); - for (int i = 0; i < n; ++i) + for (unsigned int i = 0; i < MAXFORMATS; ++i) { msg() << " " << i << "/" << m_compStats[i]; } @@ -1092,20 +1082,23 @@ void PpmByteStreamV1Tool::printCompStats() const // Find a trigger tower using separate layer maps const LVL1::TriggerTower *PpmByteStreamV1Tool::findLayerTriggerTower( - const double eta, const double phi, const int layer) + const double eta, const double phi, const int layer, + const TriggerTowerMapConst& ttEmMap, + const TriggerTowerMapConst& ttHadMap, + LVL1::TriggerTowerKey& towerKey) const { const LVL1::TriggerTower *tt = 0; - const unsigned int key = m_towerKey->ttKey(phi, eta); + const unsigned int key = towerKey.ttKey(phi, eta); TriggerTowerMapConst::const_iterator mapIter; if (layer == 0) { - mapIter = m_ttEmMap.find(key); - if (mapIter != m_ttEmMap.end()) tt = mapIter->second; + mapIter = ttEmMap.find(key); + if (mapIter != ttEmMap.end()) tt = mapIter->second; } else { - mapIter = m_ttHadMap.find(key); - if (mapIter != m_ttHadMap.end()) tt = mapIter->second; + mapIter = ttHadMap.find(key); + if (mapIter != ttHadMap.end()) tt = mapIter->second; } return tt; } @@ -1113,18 +1106,21 @@ const LVL1::TriggerTower *PpmByteStreamV1Tool::findLayerTriggerTower( // Set up trigger tower maps void PpmByteStreamV1Tool::setupTTMaps(const TriggerTowerCollection * - const ttCollection) + const ttCollection, + TriggerTowerMapConst& ttEmMap, + TriggerTowerMapConst& ttHadMap, + LVL1::TriggerTowerKey& towerKey) const { using std::accumulate; - m_ttEmMap.clear(); - m_ttHadMap.clear(); + ttEmMap.clear(); + ttHadMap.clear(); TriggerTowerCollection::const_iterator pos = ttCollection->begin(); TriggerTowerCollection::const_iterator pose = ttCollection->end(); for (; pos != pose; ++pos) { const LVL1::TriggerTower *tt = *pos; - const unsigned int key = m_towerKey->ttKey(tt->phi(), tt->eta()); + const unsigned int key = towerKey.ttKey(tt->phi(), tt->eta()); // Ignore any with zero data // EM if (accumulate((tt->emLUT()).begin(), (tt->emLUT()).end(), 0) || @@ -1133,7 +1129,7 @@ void PpmByteStreamV1Tool::setupTTMaps(const TriggerTowerCollection * accumulate((tt->emBCIDext()).begin(), (tt->emBCIDext()).end(), 0) || tt->emError()) { - m_ttEmMap.insert(std::make_pair(key, tt)); + ttEmMap.insert(std::make_pair(key, tt)); } // Had if (accumulate((tt->hadLUT()).begin(), (tt->hadLUT()).end(), 0) || @@ -1142,7 +1138,7 @@ void PpmByteStreamV1Tool::setupTTMaps(const TriggerTowerCollection * accumulate((tt->hadBCIDext()).begin(), (tt->hadBCIDext()).end(), 0) || tt->hadError()) { - m_ttHadMap.insert(std::make_pair(key, tt)); + ttHadMap.insert(std::make_pair(key, tt)); } } } @@ -1151,7 +1147,10 @@ void PpmByteStreamV1Tool::setupTTMaps(const TriggerTowerCollection * bool PpmByteStreamV1Tool::slinkSlices(const int crate, const int module, const int modulesPerSlink, int &slicesLut, int &slicesFadc, - int &trigLut, int &trigFadc) + int &trigLut, int &trigFadc, + const TriggerTowerMapConst& ttEmMap, + const TriggerTowerMapConst& ttHadMap, + LVL1::TriggerTowerKey& towerKey) const { int sliceL = -1; int sliceF = m_dfltSlicesFadc; @@ -1167,7 +1166,8 @@ bool PpmByteStreamV1Tool::slinkSlices(const int crate, const int module, if (!m_ppmMaps->mapping(crate, mod, chan, eta, phi, layer)) continue; const LVL1::TriggerTower *const tt = findLayerTriggerTower( - eta, phi, layer); + eta, phi, layer, ttEmMap, ttHadMap, + towerKey); if ( !tt ) continue; if (layer == 0) { @@ -1219,43 +1219,70 @@ bool PpmByteStreamV1Tool::slinkSlices(const int crate, const int module, // Return reference to vector with all possible Source Identifiers +std::vector<uint32_t> +PpmByteStreamV1Tool::makeSourceIDs (bool spareChannels, bool muonChannels) const +{ + std::vector<uint32_t> robIds; + + if (!spareChannels && !muonChannels) { + robIds = m_sourceIDsProp; + } + + if (robIds.empty()) { + const int maxlinks = m_srcIdMap.maxSlinks(); + for (int crate = 0; crate < s_crates; ++crate) + { + for (int slink = 0; slink < maxlinks; ++slink) + { + const int daqOrRoi = 0; + const uint32_t rodId = m_srcIdMap.getRodID(crate, slink, daqOrRoi, + m_subDetector); + const uint32_t robId = m_srcIdMap.getRobID(rodId); + + if (spareChannels && !(crate > 1 && crate < 6)) { + continue; + } + + if (muonChannels && !(crate > 1 && crate < 4 && slink == 0)) { + continue; + } + + robIds.push_back (robId); + } + } + } + return robIds; +} + const std::vector<uint32_t> &PpmByteStreamV1Tool::sourceIDs( - const std::string &sgKey) + const std::string &sgKey) const { // Check if spare channels wanted const std::string flag("Spare"); const std::string::size_type pos = sgKey.find(flag); - m_spareChannels = + bool spareChannels = (pos != std::string::npos && pos == (sgKey.length() - flag.length())); // Check if Tile Muon channels wanted const std::string flag2("Muon"); const std::string::size_type pos2 = sgKey.find(flag2); - m_muonChannels = + bool muonChannels = (pos2 != std::string::npos && pos2 == (sgKey.length() - flag2.length())); - m_dataChannels = (!m_spareChannels && !m_muonChannels); - if (m_sourceIDs.empty()) - { - const int maxlinks = m_srcIdMap->maxSlinks(); - for (int crate = 0; crate < s_crates; ++crate) - { - for (int slink = 0; slink < maxlinks; ++slink) - { - const int daqOrRoi = 0; - const uint32_t rodId = m_srcIdMap->getRodID(crate, slink, daqOrRoi, - m_subDetector); - const uint32_t robId = m_srcIdMap->getRobID(rodId); - m_sourceIDs.push_back(robId); - if (crate > 1 && crate < 6) - { - m_sourceIDsSpare.push_back(robId); - if (crate < 4 && slink == 0) m_sourceIDsMuon.push_back(robId); - } - } - } + + if (spareChannels) { + static const std::vector<uint32_t> sourceIDsSpare = + makeSourceIDs (true, false); + return sourceIDsSpare; } - if (m_spareChannels) return m_sourceIDsSpare; - if (m_muonChannels) return m_sourceIDsMuon; - return m_sourceIDs; + + if (muonChannels) { + static const std::vector<uint32_t> sourceIDsMuon = + makeSourceIDs (false, true); + return sourceIDsMuon; + } + + static const std::vector<uint32_t> sourceIDs = + makeSourceIDs (false, false); + return sourceIDs; } // Print a vector diff --git a/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Tool.h b/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Tool.h index 44264a400e6179bfa8b290ef0222540488d8040f..1b890c319734a3714f0f59a8c1518f25da69a5ce 100644 --- a/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Tool.h +++ b/Trigger/TrigT1/TrigT1CaloByteStream/src/PpmByteStreamV1Tool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CALOBYTESTREAM_PPMBYTESTREAMV1TOOL_H @@ -10,14 +10,21 @@ #include <map> #include <string> #include <vector> +#include <atomic> +#include <mutex> +#include "L1CaloSrcIdMap.h" +#include "PpmSubBlockV1.h" #include "AthenaBaseComps/AthAlgTool.h" #include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h" #include "ByteStreamData/RawEvent.h" +#include "TrigT1CaloUtils/TriggerTowerKey.h" #include "AthContainers/DataVector.h" +#include "AthenaKernel/SlotSpecificObj.h" #include "eformat/SourceIdentifier.h" #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" +#include "CxxUtils/checker_macros.h" class IInterface; class InterfaceID; @@ -56,19 +63,20 @@ class PpmByteStreamV1Tool : public AthAlgTool { /// AlgTool InterfaceID static const InterfaceID& interfaceID(); - virtual StatusCode initialize(); - virtual StatusCode finalize(); + virtual StatusCode initialize() override; + virtual StatusCode finalize() override; /// Convert ROB fragments to trigger towers - StatusCode convert(const IROBDataProviderSvc::VROBFRAG& robFrags, - DataVector<LVL1::TriggerTower>* ttCollection); + StatusCode convert(const std::string& sgKey, + const IROBDataProviderSvc::VROBFRAG& robFrags, + DataVector<LVL1::TriggerTower>* ttCollection) const; /// Convert trigger towers to bytestream StatusCode convert(const DataVector<LVL1::TriggerTower>* ttCollection, - RawEventWrite* re); + RawEventWrite* re) const; /// Return reference to vector with all possible Source Identifiers - const std::vector<uint32_t>& sourceIDs(const std::string& sgKey); + const std::vector<uint32_t>& sourceIDs(const std::string& sgKey) const; private: @@ -83,108 +91,108 @@ class PpmByteStreamV1Tool : public AthAlgTool { typedef OFFLINE_FRAGMENTS_NAMESPACE::PointerType RODPointer; /// Add compression stats to totals - void addCompStats(const std::vector<uint32_t>& stats); + void addCompStats(const std::vector<uint32_t>& stats) const; /// Print compression stats void printCompStats() const; /// Find a trigger tower using separate layer maps const LVL1::TriggerTower* findLayerTriggerTower(double eta, double phi, - int layer); + int layer, + const TriggerTowerMapConst& ttEmMap, + const TriggerTowerMapConst& ttHadMap, + LVL1::TriggerTowerKey& towerKey) const; /// Set up separate Em and Had trigger tower maps - void setupTTMaps(const TriggerTowerCollection* ttCollection); + void setupTTMaps(const TriggerTowerCollection* ttCollection, + TriggerTowerMapConst& ttEmMap, + TriggerTowerMapConst& ttHadMap, + LVL1::TriggerTowerKey& towerKey) const; /// Get number of slices and triggered slice offsets for next slink bool slinkSlices(int crate, int module, int modulesPerSlink, - int& slicesLut, int& slicesFadc, int& trigLut, int& trigFadc); + int& slicesLut, int& slicesFadc, int& trigLut, int& trigFadc, + const TriggerTowerMapConst& ttEmMap, + const TriggerTowerMapConst& ttHadMap, + LVL1::TriggerTowerKey& towerKey) const; + + std::vector<uint32_t> + makeSourceIDs (bool spareChannels, bool muonChannels) const; /// Print a vector void printVec(const std::vector<int>& vec) const; - /// Channel mapping tool + struct SlotData + { + std::mutex m_mutex; + /// TriggerTower pool vectors + TriggerTowerVector m_ttData; + TriggerTowerVector m_ttSpare; + TriggerTowerVector m_ttMuon; + std::vector<int> m_ttPos; + /// Mapping vectors + ChannelBitVector m_chanLayer; + ChannelBitVector m_dataChan; + ChannelBitVector m_spareChan; + ChannelBitVector m_muonChan; + ChannelBitVector m_dataMod; + ChannelBitVector m_spareMod; + ChannelBitVector m_muonMod; + ChannelBitVector m_foundChan; + /// Vector for current PPM sub-blocks + DataVector<PpmSubBlockV1> m_ppmBlocks; + /// Current error block + PpmSubBlockV1 m_errorBlock; + /// Trigger tower key provider + LVL1::TriggerTowerKey m_towerKey; + }; + mutable SG::SlotSpecificObj<SlotData> m_slotData ATLAS_THREAD_SAFE; + + + /// Property: Channel mapping tool ToolHandle<LVL1::IL1CaloMappingTool> m_ppmMaps; - /// Error collection tool + /// Property: Error collection tool ToolHandle<LVL1BS::L1CaloErrorByteStreamTool> m_errorTool; /// Memory pool service ServiceHandle<SegMemSvc> m_sms; /// Sub_block header version - int m_version; - /// Data compression format + const int m_version; + /// Property: Data compression format int m_dataFormat; /// Compression version - int m_compVers; - /// Compression statistics print flag + const int m_compVers; + /// Property: Compression statistics print flag int m_printCompStats; - /// Number of slinks per crate when writing out bytestream + /// Property: Number of slinks per crate when writing out bytestream int m_slinks; - /// Default number of LUT slices in simulation + /// Property: Default number of LUT slices in simulation int m_dfltSlicesLut; - /// Default number of FADC slices in simulation + /// Property: Default number of FADC slices in simulation int m_dfltSlicesFadc; - /// Force number of LUT slices in bytestream + /// Property: Force number of LUT slices in bytestream int m_forceSlicesLut; - /// Force number of FADC slices in bytestream + /// Property: Force number of FADC slices in bytestream int m_forceSlicesFadc; - /// Minimum crate number when writing out bytestream + /// Property: Minimum crate number when writing out bytestream int m_crateMin; - /// Maximum crate number when writing out bytestream + /// Property: Maximum crate number when writing out bytestream int m_crateMax; - /// Pedestal value + /// Property: Pedestal value int m_pedestal; - /// FADC baseline lower bound + /// Property: FADC baseline lower bound int m_fadcBaseline; - /// FADC threshold for super-compressed format + /// Property: FADC threshold for super-compressed format int m_fadcThreshold; - /// Zero suppression on input + /// Property: Zero suppression on input int m_zeroSuppress; - /// Data channel flag - bool m_dataChannels; - /// Spare channel flag - bool m_spareChannels; - /// Tile Muon channel flag - bool m_muonChannels; - /// ROB source IDs - std::vector<uint32_t> m_sourceIDs; - std::vector<uint32_t> m_sourceIDsSpare; - std::vector<uint32_t> m_sourceIDsMuon; + /// Property: ROB source IDs + std::vector<uint32_t> m_sourceIDsProp; /// Sub-detector type - eformat::SubDetector m_subDetector; + const eformat::SubDetector m_subDetector; /// Source ID converter - L1CaloSrcIdMap* m_srcIdMap; - /// Trigger tower key provider - LVL1::TriggerTowerKey* m_towerKey; - /// Current error block - PpmSubBlockV1* m_errorBlock; - /// Vector for current PPM sub-blocks - DataVector<PpmSubBlockV1> m_ppmBlocks; + const L1CaloSrcIdMap m_srcIdMap; /// Vector for compression statistics - std::vector<uint32_t> m_compStats; - /// Trigger tower map for conversion from bytestream - TriggerTowerMap m_ttMap; - /// Trigger tower map for conversion EM to bytestream - TriggerTowerMapConst m_ttEmMap; - /// Trigger tower map for conversion Had to bytestream - TriggerTowerMapConst m_ttHadMap; - /// ROD Status words - std::vector<uint32_t>* m_rodStatus; - /// ROD status map - std::map<uint32_t, std::vector<uint32_t>* > m_rodStatusMap; - /// Event assembler - FullEventAssembler<L1CaloSrcIdMap>* m_fea; - /// TriggerTower pool vectors - TriggerTowerVector m_ttData; - TriggerTowerVector m_ttSpare; - TriggerTowerVector m_ttMuon; - std::vector<int> m_ttPos; - /// Mapping vectors - ChannelBitVector m_chanLayer; - ChannelBitVector m_dataChan; - ChannelBitVector m_spareChan; - ChannelBitVector m_muonChan; - ChannelBitVector m_dataMod; - ChannelBitVector m_spareMod; - ChannelBitVector m_muonMod; - ChannelBitVector m_foundChan; + static constexpr unsigned int MAXFORMATS = 10; + std::atomic<uint32_t> m_compStats[MAXFORMATS]; static const int s_crates = 8; static const int s_modules = 16; diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref index 3da6c02fb58dd68fb6f97f4033e787d4a2be5eae..9cd69c76f47dfa90df1c54246cc962905f07ffce 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref @@ -1,12 +1,12 @@ TrigSignatureMoniMT INFO HLT_10j40_pf_subresjesgscIS_ftf_L14J15 #3575805394 -TrigSignatureMoniMT INFO -- #3575805394 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #3575805394 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #3575805394 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #3575805394 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_10j40_subjesIS_L14J15 #2760204981 -TrigSignatureMoniMT INFO -- #2760204981 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2760204981 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2760204981 Events 9 9 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2760204981 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_10j40_subresjesgscIS_ftf_L14J15 #3568675904 -TrigSignatureMoniMT INFO -- #3568675904 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #3568675904 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #3568675904 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #3568675904 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_2e12_lhloose_mu10_L12EM8VH_MU10 #2518246928 TrigSignatureMoniMT INFO -- #2518246928 Events 1 1 0 0 0 0 0 0 0 0 0 - - - - - 0 TrigSignatureMoniMT INFO -- #2518246928 Features 0 0 0 0 0 0 0 0 0 - - - - - @@ -29,8 +29,8 @@ TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 #2 TrigSignatureMoniMT INFO -- #2613484113 Events 20 20 20 20 20 20 - - - - - - - - - - 20 TrigSignatureMoniMT INFO -- #2613484113 Features 342 3724 738 308 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_2g10_loose_mu20_L1MU20 #3765708828 -TrigSignatureMoniMT INFO -- #3765708828 Events 8 8 1 1 1 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #3765708828 Features 2 2 6 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #3765708828 Events 8 8 1 1 1 0 - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #3765708828 Features 2 2 6 0 - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2g15_tight_dPhi15_L1DPHI-M70-2EM12I #2606736960 TrigSignatureMoniMT INFO -- #2606736960 Events 0 0 0 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #2606736960 Features 0 0 0 0 - - - - - - - - - - @@ -56,149 +56,149 @@ TrigSignatureMoniMT INFO HLT_2g50_loose_L12EM20V TrigSignatureMoniMT INFO -- #3590373854 Events 2 2 2 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #3590373854 Features 2 0 0 0 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_2j330_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3495282139 -TrigSignatureMoniMT INFO -- #3495282139 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #3495282139 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #3495282139 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #3495282139 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_2j330_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #2680976232 -TrigSignatureMoniMT INFO -- #2680976232 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #2680976232 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #2680976232 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2680976232 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 #1295975955 -TrigSignatureMoniMT INFO -- #1295975955 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1295975955 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1295975955 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1295975955 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_nojcalib_35smcINF_L1J100 #891415013 -TrigSignatureMoniMT INFO -- #891415013 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #891415013 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #891415013 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #891415013 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_2j60_L1J15 #927735533 -TrigSignatureMoniMT INFO -- #927735533 Events 20 20 0 0 0 0 0 0 0 0 0 0 10 - - - 10 -TrigSignatureMoniMT INFO -- #927735533 Features 0 0 0 0 0 0 0 0 0 0 28 - - - +TrigSignatureMoniMT INFO -- #927735533 Events 20 20 - - - - - - - - - - 10 - - - 10 +TrigSignatureMoniMT INFO -- #927735533 Features - - - - - - - - - - 28 - - - TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 #3498558358 -TrigSignatureMoniMT INFO -- #3498558358 Events 3 3 0 0 0 0 0 2 2 2 2 - - - - - 0 -TrigSignatureMoniMT INFO -- #3498558358 Features 0 0 0 0 0 8 8 8 4 - - - - - +TrigSignatureMoniMT INFO -- #3498558358 Events 3 3 - - - - - 2 2 2 2 - - - - - 0 +TrigSignatureMoniMT INFO -- #3498558358 Features - - - - - 8 8 8 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 #234102568 -TrigSignatureMoniMT INFO -- #234102568 Events 3 3 0 0 0 0 0 2 2 2 2 - - - - - 0 -TrigSignatureMoniMT INFO -- #234102568 Features 0 0 0 0 0 8 8 8 4 - - - - - +TrigSignatureMoniMT INFO -- #234102568 Events 3 3 - - - - - 2 2 2 2 - - - - - 0 +TrigSignatureMoniMT INFO -- #234102568 Features - - - - - 8 8 8 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 #2619091790 -TrigSignatureMoniMT INFO -- #2619091790 Events 3 3 0 0 0 0 0 2 1 1 1 - - - - - 1 -TrigSignatureMoniMT INFO -- #2619091790 Features 0 0 0 0 0 8 4 4 4 - - - - - +TrigSignatureMoniMT INFO -- #2619091790 Events 3 3 - - - - - 2 1 1 1 - - - - - 1 +TrigSignatureMoniMT INFO -- #2619091790 Features - - - - - 8 4 4 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu14_l2io_L12MU10 #945295390 -TrigSignatureMoniMT INFO -- #945295390 Events 3 3 0 0 0 0 0 2 2 1 1 - - - - - 1 -TrigSignatureMoniMT INFO -- #945295390 Features 0 0 0 0 0 8 14 4 4 - - - - - +TrigSignatureMoniMT INFO -- #945295390 Events 3 3 - - - - - 2 2 1 1 - - - - - 1 +TrigSignatureMoniMT INFO -- #945295390 Features - - - - - 8 14 4 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu15_L12MU10 #557204938 -TrigSignatureMoniMT INFO -- #557204938 Events 3 3 0 0 0 0 0 2 1 1 1 - - - - - 1 -TrigSignatureMoniMT INFO -- #557204938 Features 0 0 0 0 0 8 4 4 4 - - - - - +TrigSignatureMoniMT INFO -- #557204938 Events 3 3 - - - - - 2 1 1 1 - - - - - 1 +TrigSignatureMoniMT INFO -- #557204938 Features - - - - - 8 4 4 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_L12MU4 #2999632714 -TrigSignatureMoniMT INFO -- #2999632714 Events 4 4 0 0 0 0 0 3 3 2 2 - - - - - 2 -TrigSignatureMoniMT INFO -- #2999632714 Features 0 0 0 0 0 12 12 8 8 - - - - - +TrigSignatureMoniMT INFO -- #2999632714 Events 4 4 - - - - - 3 3 2 2 - - - - - 2 +TrigSignatureMoniMT INFO -- #2999632714 Features - - - - - 12 12 8 8 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_bDimu_L12MU4 #1730084172 -TrigSignatureMoniMT INFO -- #1730084172 Events 4 4 0 0 0 0 0 3 3 2 2 - - - - - 0 -TrigSignatureMoniMT INFO -- #1730084172 Features 0 0 0 0 0 12 12 8 4 - - - - - +TrigSignatureMoniMT INFO -- #1730084172 Events 4 4 - - - - - 3 3 2 2 - - - - - 0 +TrigSignatureMoniMT INFO -- #1730084172 Features - - - - - 12 12 8 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 #4276347155 -TrigSignatureMoniMT INFO -- #4276347155 Events 4 4 0 0 0 0 0 3 3 2 2 - - - - - 0 -TrigSignatureMoniMT INFO -- #4276347155 Features 0 0 0 0 0 12 12 8 4 - - - - - +TrigSignatureMoniMT INFO -- #4276347155 Events 4 4 - - - - - 3 3 2 2 - - - - - 0 +TrigSignatureMoniMT INFO -- #4276347155 Features - - - - - 12 12 8 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 #4008168535 -TrigSignatureMoniMT INFO -- #4008168535 Events 4 4 0 0 0 0 0 3 3 2 2 - - - - - 0 -TrigSignatureMoniMT INFO -- #4008168535 Features 0 0 0 0 0 12 12 8 4 - - - - - +TrigSignatureMoniMT INFO -- #4008168535 Events 4 4 - - - - - 3 3 2 2 - - - - - 0 +TrigSignatureMoniMT INFO -- #4008168535 Features - - - - - 12 12 8 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_muonqual_L12MU4 #1584776935 -TrigSignatureMoniMT INFO -- #1584776935 Events 4 4 0 0 0 0 0 3 3 2 2 - - - - - 2 -TrigSignatureMoniMT INFO -- #1584776935 Features 0 0 0 0 0 12 12 8 8 - - - - - +TrigSignatureMoniMT INFO -- #1584776935 Events 4 4 - - - - - 3 3 2 2 - - - - - 2 +TrigSignatureMoniMT INFO -- #1584776935 Features - - - - - 12 12 8 8 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 #1316992871 -TrigSignatureMoniMT INFO -- #1316992871 Events 10 10 0 0 0 0 0 3 2 2 2 - - - - - 2 -TrigSignatureMoniMT INFO -- #1316992871 Features 0 0 0 0 0 12 8 8 8 - - - - - +TrigSignatureMoniMT INFO -- #1316992871 Events 10 10 - - - - - 3 2 2 2 - - - - - 2 +TrigSignatureMoniMT INFO -- #1316992871 Features - - - - - 12 8 8 8 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_Dr_L12MU4 #3304584056 -TrigSignatureMoniMT INFO -- #3304584056 Events 4 4 0 0 0 0 0 3 2 - - - - - - - 2 -TrigSignatureMoniMT INFO -- #3304584056 Features 0 0 0 0 0 12 8 - - - - - - - +TrigSignatureMoniMT INFO -- #3304584056 Events 4 4 - - - - - 3 2 - - - - - - - 2 +TrigSignatureMoniMT INFO -- #3304584056 Features - - - - - 12 8 - - - - - - - TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 #1747073535 -TrigSignatureMoniMT INFO -- #1747073535 Events 4 4 0 0 0 0 0 3 2 2 2 - - - - - 2 -TrigSignatureMoniMT INFO -- #1747073535 Features 0 0 0 0 0 12 8 8 8 - - - - - +TrigSignatureMoniMT INFO -- #1747073535 Events 4 4 - - - - - 3 2 2 2 - - - - - 2 +TrigSignatureMoniMT INFO -- #1747073535 Features - - - - - 12 8 8 8 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_bJpsimumu_L12MU6 #1924924067 -TrigSignatureMoniMT INFO -- #1924924067 Events 4 4 0 0 0 0 0 3 3 2 2 - - - - - 0 -TrigSignatureMoniMT INFO -- #1924924067 Features 0 0 0 0 0 12 12 8 4 - - - - - +TrigSignatureMoniMT INFO -- #1924924067 Events 4 4 - - - - - 3 3 2 2 - - - - - 0 +TrigSignatureMoniMT INFO -- #1924924067 Features - - - - - 12 12 8 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_bJpsimumul2io_L12MU6 #882785822 -TrigSignatureMoniMT INFO -- #882785822 Events 4 4 0 0 0 0 0 3 3 2 2 - - - - - 0 -TrigSignatureMoniMT INFO -- #882785822 Features 0 0 0 0 0 12 28 8 4 - - - - - +TrigSignatureMoniMT INFO -- #882785822 Events 4 4 - - - - - 3 3 2 2 - - - - - 0 +TrigSignatureMoniMT INFO -- #882785822 Features - - - - - 12 28 8 4 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_l2io_L12MU6 #2996403520 -TrigSignatureMoniMT INFO -- #2996403520 Events 4 4 0 0 0 0 0 3 3 2 2 - - - - - 2 -TrigSignatureMoniMT INFO -- #2996403520 Features 0 0 0 0 0 12 28 8 8 - - - - - +TrigSignatureMoniMT INFO -- #2996403520 Events 4 4 - - - - - 3 3 2 2 - - - - - 2 +TrigSignatureMoniMT INFO -- #2996403520 Features - - - - - 12 28 8 8 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_muonqual_L12MU6 #2398136098 -TrigSignatureMoniMT INFO -- #2398136098 Events 4 4 0 0 0 0 0 3 2 2 2 - - - - - 2 -TrigSignatureMoniMT INFO -- #2398136098 Features 0 0 0 0 0 12 8 8 8 - - - - - +TrigSignatureMoniMT INFO -- #2398136098 Events 4 4 - - - - - 3 2 2 2 - - - - - 2 +TrigSignatureMoniMT INFO -- #2398136098 Features - - - - - 12 8 8 8 - - - - - TrigSignatureMoniMT INFO HLT_3j200_L1J100 #2199422919 -TrigSignatureMoniMT INFO -- #2199422919 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2199422919 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2199422919 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2199422919 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_3j200_pf_subresjesgscIS_ftf_L1J100 #794428037 -TrigSignatureMoniMT INFO -- #794428037 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #794428037 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #794428037 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #794428037 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_3j200_subresjesgscIS_ftf_L1J100 #1801834652 -TrigSignatureMoniMT INFO -- #1801834652 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #1801834652 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #1801834652 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #1801834652 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 #1832399408 -TrigSignatureMoniMT INFO -- #1832399408 Events 0 0 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1832399408 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1832399408 Events 0 0 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1832399408 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 #1199773318 -TrigSignatureMoniMT INFO -- #1199773318 Events 0 0 0 0 0 0 0 0 0 0 - - - - - - 0 -TrigSignatureMoniMT INFO -- #1199773318 Features 0 0 0 0 0 0 0 0 - - - - - - +TrigSignatureMoniMT INFO -- #1199773318 Events 0 0 - - - - - 0 - 0 - - - - - - 0 +TrigSignatureMoniMT INFO -- #1199773318 Features - - - - - 0 - 0 - - - - - - TrigSignatureMoniMT INFO HLT_3mu8_msonly_L13MU6 #424835335 -TrigSignatureMoniMT INFO -- #424835335 Events 0 0 0 0 0 0 0 0 0 0 - - - - - - 0 -TrigSignatureMoniMT INFO -- #424835335 Features 0 0 0 0 0 0 0 0 - - - - - - +TrigSignatureMoniMT INFO -- #424835335 Events 0 0 - - - - - 0 - 0 - - - - - - 0 +TrigSignatureMoniMT INFO -- #424835335 Features - - - - - 0 - 0 - - - - - - TrigSignatureMoniMT INFO HLT_4j120_pf_subresjesgscIS_ftf_L13J50 #1755129033 -TrigSignatureMoniMT INFO -- #1755129033 Events 1 1 0 0 0 0 0 0 0 0 0 0 1 0 - - 0 -TrigSignatureMoniMT INFO -- #1755129033 Features 0 0 0 0 0 0 0 0 0 0 1 0 - - +TrigSignatureMoniMT INFO -- #1755129033 Events 1 1 - - - - - - - - - - 1 0 - - 0 +TrigSignatureMoniMT INFO -- #1755129033 Features - - - - - - - - - - 1 0 - - TrigSignatureMoniMT INFO HLT_4j120_subjesIS_L13J50 #3722303680 -TrigSignatureMoniMT INFO -- #3722303680 Events 1 1 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3722303680 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3722303680 Events 1 1 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3722303680 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_4j120_subresjesgscIS_ftf_L13J50 #91006165 -TrigSignatureMoniMT INFO -- #91006165 Events 1 1 0 0 0 0 0 0 0 0 0 0 1 0 - - 0 -TrigSignatureMoniMT INFO -- #91006165 Features 0 0 0 0 0 0 0 0 0 0 1 0 - - +TrigSignatureMoniMT INFO -- #91006165 Events 1 1 - - - - - - - - - - 1 0 - - 0 +TrigSignatureMoniMT INFO -- #91006165 Features - - - - - - - - - - 1 0 - - TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 #1834383636 -TrigSignatureMoniMT INFO -- #1834383636 Events 0 0 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1834383636 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1834383636 Events 0 0 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1834383636 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 #1175391812 -TrigSignatureMoniMT INFO -- #1175391812 Events 7 7 0 0 0 0 0 0 0 0 0 0 1 - - - 1 -TrigSignatureMoniMT INFO -- #1175391812 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #1175391812 Events 7 7 - - - - - - - - - - 1 - - - 1 +TrigSignatureMoniMT INFO -- #1175391812 Features - - - - - - - - - - 5 - - - TrigSignatureMoniMT INFO HLT_5j70_pf_subresjesgscIS_ftf_0eta240_L14J15 #4189027854 -TrigSignatureMoniMT INFO -- #4189027854 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 1 - - 1 -TrigSignatureMoniMT INFO -- #4189027854 Features 0 0 0 0 0 0 0 0 0 0 9 5 - - +TrigSignatureMoniMT INFO -- #4189027854 Events 9 9 - - - - - - - - - - 9 1 - - 1 +TrigSignatureMoniMT INFO -- #4189027854 Features - - - - - - - - - - 9 5 - - TrigSignatureMoniMT INFO HLT_5j70_subresjesgscIS_ftf_0eta240_L14J15 #819918597 -TrigSignatureMoniMT INFO -- #819918597 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #819918597 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #819918597 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #819918597 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_5j85_pf_subresjesgscIS_ftf_L14J15 #4208121018 -TrigSignatureMoniMT INFO -- #4208121018 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #4208121018 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #4208121018 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #4208121018 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_5j85_subjesIS_L14J15 #2745094401 -TrigSignatureMoniMT INFO -- #2745094401 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2745094401 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2745094401 Events 9 9 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2745094401 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_5j85_subresjesgscIS_ftf_L14J15 #1148892499 -TrigSignatureMoniMT INFO -- #1148892499 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #1148892499 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #1148892499 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #1148892499 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_6j55_pf_subresjesgscIS_ftf_0eta240_L14J15 #1526259867 -TrigSignatureMoniMT INFO -- #1526259867 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #1526259867 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #1526259867 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #1526259867 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_6j55_subjesIS_0eta240_L14J15 #68179418 -TrigSignatureMoniMT INFO -- #68179418 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #68179418 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #68179418 Events 9 9 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #68179418 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_6j55_subresjesgscIS_ftf_0eta240_L14J15 #1068073241 -TrigSignatureMoniMT INFO -- #1068073241 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #1068073241 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #1068073241 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #1068073241 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_6j70_pf_subresjesgscIS_ftf_L14J15 #1755772565 -TrigSignatureMoniMT INFO -- #1755772565 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #1755772565 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #1755772565 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #1755772565 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_6j70_subjesIS_L14J15 #1003115860 -TrigSignatureMoniMT INFO -- #1003115860 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1003115860 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1003115860 Events 9 9 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1003115860 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_6j70_subresjesgscIS_ftf_L14J15 #59957514 -TrigSignatureMoniMT INFO -- #59957514 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #59957514 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #59957514 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #59957514 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_7j45_pf_subresjesgscIS_ftf_L14J15 #2701381398 -TrigSignatureMoniMT INFO -- #2701381398 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #2701381398 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #2701381398 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #2701381398 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_7j45_subjesIS_L14J15 #2617173782 -TrigSignatureMoniMT INFO -- #2617173782 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2617173782 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2617173782 Events 9 9 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2617173782 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_7j45_subresjesgscIS_ftf_L14J15 #2928962349 -TrigSignatureMoniMT INFO -- #2928962349 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 -TrigSignatureMoniMT INFO -- #2928962349 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - +TrigSignatureMoniMT INFO -- #2928962349 Events 9 9 - - - - - - - - - - 9 0 - - 0 +TrigSignatureMoniMT INFO -- #2928962349 Features - - - - - - - - - - 9 0 - - TrigSignatureMoniMT INFO HLT_JetDS_j0_L1J100 #3302698716 -TrigSignatureMoniMT INFO -- #3302698716 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 3 3 - 3 -TrigSignatureMoniMT INFO -- #3302698716 Features 0 0 0 0 0 0 0 0 0 0 81 32 3 - +TrigSignatureMoniMT INFO -- #3302698716 Events 3 3 - - - - - - - - - - 3 3 3 - 3 +TrigSignatureMoniMT INFO -- #3302698716 Features - - - - - - - - - - 81 32 3 - TrigSignatureMoniMT INFO HLT_alfacalib_AlfaPEB_L1ALFA_ANY #4094852824 TrigSignatureMoniMT INFO -- #4094852824 Events 0 0 0 - - - - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #4094852824 Features 0 - - - - - - - - - - - - - @@ -254,8 +254,8 @@ TrigSignatureMoniMT INFO HLT_e26_lhmedium_L1EM22 TrigSignatureMoniMT INFO -- #3961631254 Events 6 6 5 5 5 5 4 - - - - - - - - - 4 TrigSignatureMoniMT INFO -- #3961631254 Features 5 64 8 5 4 - - - - - - - - - TrigSignatureMoniMT INFO HLT_e26_lhmedium_mu8noL1_L1EM22VHI #4270718007 -TrigSignatureMoniMT INFO -- #4270718007 Events 6 6 5 5 5 5 4 0 0 0 0 0 0 0 2 2 2 -TrigSignatureMoniMT INFO -- #4270718007 Features 5 64 8 5 4 0 0 0 0 0 0 0 2 2 +TrigSignatureMoniMT INFO -- #4270718007 Events 6 6 5 5 5 5 4 - - - - - - - 2 2 2 +TrigSignatureMoniMT INFO -- #4270718007 Features 5 64 8 5 4 - - - - - - - 2 2 TrigSignatureMoniMT INFO HLT_e26_lhtight_L1EM22VHI #1995263521 TrigSignatureMoniMT INFO -- #1995263521 Events 6 6 5 5 5 5 4 - - - - - - - - - 4 TrigSignatureMoniMT INFO -- #1995263521 Features 5 64 8 5 4 - - - - - - - - - @@ -374,8 +374,8 @@ TrigSignatureMoniMT INFO HLT_g25_medium_L1EM20VH TrigSignatureMoniMT INFO -- #1519793981 Events 7 7 7 7 7 6 - - - - - - - - - - 6 TrigSignatureMoniMT INFO -- #1519793981 Features 7 7 13 6 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_g25_medium_mu24_ivarmedium_L1MU20 #1007052793 -TrigSignatureMoniMT INFO -- #1007052793 Events 8 8 2 2 2 2 0 2 1 1 1 0 - - - - 0 -TrigSignatureMoniMT INFO -- #1007052793 Features 2 2 4 2 0 2 1 1 1 0 - - - - +TrigSignatureMoniMT INFO -- #1007052793 Events 8 8 2 2 2 2 - 2 1 1 1 0 - - - - 0 +TrigSignatureMoniMT INFO -- #1007052793 Features 2 2 4 2 - 2 1 1 1 0 - - - - TrigSignatureMoniMT INFO HLT_g25_tight_L1EM20VH #3370790749 TrigSignatureMoniMT INFO -- #3370790749 Events 7 7 7 7 7 5 - - - - - - - - - - 5 TrigSignatureMoniMT INFO -- #3370790749 Features 7 7 13 5 - - - - - - - - - - @@ -383,14 +383,14 @@ TrigSignatureMoniMT INFO HLT_g300_etcut_L1EM22VH TrigSignatureMoniMT INFO -- #310189774 Events 6 6 0 0 0 - - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #310189774 Features 0 0 0 - - - - - - - - - - - TrigSignatureMoniMT INFO HLT_g35_loose_mu18_L1EM24VHI #3939387897 -TrigSignatureMoniMT INFO -- #3939387897 Events 6 6 2 2 2 2 0 2 1 1 1 - - - - - 1 -TrigSignatureMoniMT INFO -- #3939387897 Features 2 2 4 2 0 2 1 1 1 - - - - - +TrigSignatureMoniMT INFO -- #3939387897 Events 6 6 2 2 2 2 - 2 1 1 1 - - - - - 1 +TrigSignatureMoniMT INFO -- #3939387897 Features 2 2 4 2 - 2 1 1 1 - - - - - TrigSignatureMoniMT INFO HLT_g35_medium_g25_medium_L12EM20VH #1158879722 TrigSignatureMoniMT INFO -- #1158879722 Events 2 2 0 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1158879722 Features 0 0 0 0 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_g35_tight_icalotight_mu18noL1_L1EM22VHI #2789346459 -TrigSignatureMoniMT INFO -- #2789346459 Events 6 6 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #2789346459 Features 5 5 8 0 0 0 0 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #2789346459 Events 6 6 5 5 5 0 - - - - - - - - 0 0 0 +TrigSignatureMoniMT INFO -- #2789346459 Features 5 5 8 0 - - - - - - - - 0 0 TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 #471243435 TrigSignatureMoniMT INFO -- #471243435 Events 20 20 20 20 20 - - - - - - - - - - - 20 TrigSignatureMoniMT INFO -- #471243435 Features 137 137 190 - - - - - - - - - - - @@ -407,335 +407,335 @@ TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 #328 TrigSignatureMoniMT INFO -- #3280865118 Events 20 20 16 16 16 9 - - - - - - - - - - 9 TrigSignatureMoniMT INFO -- #3280865118 Features 45 45 82 9 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_j0_aggSEP1000htSEP30etSEP0eta320_L1J20 #2436664735 -TrigSignatureMoniMT INFO -- #2436664735 Events 19 19 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2436664735 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2436664735 Events 19 19 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2436664735 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j0_aggSEP500htSEP30etSEP0eta320_L1J20 #4013575747 -TrigSignatureMoniMT INFO -- #4013575747 Events 19 19 0 0 0 0 0 0 0 0 0 0 1 - - - 1 -TrigSignatureMoniMT INFO -- #4013575747 Features 0 0 0 0 0 0 0 0 0 0 28 - - - +TrigSignatureMoniMT INFO -- #4013575747 Events 19 19 - - - - - - - - - - 1 - - - 1 +TrigSignatureMoniMT INFO -- #4013575747 Features - - - - - - - - - - 28 - - - TrigSignatureMoniMT INFO HLT_j0_perf_L1J12_EMPTY #1341875780 -TrigSignatureMoniMT INFO -- #1341875780 Events 0 0 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1341875780 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1341875780 Events 0 0 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1341875780 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20 #4034799151 -TrigSignatureMoniMT INFO -- #4034799151 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 -TrigSignatureMoniMT INFO -- #4034799151 Features 0 0 0 0 0 0 0 0 0 0 402 - - - +TrigSignatureMoniMT INFO -- #4034799151 Events 19 19 - - - - - - - - - - 15 - - - 15 +TrigSignatureMoniMT INFO -- #4034799151 Features - - - - - - - - - - 402 - - - TrigSignatureMoniMT INFO HLT_j225_subjesgscIS_ftf_bmv2c1040_split_L1J100 #219711753 -TrigSignatureMoniMT INFO -- #219711753 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #219711753 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #219711753 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #219711753 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 #3084792704 -TrigSignatureMoniMT INFO -- #3084792704 Events 19 19 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3084792704 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3084792704 Events 19 19 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3084792704 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA49 #3769257182 -TrigSignatureMoniMT INFO -- #3769257182 Events 2 2 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3769257182 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3769257182 Events 2 2 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3769257182 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j275_pf_subjesgscIS_ftf_bdl1r60_split_L1J100 #2912155644 -TrigSignatureMoniMT INFO -- #2912155644 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #2912155644 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #2912155644 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #2912155644 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j275_pf_subjesgscIS_ftf_boffperf_split_L1J100 #9543810 -TrigSignatureMoniMT INFO -- #9543810 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #9543810 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #9543810 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #9543810 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_bdl1r60_split_L1J100 #2807668578 -TrigSignatureMoniMT INFO -- #2807668578 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #2807668578 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #2807668578 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #2807668578 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_bmv2c1060_split_L1J100 #710546402 -TrigSignatureMoniMT INFO -- #710546402 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #710546402 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #710546402 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #710546402 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_boffperf_split_L1J100 #540369970 -TrigSignatureMoniMT INFO -- #540369970 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #540369970 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #540369970 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #540369970 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j300_pf_subjesgscIS_ftf_bdl1r70_split_L1J100 #2576796343 -TrigSignatureMoniMT INFO -- #2576796343 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #2576796343 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #2576796343 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #2576796343 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j300_subjesgscIS_ftf_bdl1r70_split_L1J100 #2952175162 -TrigSignatureMoniMT INFO -- #2952175162 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #2952175162 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #2952175162 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #2952175162 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j300_subjesgscIS_ftf_bmv2c1070_split_L1J100 #2074989613 -TrigSignatureMoniMT INFO -- #2074989613 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #2074989613 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #2074989613 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #2074989613 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j360_pf_subjesgscIS_ftf_bdl1r77_split_L1J100 #3049708671 -TrigSignatureMoniMT INFO -- #3049708671 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #3049708671 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #3049708671 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #3049708671 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j360_subjesgscIS_ftf_bdl1r77_split_L1J100 #1563453863 -TrigSignatureMoniMT INFO -- #1563453863 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #1563453863 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #1563453863 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #1563453863 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j360_subjesgscIS_ftf_bmv2c1077_split_L1J100 #4176355792 -TrigSignatureMoniMT INFO -- #4176355792 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 -TrigSignatureMoniMT INFO -- #4176355792 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - +TrigSignatureMoniMT INFO -- #4176355792 Events 3 3 - - - - - - - - - - 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #4176355792 Features - - - - - - - - - - 3 0 0 - TrigSignatureMoniMT INFO HLT_j420_L1J100 #2659902019 -TrigSignatureMoniMT INFO -- #2659902019 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2659902019 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2659902019 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2659902019 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j420_pf_subresjesgscIS_ftf_L1J100 #3936932891 -TrigSignatureMoniMT INFO -- #3936932891 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #3936932891 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #3936932891 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #3936932891 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_j420_subresjesgscIS_ftf_L1J100 #2477128298 -TrigSignatureMoniMT INFO -- #2477128298 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #2477128298 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #2477128298 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2477128298 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_j45_L1J15 #1364976160 -TrigSignatureMoniMT INFO -- #1364976160 Events 20 20 0 0 0 0 0 0 0 0 0 0 19 - - - 19 -TrigSignatureMoniMT INFO -- #1364976160 Features 0 0 0 0 0 0 0 0 0 0 49 - - - +TrigSignatureMoniMT INFO -- #1364976160 Events 20 20 - - - - - - - - - - 19 - - - 19 +TrigSignatureMoniMT INFO -- #1364976160 Features - - - - - - - - - - 49 - - - TrigSignatureMoniMT INFO HLT_j45_csskpf_nojcalib_ftf_L1J20 #2528888897 -TrigSignatureMoniMT INFO -- #2528888897 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 15 - - 15 -TrigSignatureMoniMT INFO -- #2528888897 Features 0 0 0 0 0 0 0 0 0 0 19 30 - - +TrigSignatureMoniMT INFO -- #2528888897 Events 19 19 - - - - - - - - - - 19 15 - - 15 +TrigSignatureMoniMT INFO -- #2528888897 Features - - - - - - - - - - 19 30 - - TrigSignatureMoniMT INFO HLT_j45_cssktc_nojcalib_L1J20 #3295122398 -TrigSignatureMoniMT INFO -- #3295122398 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 -TrigSignatureMoniMT INFO -- #3295122398 Features 0 0 0 0 0 0 0 0 0 0 27 - - - +TrigSignatureMoniMT INFO -- #3295122398 Events 19 19 - - - - - - - - - - 15 - - - 15 +TrigSignatureMoniMT INFO -- #3295122398 Features - - - - - - - - - - 27 - - - TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 #868405538 -TrigSignatureMoniMT INFO -- #868405538 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 18 - - 18 -TrigSignatureMoniMT INFO -- #868405538 Features 0 0 0 0 0 0 0 0 0 0 20 44 - - +TrigSignatureMoniMT INFO -- #868405538 Events 20 20 - - - - - - - - - - 20 18 - - 18 +TrigSignatureMoniMT INFO -- #868405538 Features - - - - - - - - - - 20 44 - - TrigSignatureMoniMT INFO HLT_j45_ftf_preselj45_L1J20 #526860976 -TrigSignatureMoniMT INFO -- #526860976 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 18 - - 18 -TrigSignatureMoniMT INFO -- #526860976 Features 0 0 0 0 0 0 0 0 0 0 19 44 - - +TrigSignatureMoniMT INFO -- #526860976 Events 19 19 - - - - - - - - - - 19 18 - - 18 +TrigSignatureMoniMT INFO -- #526860976 Features - - - - - - - - - - 19 44 - - TrigSignatureMoniMT INFO HLT_j45_nojcalib_L1J20 #2042444294 -TrigSignatureMoniMT INFO -- #2042444294 Events 19 19 0 0 0 0 0 0 0 0 0 0 17 - - - 17 -TrigSignatureMoniMT INFO -- #2042444294 Features 0 0 0 0 0 0 0 0 0 0 39 - - - +TrigSignatureMoniMT INFO -- #2042444294 Events 19 19 - - - - - - - - - - 17 - - - 17 +TrigSignatureMoniMT INFO -- #2042444294 Features - - - - - - - - - - 39 - - - TrigSignatureMoniMT INFO HLT_j45_pf_ftf_L1J20 #3679554988 -TrigSignatureMoniMT INFO -- #3679554988 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 - - 16 -TrigSignatureMoniMT INFO -- #3679554988 Features 0 0 0 0 0 0 0 0 0 0 19 35 - - +TrigSignatureMoniMT INFO -- #3679554988 Events 19 19 - - - - - - - - - - 19 16 - - 16 +TrigSignatureMoniMT INFO -- #3679554988 Features - - - - - - - - - - 19 35 - - TrigSignatureMoniMT INFO HLT_j45_pf_ftf_preselj45_L1J20 #650158432 -TrigSignatureMoniMT INFO -- #650158432 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 - - 16 -TrigSignatureMoniMT INFO -- #650158432 Features 0 0 0 0 0 0 0 0 0 0 19 35 - - +TrigSignatureMoniMT INFO -- #650158432 Events 19 19 - - - - - - - - - - 19 16 - - 16 +TrigSignatureMoniMT INFO -- #650158432 Features - - - - - - - - - - 19 35 - - TrigSignatureMoniMT INFO HLT_j45_pf_nojcalib_ftf_L1J20 #4202219904 -TrigSignatureMoniMT INFO -- #4202219904 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 - - 16 -TrigSignatureMoniMT INFO -- #4202219904 Features 0 0 0 0 0 0 0 0 0 0 19 36 - - +TrigSignatureMoniMT INFO -- #4202219904 Events 19 19 - - - - - - - - - - 19 16 - - 16 +TrigSignatureMoniMT INFO -- #4202219904 Features - - - - - - - - - - 19 36 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_L1J20 #2187173741 -TrigSignatureMoniMT INFO -- #2187173741 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 18 - - 18 -TrigSignatureMoniMT INFO -- #2187173741 Features 0 0 0 0 0 0 0 0 0 0 19 39 - - +TrigSignatureMoniMT INFO -- #2187173741 Events 19 19 - - - - - - - - - - 19 18 - - 18 +TrigSignatureMoniMT INFO -- #2187173741 Features - - - - - - - - - - 19 39 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_bdl1r70_split_L1J20 #4239752847 -TrigSignatureMoniMT INFO -- #4239752847 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 7 - 7 -TrigSignatureMoniMT INFO -- #4239752847 Features 0 0 0 0 0 0 0 0 0 0 19 36 15 - +TrigSignatureMoniMT INFO -- #4239752847 Events 19 19 - - - - - - - - - - 19 16 7 - 7 +TrigSignatureMoniMT INFO -- #4239752847 Features - - - - - - - - - - 19 36 15 - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_boffperf_split_L1J20 #2546763674 -TrigSignatureMoniMT INFO -- #2546763674 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 16 - 16 -TrigSignatureMoniMT INFO -- #2546763674 Features 0 0 0 0 0 0 0 0 0 0 19 36 36 - +TrigSignatureMoniMT INFO -- #2546763674 Events 19 19 - - - - - - - - - - 19 16 16 - 16 +TrigSignatureMoniMT INFO -- #2546763674 Features - - - - - - - - - - 19 36 36 - TrigSignatureMoniMT INFO HLT_j45_sktc_nojcalib_L1J20 #1542468090 -TrigSignatureMoniMT INFO -- #1542468090 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 -TrigSignatureMoniMT INFO -- #1542468090 Features 0 0 0 0 0 0 0 0 0 0 26 - - - +TrigSignatureMoniMT INFO -- #1542468090 Events 19 19 - - - - - - - - - - 15 - - - 15 +TrigSignatureMoniMT INFO -- #1542468090 Features - - - - - - - - - - 26 - - - TrigSignatureMoniMT INFO HLT_j45_subjesIS_ftf_preselj45_L1J20 #3647626880 -TrigSignatureMoniMT INFO -- #3647626880 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 19 - - 19 -TrigSignatureMoniMT INFO -- #3647626880 Features 0 0 0 0 0 0 0 0 0 0 19 49 - - +TrigSignatureMoniMT INFO -- #3647626880 Events 19 19 - - - - - - - - - - 19 19 - - 19 +TrigSignatureMoniMT INFO -- #3647626880 Features - - - - - - - - - - 19 49 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_011jvt_L1J15 #266323220 -TrigSignatureMoniMT INFO -- #266323220 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 13 - - 13 -TrigSignatureMoniMT INFO -- #266323220 Features 0 0 0 0 0 0 0 0 0 0 20 29 - - +TrigSignatureMoniMT INFO -- #266323220 Events 20 20 - - - - - - - - - - 20 13 - - 13 +TrigSignatureMoniMT INFO -- #266323220 Features - - - - - - - - - - 20 29 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_015jvt_L1J15 #3102941497 -TrigSignatureMoniMT INFO -- #3102941497 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 13 - - 13 -TrigSignatureMoniMT INFO -- #3102941497 Features 0 0 0 0 0 0 0 0 0 0 20 29 - - +TrigSignatureMoniMT INFO -- #3102941497 Events 20 20 - - - - - - - - - - 20 13 - - 13 +TrigSignatureMoniMT INFO -- #3102941497 Features - - - - - - - - - - 20 29 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_059jvt_L1J15 #2237035634 -TrigSignatureMoniMT INFO -- #2237035634 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 13 - - 13 -TrigSignatureMoniMT INFO -- #2237035634 Features 0 0 0 0 0 0 0 0 0 0 20 28 - - +TrigSignatureMoniMT INFO -- #2237035634 Events 20 20 - - - - - - - - - - 20 13 - - 13 +TrigSignatureMoniMT INFO -- #2237035634 Features - - - - - - - - - - 20 28 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_L1J15 #1960278431 -TrigSignatureMoniMT INFO -- #1960278431 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 19 - - 19 -TrigSignatureMoniMT INFO -- #1960278431 Features 0 0 0 0 0 0 0 0 0 0 20 50 - - +TrigSignatureMoniMT INFO -- #1960278431 Events 20 20 - - - - - - - - - - 20 19 - - 19 +TrigSignatureMoniMT INFO -- #1960278431 Features - - - - - - - - - - 20 50 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_bdl1r70_split_L1J20 #2947439578 -TrigSignatureMoniMT INFO -- #2947439578 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 19 7 - 7 -TrigSignatureMoniMT INFO -- #2947439578 Features 0 0 0 0 0 0 0 0 0 0 19 49 14 - +TrigSignatureMoniMT INFO -- #2947439578 Events 19 19 - - - - - - - - - - 19 19 7 - 7 +TrigSignatureMoniMT INFO -- #2947439578 Features - - - - - - - - - - 19 49 14 - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_bmv2c1070_split_L1J20 #980453000 -TrigSignatureMoniMT INFO -- #980453000 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 19 10 - 10 -TrigSignatureMoniMT INFO -- #980453000 Features 0 0 0 0 0 0 0 0 0 0 19 49 19 - +TrigSignatureMoniMT INFO -- #980453000 Events 19 19 - - - - - - - - - - 19 19 10 - 10 +TrigSignatureMoniMT INFO -- #980453000 Features - - - - - - - - - - 19 49 19 - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_boffperf_split_L1J20 #3374916154 -TrigSignatureMoniMT INFO -- #3374916154 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 19 19 - 19 -TrigSignatureMoniMT INFO -- #3374916154 Features 0 0 0 0 0 0 0 0 0 0 19 49 49 - +TrigSignatureMoniMT INFO -- #3374916154 Events 19 19 - - - - - - - - - - 19 19 19 - 19 +TrigSignatureMoniMT INFO -- #3374916154 Features - - - - - - - - - - 19 49 49 - TrigSignatureMoniMT INFO HLT_j45_subresjesgscIS_ftf_L1J15 #1213239619 -TrigSignatureMoniMT INFO -- #1213239619 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 18 - - 18 -TrigSignatureMoniMT INFO -- #1213239619 Features 0 0 0 0 0 0 0 0 0 0 20 44 - - +TrigSignatureMoniMT INFO -- #1213239619 Events 20 20 - - - - - - - - - - 20 18 - - 18 +TrigSignatureMoniMT INFO -- #1213239619 Features - - - - - - - - - - 20 44 - - TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J100 #3327656707 -TrigSignatureMoniMT INFO -- #3327656707 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3327656707 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3327656707 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3327656707 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 #215408633 -TrigSignatureMoniMT INFO -- #215408633 Events 19 19 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #215408633 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #215408633 Events 19 19 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #215408633 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 #1151767619 -TrigSignatureMoniMT INFO -- #1151767619 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1151767619 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1151767619 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1151767619 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 #3875082669 -TrigSignatureMoniMT INFO -- #3875082669 Events 19 19 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3875082669 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3875082669 Events 19 19 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3875082669 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3781128663 -TrigSignatureMoniMT INFO -- #3781128663 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #3781128663 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #3781128663 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #3781128663 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_jes_ftf_L1J100 #1509950051 -TrigSignatureMoniMT INFO -- #1509950051 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #1509950051 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #1509950051 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #1509950051 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #249842682 -TrigSignatureMoniMT INFO -- #249842682 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #249842682 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #249842682 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #249842682 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_L1J100 #3452032818 -TrigSignatureMoniMT INFO -- #3452032818 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #3452032818 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #3452032818 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #3452032818 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_lcw_nojcalib_L1J100 #3093997295 -TrigSignatureMoniMT INFO -- #3093997295 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3093997295 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3093997295 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3093997295 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10sd_pf_nojcalib_ftf_L1J100 #2138269254 -TrigSignatureMoniMT INFO -- #2138269254 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 -TrigSignatureMoniMT INFO -- #2138269254 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - +TrigSignatureMoniMT INFO -- #2138269254 Events 3 3 - - - - - - - - - - 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2138269254 Features - - - - - - - - - - 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 #2296827117 -TrigSignatureMoniMT INFO -- #2296827117 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2296827117 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2296827117 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2296827117 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 #436385969 -TrigSignatureMoniMT INFO -- #436385969 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #436385969 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #436385969 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #436385969 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_nojcalib_35smcINF_L1J100 #3224465417 -TrigSignatureMoniMT INFO -- #3224465417 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3224465417 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3224465417 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3224465417 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_nojcalib_L1J100 #1966129844 -TrigSignatureMoniMT INFO -- #1966129844 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1966129844 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1966129844 Events 3 3 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1966129844 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20 #3634067472 -TrigSignatureMoniMT INFO -- #3634067472 Events 19 19 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3634067472 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3634067472 Events 19 19 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3634067472 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j80_L1J15 #2440872308 -TrigSignatureMoniMT INFO -- #2440872308 Events 20 20 0 0 0 0 0 0 0 0 0 0 13 - - - 13 -TrigSignatureMoniMT INFO -- #2440872308 Features 0 0 0 0 0 0 0 0 0 0 23 - - - +TrigSignatureMoniMT INFO -- #2440872308 Events 20 20 - - - - - - - - - - 13 - - - 13 +TrigSignatureMoniMT INFO -- #2440872308 Features - - - - - - - - - - 23 - - - TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 #582699527 -TrigSignatureMoniMT INFO -- #582699527 Events 20 20 0 0 0 0 0 0 0 0 0 0 8 - - - 8 -TrigSignatureMoniMT INFO -- #582699527 Features 0 0 0 0 0 0 0 0 0 0 24 - - - +TrigSignatureMoniMT INFO -- #582699527 Events 20 20 - - - - - - - - - - 8 - - - 8 +TrigSignatureMoniMT INFO -- #582699527 Features - - - - - - - - - - 24 - - - TrigSignatureMoniMT INFO HLT_j85_L1J20 #510475538 -TrigSignatureMoniMT INFO -- #510475538 Events 19 19 0 0 0 0 0 0 0 0 0 0 13 - - - 13 -TrigSignatureMoniMT INFO -- #510475538 Features 0 0 0 0 0 0 0 0 0 0 21 - - - +TrigSignatureMoniMT INFO -- #510475538 Events 19 19 - - - - - - - - - - 13 - - - 13 +TrigSignatureMoniMT INFO -- #510475538 Features - - - - - - - - - - 21 - - - TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 #877042532 -TrigSignatureMoniMT INFO -- #877042532 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 12 - - 12 -TrigSignatureMoniMT INFO -- #877042532 Features 0 0 0 0 0 0 0 0 0 0 19 18 - - +TrigSignatureMoniMT INFO -- #877042532 Events 19 19 - - - - - - - - - - 19 12 - - 12 +TrigSignatureMoniMT INFO -- #877042532 Features - - - - - - - - - - 19 18 - - TrigSignatureMoniMT INFO HLT_j85_pf_ftf_L1J20 #789444389 -TrigSignatureMoniMT INFO -- #789444389 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 11 - - 11 -TrigSignatureMoniMT INFO -- #789444389 Features 0 0 0 0 0 0 0 0 0 0 19 17 - - +TrigSignatureMoniMT INFO -- #789444389 Events 19 19 - - - - - - - - - - 19 11 - - 11 +TrigSignatureMoniMT INFO -- #789444389 Features - - - - - - - - - - 19 17 - - TrigSignatureMoniMT INFO HLT_mb_sptrk_L1RD0_FILLED #4097312640 TrigSignatureMoniMT INFO -- #4097312640 Events 20 0 0 0 - - - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #4097312640 Features 0 0 - - - - - - - - - - - - TrigSignatureMoniMT INFO HLT_mu0_muoncalib_L1MU20 #997163309 -TrigSignatureMoniMT INFO -- #997163309 Events 8 8 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #997163309 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #997163309 Events 8 8 - - - - - 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #997163309 Features - - - - - 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_mu0_muoncalib_L1MU4_EMPTY #782182242 -TrigSignatureMoniMT INFO -- #782182242 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #782182242 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #782182242 Events 0 0 - - - - - 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #782182242 Features - - - - - 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_mu10_L1MU10 #209090273 -TrigSignatureMoniMT INFO -- #209090273 Events 10 10 0 0 0 0 0 10 10 10 9 - - - - - 9 -TrigSignatureMoniMT INFO -- #209090273 Features 0 0 0 0 0 12 12 13 11 - - - - - +TrigSignatureMoniMT INFO -- #209090273 Events 10 10 - - - - - 10 10 10 9 - - - - - 9 +TrigSignatureMoniMT INFO -- #209090273 Features - - - - - 12 12 13 11 - - - - - TrigSignatureMoniMT INFO HLT_mu10_ivarmedium_mu10_10invm70_L12MU10 #2386882549 -TrigSignatureMoniMT INFO -- #2386882549 Events 3 3 0 0 0 0 0 2 2 2 2 2 - - - - 2 -TrigSignatureMoniMT INFO -- #2386882549 Features 0 0 0 0 0 4 4 4 4 2 - - - - +TrigSignatureMoniMT INFO -- #2386882549 Events 3 3 - - - - - 2 2 2 2 2 - - - - 2 +TrigSignatureMoniMT INFO -- #2386882549 Features - - - - - 4 4 4 4 2 - - - - TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1LATE-MU10_XE50 #1787564306 -TrigSignatureMoniMT INFO -- #1787564306 Events 0 0 0 0 0 0 0 0 0 - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1787564306 Features 0 0 0 0 0 0 0 - - - - - - - +TrigSignatureMoniMT INFO -- #1787564306 Events 0 0 - - - - - 0 0 - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1787564306 Features - - - - - 0 0 - - - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bBmumu_L1MU11_2MU6 #947854469 -TrigSignatureMoniMT INFO -- #947854469 Events 4 4 0 0 0 0 0 3 0 2 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #947854469 Features 0 0 0 0 0 6 0 4 0 - - - - - +TrigSignatureMoniMT INFO -- #947854469 Events 4 4 - - - - - 3 0 2 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #947854469 Features - - - - - 6 0 4 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bDimu2700_L1MU11_2MU6 #4293593869 -TrigSignatureMoniMT INFO -- #4293593869 Events 4 4 0 0 0 0 0 3 0 2 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #4293593869 Features 0 0 0 0 0 6 0 4 0 - - - - - +TrigSignatureMoniMT INFO -- #4293593869 Events 4 4 - - - - - 3 0 2 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #4293593869 Features - - - - - 6 0 4 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bDimu_L1MU11_2MU6 #2381335347 -TrigSignatureMoniMT INFO -- #2381335347 Events 4 4 0 0 0 0 0 3 0 2 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2381335347 Features 0 0 0 0 0 6 0 4 0 - - - - - +TrigSignatureMoniMT INFO -- #2381335347 Events 4 4 - - - - - 3 0 2 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2381335347 Features - - - - - 6 0 4 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bJpsimumu_L1MU11_2MU6 #2504965945 -TrigSignatureMoniMT INFO -- #2504965945 Events 4 4 0 0 0 0 0 3 0 2 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2504965945 Features 0 0 0 0 0 6 0 4 0 - - - - - +TrigSignatureMoniMT INFO -- #2504965945 Events 4 4 - - - - - 3 0 2 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2504965945 Features - - - - - 6 0 4 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bPhi_L1MU11_2MU6 #2079901197 -TrigSignatureMoniMT INFO -- #2079901197 Events 4 4 0 0 0 0 0 3 0 2 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2079901197 Features 0 0 0 0 0 6 0 4 0 - - - - - +TrigSignatureMoniMT INFO -- #2079901197 Events 4 4 - - - - - 3 0 2 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2079901197 Features - - - - - 6 0 4 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bTau_L1MU11_2MU6 #1292401093 -TrigSignatureMoniMT INFO -- #1292401093 Events 4 4 0 0 0 0 0 3 0 2 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1292401093 Features 0 0 0 0 0 6 0 4 0 - - - - - +TrigSignatureMoniMT INFO -- #1292401093 Events 4 4 - - - - - 3 0 2 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1292401093 Features - - - - - 6 0 4 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bUpsimumu_L1MU11_2MU6 #1171632195 -TrigSignatureMoniMT INFO -- #1171632195 Events 4 4 0 0 0 0 0 3 0 2 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1171632195 Features 0 0 0 0 0 6 0 4 0 - - - - - +TrigSignatureMoniMT INFO -- #1171632195 Events 4 4 - - - - - 3 0 2 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1171632195 Features - - - - - 6 0 4 0 - - - - - TrigSignatureMoniMT INFO HLT_mu14_L1MU10 #1696906927 -TrigSignatureMoniMT INFO -- #1696906927 Events 10 10 0 0 0 0 0 10 8 8 7 - - - - - 7 -TrigSignatureMoniMT INFO -- #1696906927 Features 0 0 0 0 0 12 9 10 8 - - - - - +TrigSignatureMoniMT INFO -- #1696906927 Events 10 10 - - - - - 10 8 8 7 - - - - - 7 +TrigSignatureMoniMT INFO -- #1696906927 Features - - - - - 12 9 10 8 - - - - - TrigSignatureMoniMT INFO HLT_mu20_2mu4noL1_L1MU20 #1029128679 -TrigSignatureMoniMT INFO -- #1029128679 Events 8 8 0 0 0 0 0 8 5 5 5 0 0 0 1 1 1 -TrigSignatureMoniMT INFO -- #1029128679 Features 0 0 0 0 0 10 6 6 6 0 0 0 2 2 +TrigSignatureMoniMT INFO -- #1029128679 Events 8 8 - - - - - 8 5 5 5 - - - 1 1 1 +TrigSignatureMoniMT INFO -- #1029128679 Features - - - - - 10 6 6 6 - - - 2 2 TrigSignatureMoniMT INFO HLT_mu20_ivarmedium_mu4noL1_10invm70_L1MU20 #2942530653 -TrigSignatureMoniMT INFO -- #2942530653 Events 8 8 0 0 0 0 0 8 5 5 5 3 0 0 2 2 2 -TrigSignatureMoniMT INFO -- #2942530653 Features 0 0 0 0 0 10 6 6 6 3 0 0 2 2 +TrigSignatureMoniMT INFO -- #2942530653 Events 8 8 - - - - - 8 5 5 5 3 - - 2 2 2 +TrigSignatureMoniMT INFO -- #2942530653 Features - - - - - 10 6 6 6 3 - - 2 2 TrigSignatureMoniMT INFO HLT_mu20_ivarmedium_mu8noL1_L1MU20 #3249386942 -TrigSignatureMoniMT INFO -- #3249386942 Events 8 8 0 0 0 0 0 8 5 5 5 3 0 0 1 1 1 -TrigSignatureMoniMT INFO -- #3249386942 Features 0 0 0 0 0 10 6 6 6 3 0 0 1 1 +TrigSignatureMoniMT INFO -- #3249386942 Events 8 8 - - - - - 8 5 5 5 3 - - 1 1 1 +TrigSignatureMoniMT INFO -- #3249386942 Features - - - - - 10 6 6 6 3 - - 1 1 TrigSignatureMoniMT INFO HLT_mu22_2mu4noL1_L1MU20 #3427670100 -TrigSignatureMoniMT INFO -- #3427670100 Events 8 8 0 0 0 0 0 8 5 4 4 0 0 0 1 1 1 -TrigSignatureMoniMT INFO -- #3427670100 Features 0 0 0 0 0 10 6 5 5 0 0 0 2 2 +TrigSignatureMoniMT INFO -- #3427670100 Events 8 8 - - - - - 8 5 4 4 - - - 1 1 1 +TrigSignatureMoniMT INFO -- #3427670100 Features - - - - - 10 6 5 5 - - - 2 2 TrigSignatureMoniMT INFO HLT_mu22_mu8noL1_L1MU20 #3165652409 -TrigSignatureMoniMT INFO -- #3165652409 Events 8 8 0 0 0 0 0 8 5 4 4 0 0 0 2 2 2 -TrigSignatureMoniMT INFO -- #3165652409 Features 0 0 0 0 0 10 6 5 5 0 0 0 3 3 +TrigSignatureMoniMT INFO -- #3165652409 Events 8 8 - - - - - 8 5 4 4 - - - 2 2 2 +TrigSignatureMoniMT INFO -- #3165652409 Features - - - - - 10 6 5 5 - - - 3 3 TrigSignatureMoniMT INFO HLT_mu24_2mu4noL1_L1MU20 #3233544630 -TrigSignatureMoniMT INFO -- #3233544630 Events 8 8 0 0 0 0 0 8 5 4 4 0 0 0 1 1 1 -TrigSignatureMoniMT INFO -- #3233544630 Features 0 0 0 0 0 10 6 5 5 0 0 0 2 2 +TrigSignatureMoniMT INFO -- #3233544630 Events 8 8 - - - - - 8 5 4 4 - - - 1 1 1 +TrigSignatureMoniMT INFO -- #3233544630 Features - - - - - 10 6 5 5 - - - 2 2 TrigSignatureMoniMT INFO HLT_mu24_L1MU20 #417425162 -TrigSignatureMoniMT INFO -- #417425162 Events 8 8 0 0 0 0 0 8 5 4 4 - - - - - 4 -TrigSignatureMoniMT INFO -- #417425162 Features 0 0 0 0 0 10 6 5 5 - - - - - +TrigSignatureMoniMT INFO -- #417425162 Events 8 8 - - - - - 8 5 4 4 - - - - - 4 +TrigSignatureMoniMT INFO -- #417425162 Features - - - - - 10 6 5 5 - - - - - TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 #677658909 -TrigSignatureMoniMT INFO -- #677658909 Events 8 8 0 0 0 0 0 5 5 4 4 - - - - - 4 -TrigSignatureMoniMT INFO -- #677658909 Features 0 0 0 0 0 6 6 5 5 - - - - - +TrigSignatureMoniMT INFO -- #677658909 Events 8 8 - - - - - 5 5 4 4 - - - - - 4 +TrigSignatureMoniMT INFO -- #677658909 Features - - - - - 6 6 5 5 - - - - - TrigSignatureMoniMT INFO HLT_mu24_ivarmedium_L1MU20 #737407430 -TrigSignatureMoniMT INFO -- #737407430 Events 8 8 0 0 0 0 0 8 5 4 4 2 - - - - 2 -TrigSignatureMoniMT INFO -- #737407430 Features 0 0 0 0 0 10 6 5 5 2 - - - - +TrigSignatureMoniMT INFO -- #737407430 Events 8 8 - - - - - 8 5 4 4 2 - - - - 2 +TrigSignatureMoniMT INFO -- #737407430 Features - - - - - 10 6 5 5 2 - - - - TrigSignatureMoniMT INFO HLT_mu24_mu10noL1_L1MU20 #2563354236 -TrigSignatureMoniMT INFO -- #2563354236 Events 8 8 0 0 0 0 0 8 5 4 4 0 0 0 2 2 2 -TrigSignatureMoniMT INFO -- #2563354236 Features 0 0 0 0 0 10 6 5 5 0 0 0 3 3 +TrigSignatureMoniMT INFO -- #2563354236 Events 8 8 - - - - - 8 5 4 4 - - - 2 2 2 +TrigSignatureMoniMT INFO -- #2563354236 Features - - - - - 10 6 5 5 - - - 3 3 TrigSignatureMoniMT INFO HLT_mu26_L1MU20 #311138376 -TrigSignatureMoniMT INFO -- #311138376 Events 8 8 0 0 0 0 0 8 5 4 3 - - - - - 3 -TrigSignatureMoniMT INFO -- #311138376 Features 0 0 0 0 0 10 6 5 4 - - - - - +TrigSignatureMoniMT INFO -- #311138376 Events 8 8 - - - - - 8 5 4 3 - - - - - 3 +TrigSignatureMoniMT INFO -- #311138376 Features - - - - - 10 6 5 4 - - - - - TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 #3411723090 -TrigSignatureMoniMT INFO -- #3411723090 Events 8 8 0 0 0 0 0 8 5 4 3 2 - - - - 2 -TrigSignatureMoniMT INFO -- #3411723090 Features 0 0 0 0 0 10 6 5 4 2 - - - - +TrigSignatureMoniMT INFO -- #3411723090 Events 8 8 - - - - - 8 5 4 3 2 - - - - 2 +TrigSignatureMoniMT INFO -- #3411723090 Features - - - - - 10 6 5 4 2 - - - - TrigSignatureMoniMT INFO HLT_mu26_mu10noL1_L1MU20 #2318302287 -TrigSignatureMoniMT INFO -- #2318302287 Events 8 8 0 0 0 0 0 8 5 4 3 0 0 0 1 1 1 -TrigSignatureMoniMT INFO -- #2318302287 Features 0 0 0 0 0 10 6 5 4 0 0 0 2 2 +TrigSignatureMoniMT INFO -- #2318302287 Events 8 8 - - - - - 8 5 4 3 - - - 1 1 1 +TrigSignatureMoniMT INFO -- #2318302287 Features - - - - - 10 6 5 4 - - - 2 2 TrigSignatureMoniMT INFO HLT_mu26_mu8noL1_L1MU20 #2233067926 -TrigSignatureMoniMT INFO -- #2233067926 Events 8 8 0 0 0 0 0 8 5 4 3 0 0 0 1 1 1 -TrigSignatureMoniMT INFO -- #2233067926 Features 0 0 0 0 0 10 6 5 4 0 0 0 2 2 +TrigSignatureMoniMT INFO -- #2233067926 Events 8 8 - - - - - 8 5 4 3 - - - 1 1 1 +TrigSignatureMoniMT INFO -- #2233067926 Features - - - - - 10 6 5 4 - - - 2 2 TrigSignatureMoniMT INFO HLT_mu28_ivarmedium_L1MU20 #1963262787 -TrigSignatureMoniMT INFO -- #1963262787 Events 8 8 0 0 0 0 0 8 5 4 3 2 - - - - 2 -TrigSignatureMoniMT INFO -- #1963262787 Features 0 0 0 0 0 10 6 5 3 2 - - - - +TrigSignatureMoniMT INFO -- #1963262787 Events 8 8 - - - - - 8 5 4 3 2 - - - - 2 +TrigSignatureMoniMT INFO -- #1963262787 Features - - - - - 10 6 5 3 2 - - - - TrigSignatureMoniMT INFO HLT_mu28_mu8noL1_L1MU20 #86648125 -TrigSignatureMoniMT INFO -- #86648125 Events 8 8 0 0 0 0 0 8 5 4 3 0 0 0 1 1 1 -TrigSignatureMoniMT INFO -- #86648125 Features 0 0 0 0 0 10 6 5 3 0 0 0 1 1 +TrigSignatureMoniMT INFO -- #86648125 Events 8 8 - - - - - 8 5 4 3 - - - 1 1 1 +TrigSignatureMoniMT INFO -- #86648125 Features - - - - - 10 6 5 3 - - - 1 1 TrigSignatureMoniMT INFO HLT_mu35_ivarmedium_L1MU20 #597064890 -TrigSignatureMoniMT INFO -- #597064890 Events 8 8 0 0 0 0 0 8 5 4 2 1 - - - - 1 -TrigSignatureMoniMT INFO -- #597064890 Features 0 0 0 0 0 10 6 4 2 1 - - - - +TrigSignatureMoniMT INFO -- #597064890 Events 8 8 - - - - - 8 5 4 2 1 - - - - 1 +TrigSignatureMoniMT INFO -- #597064890 Features - - - - - 10 6 4 2 1 - - - - TrigSignatureMoniMT INFO HLT_mu4_l2io_L1MU4 #1048276860 -TrigSignatureMoniMT INFO -- #1048276860 Events 12 12 0 0 0 0 0 12 12 11 11 - - - - - 11 -TrigSignatureMoniMT INFO -- #1048276860 Features 0 0 0 0 0 15 50 15 15 - - - - - +TrigSignatureMoniMT INFO -- #1048276860 Events 12 12 - - - - - 12 12 11 11 - - - - - 11 +TrigSignatureMoniMT INFO -- #1048276860 Features - - - - - 15 50 15 15 - - - - - TrigSignatureMoniMT INFO HLT_mu50_L1MU20 #3657158931 -TrigSignatureMoniMT INFO -- #3657158931 Events 8 8 0 0 0 0 0 8 5 2 1 - - - - - 1 -TrigSignatureMoniMT INFO -- #3657158931 Features 0 0 0 0 0 10 6 2 1 - - - - - +TrigSignatureMoniMT INFO -- #3657158931 Events 8 8 - - - - - 8 5 2 1 - - - - - 1 +TrigSignatureMoniMT INFO -- #3657158931 Features - - - - - 10 6 2 1 - - - - - TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU20 #827327262 -TrigSignatureMoniMT INFO -- #827327262 Events 8 8 0 0 0 0 0 8 5 2 1 1 - - - - 1 -TrigSignatureMoniMT INFO -- #827327262 Features 0 0 0 0 0 10 6 2 1 1 - - - - +TrigSignatureMoniMT INFO -- #827327262 Events 8 8 - - - - - 8 5 2 1 1 - - - - 1 +TrigSignatureMoniMT INFO -- #827327262 Features - - - - - 10 6 2 1 1 - - - - TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU20 #1642591450 -TrigSignatureMoniMT INFO -- #1642591450 Events 8 8 0 0 0 0 0 1 0 0 - - - - - - 0 -TrigSignatureMoniMT INFO -- #1642591450 Features 0 0 0 0 0 2 0 0 - - - - - - +TrigSignatureMoniMT INFO -- #1642591450 Events 8 8 - - - - - 1 - 0 - - - - - - 0 +TrigSignatureMoniMT INFO -- #1642591450 Features - - - - - 2 - 0 - - - - - - TrigSignatureMoniMT INFO HLT_mu60_L1MU20 #2871837722 -TrigSignatureMoniMT INFO -- #2871837722 Events 8 8 0 0 0 0 0 8 5 1 1 - - - - - 1 -TrigSignatureMoniMT INFO -- #2871837722 Features 0 0 0 0 0 10 6 1 1 - - - - - +TrigSignatureMoniMT INFO -- #2871837722 Events 8 8 - - - - - 8 5 1 1 - - - - - 1 +TrigSignatureMoniMT INFO -- #2871837722 Features - - - - - 10 6 1 1 - - - - - TrigSignatureMoniMT INFO HLT_mu6_L1MU6 #2560542253 -TrigSignatureMoniMT INFO -- #2560542253 Events 10 10 0 0 0 0 0 10 10 10 10 - - - - - 10 -TrigSignatureMoniMT INFO -- #2560542253 Features 0 0 0 0 0 13 12 13 13 - - - - - +TrigSignatureMoniMT INFO -- #2560542253 Events 10 10 - - - - - 10 10 10 10 - - - - - 10 +TrigSignatureMoniMT INFO -- #2560542253 Features - - - - - 13 12 13 13 - - - - - TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 #934918532 -TrigSignatureMoniMT INFO -- #934918532 Events 10 10 0 0 0 0 0 10 10 10 10 - - - - - 10 -TrigSignatureMoniMT INFO -- #934918532 Features 0 0 0 0 0 13 13 13 13 - - - - - +TrigSignatureMoniMT INFO -- #934918532 Events 10 10 - - - - - 10 10 10 10 - - - - - 10 +TrigSignatureMoniMT INFO -- #934918532 Features - - - - - 13 13 13 13 - - - - - TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 #1012713062 -TrigSignatureMoniMT INFO -- #1012713062 Events 10 10 0 0 0 0 0 10 10 10 10 6 - - - - 6 -TrigSignatureMoniMT INFO -- #1012713062 Features 0 0 0 0 0 13 12 13 13 6 - - - - +TrigSignatureMoniMT INFO -- #1012713062 Events 10 10 - - - - - 10 10 10 10 6 - - - - 6 +TrigSignatureMoniMT INFO -- #1012713062 Features - - - - - 13 12 13 13 6 - - - - TrigSignatureMoniMT INFO HLT_mu6_j45_nojcalib_L1J20 #2114129685 -TrigSignatureMoniMT INFO -- #2114129685 Events 19 19 0 0 0 0 0 9 9 9 9 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2114129685 Features 0 0 0 0 0 11 10 11 11 0 0 - - - +TrigSignatureMoniMT INFO -- #2114129685 Events 19 19 - - - - - 9 9 9 9 - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2114129685 Features - - - - - 11 10 11 11 - 0 - - - TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 #3895421032 -TrigSignatureMoniMT INFO -- #3895421032 Events 10 10 0 0 0 0 0 10 0 10 - - - - - - 10 -TrigSignatureMoniMT INFO -- #3895421032 Features 0 0 0 0 0 13 0 13 - - - - - - +TrigSignatureMoniMT INFO -- #3895421032 Events 10 10 - - - - - 10 - 10 - - - - - - 10 +TrigSignatureMoniMT INFO -- #3895421032 Features - - - - - 13 - 13 - - - - - - TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 #1713982776 -TrigSignatureMoniMT INFO -- #1713982776 Events 4 4 0 0 0 0 0 3 3 2 2 - - - - - 2 -TrigSignatureMoniMT INFO -- #1713982776 Features 0 0 0 0 0 6 6 4 4 - - - - - +TrigSignatureMoniMT INFO -- #1713982776 Events 4 4 - - - - - 3 3 2 2 - - - - - 2 +TrigSignatureMoniMT INFO -- #1713982776 Features - - - - - 6 6 4 4 - - - - - TrigSignatureMoniMT INFO HLT_mu6_mu6noL1_L1MU6 #451489897 -TrigSignatureMoniMT INFO -- #451489897 Events 10 10 0 0 0 0 0 10 10 10 10 0 0 0 6 4 4 -TrigSignatureMoniMT INFO -- #451489897 Features 0 0 0 0 0 13 12 13 13 0 0 0 8 6 +TrigSignatureMoniMT INFO -- #451489897 Events 10 10 - - - - - 10 10 10 10 - - - 6 4 4 +TrigSignatureMoniMT INFO -- #451489897 Features - - - - - 13 12 13 13 - - - 8 6 TrigSignatureMoniMT INFO HLT_mu6_xe30_mht_L1XE10 #3192713675 -TrigSignatureMoniMT INFO -- #3192713675 Events 19 19 0 0 0 0 0 9 9 9 9 0 9 - - - 9 -TrigSignatureMoniMT INFO -- #3192713675 Features 0 0 0 0 0 12 11 12 12 0 11 - - - +TrigSignatureMoniMT INFO -- #3192713675 Events 19 19 - - - - - 9 9 9 9 - 9 - - - 9 +TrigSignatureMoniMT INFO -- #3192713675 Features - - - - - 12 11 12 12 - 11 - - - TrigSignatureMoniMT INFO HLT_mu80_L1MU20 #387900377 -TrigSignatureMoniMT INFO -- #387900377 Events 8 8 0 0 0 0 0 8 5 1 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #387900377 Features 0 0 0 0 0 10 6 1 0 - - - - - +TrigSignatureMoniMT INFO -- #387900377 Events 8 8 - - - - - 8 5 1 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #387900377 Features - - - - - 10 6 1 0 - - - - - TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU20 #761101109 -TrigSignatureMoniMT INFO -- #761101109 Events 8 8 0 0 0 0 0 8 0 1 - - - - - - 1 -TrigSignatureMoniMT INFO -- #761101109 Features 0 0 0 0 0 10 0 1 - - - - - - +TrigSignatureMoniMT INFO -- #761101109 Events 8 8 - - - - - 8 - 1 - - - - - - 1 +TrigSignatureMoniMT INFO -- #761101109 Features - - - - - 10 - 1 - - - - - - TrigSignatureMoniMT INFO HLT_mu8_L1MU6 #1467711434 -TrigSignatureMoniMT INFO -- #1467711434 Events 10 10 0 0 0 0 0 10 10 10 10 - - - - - 10 -TrigSignatureMoniMT INFO -- #1467711434 Features 0 0 0 0 0 13 12 13 13 - - - - - +TrigSignatureMoniMT INFO -- #1467711434 Events 10 10 - - - - - 10 10 10 10 - - - - - 10 +TrigSignatureMoniMT INFO -- #1467711434 Features - - - - - 13 12 13 13 - - - - - TrigSignatureMoniMT INFO HLT_noalg_L1All #2979253164 TrigSignatureMoniMT INFO -- #2979253164 Events 20 20 - - - - - - - - - - - - - - 20 TrigSignatureMoniMT INFO -- #2979253164 Features - - - - - - - - - - - - - - @@ -947,107 +947,107 @@ TrigSignatureMoniMT INFO HLT_sct_noise_SCTPEB_L1 TrigSignatureMoniMT INFO -- #3024203296 Events 0 0 0 - - - - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #3024203296 Features 0 - - - - - - - - - - - - - TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU100 #2342716369 -TrigSignatureMoniMT INFO -- #2342716369 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #2342716369 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #2342716369 Events 0 0 0 0 - - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #2342716369 Features 0 0 - - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 #372992233 -TrigSignatureMoniMT INFO -- #372992233 Events 18 18 18 18 0 0 18 18 - - - - - - - - 18 -TrigSignatureMoniMT INFO -- #372992233 Features 42 27 0 0 27 27 - - - - - - - - +TrigSignatureMoniMT INFO -- #372992233 Events 18 18 18 18 - - 18 18 - - - - - - - - 18 +TrigSignatureMoniMT INFO -- #372992233 Features 42 27 - - 27 27 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU60 #1376650121 -TrigSignatureMoniMT INFO -- #1376650121 Events 5 5 5 3 0 0 3 3 - - - - - - - - 3 -TrigSignatureMoniMT INFO -- #1376650121 Features 6 3 0 0 3 3 - - - - - - - - +TrigSignatureMoniMT INFO -- #1376650121 Events 5 5 5 3 - - 3 3 - - - - - - - - 3 +TrigSignatureMoniMT INFO -- #1376650121 Features 6 3 - - 3 3 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_idperf_track_L1TAU100 #714660857 -TrigSignatureMoniMT INFO -- #714660857 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #714660857 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #714660857 Events 0 0 0 0 - 0 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #714660857 Features 0 0 - 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_idperf_tracktwoMVA_L1TAU100 #2725693236 -TrigSignatureMoniMT INFO -- #2725693236 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #2725693236 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #2725693236 Events 0 0 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #2725693236 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_idperf_tracktwo_L1TAU100 #886074432 TrigSignatureMoniMT INFO -- #886074432 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #886074432 Features 0 0 0 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_medium1_tracktwoEF_L1TAU100 #1720193283 -TrigSignatureMoniMT INFO -- #1720193283 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1720193283 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1720193283 Events 0 0 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1720193283 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_medium1_tracktwo_L1TAU100 #4069120574 TrigSignatureMoniMT INFO -- #4069120574 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #4069120574 Features 0 0 0 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100 #1747754287 -TrigSignatureMoniMT INFO -- #1747754287 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1747754287 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1747754287 Events 0 0 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1747754287 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_perf_tracktwoMVA_L1TAU100 #2334140248 -TrigSignatureMoniMT INFO -- #2334140248 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #2334140248 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #2334140248 Events 0 0 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #2334140248 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_perf_tracktwo_L1TAU100 #1799096347 TrigSignatureMoniMT INFO -- #1799096347 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1799096347 Features 0 0 0 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau200_medium1_tracktwoEF_L1TAU100 #4203471951 -TrigSignatureMoniMT INFO -- #4203471951 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #4203471951 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #4203471951 Events 0 0 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #4203471951 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau200_mediumRNN_tracktwoMVA_L1TAU100 #1468926272 -TrigSignatureMoniMT INFO -- #1468926272 Events 0 0 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1468926272 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1468926272 Events 0 0 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1468926272 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_idperf_track_L1TAU12IM #554271976 -TrigSignatureMoniMT INFO -- #554271976 Events 14 14 14 13 0 13 13 13 - - - - - - - - 13 -TrigSignatureMoniMT INFO -- #554271976 Features 24 16 0 16 16 16 - - - - - - - - +TrigSignatureMoniMT INFO -- #554271976 Events 14 14 14 13 - 13 13 13 - - - - - - - - 13 +TrigSignatureMoniMT INFO -- #554271976 Features 24 16 - 16 16 16 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM #988149859 -TrigSignatureMoniMT INFO -- #988149859 Events 14 14 14 13 12 0 11 11 - - - - - - - - 11 -TrigSignatureMoniMT INFO -- #988149859 Features 24 17 14 0 13 13 - - - - - - - - +TrigSignatureMoniMT INFO -- #988149859 Events 14 14 14 13 12 - 11 11 - - - - - - - - 11 +TrigSignatureMoniMT INFO -- #988149859 Features 24 17 14 - 13 13 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM #3346942453 TrigSignatureMoniMT INFO -- #3346942453 Events 14 14 14 13 12 12 11 11 - - - - - - - - 11 TrigSignatureMoniMT INFO -- #3346942453 Features 24 17 14 14 13 13 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_looseRNN_tracktwoMVA_L1TAU12IM #169452969 -TrigSignatureMoniMT INFO -- #169452969 Events 14 14 12 11 10 0 9 8 - - - - - - - - 8 -TrigSignatureMoniMT INFO -- #169452969 Features 22 15 12 0 11 9 - - - - - - - - +TrigSignatureMoniMT INFO -- #169452969 Events 14 14 12 11 10 - 9 8 - - - - - - - - 8 +TrigSignatureMoniMT INFO -- #169452969 Features 22 15 12 - 11 9 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_looseRNN_tracktwo_L1TAU12IM #2490017573 TrigSignatureMoniMT INFO -- #2490017573 Events 14 14 12 11 10 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #2490017573 Features 22 15 12 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwoEF_L1TAU12IM #506456080 -TrigSignatureMoniMT INFO -- #506456080 Events 14 14 12 11 10 0 9 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #506456080 Features 22 15 12 0 11 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #506456080 Events 14 14 12 11 10 - 9 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #506456080 Features 22 15 12 - 11 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwoMVA_L1TAU12IM #4055280067 -TrigSignatureMoniMT INFO -- #4055280067 Events 14 14 12 11 10 0 9 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #4055280067 Features 22 15 12 0 11 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #4055280067 Events 14 14 12 11 10 - 9 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #4055280067 Features 22 15 12 - 11 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM #1433975745 TrigSignatureMoniMT INFO -- #1433975745 Events 14 14 12 11 10 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1433975745 Features 22 15 12 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_mediumRNN_tracktwoMVA_L1TAU12IM #2222894847 -TrigSignatureMoniMT INFO -- #2222894847 Events 14 14 12 11 10 0 9 5 - - - - - - - - 5 -TrigSignatureMoniMT INFO -- #2222894847 Features 22 15 12 0 11 5 - - - - - - - - +TrigSignatureMoniMT INFO -- #2222894847 Events 14 14 12 11 10 - 9 5 - - - - - - - - 5 +TrigSignatureMoniMT INFO -- #2222894847 Features 22 15 12 - 11 5 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_mediumRNN_tracktwo_L1TAU12IM #698603885 TrigSignatureMoniMT INFO -- #698603885 Events 14 14 12 11 10 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #698603885 Features 22 15 12 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_perf_tracktwoMVA_L1TAU12IM #112814536 -TrigSignatureMoniMT INFO -- #112814536 Events 14 14 14 13 12 0 11 11 - - - - - - - - 11 -TrigSignatureMoniMT INFO -- #112814536 Features 24 17 14 0 13 13 - - - - - - - - +TrigSignatureMoniMT INFO -- #112814536 Events 14 14 14 13 12 - 11 11 - - - - - - - - 11 +TrigSignatureMoniMT INFO -- #112814536 Features 24 17 14 - 13 13 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_perf_tracktwo_L1TAU12IM #1129072492 TrigSignatureMoniMT INFO -- #1129072492 Events 14 14 14 13 12 12 11 11 - - - - - - - - 11 TrigSignatureMoniMT INFO -- #1129072492 Features 24 17 14 14 13 13 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_tightRNN_tracktwoMVA_L1TAU12IM #2472860683 -TrigSignatureMoniMT INFO -- #2472860683 Events 14 14 12 11 10 0 9 4 - - - - - - - - 4 -TrigSignatureMoniMT INFO -- #2472860683 Features 22 15 12 0 11 4 - - - - - - - - +TrigSignatureMoniMT INFO -- #2472860683 Events 14 14 12 11 10 - 9 4 - - - - - - - - 4 +TrigSignatureMoniMT INFO -- #2472860683 Features 22 15 12 - 11 4 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_tightRNN_tracktwo_L1TAU12IM #2537544560 TrigSignatureMoniMT INFO -- #2537544560 Events 14 14 12 11 10 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #2537544560 Features 22 15 12 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_verylooseRNN_tracktwoMVA_L1TAU12IM #2992830434 -TrigSignatureMoniMT INFO -- #2992830434 Events 14 14 12 11 10 0 9 8 - - - - - - - - 8 -TrigSignatureMoniMT INFO -- #2992830434 Features 22 15 12 0 11 9 - - - - - - - - +TrigSignatureMoniMT INFO -- #2992830434 Events 14 14 12 11 10 - 9 8 - - - - - - - - 8 +TrigSignatureMoniMT INFO -- #2992830434 Features 22 15 12 - 11 9 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_verylooseRNN_tracktwo_L1TAU12IM #1275052132 TrigSignatureMoniMT INFO -- #1275052132 Events 14 14 12 11 10 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1275052132 Features 22 15 12 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM #2456480859 -TrigSignatureMoniMT INFO -- #2456480859 Events 14 14 11 10 9 0 8 4 - - - - - - - - 4 -TrigSignatureMoniMT INFO -- #2456480859 Features 20 14 11 0 10 4 - - - - - - - - +TrigSignatureMoniMT INFO -- #2456480859 Events 14 14 11 10 9 - 8 4 - - - - - - - - 4 +TrigSignatureMoniMT INFO -- #2456480859 Features 20 14 11 - 10 4 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_L1DR-TAU20ITAU12I-J25 #1794354861 -TrigSignatureMoniMT INFO -- #1794354861 Events 6 6 6 3 2 0 2 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1794354861 Features 15 6 4 0 4 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1794354861 Events 6 6 6 3 2 - 2 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1794354861 Features 15 6 4 - 4 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau80_medium1_tracktwo_L1TAU60 #598963338 TrigSignatureMoniMT INFO -- #598963338 Events 5 5 4 2 2 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #598963338 Features 5 2 2 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_L1TAU60_DR-TAU20ITAU12I #1075975502 -TrigSignatureMoniMT INFO -- #1075975502 Events 3 3 2 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1075975502 Features 6 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1075975502 Events 3 3 2 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1075975502 Features 6 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau80_mediumRNN_tracktwoMVA_tau60_mediumRNN_tracktwoMVA_L1TAU60_2TAU40 #400305971 -TrigSignatureMoniMT INFO -- #400305971 Events 3 3 2 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #400305971 Features 5 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #400305971 Events 3 3 2 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #400305971 Features 5 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tilecalib_laser_TilePEB_L1CALREQ2 #1063154655 TrigSignatureMoniMT INFO -- #1063154655 Events 0 0 0 - - - - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1063154655 Features 0 - - - - - - - - - - - - - @@ -1055,92 +1055,92 @@ TrigSignatureMoniMT INFO HLT_timeburner_L1All #8 TrigSignatureMoniMT INFO -- #819160059 Events 20 0 0 - - - - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #819160059 Features 0 - - - - - - - - - - - - - TrigSignatureMoniMT INFO HLT_unconvtrk120_isohpttrack_icummedium_L1XE50 #4064963182 -TrigSignatureMoniMT INFO -- #4064963182 Events 10 10 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #4064963182 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #4064963182 Events 10 10 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #4064963182 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_unconvtrk120_isohpttrack_imedium_L1XE50 #3425113791 -TrigSignatureMoniMT INFO -- #3425113791 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 - - - 6 -TrigSignatureMoniMT INFO -- #3425113791 Features 0 0 0 0 0 0 0 0 0 0 6 - - - +TrigSignatureMoniMT INFO -- #3425113791 Events 10 10 - - - - - - - - - - 6 - - - 6 +TrigSignatureMoniMT INFO -- #3425113791 Features - - - - - - - - - - 6 - - - TrigSignatureMoniMT INFO HLT_xe100_cvfpufit_L1XE50 #2729083465 -TrigSignatureMoniMT INFO -- #2729083465 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 6 - - 6 -TrigSignatureMoniMT INFO -- #2729083465 Features 0 0 0 0 0 0 0 0 0 0 10 6 - - +TrigSignatureMoniMT INFO -- #2729083465 Events 10 10 - - - - - - - - - - 10 6 - - 6 +TrigSignatureMoniMT INFO -- #2729083465 Features - - - - - - - - - - 10 6 - - TrigSignatureMoniMT INFO HLT_xe100_mht_L1XE50 #532175988 -TrigSignatureMoniMT INFO -- #532175988 Events 10 10 0 0 0 0 0 0 0 0 0 0 9 - - - 9 -TrigSignatureMoniMT INFO -- #532175988 Features 0 0 0 0 0 0 0 0 0 0 9 - - - +TrigSignatureMoniMT INFO -- #532175988 Events 10 10 - - - - - - - - - - 9 - - - 9 +TrigSignatureMoniMT INFO -- #532175988 Features - - - - - - - - - - 9 - - - TrigSignatureMoniMT INFO HLT_xe100_mhtpufit_em_subjesgscIS_L1XE50 #3054195458 -TrigSignatureMoniMT INFO -- #3054195458 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 5 - - 5 -TrigSignatureMoniMT INFO -- #3054195458 Features 0 0 0 0 0 0 0 0 0 0 10 5 - - +TrigSignatureMoniMT INFO -- #3054195458 Events 10 10 - - - - - - - - - - 10 5 - - 5 +TrigSignatureMoniMT INFO -- #3054195458 Features - - - - - - - - - - 10 5 - - TrigSignatureMoniMT INFO HLT_xe100_mhtpufit_pf_subjesgscIS_L1XE50 #2614685150 -TrigSignatureMoniMT INFO -- #2614685150 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 4 - - 4 -TrigSignatureMoniMT INFO -- #2614685150 Features 0 0 0 0 0 0 0 0 0 0 10 4 - - +TrigSignatureMoniMT INFO -- #2614685150 Events 10 10 - - - - - - - - - - 10 4 - - 4 +TrigSignatureMoniMT INFO -- #2614685150 Features - - - - - - - - - - 10 4 - - TrigSignatureMoniMT INFO HLT_xe100_pfopufit_L1XE50 #2909333517 -TrigSignatureMoniMT INFO -- #2909333517 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 3 - - 3 -TrigSignatureMoniMT INFO -- #2909333517 Features 0 0 0 0 0 0 0 0 0 0 10 3 - - +TrigSignatureMoniMT INFO -- #2909333517 Events 10 10 - - - - - - - - - - 10 3 - - 3 +TrigSignatureMoniMT INFO -- #2909333517 Features - - - - - - - - - - 10 3 - - TrigSignatureMoniMT INFO HLT_xe100_pfsum_L1XE50 #1890237897 -TrigSignatureMoniMT INFO -- #1890237897 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 3 - - 3 -TrigSignatureMoniMT INFO -- #1890237897 Features 0 0 0 0 0 0 0 0 0 0 10 3 - - +TrigSignatureMoniMT INFO -- #1890237897 Events 10 10 - - - - - - - - - - 10 3 - - 3 +TrigSignatureMoniMT INFO -- #1890237897 Features - - - - - - - - - - 10 3 - - TrigSignatureMoniMT INFO HLT_xe100_tcpufit_L1XE50 #2803198799 -TrigSignatureMoniMT INFO -- #2803198799 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 - - - 6 -TrigSignatureMoniMT INFO -- #2803198799 Features 0 0 0 0 0 0 0 0 0 0 6 - - - +TrigSignatureMoniMT INFO -- #2803198799 Events 10 10 - - - - - - - - - - 6 - - - 6 +TrigSignatureMoniMT INFO -- #2803198799 Features - - - - - - - - - - 6 - - - TrigSignatureMoniMT INFO HLT_xe100_trkmht_L1XE50 #1055916731 -TrigSignatureMoniMT INFO -- #1055916731 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 7 - - 7 -TrigSignatureMoniMT INFO -- #1055916731 Features 0 0 0 0 0 0 0 0 0 0 10 7 - - +TrigSignatureMoniMT INFO -- #1055916731 Events 10 10 - - - - - - - - - - 10 7 - - 7 +TrigSignatureMoniMT INFO -- #1055916731 Features - - - - - - - - - - 10 7 - - TrigSignatureMoniMT INFO HLT_xe100_trkmht_xe85_tcpufit_xe65_cell_L1XE50 #451622546 -TrigSignatureMoniMT INFO -- #451622546 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 5 - - 5 -TrigSignatureMoniMT INFO -- #451622546 Features 0 0 0 0 0 0 0 0 0 0 6 5 - - +TrigSignatureMoniMT INFO -- #451622546 Events 10 10 - - - - - - - - - - 6 5 - - 5 +TrigSignatureMoniMT INFO -- #451622546 Features - - - - - - - - - - 6 5 - - TrigSignatureMoniMT INFO HLT_xe110_mht_L1XE50 #3030733259 -TrigSignatureMoniMT INFO -- #3030733259 Events 10 10 0 0 0 0 0 0 0 0 0 0 7 - - - 7 -TrigSignatureMoniMT INFO -- #3030733259 Features 0 0 0 0 0 0 0 0 0 0 7 - - - +TrigSignatureMoniMT INFO -- #3030733259 Events 10 10 - - - - - - - - - - 7 - - - 7 +TrigSignatureMoniMT INFO -- #3030733259 Features - - - - - - - - - - 7 - - - TrigSignatureMoniMT INFO HLT_xe110_tc_em_L1XE50 #607113828 -TrigSignatureMoniMT INFO -- #607113828 Events 10 10 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #607113828 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #607113828 Events 10 10 - - - - - - - - - - 5 - - - 5 +TrigSignatureMoniMT INFO -- #607113828 Features - - - - - - - - - - 5 - - - TrigSignatureMoniMT INFO HLT_xe110_tcpufit_L1XE50 #892853397 -TrigSignatureMoniMT INFO -- #892853397 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 - - - 6 -TrigSignatureMoniMT INFO -- #892853397 Features 0 0 0 0 0 0 0 0 0 0 6 - - - +TrigSignatureMoniMT INFO -- #892853397 Events 10 10 - - - - - - - - - - 6 - - - 6 +TrigSignatureMoniMT INFO -- #892853397 Features - - - - - - - - - - 6 - - - TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 #1649696554 -TrigSignatureMoniMT INFO -- #1649696554 Events 19 19 0 0 0 0 0 0 0 0 0 0 17 - - - 17 -TrigSignatureMoniMT INFO -- #1649696554 Features 0 0 0 0 0 0 0 0 0 0 17 - - - +TrigSignatureMoniMT INFO -- #1649696554 Events 19 19 - - - - - - - - - - 17 - - - 17 +TrigSignatureMoniMT INFO -- #1649696554 Features - - - - - - - - - - 17 - - - TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE10 #3768353779 -TrigSignatureMoniMT INFO -- #3768353779 Events 19 19 0 0 0 0 0 0 0 0 0 0 14 - - - 14 -TrigSignatureMoniMT INFO -- #3768353779 Features 0 0 0 0 0 0 0 0 0 0 14 - - - +TrigSignatureMoniMT INFO -- #3768353779 Events 19 19 - - - - - - - - - - 14 - - - 14 +TrigSignatureMoniMT INFO -- #3768353779 Features - - - - - - - - - - 14 - - - TrigSignatureMoniMT INFO HLT_xe30_cvfpufit_L1XE10 #3860749499 -TrigSignatureMoniMT INFO -- #3860749499 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 14 - - 14 -TrigSignatureMoniMT INFO -- #3860749499 Features 0 0 0 0 0 0 0 0 0 0 19 14 - - +TrigSignatureMoniMT INFO -- #3860749499 Events 19 19 - - - - - - - - - - 19 14 - - 14 +TrigSignatureMoniMT INFO -- #3860749499 Features - - - - - - - - - - 19 14 - - TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 #3626903018 -TrigSignatureMoniMT INFO -- #3626903018 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 - - - 19 -TrigSignatureMoniMT INFO -- #3626903018 Features 0 0 0 0 0 0 0 0 0 0 19 - - - +TrigSignatureMoniMT INFO -- #3626903018 Events 19 19 - - - - - - - - - - 19 - - - 19 +TrigSignatureMoniMT INFO -- #3626903018 Features - - - - - - - - - - 19 - - - TrigSignatureMoniMT INFO HLT_xe30_mhtpufit_em_subjesgscIS_L1XE10 #689201557 -TrigSignatureMoniMT INFO -- #689201557 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 12 - - 12 -TrigSignatureMoniMT INFO -- #689201557 Features 0 0 0 0 0 0 0 0 0 0 19 12 - - +TrigSignatureMoniMT INFO -- #689201557 Events 19 19 - - - - - - - - - - 19 12 - - 12 +TrigSignatureMoniMT INFO -- #689201557 Features - - - - - - - - - - 19 12 - - TrigSignatureMoniMT INFO HLT_xe30_mhtpufit_pf_subjesgscIS_L1XE10 #1886909707 -TrigSignatureMoniMT INFO -- #1886909707 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 14 - - 14 -TrigSignatureMoniMT INFO -- #1886909707 Features 0 0 0 0 0 0 0 0 0 0 19 14 - - +TrigSignatureMoniMT INFO -- #1886909707 Events 19 19 - - - - - - - - - - 19 14 - - 14 +TrigSignatureMoniMT INFO -- #1886909707 Features - - - - - - - - - - 19 14 - - TrigSignatureMoniMT INFO HLT_xe30_pfopufit_L1XE10 #2252641537 -TrigSignatureMoniMT INFO -- #2252641537 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 15 - - 15 -TrigSignatureMoniMT INFO -- #2252641537 Features 0 0 0 0 0 0 0 0 0 0 19 15 - - +TrigSignatureMoniMT INFO -- #2252641537 Events 19 19 - - - - - - - - - - 19 15 - - 15 +TrigSignatureMoniMT INFO -- #2252641537 Features - - - - - - - - - - 19 15 - - TrigSignatureMoniMT INFO HLT_xe30_pfsum_L1XE10 #998713382 -TrigSignatureMoniMT INFO -- #998713382 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 - - 16 -TrigSignatureMoniMT INFO -- #998713382 Features 0 0 0 0 0 0 0 0 0 0 19 16 - - +TrigSignatureMoniMT INFO -- #998713382 Events 19 19 - - - - - - - - - - 19 16 - - 16 +TrigSignatureMoniMT INFO -- #998713382 Features - - - - - - - - - - 19 16 - - TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 #1583719916 -TrigSignatureMoniMT INFO -- #1583719916 Events 19 19 0 0 0 0 0 0 0 0 0 0 14 - - - 14 -TrigSignatureMoniMT INFO -- #1583719916 Features 0 0 0 0 0 0 0 0 0 0 14 - - - +TrigSignatureMoniMT INFO -- #1583719916 Events 19 19 - - - - - - - - - - 14 - - - 14 +TrigSignatureMoniMT INFO -- #1583719916 Features - - - - - - - - - - 14 - - - TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 #2468872349 -TrigSignatureMoniMT INFO -- #2468872349 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 15 - - 15 -TrigSignatureMoniMT INFO -- #2468872349 Features 0 0 0 0 0 0 0 0 0 0 19 15 - - +TrigSignatureMoniMT INFO -- #2468872349 Events 19 19 - - - - - - - - - - 19 15 - - 15 +TrigSignatureMoniMT INFO -- #2468872349 Features - - - - - - - - - - 19 15 - - TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 #531141817 -TrigSignatureMoniMT INFO -- #531141817 Events 10 10 0 0 0 0 0 0 0 0 0 0 7 - - - 7 -TrigSignatureMoniMT INFO -- #531141817 Features 0 0 0 0 0 0 0 0 0 0 7 - - - +TrigSignatureMoniMT INFO -- #531141817 Events 10 10 - - - - - - - - - - 7 - - - 7 +TrigSignatureMoniMT INFO -- #531141817 Features - - - - - - - - - - 7 - - - TrigSignatureMoniMT INFO HLT_xe65_cell_xe110_tcpufit_L1XE50 #115518400 -TrigSignatureMoniMT INFO -- #115518400 Events 10 10 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #115518400 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #115518400 Events 10 10 - - - - - - - - - - 5 - - - 5 +TrigSignatureMoniMT INFO -- #115518400 Features - - - - - - - - - - 5 - - - TrigSignatureMoniMT INFO HLT_xe80_tcpufit_unconvtrk120_isohpttrack_icummedium_L1XE50 #668475349 -TrigSignatureMoniMT INFO -- #668475349 Events 10 10 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #668475349 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #668475349 Events 10 10 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #668475349 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_xe80_tcpufit_unconvtrk120_isohpttrack_imedium_L1XE50 #1855034723 -TrigSignatureMoniMT INFO -- #1855034723 Events 10 10 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #1855034723 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #1855034723 Events 10 10 - - - - - - - - - - 5 - - - 5 +TrigSignatureMoniMT INFO -- #1855034723 Features - - - - - - - - - - 5 - - - TrigSignatureMoniMT INFO HLT_xe80_tcpufit_unconvtrk80_isohpttrack_imedium_L1XE50 #153760048 -TrigSignatureMoniMT INFO -- #153760048 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 - - - 6 -TrigSignatureMoniMT INFO -- #153760048 Features 0 0 0 0 0 0 0 0 0 0 6 - - - +TrigSignatureMoniMT INFO -- #153760048 Events 10 10 - - - - - - - - - - 6 - - - 6 +TrigSignatureMoniMT INFO -- #153760048 Features - - - - - - - - - - 6 - - - TrigSignatureMoniMT INFO HLT_xe95_trkmht_xe90_tcpufit_xe75_cell_L1XE50 #302256132 -TrigSignatureMoniMT INFO -- #302256132 Events 10 10 0 0 0 0 0 0 0 0 0 0 4 4 - - 4 -TrigSignatureMoniMT INFO -- #302256132 Features 0 0 0 0 0 0 0 0 0 0 4 4 - - +TrigSignatureMoniMT INFO -- #302256132 Events 10 10 - - - - - - - - - - 4 4 - - 4 +TrigSignatureMoniMT INFO -- #302256132 Features - - - - - - - - - - 4 4 - - diff --git a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py index 5a43cf66069dc8a719e1cc1ee0a17c7a1d8dd6aa..6395806c2c3cb0964538894fe169c6cef0e54bf8 100644 --- a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py +++ b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py @@ -60,7 +60,7 @@ class TrigInDetReco(ExecStep): self.postexec_trig = "from AthenaCommon.AppMgr import ServiceMgr; ServiceMgr.AthenaPoolCnvSvc.MaxFileSizes=['tmp.RDO_TRIG=100000000000']" self.postexec_reco = "from AthenaCommon.AppMgr import ServiceMgr; ServiceMgr.AthenaPoolCnvSvc.MaxFileSizes=['tmp.ESD=100000000000']" - self.args = '--outputAODFile=AOD.pool.root --steering="doRDO_TRIG" ' + self.args = '--outputAODFile=AOD.pool.root --steering="doRDO_TRIG" --asetup "RAWtoESD:Athena,22.0.18" "ESDtoAOD:Athena,22.0.18" ' def configure(self, test): diff --git a/Trigger/TrigValidation/TrigValTools/bin/rootcomp.py b/Trigger/TrigValidation/TrigValTools/bin/rootcomp.py index f09355a0d2be4ab91cafc9021fb86ec800f66ed1..d343a95a01c39992bf9580e69e9de98b2a9f6f18 100755 --- a/Trigger/TrigValidation/TrigValTools/bin/rootcomp.py +++ b/Trigger/TrigValidation/TrigValTools/bin/rootcomp.py @@ -126,6 +126,7 @@ def main(): opts.skip += ["Trig.*CaloCellMaker.*/TCRec_"] # timing histograms in TrigCaloCellMaker opts.skip += ["HLTFramework/ROBDataProviderSvc"] # RDP histograms differ in MT due to caching opts.skip += ["HLTFramework/ByteStreamCnvSvc/ResultSizeByStream"] # ROOT bug, see ATR-21755, ROOT-10944 + opts.skip += ["HLTFramework/SchedulerMonSvc"] # ATR-22345, not reproducible by definition # Default thresholds if not opts.threshold: diff --git a/Trigger/TrigValidation/TriggerTest/share/TrigScanFiles.py b/Trigger/TrigValidation/TriggerTest/share/TrigScanFiles.py index aed48d497ace220a3a77bf5ab6d4395a894bfa7b..aede9ce712e10d6634ac55cf0eef28877abe02c1 100644 --- a/Trigger/TrigValidation/TriggerTest/share/TrigScanFiles.py +++ b/Trigger/TrigValidation/TriggerTest/share/TrigScanFiles.py @@ -4,6 +4,7 @@ from AthenaCommon.AthenaCommonFlags import athenaCommonFlags as acf from future import standard_library standard_library.install_aliases() + def getCastorDirectoryList(path,fileRange): cmd = 'eos ls %s/ ' % (path) files = [] diff --git a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref index 358dd85eec4b214a3e075c2c33a6aaa65d93d2e8..693baf88e03d1e837027d79c4ed5d40f23f387ed 100644 --- a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref +++ b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref @@ -1,12 +1,12 @@ TrigSignatureMoniMT INFO HLT_10j40_pf_subresjesgscIS_ftf_L14J15 #3575805394 -TrigSignatureMoniMT INFO -- #3575805394 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #3575805394 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #3575805394 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #3575805394 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_10j40_subjesIS_L14J15 #2760204981 -TrigSignatureMoniMT INFO -- #2760204981 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2760204981 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2760204981 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2760204981 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_10j40_subresjesgscIS_ftf_L14J15 #3568675904 -TrigSignatureMoniMT INFO -- #3568675904 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #3568675904 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #3568675904 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #3568675904 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_2e12_lhloose_mu10_L12EM8VH_MU10 #2518246928 TrigSignatureMoniMT INFO -- #2518246928 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 TrigSignatureMoniMT INFO -- #2518246928 Features 0 0 0 0 0 0 0 0 0 - - - - - @@ -29,8 +29,8 @@ TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 #2 TrigSignatureMoniMT INFO -- #2613484113 Events 20 20 15 13 13 13 - - - - - - - - - - 13 TrigSignatureMoniMT INFO -- #2613484113 Features 94 324 172 86 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_2g10_loose_mu20_L1MU20 #3765708828 -TrigSignatureMoniMT INFO -- #3765708828 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #3765708828 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #3765708828 Events 20 20 0 0 0 0 - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #3765708828 Features 0 0 0 0 - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2g15_tight_dPhi15_L1DPHI-M70-2EM12I #2606736960 TrigSignatureMoniMT INFO -- #2606736960 Events 20 20 0 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #2606736960 Features 0 0 0 0 - - - - - - - - - - @@ -56,149 +56,149 @@ TrigSignatureMoniMT INFO HLT_2g50_loose_L12EM20V TrigSignatureMoniMT INFO -- #3590373854 Events 20 20 0 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #3590373854 Features 0 0 0 0 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_2j330_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3495282139 -TrigSignatureMoniMT INFO -- #3495282139 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #3495282139 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #3495282139 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #3495282139 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_2j330_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #2680976232 -TrigSignatureMoniMT INFO -- #2680976232 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #2680976232 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #2680976232 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2680976232 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 #1295975955 -TrigSignatureMoniMT INFO -- #1295975955 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1295975955 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1295975955 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1295975955 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_nojcalib_35smcINF_L1J100 #891415013 -TrigSignatureMoniMT INFO -- #891415013 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #891415013 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #891415013 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #891415013 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_2j60_L1J15 #927735533 -TrigSignatureMoniMT INFO -- #927735533 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #927735533 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #927735533 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #927735533 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 #3498558358 -TrigSignatureMoniMT INFO -- #3498558358 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #3498558358 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #3498558358 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #3498558358 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 #234102568 -TrigSignatureMoniMT INFO -- #234102568 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #234102568 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #234102568 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #234102568 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 #2619091790 -TrigSignatureMoniMT INFO -- #2619091790 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2619091790 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #2619091790 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2619091790 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu14_l2io_L12MU10 #945295390 -TrigSignatureMoniMT INFO -- #945295390 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #945295390 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #945295390 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #945295390 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu15_L12MU10 #557204938 -TrigSignatureMoniMT INFO -- #557204938 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #557204938 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #557204938 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #557204938 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_L12MU4 #2999632714 -TrigSignatureMoniMT INFO -- #2999632714 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2999632714 Features 0 0 0 0 0 4 4 0 0 - - - - - +TrigSignatureMoniMT INFO -- #2999632714 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2999632714 Features - - - - - 4 4 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_bDimu_L12MU4 #1730084172 -TrigSignatureMoniMT INFO -- #1730084172 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1730084172 Features 0 0 0 0 0 4 2 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1730084172 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1730084172 Features - - - - - 4 2 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 #4276347155 -TrigSignatureMoniMT INFO -- #4276347155 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #4276347155 Features 0 0 0 0 0 4 2 0 0 - - - - - +TrigSignatureMoniMT INFO -- #4276347155 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #4276347155 Features - - - - - 4 2 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 #4008168535 -TrigSignatureMoniMT INFO -- #4008168535 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #4008168535 Features 0 0 0 0 0 4 2 0 0 - - - - - +TrigSignatureMoniMT INFO -- #4008168535 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #4008168535 Features - - - - - 4 2 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu4_muonqual_L12MU4 #1584776935 -TrigSignatureMoniMT INFO -- #1584776935 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1584776935 Features 0 0 0 0 0 4 4 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1584776935 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1584776935 Features - - - - - 4 4 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 #1316992871 -TrigSignatureMoniMT INFO -- #1316992871 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1316992871 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1316992871 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1316992871 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_Dr_L12MU4 #3304584056 -TrigSignatureMoniMT INFO -- #3304584056 Events 20 20 0 0 0 0 0 1 1 - - - - - - - 1 -TrigSignatureMoniMT INFO -- #3304584056 Features 0 0 0 0 0 4 4 - - - - - - - +TrigSignatureMoniMT INFO -- #3304584056 Events 20 20 - - - - - 1 1 - - - - - - - 1 +TrigSignatureMoniMT INFO -- #3304584056 Features - - - - - 4 4 - - - - - - - TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 #1747073535 -TrigSignatureMoniMT INFO -- #1747073535 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1747073535 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1747073535 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1747073535 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_bJpsimumu_L12MU6 #1924924067 -TrigSignatureMoniMT INFO -- #1924924067 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1924924067 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1924924067 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1924924067 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_bJpsimumul2io_L12MU6 #882785822 -TrigSignatureMoniMT INFO -- #882785822 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #882785822 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #882785822 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #882785822 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_l2io_L12MU6 #2996403520 -TrigSignatureMoniMT INFO -- #2996403520 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2996403520 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #2996403520 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2996403520 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_2mu6_muonqual_L12MU6 #2398136098 -TrigSignatureMoniMT INFO -- #2398136098 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2398136098 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #2398136098 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2398136098 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_3j200_L1J100 #2199422919 -TrigSignatureMoniMT INFO -- #2199422919 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2199422919 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2199422919 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2199422919 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_3j200_pf_subresjesgscIS_ftf_L1J100 #794428037 -TrigSignatureMoniMT INFO -- #794428037 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #794428037 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #794428037 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #794428037 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_3j200_subresjesgscIS_ftf_L1J100 #1801834652 -TrigSignatureMoniMT INFO -- #1801834652 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #1801834652 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #1801834652 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #1801834652 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 #1832399408 -TrigSignatureMoniMT INFO -- #1832399408 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1832399408 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1832399408 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1832399408 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 #1199773318 -TrigSignatureMoniMT INFO -- #1199773318 Events 20 20 0 0 0 0 0 0 0 0 - - - - - - 0 -TrigSignatureMoniMT INFO -- #1199773318 Features 0 0 0 0 0 0 0 0 - - - - - - +TrigSignatureMoniMT INFO -- #1199773318 Events 20 20 - - - - - 0 - 0 - - - - - - 0 +TrigSignatureMoniMT INFO -- #1199773318 Features - - - - - 0 - 0 - - - - - - TrigSignatureMoniMT INFO HLT_3mu8_msonly_L13MU6 #424835335 -TrigSignatureMoniMT INFO -- #424835335 Events 20 20 0 0 0 0 0 0 0 0 - - - - - - 0 -TrigSignatureMoniMT INFO -- #424835335 Features 0 0 0 0 0 0 0 0 - - - - - - +TrigSignatureMoniMT INFO -- #424835335 Events 20 20 - - - - - 0 - 0 - - - - - - 0 +TrigSignatureMoniMT INFO -- #424835335 Features - - - - - 0 - 0 - - - - - - TrigSignatureMoniMT INFO HLT_4j120_pf_subresjesgscIS_ftf_L13J50 #1755129033 -TrigSignatureMoniMT INFO -- #1755129033 Events 20 20 0 0 0 0 0 0 0 0 0 0 2 0 - - 0 -TrigSignatureMoniMT INFO -- #1755129033 Features 0 0 0 0 0 0 0 0 0 0 2 0 - - +TrigSignatureMoniMT INFO -- #1755129033 Events 20 20 - - - - - - - - - - 2 0 - - 0 +TrigSignatureMoniMT INFO -- #1755129033 Features - - - - - - - - - - 2 0 - - TrigSignatureMoniMT INFO HLT_4j120_subjesIS_L13J50 #3722303680 -TrigSignatureMoniMT INFO -- #3722303680 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3722303680 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3722303680 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3722303680 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_4j120_subresjesgscIS_ftf_L13J50 #91006165 -TrigSignatureMoniMT INFO -- #91006165 Events 20 20 0 0 0 0 0 0 0 0 0 0 2 0 - - 0 -TrigSignatureMoniMT INFO -- #91006165 Features 0 0 0 0 0 0 0 0 0 0 2 0 - - +TrigSignatureMoniMT INFO -- #91006165 Events 20 20 - - - - - - - - - - 2 0 - - 0 +TrigSignatureMoniMT INFO -- #91006165 Features - - - - - - - - - - 2 0 - - TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 #1834383636 -TrigSignatureMoniMT INFO -- #1834383636 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1834383636 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1834383636 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1834383636 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 #1175391812 -TrigSignatureMoniMT INFO -- #1175391812 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1175391812 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1175391812 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1175391812 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_5j70_pf_subresjesgscIS_ftf_0eta240_L14J15 #4189027854 -TrigSignatureMoniMT INFO -- #4189027854 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #4189027854 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #4189027854 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #4189027854 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_5j70_subresjesgscIS_ftf_0eta240_L14J15 #819918597 -TrigSignatureMoniMT INFO -- #819918597 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #819918597 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #819918597 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #819918597 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_5j85_pf_subresjesgscIS_ftf_L14J15 #4208121018 -TrigSignatureMoniMT INFO -- #4208121018 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #4208121018 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #4208121018 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #4208121018 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_5j85_subjesIS_L14J15 #2745094401 -TrigSignatureMoniMT INFO -- #2745094401 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2745094401 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2745094401 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2745094401 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_5j85_subresjesgscIS_ftf_L14J15 #1148892499 -TrigSignatureMoniMT INFO -- #1148892499 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #1148892499 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #1148892499 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #1148892499 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_6j55_pf_subresjesgscIS_ftf_0eta240_L14J15 #1526259867 -TrigSignatureMoniMT INFO -- #1526259867 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #1526259867 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #1526259867 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #1526259867 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_6j55_subjesIS_0eta240_L14J15 #68179418 -TrigSignatureMoniMT INFO -- #68179418 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #68179418 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #68179418 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #68179418 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_6j55_subresjesgscIS_ftf_0eta240_L14J15 #1068073241 -TrigSignatureMoniMT INFO -- #1068073241 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #1068073241 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #1068073241 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #1068073241 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_6j70_pf_subresjesgscIS_ftf_L14J15 #1755772565 -TrigSignatureMoniMT INFO -- #1755772565 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #1755772565 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #1755772565 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #1755772565 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_6j70_subjesIS_L14J15 #1003115860 -TrigSignatureMoniMT INFO -- #1003115860 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1003115860 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1003115860 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1003115860 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_6j70_subresjesgscIS_ftf_L14J15 #59957514 -TrigSignatureMoniMT INFO -- #59957514 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #59957514 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #59957514 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #59957514 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_7j45_pf_subresjesgscIS_ftf_L14J15 #2701381398 -TrigSignatureMoniMT INFO -- #2701381398 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #2701381398 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #2701381398 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #2701381398 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_7j45_subjesIS_L14J15 #2617173782 -TrigSignatureMoniMT INFO -- #2617173782 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2617173782 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2617173782 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2617173782 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_7j45_subresjesgscIS_ftf_L14J15 #2928962349 -TrigSignatureMoniMT INFO -- #2928962349 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 -TrigSignatureMoniMT INFO -- #2928962349 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - +TrigSignatureMoniMT INFO -- #2928962349 Events 20 20 - - - - - - - - - - 7 0 - - 0 +TrigSignatureMoniMT INFO -- #2928962349 Features - - - - - - - - - - 7 0 - - TrigSignatureMoniMT INFO HLT_JetDS_j0_L1J100 #3302698716 -TrigSignatureMoniMT INFO -- #3302698716 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #3302698716 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #3302698716 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #3302698716 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_alfacalib_AlfaPEB_L1ALFA_ANY #4094852824 TrigSignatureMoniMT INFO -- #4094852824 Events 20 20 20 - - - - - - - - - - - - - 20 TrigSignatureMoniMT INFO -- #4094852824 Features 20 - - - - - - - - - - - - - @@ -254,8 +254,8 @@ TrigSignatureMoniMT INFO HLT_e26_lhmedium_L1EM22 TrigSignatureMoniMT INFO -- #3961631254 Events 20 20 0 0 0 0 0 - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #3961631254 Features 0 0 0 0 0 - - - - - - - - - TrigSignatureMoniMT INFO HLT_e26_lhmedium_mu8noL1_L1EM22VHI #4270718007 -TrigSignatureMoniMT INFO -- #4270718007 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #4270718007 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #4270718007 Events 20 20 0 0 0 0 0 - - - - - - - 0 0 0 +TrigSignatureMoniMT INFO -- #4270718007 Features 0 0 0 0 0 - - - - - - - 0 0 TrigSignatureMoniMT INFO HLT_e26_lhtight_L1EM22VHI #1995263521 TrigSignatureMoniMT INFO -- #1995263521 Events 20 20 0 0 0 0 0 - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1995263521 Features 0 0 0 0 0 - - - - - - - - - @@ -374,8 +374,8 @@ TrigSignatureMoniMT INFO HLT_g25_medium_L1EM20VH TrigSignatureMoniMT INFO -- #1519793981 Events 20 20 0 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1519793981 Features 0 0 0 0 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_g25_medium_mu24_ivarmedium_L1MU20 #1007052793 -TrigSignatureMoniMT INFO -- #1007052793 Events 20 20 0 0 0 0 0 0 0 0 0 0 - - - - 0 -TrigSignatureMoniMT INFO -- #1007052793 Features 0 0 0 0 0 0 0 0 0 0 - - - - +TrigSignatureMoniMT INFO -- #1007052793 Events 20 20 0 0 0 0 - 0 0 0 0 0 - - - - 0 +TrigSignatureMoniMT INFO -- #1007052793 Features 0 0 0 0 - 0 0 0 0 0 - - - - TrigSignatureMoniMT INFO HLT_g25_tight_L1EM20VH #3370790749 TrigSignatureMoniMT INFO -- #3370790749 Events 20 20 0 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #3370790749 Features 0 0 0 0 - - - - - - - - - - @@ -383,14 +383,14 @@ TrigSignatureMoniMT INFO HLT_g300_etcut_L1EM22VH TrigSignatureMoniMT INFO -- #310189774 Events 20 20 0 0 0 - - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #310189774 Features 0 0 0 - - - - - - - - - - - TrigSignatureMoniMT INFO HLT_g35_loose_mu18_L1EM24VHI #3939387897 -TrigSignatureMoniMT INFO -- #3939387897 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #3939387897 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #3939387897 Events 20 20 0 0 0 0 - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #3939387897 Features 0 0 0 0 - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_g35_medium_g25_medium_L12EM20VH #1158879722 TrigSignatureMoniMT INFO -- #1158879722 Events 20 20 0 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1158879722 Features 0 0 0 0 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_g35_tight_icalotight_mu18noL1_L1EM22VHI #2789346459 -TrigSignatureMoniMT INFO -- #2789346459 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #2789346459 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #2789346459 Events 20 20 0 0 0 0 - - - - - - - - 0 0 0 +TrigSignatureMoniMT INFO -- #2789346459 Features 0 0 0 0 - - - - - - - - 0 0 TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 #471243435 TrigSignatureMoniMT INFO -- #471243435 Events 20 20 13 13 13 - - - - - - - - - - - 13 TrigSignatureMoniMT INFO -- #471243435 Features 41 41 50 - - - - - - - - - - - @@ -407,335 +407,335 @@ TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 #328 TrigSignatureMoniMT INFO -- #3280865118 Events 20 20 9 9 9 1 - - - - - - - - - - 1 TrigSignatureMoniMT INFO -- #3280865118 Features 13 13 29 1 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_j0_aggSEP1000htSEP30etSEP0eta320_L1J20 #2436664735 -TrigSignatureMoniMT INFO -- #2436664735 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2436664735 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2436664735 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2436664735 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j0_aggSEP500htSEP30etSEP0eta320_L1J20 #4013575747 -TrigSignatureMoniMT INFO -- #4013575747 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #4013575747 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #4013575747 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #4013575747 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j0_perf_L1J12_EMPTY #1341875780 -TrigSignatureMoniMT INFO -- #1341875780 Events 20 20 0 0 0 0 0 0 0 0 0 0 8 - - - 8 -TrigSignatureMoniMT INFO -- #1341875780 Features 0 0 0 0 0 0 0 0 0 0 117 - - - +TrigSignatureMoniMT INFO -- #1341875780 Events 20 20 - - - - - - - - - - 8 - - - 8 +TrigSignatureMoniMT INFO -- #1341875780 Features - - - - - - - - - - 117 - - - TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20 #4034799151 -TrigSignatureMoniMT INFO -- #4034799151 Events 20 20 0 0 0 0 0 0 0 0 0 0 2 - - - 2 -TrigSignatureMoniMT INFO -- #4034799151 Features 0 0 0 0 0 0 0 0 0 0 24 - - - +TrigSignatureMoniMT INFO -- #4034799151 Events 20 20 - - - - - - - - - - 2 - - - 2 +TrigSignatureMoniMT INFO -- #4034799151 Features - - - - - - - - - - 24 - - - TrigSignatureMoniMT INFO HLT_j225_subjesgscIS_ftf_bmv2c1040_split_L1J100 #219711753 -TrigSignatureMoniMT INFO -- #219711753 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #219711753 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #219711753 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #219711753 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 #3084792704 -TrigSignatureMoniMT INFO -- #3084792704 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3084792704 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3084792704 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3084792704 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA49 #3769257182 -TrigSignatureMoniMT INFO -- #3769257182 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3769257182 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3769257182 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3769257182 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j275_pf_subjesgscIS_ftf_bdl1r60_split_L1J100 #2912155644 -TrigSignatureMoniMT INFO -- #2912155644 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #2912155644 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #2912155644 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #2912155644 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j275_pf_subjesgscIS_ftf_boffperf_split_L1J100 #9543810 -TrigSignatureMoniMT INFO -- #9543810 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #9543810 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #9543810 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #9543810 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_bdl1r60_split_L1J100 #2807668578 -TrigSignatureMoniMT INFO -- #2807668578 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #2807668578 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #2807668578 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #2807668578 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_bmv2c1060_split_L1J100 #710546402 -TrigSignatureMoniMT INFO -- #710546402 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #710546402 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #710546402 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #710546402 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_boffperf_split_L1J100 #540369970 -TrigSignatureMoniMT INFO -- #540369970 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #540369970 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #540369970 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #540369970 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j300_pf_subjesgscIS_ftf_bdl1r70_split_L1J100 #2576796343 -TrigSignatureMoniMT INFO -- #2576796343 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #2576796343 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #2576796343 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #2576796343 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j300_subjesgscIS_ftf_bdl1r70_split_L1J100 #2952175162 -TrigSignatureMoniMT INFO -- #2952175162 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #2952175162 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #2952175162 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #2952175162 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j300_subjesgscIS_ftf_bmv2c1070_split_L1J100 #2074989613 -TrigSignatureMoniMT INFO -- #2074989613 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #2074989613 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #2074989613 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #2074989613 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j360_pf_subjesgscIS_ftf_bdl1r77_split_L1J100 #3049708671 -TrigSignatureMoniMT INFO -- #3049708671 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #3049708671 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #3049708671 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #3049708671 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j360_subjesgscIS_ftf_bdl1r77_split_L1J100 #1563453863 -TrigSignatureMoniMT INFO -- #1563453863 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #1563453863 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #1563453863 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #1563453863 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j360_subjesgscIS_ftf_bmv2c1077_split_L1J100 #4176355792 -TrigSignatureMoniMT INFO -- #4176355792 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -TrigSignatureMoniMT INFO -- #4176355792 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - +TrigSignatureMoniMT INFO -- #4176355792 Events 20 20 - - - - - - - - - - 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #4176355792 Features - - - - - - - - - - 0 0 0 - TrigSignatureMoniMT INFO HLT_j420_L1J100 #2659902019 -TrigSignatureMoniMT INFO -- #2659902019 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2659902019 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2659902019 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2659902019 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j420_pf_subresjesgscIS_ftf_L1J100 #3936932891 -TrigSignatureMoniMT INFO -- #3936932891 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #3936932891 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #3936932891 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #3936932891 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_j420_subresjesgscIS_ftf_L1J100 #2477128298 -TrigSignatureMoniMT INFO -- #2477128298 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #2477128298 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #2477128298 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2477128298 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_j45_L1J15 #1364976160 -TrigSignatureMoniMT INFO -- #1364976160 Events 20 20 0 0 0 0 0 0 0 0 0 0 6 - - - 6 -TrigSignatureMoniMT INFO -- #1364976160 Features 0 0 0 0 0 0 0 0 0 0 6 - - - +TrigSignatureMoniMT INFO -- #1364976160 Events 20 20 - - - - - - - - - - 6 - - - 6 +TrigSignatureMoniMT INFO -- #1364976160 Features - - - - - - - - - - 6 - - - TrigSignatureMoniMT INFO HLT_j45_csskpf_nojcalib_ftf_L1J20 #2528888897 -TrigSignatureMoniMT INFO -- #2528888897 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 3 - - 3 -TrigSignatureMoniMT INFO -- #2528888897 Features 0 0 0 0 0 0 0 0 0 0 5 3 - - +TrigSignatureMoniMT INFO -- #2528888897 Events 20 20 - - - - - - - - - - 5 3 - - 3 +TrigSignatureMoniMT INFO -- #2528888897 Features - - - - - - - - - - 5 3 - - TrigSignatureMoniMT INFO HLT_j45_cssktc_nojcalib_L1J20 #3295122398 -TrigSignatureMoniMT INFO -- #3295122398 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #3295122398 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #3295122398 Events 20 20 - - - - - - - - - - 3 - - - 3 +TrigSignatureMoniMT INFO -- #3295122398 Features - - - - - - - - - - 3 - - - TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 #868405538 -TrigSignatureMoniMT INFO -- #868405538 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 7 - - 7 -TrigSignatureMoniMT INFO -- #868405538 Features 0 0 0 0 0 0 0 0 0 0 7 7 - - +TrigSignatureMoniMT INFO -- #868405538 Events 20 20 - - - - - - - - - - 7 7 - - 7 +TrigSignatureMoniMT INFO -- #868405538 Features - - - - - - - - - - 7 7 - - TrigSignatureMoniMT INFO HLT_j45_ftf_preselj45_L1J20 #526860976 -TrigSignatureMoniMT INFO -- #526860976 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 -TrigSignatureMoniMT INFO -- #526860976 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - +TrigSignatureMoniMT INFO -- #526860976 Events 20 20 - - - - - - - - - - 5 5 - - 5 +TrigSignatureMoniMT INFO -- #526860976 Features - - - - - - - - - - 5 5 - - TrigSignatureMoniMT INFO HLT_j45_nojcalib_L1J20 #2042444294 -TrigSignatureMoniMT INFO -- #2042444294 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #2042444294 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #2042444294 Events 20 20 - - - - - - - - - - 3 - - - 3 +TrigSignatureMoniMT INFO -- #2042444294 Features - - - - - - - - - - 3 - - - TrigSignatureMoniMT INFO HLT_j45_pf_ftf_L1J20 #3679554988 -TrigSignatureMoniMT INFO -- #3679554988 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 -TrigSignatureMoniMT INFO -- #3679554988 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - +TrigSignatureMoniMT INFO -- #3679554988 Events 20 20 - - - - - - - - - - 5 5 - - 5 +TrigSignatureMoniMT INFO -- #3679554988 Features - - - - - - - - - - 5 5 - - TrigSignatureMoniMT INFO HLT_j45_pf_ftf_preselj45_L1J20 #650158432 -TrigSignatureMoniMT INFO -- #650158432 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 -TrigSignatureMoniMT INFO -- #650158432 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - +TrigSignatureMoniMT INFO -- #650158432 Events 20 20 - - - - - - - - - - 5 5 - - 5 +TrigSignatureMoniMT INFO -- #650158432 Features - - - - - - - - - - 5 5 - - TrigSignatureMoniMT INFO HLT_j45_pf_nojcalib_ftf_L1J20 #4202219904 -TrigSignatureMoniMT INFO -- #4202219904 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 3 - - 3 -TrigSignatureMoniMT INFO -- #4202219904 Features 0 0 0 0 0 0 0 0 0 0 5 3 - - +TrigSignatureMoniMT INFO -- #4202219904 Events 20 20 - - - - - - - - - - 5 3 - - 3 +TrigSignatureMoniMT INFO -- #4202219904 Features - - - - - - - - - - 5 3 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_L1J20 #2187173741 -TrigSignatureMoniMT INFO -- #2187173741 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 -TrigSignatureMoniMT INFO -- #2187173741 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - +TrigSignatureMoniMT INFO -- #2187173741 Events 20 20 - - - - - - - - - - 5 5 - - 5 +TrigSignatureMoniMT INFO -- #2187173741 Features - - - - - - - - - - 5 5 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_bdl1r70_split_L1J20 #4239752847 -TrigSignatureMoniMT INFO -- #4239752847 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 0 - 0 -TrigSignatureMoniMT INFO -- #4239752847 Features 0 0 0 0 0 0 0 0 0 0 5 5 0 - +TrigSignatureMoniMT INFO -- #4239752847 Events 20 20 - - - - - - - - - - 5 5 0 - 0 +TrigSignatureMoniMT INFO -- #4239752847 Features - - - - - - - - - - 5 5 0 - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_boffperf_split_L1J20 #2546763674 -TrigSignatureMoniMT INFO -- #2546763674 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 5 - 5 -TrigSignatureMoniMT INFO -- #2546763674 Features 0 0 0 0 0 0 0 0 0 0 5 5 5 - +TrigSignatureMoniMT INFO -- #2546763674 Events 20 20 - - - - - - - - - - 5 5 5 - 5 +TrigSignatureMoniMT INFO -- #2546763674 Features - - - - - - - - - - 5 5 5 - TrigSignatureMoniMT INFO HLT_j45_sktc_nojcalib_L1J20 #1542468090 -TrigSignatureMoniMT INFO -- #1542468090 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #1542468090 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #1542468090 Events 20 20 - - - - - - - - - - 3 - - - 3 +TrigSignatureMoniMT INFO -- #1542468090 Features - - - - - - - - - - 3 - - - TrigSignatureMoniMT INFO HLT_j45_subjesIS_ftf_preselj45_L1J20 #3647626880 -TrigSignatureMoniMT INFO -- #3647626880 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 -TrigSignatureMoniMT INFO -- #3647626880 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - +TrigSignatureMoniMT INFO -- #3647626880 Events 20 20 - - - - - - - - - - 5 5 - - 5 +TrigSignatureMoniMT INFO -- #3647626880 Features - - - - - - - - - - 5 5 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_011jvt_L1J15 #266323220 -TrigSignatureMoniMT INFO -- #266323220 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 5 - - 5 -TrigSignatureMoniMT INFO -- #266323220 Features 0 0 0 0 0 0 0 0 0 0 7 5 - - +TrigSignatureMoniMT INFO -- #266323220 Events 20 20 - - - - - - - - - - 7 5 - - 5 +TrigSignatureMoniMT INFO -- #266323220 Features - - - - - - - - - - 7 5 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_015jvt_L1J15 #3102941497 -TrigSignatureMoniMT INFO -- #3102941497 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 5 - - 5 -TrigSignatureMoniMT INFO -- #3102941497 Features 0 0 0 0 0 0 0 0 0 0 7 5 - - +TrigSignatureMoniMT INFO -- #3102941497 Events 20 20 - - - - - - - - - - 7 5 - - 5 +TrigSignatureMoniMT INFO -- #3102941497 Features - - - - - - - - - - 7 5 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_059jvt_L1J15 #2237035634 -TrigSignatureMoniMT INFO -- #2237035634 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 5 - - 5 -TrigSignatureMoniMT INFO -- #2237035634 Features 0 0 0 0 0 0 0 0 0 0 7 5 - - +TrigSignatureMoniMT INFO -- #2237035634 Events 20 20 - - - - - - - - - - 7 5 - - 5 +TrigSignatureMoniMT INFO -- #2237035634 Features - - - - - - - - - - 7 5 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_L1J15 #1960278431 -TrigSignatureMoniMT INFO -- #1960278431 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 7 - - 7 -TrigSignatureMoniMT INFO -- #1960278431 Features 0 0 0 0 0 0 0 0 0 0 7 7 - - +TrigSignatureMoniMT INFO -- #1960278431 Events 20 20 - - - - - - - - - - 7 7 - - 7 +TrigSignatureMoniMT INFO -- #1960278431 Features - - - - - - - - - - 7 7 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_bdl1r70_split_L1J20 #2947439578 -TrigSignatureMoniMT INFO -- #2947439578 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 0 - 0 -TrigSignatureMoniMT INFO -- #2947439578 Features 0 0 0 0 0 0 0 0 0 0 5 5 0 - +TrigSignatureMoniMT INFO -- #2947439578 Events 20 20 - - - - - - - - - - 5 5 0 - 0 +TrigSignatureMoniMT INFO -- #2947439578 Features - - - - - - - - - - 5 5 0 - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_bmv2c1070_split_L1J20 #980453000 -TrigSignatureMoniMT INFO -- #980453000 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 1 - 1 -TrigSignatureMoniMT INFO -- #980453000 Features 0 0 0 0 0 0 0 0 0 0 5 5 1 - +TrigSignatureMoniMT INFO -- #980453000 Events 20 20 - - - - - - - - - - 5 5 1 - 1 +TrigSignatureMoniMT INFO -- #980453000 Features - - - - - - - - - - 5 5 1 - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_boffperf_split_L1J20 #3374916154 -TrigSignatureMoniMT INFO -- #3374916154 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 5 - 5 -TrigSignatureMoniMT INFO -- #3374916154 Features 0 0 0 0 0 0 0 0 0 0 5 5 5 - +TrigSignatureMoniMT INFO -- #3374916154 Events 20 20 - - - - - - - - - - 5 5 5 - 5 +TrigSignatureMoniMT INFO -- #3374916154 Features - - - - - - - - - - 5 5 5 - TrigSignatureMoniMT INFO HLT_j45_subresjesgscIS_ftf_L1J15 #1213239619 -TrigSignatureMoniMT INFO -- #1213239619 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 7 - - 7 -TrigSignatureMoniMT INFO -- #1213239619 Features 0 0 0 0 0 0 0 0 0 0 7 7 - - +TrigSignatureMoniMT INFO -- #1213239619 Events 20 20 - - - - - - - - - - 7 7 - - 7 +TrigSignatureMoniMT INFO -- #1213239619 Features - - - - - - - - - - 7 7 - - TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J100 #3327656707 -TrigSignatureMoniMT INFO -- #3327656707 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3327656707 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3327656707 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3327656707 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 #215408633 -TrigSignatureMoniMT INFO -- #215408633 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #215408633 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #215408633 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #215408633 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 #1151767619 -TrigSignatureMoniMT INFO -- #1151767619 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1151767619 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1151767619 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1151767619 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 #3875082669 -TrigSignatureMoniMT INFO -- #3875082669 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3875082669 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3875082669 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3875082669 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3781128663 -TrigSignatureMoniMT INFO -- #3781128663 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #3781128663 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #3781128663 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #3781128663 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_jes_ftf_L1J100 #1509950051 -TrigSignatureMoniMT INFO -- #1509950051 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #1509950051 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #1509950051 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #1509950051 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #249842682 -TrigSignatureMoniMT INFO -- #249842682 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #249842682 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #249842682 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #249842682 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_L1J100 #3452032818 -TrigSignatureMoniMT INFO -- #3452032818 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #3452032818 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #3452032818 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #3452032818 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_lcw_nojcalib_L1J100 #3093997295 -TrigSignatureMoniMT INFO -- #3093997295 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3093997295 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3093997295 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3093997295 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10sd_pf_nojcalib_ftf_L1J100 #2138269254 -TrigSignatureMoniMT INFO -- #2138269254 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #2138269254 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #2138269254 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2138269254 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 #2296827117 -TrigSignatureMoniMT INFO -- #2296827117 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2296827117 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2296827117 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2296827117 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 #436385969 -TrigSignatureMoniMT INFO -- #436385969 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #436385969 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #436385969 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #436385969 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_nojcalib_35smcINF_L1J100 #3224465417 -TrigSignatureMoniMT INFO -- #3224465417 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3224465417 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3224465417 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3224465417 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_nojcalib_L1J100 #1966129844 -TrigSignatureMoniMT INFO -- #1966129844 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1966129844 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1966129844 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1966129844 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20 #3634067472 -TrigSignatureMoniMT INFO -- #3634067472 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3634067472 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3634067472 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3634067472 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j80_L1J15 #2440872308 -TrigSignatureMoniMT INFO -- #2440872308 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #2440872308 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #2440872308 Events 20 20 - - - - - - - - - - 3 - - - 3 +TrigSignatureMoniMT INFO -- #2440872308 Features - - - - - - - - - - 3 - - - TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 #582699527 -TrigSignatureMoniMT INFO -- #582699527 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #582699527 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #582699527 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #582699527 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_j85_L1J20 #510475538 -TrigSignatureMoniMT INFO -- #510475538 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #510475538 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #510475538 Events 20 20 - - - - - - - - - - 3 - - - 3 +TrigSignatureMoniMT INFO -- #510475538 Features - - - - - - - - - - 3 - - - TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 #877042532 -TrigSignatureMoniMT INFO -- #877042532 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 3 - - 3 -TrigSignatureMoniMT INFO -- #877042532 Features 0 0 0 0 0 0 0 0 0 0 5 3 - - +TrigSignatureMoniMT INFO -- #877042532 Events 20 20 - - - - - - - - - - 5 3 - - 3 +TrigSignatureMoniMT INFO -- #877042532 Features - - - - - - - - - - 5 3 - - TrigSignatureMoniMT INFO HLT_j85_pf_ftf_L1J20 #789444389 -TrigSignatureMoniMT INFO -- #789444389 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 2 - - 2 -TrigSignatureMoniMT INFO -- #789444389 Features 0 0 0 0 0 0 0 0 0 0 5 2 - - +TrigSignatureMoniMT INFO -- #789444389 Events 20 20 - - - - - - - - - - 5 2 - - 2 +TrigSignatureMoniMT INFO -- #789444389 Features - - - - - - - - - - 5 2 - - TrigSignatureMoniMT INFO HLT_mb_sptrk_L1RD0_FILLED #4097312640 TrigSignatureMoniMT INFO -- #4097312640 Events 20 20 20 19 - - - - - - - - - - - - 19 TrigSignatureMoniMT INFO -- #4097312640 Features 20 19 - - - - - - - - - - - - TrigSignatureMoniMT INFO HLT_mu0_muoncalib_L1MU20 #997163309 -TrigSignatureMoniMT INFO -- #997163309 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #997163309 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #997163309 Events 20 20 - - - - - 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #997163309 Features - - - - - 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_mu0_muoncalib_L1MU4_EMPTY #782182242 -TrigSignatureMoniMT INFO -- #782182242 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #782182242 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #782182242 Events 20 20 - - - - - 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #782182242 Features - - - - - 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_mu10_L1MU10 #209090273 -TrigSignatureMoniMT INFO -- #209090273 Events 20 20 0 0 0 0 0 2 2 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #209090273 Features 0 0 0 0 0 2 2 0 0 - - - - - +TrigSignatureMoniMT INFO -- #209090273 Events 20 20 - - - - - 2 2 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #209090273 Features - - - - - 2 2 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu10_ivarmedium_mu10_10invm70_L12MU10 #2386882549 -TrigSignatureMoniMT INFO -- #2386882549 Events 20 20 0 0 0 0 0 0 0 0 0 0 - - - - 0 -TrigSignatureMoniMT INFO -- #2386882549 Features 0 0 0 0 0 0 0 0 0 0 - - - - +TrigSignatureMoniMT INFO -- #2386882549 Events 20 20 - - - - - 0 0 0 0 0 - - - - 0 +TrigSignatureMoniMT INFO -- #2386882549 Features - - - - - 0 0 0 0 0 - - - - TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1LATE-MU10_XE50 #1787564306 -TrigSignatureMoniMT INFO -- #1787564306 Events 20 20 0 0 0 0 0 0 0 - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1787564306 Features 0 0 0 0 0 0 0 - - - - - - - +TrigSignatureMoniMT INFO -- #1787564306 Events 20 20 - - - - - 0 0 - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1787564306 Features - - - - - 0 0 - - - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bBmumu_L1MU11_2MU6 #947854469 -TrigSignatureMoniMT INFO -- #947854469 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #947854469 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #947854469 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #947854469 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bDimu2700_L1MU11_2MU6 #4293593869 -TrigSignatureMoniMT INFO -- #4293593869 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #4293593869 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #4293593869 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #4293593869 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bDimu_L1MU11_2MU6 #2381335347 -TrigSignatureMoniMT INFO -- #2381335347 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2381335347 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #2381335347 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2381335347 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bJpsimumu_L1MU11_2MU6 #2504965945 -TrigSignatureMoniMT INFO -- #2504965945 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2504965945 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #2504965945 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2504965945 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bPhi_L1MU11_2MU6 #2079901197 -TrigSignatureMoniMT INFO -- #2079901197 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2079901197 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #2079901197 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2079901197 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bTau_L1MU11_2MU6 #1292401093 -TrigSignatureMoniMT INFO -- #1292401093 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1292401093 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1292401093 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1292401093 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu11_mu6_bUpsimumu_L1MU11_2MU6 #1171632195 -TrigSignatureMoniMT INFO -- #1171632195 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1171632195 Features 0 0 0 0 0 0 0 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1171632195 Events 20 20 - - - - - 0 0 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1171632195 Features - - - - - 0 0 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu14_L1MU10 #1696906927 -TrigSignatureMoniMT INFO -- #1696906927 Events 20 20 0 0 0 0 0 2 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1696906927 Features 0 0 0 0 0 2 1 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1696906927 Events 20 20 - - - - - 2 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1696906927 Features - - - - - 2 1 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu20_2mu4noL1_L1MU20 #1029128679 -TrigSignatureMoniMT INFO -- #1029128679 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #1029128679 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #1029128679 Events 20 20 - - - - - 1 1 0 0 - - - 0 0 0 +TrigSignatureMoniMT INFO -- #1029128679 Features - - - - - 1 1 0 0 - - - 0 0 TrigSignatureMoniMT INFO HLT_mu20_ivarmedium_mu4noL1_10invm70_L1MU20 #2942530653 -TrigSignatureMoniMT INFO -- #2942530653 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #2942530653 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #2942530653 Events 20 20 - - - - - 1 1 0 0 0 - - 0 0 0 +TrigSignatureMoniMT INFO -- #2942530653 Features - - - - - 1 1 0 0 0 - - 0 0 TrigSignatureMoniMT INFO HLT_mu20_ivarmedium_mu8noL1_L1MU20 #3249386942 -TrigSignatureMoniMT INFO -- #3249386942 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #3249386942 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #3249386942 Events 20 20 - - - - - 1 1 0 0 0 - - 0 0 0 +TrigSignatureMoniMT INFO -- #3249386942 Features - - - - - 1 1 0 0 0 - - 0 0 TrigSignatureMoniMT INFO HLT_mu22_2mu4noL1_L1MU20 #3427670100 -TrigSignatureMoniMT INFO -- #3427670100 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #3427670100 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #3427670100 Events 20 20 - - - - - 1 1 0 0 - - - 0 0 0 +TrigSignatureMoniMT INFO -- #3427670100 Features - - - - - 1 1 0 0 - - - 0 0 TrigSignatureMoniMT INFO HLT_mu22_mu8noL1_L1MU20 #3165652409 -TrigSignatureMoniMT INFO -- #3165652409 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #3165652409 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #3165652409 Events 20 20 - - - - - 1 1 0 0 - - - 0 0 0 +TrigSignatureMoniMT INFO -- #3165652409 Features - - - - - 1 1 0 0 - - - 0 0 TrigSignatureMoniMT INFO HLT_mu24_2mu4noL1_L1MU20 #3233544630 -TrigSignatureMoniMT INFO -- #3233544630 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #3233544630 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #3233544630 Events 20 20 - - - - - 1 1 0 0 - - - 0 0 0 +TrigSignatureMoniMT INFO -- #3233544630 Features - - - - - 1 1 0 0 - - - 0 0 TrigSignatureMoniMT INFO HLT_mu24_L1MU20 #417425162 -TrigSignatureMoniMT INFO -- #417425162 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #417425162 Features 0 0 0 0 0 1 1 0 0 - - - - - +TrigSignatureMoniMT INFO -- #417425162 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #417425162 Features - - - - - 1 1 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 #677658909 -TrigSignatureMoniMT INFO -- #677658909 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #677658909 Features 0 0 0 0 0 1 1 0 0 - - - - - +TrigSignatureMoniMT INFO -- #677658909 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #677658909 Features - - - - - 1 1 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu24_ivarmedium_L1MU20 #737407430 -TrigSignatureMoniMT INFO -- #737407430 Events 20 20 0 0 0 0 0 1 1 0 0 0 - - - - 0 -TrigSignatureMoniMT INFO -- #737407430 Features 0 0 0 0 0 1 1 0 0 0 - - - - +TrigSignatureMoniMT INFO -- #737407430 Events 20 20 - - - - - 1 1 0 0 0 - - - - 0 +TrigSignatureMoniMT INFO -- #737407430 Features - - - - - 1 1 0 0 0 - - - - TrigSignatureMoniMT INFO HLT_mu24_mu10noL1_L1MU20 #2563354236 -TrigSignatureMoniMT INFO -- #2563354236 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #2563354236 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #2563354236 Events 20 20 - - - - - 1 1 0 0 - - - 0 0 0 +TrigSignatureMoniMT INFO -- #2563354236 Features - - - - - 1 1 0 0 - - - 0 0 TrigSignatureMoniMT INFO HLT_mu26_L1MU20 #311138376 -TrigSignatureMoniMT INFO -- #311138376 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #311138376 Features 0 0 0 0 0 1 1 0 0 - - - - - +TrigSignatureMoniMT INFO -- #311138376 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #311138376 Features - - - - - 1 1 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 #3411723090 -TrigSignatureMoniMT INFO -- #3411723090 Events 20 20 0 0 0 0 0 1 1 0 0 0 - - - - 0 -TrigSignatureMoniMT INFO -- #3411723090 Features 0 0 0 0 0 1 1 0 0 0 - - - - +TrigSignatureMoniMT INFO -- #3411723090 Events 20 20 - - - - - 1 1 0 0 0 - - - - 0 +TrigSignatureMoniMT INFO -- #3411723090 Features - - - - - 1 1 0 0 0 - - - - TrigSignatureMoniMT INFO HLT_mu26_mu10noL1_L1MU20 #2318302287 -TrigSignatureMoniMT INFO -- #2318302287 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #2318302287 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #2318302287 Events 20 20 - - - - - 1 1 0 0 - - - 0 0 0 +TrigSignatureMoniMT INFO -- #2318302287 Features - - - - - 1 1 0 0 - - - 0 0 TrigSignatureMoniMT INFO HLT_mu26_mu8noL1_L1MU20 #2233067926 -TrigSignatureMoniMT INFO -- #2233067926 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #2233067926 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #2233067926 Events 20 20 - - - - - 1 1 0 0 - - - 0 0 0 +TrigSignatureMoniMT INFO -- #2233067926 Features - - - - - 1 1 0 0 - - - 0 0 TrigSignatureMoniMT INFO HLT_mu28_ivarmedium_L1MU20 #1963262787 -TrigSignatureMoniMT INFO -- #1963262787 Events 20 20 0 0 0 0 0 1 1 0 0 0 - - - - 0 -TrigSignatureMoniMT INFO -- #1963262787 Features 0 0 0 0 0 1 1 0 0 0 - - - - +TrigSignatureMoniMT INFO -- #1963262787 Events 20 20 - - - - - 1 1 0 0 0 - - - - 0 +TrigSignatureMoniMT INFO -- #1963262787 Features - - - - - 1 1 0 0 0 - - - - TrigSignatureMoniMT INFO HLT_mu28_mu8noL1_L1MU20 #86648125 -TrigSignatureMoniMT INFO -- #86648125 Events 20 20 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #86648125 Features 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #86648125 Events 20 20 - - - - - 1 1 0 0 - - - 0 0 0 +TrigSignatureMoniMT INFO -- #86648125 Features - - - - - 1 1 0 0 - - - 0 0 TrigSignatureMoniMT INFO HLT_mu35_ivarmedium_L1MU20 #597064890 -TrigSignatureMoniMT INFO -- #597064890 Events 20 20 0 0 0 0 0 1 1 0 0 0 - - - - 0 -TrigSignatureMoniMT INFO -- #597064890 Features 0 0 0 0 0 1 1 0 0 0 - - - - +TrigSignatureMoniMT INFO -- #597064890 Events 20 20 - - - - - 1 1 0 0 0 - - - - 0 +TrigSignatureMoniMT INFO -- #597064890 Features - - - - - 1 1 0 0 0 - - - - TrigSignatureMoniMT INFO HLT_mu4_l2io_L1MU4 #1048276860 -TrigSignatureMoniMT INFO -- #1048276860 Events 20 20 0 0 0 0 0 4 3 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1048276860 Features 0 0 0 0 0 5 4 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1048276860 Events 20 20 - - - - - 4 3 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1048276860 Features - - - - - 5 4 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu50_L1MU20 #3657158931 -TrigSignatureMoniMT INFO -- #3657158931 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #3657158931 Features 0 0 0 0 0 1 1 0 0 - - - - - +TrigSignatureMoniMT INFO -- #3657158931 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #3657158931 Features - - - - - 1 1 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU20 #827327262 -TrigSignatureMoniMT INFO -- #827327262 Events 20 20 0 0 0 0 0 1 1 0 0 0 - - - - 0 -TrigSignatureMoniMT INFO -- #827327262 Features 0 0 0 0 0 1 1 0 0 0 - - - - +TrigSignatureMoniMT INFO -- #827327262 Events 20 20 - - - - - 1 1 0 0 0 - - - - 0 +TrigSignatureMoniMT INFO -- #827327262 Features - - - - - 1 1 0 0 0 - - - - TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU20 #1642591450 -TrigSignatureMoniMT INFO -- #1642591450 Events 20 20 0 0 0 0 0 0 0 0 - - - - - - 0 -TrigSignatureMoniMT INFO -- #1642591450 Features 0 0 0 0 0 0 0 0 - - - - - - +TrigSignatureMoniMT INFO -- #1642591450 Events 20 20 - - - - - 0 - 0 - - - - - - 0 +TrigSignatureMoniMT INFO -- #1642591450 Features - - - - - 0 - 0 - - - - - - TrigSignatureMoniMT INFO HLT_mu60_L1MU20 #2871837722 -TrigSignatureMoniMT INFO -- #2871837722 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2871837722 Features 0 0 0 0 0 1 1 0 0 - - - - - +TrigSignatureMoniMT INFO -- #2871837722 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2871837722 Features - - - - - 1 1 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu6_L1MU6 #2560542253 -TrigSignatureMoniMT INFO -- #2560542253 Events 20 20 0 0 0 0 0 2 2 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #2560542253 Features 0 0 0 0 0 2 2 0 0 - - - - - +TrigSignatureMoniMT INFO -- #2560542253 Events 20 20 - - - - - 2 2 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #2560542253 Features - - - - - 2 2 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 #934918532 -TrigSignatureMoniMT INFO -- #934918532 Events 20 20 0 0 0 0 0 2 2 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #934918532 Features 0 0 0 0 0 2 2 0 0 - - - - - +TrigSignatureMoniMT INFO -- #934918532 Events 20 20 - - - - - 2 2 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #934918532 Features - - - - - 2 2 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 #1012713062 -TrigSignatureMoniMT INFO -- #1012713062 Events 20 20 0 0 0 0 0 2 2 0 0 0 - - - - 0 -TrigSignatureMoniMT INFO -- #1012713062 Features 0 0 0 0 0 2 2 0 0 0 - - - - +TrigSignatureMoniMT INFO -- #1012713062 Events 20 20 - - - - - 2 2 0 0 0 - - - - 0 +TrigSignatureMoniMT INFO -- #1012713062 Features - - - - - 2 2 0 0 0 - - - - TrigSignatureMoniMT INFO HLT_mu6_j45_nojcalib_L1J20 #2114129685 -TrigSignatureMoniMT INFO -- #2114129685 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2114129685 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2114129685 Events 20 20 - - - - - 0 0 0 0 - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2114129685 Features - - - - - 0 0 0 0 - 0 - - - TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 #3895421032 -TrigSignatureMoniMT INFO -- #3895421032 Events 20 20 0 0 0 0 0 2 0 0 - - - - - - 0 -TrigSignatureMoniMT INFO -- #3895421032 Features 0 0 0 0 0 2 0 0 - - - - - - +TrigSignatureMoniMT INFO -- #3895421032 Events 20 20 - - - - - 2 - 0 - - - - - - 0 +TrigSignatureMoniMT INFO -- #3895421032 Features - - - - - 2 - 0 - - - - - - TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 #1713982776 -TrigSignatureMoniMT INFO -- #1713982776 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1713982776 Features 0 0 0 0 0 2 2 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1713982776 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1713982776 Features - - - - - 2 2 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu6_mu6noL1_L1MU6 #451489897 -TrigSignatureMoniMT INFO -- #451489897 Events 20 20 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO -- #451489897 Features 0 0 0 0 0 2 2 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO -- #451489897 Events 20 20 - - - - - 2 2 0 0 - - - 0 0 0 +TrigSignatureMoniMT INFO -- #451489897 Features - - - - - 2 2 0 0 - - - 0 0 TrigSignatureMoniMT INFO HLT_mu6_xe30_mht_L1XE10 #3192713675 -TrigSignatureMoniMT INFO -- #3192713675 Events 20 20 0 0 0 0 0 2 2 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3192713675 Features 0 0 0 0 0 2 2 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3192713675 Events 20 20 - - - - - 2 2 0 0 - 0 - - - 0 +TrigSignatureMoniMT INFO -- #3192713675 Features - - - - - 2 2 0 0 - 0 - - - TrigSignatureMoniMT INFO HLT_mu80_L1MU20 #387900377 -TrigSignatureMoniMT INFO -- #387900377 Events 20 20 0 0 0 0 0 1 1 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #387900377 Features 0 0 0 0 0 1 1 0 0 - - - - - +TrigSignatureMoniMT INFO -- #387900377 Events 20 20 - - - - - 1 1 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #387900377 Features - - - - - 1 1 0 0 - - - - - TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU20 #761101109 -TrigSignatureMoniMT INFO -- #761101109 Events 20 20 0 0 0 0 0 1 0 0 - - - - - - 0 -TrigSignatureMoniMT INFO -- #761101109 Features 0 0 0 0 0 1 0 0 - - - - - - +TrigSignatureMoniMT INFO -- #761101109 Events 20 20 - - - - - 1 - 0 - - - - - - 0 +TrigSignatureMoniMT INFO -- #761101109 Features - - - - - 1 - 0 - - - - - - TrigSignatureMoniMT INFO HLT_mu8_L1MU6 #1467711434 -TrigSignatureMoniMT INFO -- #1467711434 Events 20 20 0 0 0 0 0 2 2 0 0 - - - - - 0 -TrigSignatureMoniMT INFO -- #1467711434 Features 0 0 0 0 0 2 2 0 0 - - - - - +TrigSignatureMoniMT INFO -- #1467711434 Events 20 20 - - - - - 2 2 0 0 - - - - - 0 +TrigSignatureMoniMT INFO -- #1467711434 Features - - - - - 2 2 0 0 - - - - - TrigSignatureMoniMT INFO HLT_noalg_L1All #2979253164 TrigSignatureMoniMT INFO -- #2979253164 Events 20 20 - - - - - - - - - - - - - - 20 TrigSignatureMoniMT INFO -- #2979253164 Features - - - - - - - - - - - - - - @@ -947,107 +947,107 @@ TrigSignatureMoniMT INFO HLT_sct_noise_SCTPEB_L1 TrigSignatureMoniMT INFO -- #3024203296 Events 20 20 20 - - - - - - - - - - - - - 20 TrigSignatureMoniMT INFO -- #3024203296 Features 20 - - - - - - - - - - - - - TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU100 #2342716369 -TrigSignatureMoniMT INFO -- #2342716369 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #2342716369 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #2342716369 Events 20 20 0 0 - - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #2342716369 Features 0 0 - - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 #372992233 -TrigSignatureMoniMT INFO -- #372992233 Events 20 20 4 4 0 0 4 4 - - - - - - - - 4 -TrigSignatureMoniMT INFO -- #372992233 Features 5 5 0 0 4 4 - - - - - - - - +TrigSignatureMoniMT INFO -- #372992233 Events 20 20 4 4 - - 4 4 - - - - - - - - 4 +TrigSignatureMoniMT INFO -- #372992233 Features 5 5 - - 4 4 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU60 #1376650121 -TrigSignatureMoniMT INFO -- #1376650121 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1376650121 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1376650121 Events 20 20 0 0 - - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1376650121 Features 0 0 - - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_idperf_track_L1TAU100 #714660857 -TrigSignatureMoniMT INFO -- #714660857 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #714660857 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #714660857 Events 20 20 0 0 - 0 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #714660857 Features 0 0 - 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_idperf_tracktwoMVA_L1TAU100 #2725693236 -TrigSignatureMoniMT INFO -- #2725693236 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #2725693236 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #2725693236 Events 20 20 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #2725693236 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_idperf_tracktwo_L1TAU100 #886074432 TrigSignatureMoniMT INFO -- #886074432 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #886074432 Features 0 0 0 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_medium1_tracktwoEF_L1TAU100 #1720193283 -TrigSignatureMoniMT INFO -- #1720193283 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1720193283 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1720193283 Events 20 20 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1720193283 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_medium1_tracktwo_L1TAU100 #4069120574 TrigSignatureMoniMT INFO -- #4069120574 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #4069120574 Features 0 0 0 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100 #1747754287 -TrigSignatureMoniMT INFO -- #1747754287 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1747754287 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1747754287 Events 20 20 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1747754287 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_perf_tracktwoMVA_L1TAU100 #2334140248 -TrigSignatureMoniMT INFO -- #2334140248 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #2334140248 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #2334140248 Events 20 20 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #2334140248 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau160_perf_tracktwo_L1TAU100 #1799096347 TrigSignatureMoniMT INFO -- #1799096347 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1799096347 Features 0 0 0 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau200_medium1_tracktwoEF_L1TAU100 #4203471951 -TrigSignatureMoniMT INFO -- #4203471951 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #4203471951 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #4203471951 Events 20 20 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #4203471951 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau200_mediumRNN_tracktwoMVA_L1TAU100 #1468926272 -TrigSignatureMoniMT INFO -- #1468926272 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1468926272 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1468926272 Events 20 20 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1468926272 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_idperf_track_L1TAU12IM #554271976 -TrigSignatureMoniMT INFO -- #554271976 Events 20 20 3 3 0 3 3 3 - - - - - - - - 3 -TrigSignatureMoniMT INFO -- #554271976 Features 4 4 0 4 3 3 - - - - - - - - +TrigSignatureMoniMT INFO -- #554271976 Events 20 20 3 3 - 3 3 3 - - - - - - - - 3 +TrigSignatureMoniMT INFO -- #554271976 Features 4 4 - 4 3 3 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM #988149859 -TrigSignatureMoniMT INFO -- #988149859 Events 20 20 3 3 3 0 3 3 - - - - - - - - 3 -TrigSignatureMoniMT INFO -- #988149859 Features 4 4 3 0 3 3 - - - - - - - - +TrigSignatureMoniMT INFO -- #988149859 Events 20 20 3 3 3 - 3 3 - - - - - - - - 3 +TrigSignatureMoniMT INFO -- #988149859 Features 4 4 3 - 3 3 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM #3346942453 TrigSignatureMoniMT INFO -- #3346942453 Events 20 20 3 3 3 3 3 3 - - - - - - - - 3 TrigSignatureMoniMT INFO -- #3346942453 Features 4 4 3 3 3 3 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_looseRNN_tracktwoMVA_L1TAU12IM #169452969 -TrigSignatureMoniMT INFO -- #169452969 Events 20 20 3 3 3 0 3 2 - - - - - - - - 2 -TrigSignatureMoniMT INFO -- #169452969 Features 4 4 3 0 3 2 - - - - - - - - +TrigSignatureMoniMT INFO -- #169452969 Events 20 20 3 3 3 - 3 2 - - - - - - - - 2 +TrigSignatureMoniMT INFO -- #169452969 Features 4 4 3 - 3 2 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_looseRNN_tracktwo_L1TAU12IM #2490017573 TrigSignatureMoniMT INFO -- #2490017573 Events 20 20 3 3 3 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #2490017573 Features 4 4 3 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwoEF_L1TAU12IM #506456080 -TrigSignatureMoniMT INFO -- #506456080 Events 20 20 3 3 3 0 3 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #506456080 Features 4 4 3 0 3 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #506456080 Events 20 20 3 3 3 - 3 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #506456080 Features 4 4 3 - 3 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwoMVA_L1TAU12IM #4055280067 -TrigSignatureMoniMT INFO -- #4055280067 Events 20 20 3 3 3 0 3 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #4055280067 Features 4 4 3 0 3 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #4055280067 Events 20 20 3 3 3 - 3 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #4055280067 Features 4 4 3 - 3 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM #1433975745 TrigSignatureMoniMT INFO -- #1433975745 Events 20 20 3 3 3 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1433975745 Features 4 4 3 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_mediumRNN_tracktwoMVA_L1TAU12IM #2222894847 -TrigSignatureMoniMT INFO -- #2222894847 Events 20 20 3 3 3 0 3 1 - - - - - - - - 1 -TrigSignatureMoniMT INFO -- #2222894847 Features 4 4 3 0 3 1 - - - - - - - - +TrigSignatureMoniMT INFO -- #2222894847 Events 20 20 3 3 3 - 3 1 - - - - - - - - 1 +TrigSignatureMoniMT INFO -- #2222894847 Features 4 4 3 - 3 1 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_mediumRNN_tracktwo_L1TAU12IM #698603885 TrigSignatureMoniMT INFO -- #698603885 Events 20 20 3 3 3 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #698603885 Features 4 4 3 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_perf_tracktwoMVA_L1TAU12IM #112814536 -TrigSignatureMoniMT INFO -- #112814536 Events 20 20 3 3 3 0 3 3 - - - - - - - - 3 -TrigSignatureMoniMT INFO -- #112814536 Features 4 4 3 0 3 3 - - - - - - - - +TrigSignatureMoniMT INFO -- #112814536 Events 20 20 3 3 3 - 3 3 - - - - - - - - 3 +TrigSignatureMoniMT INFO -- #112814536 Features 4 4 3 - 3 3 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_perf_tracktwo_L1TAU12IM #1129072492 TrigSignatureMoniMT INFO -- #1129072492 Events 20 20 3 3 3 3 3 3 - - - - - - - - 3 TrigSignatureMoniMT INFO -- #1129072492 Features 4 4 3 3 3 3 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_tightRNN_tracktwoMVA_L1TAU12IM #2472860683 -TrigSignatureMoniMT INFO -- #2472860683 Events 20 20 3 3 3 0 3 1 - - - - - - - - 1 -TrigSignatureMoniMT INFO -- #2472860683 Features 4 4 3 0 3 1 - - - - - - - - +TrigSignatureMoniMT INFO -- #2472860683 Events 20 20 3 3 3 - 3 1 - - - - - - - - 1 +TrigSignatureMoniMT INFO -- #2472860683 Features 4 4 3 - 3 1 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_tightRNN_tracktwo_L1TAU12IM #2537544560 TrigSignatureMoniMT INFO -- #2537544560 Events 20 20 3 3 3 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #2537544560 Features 4 4 3 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_verylooseRNN_tracktwoMVA_L1TAU12IM #2992830434 -TrigSignatureMoniMT INFO -- #2992830434 Events 20 20 3 3 3 0 3 2 - - - - - - - - 2 -TrigSignatureMoniMT INFO -- #2992830434 Features 4 4 3 0 3 2 - - - - - - - - +TrigSignatureMoniMT INFO -- #2992830434 Events 20 20 3 3 3 - 3 2 - - - - - - - - 2 +TrigSignatureMoniMT INFO -- #2992830434 Features 4 4 3 - 3 2 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau25_verylooseRNN_tracktwo_L1TAU12IM #1275052132 TrigSignatureMoniMT INFO -- #1275052132 Events 20 20 3 3 3 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #1275052132 Features 4 4 3 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM #2456480859 -TrigSignatureMoniMT INFO -- #2456480859 Events 20 20 3 3 3 0 3 1 - - - - - - - - 1 -TrigSignatureMoniMT INFO -- #2456480859 Features 4 4 3 0 3 1 - - - - - - - - +TrigSignatureMoniMT INFO -- #2456480859 Events 20 20 3 3 3 - 3 1 - - - - - - - - 1 +TrigSignatureMoniMT INFO -- #2456480859 Features 4 4 3 - 3 1 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_L1DR-TAU20ITAU12I-J25 #1794354861 -TrigSignatureMoniMT INFO -- #1794354861 Events 20 20 1 1 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1794354861 Features 2 2 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1794354861 Events 20 20 1 1 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1794354861 Features 2 2 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau80_medium1_tracktwo_L1TAU60 #598963338 TrigSignatureMoniMT INFO -- #598963338 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 TrigSignatureMoniMT INFO -- #598963338 Features 0 0 0 0 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_L1TAU60_DR-TAU20ITAU12I #1075975502 -TrigSignatureMoniMT INFO -- #1075975502 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #1075975502 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #1075975502 Events 20 20 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #1075975502 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tau80_mediumRNN_tracktwoMVA_tau60_mediumRNN_tracktwoMVA_L1TAU60_2TAU40 #400305971 -TrigSignatureMoniMT INFO -- #400305971 Events 20 20 0 0 0 0 0 0 - - - - - - - - 0 -TrigSignatureMoniMT INFO -- #400305971 Features 0 0 0 0 0 0 - - - - - - - - +TrigSignatureMoniMT INFO -- #400305971 Events 20 20 0 0 0 - 0 0 - - - - - - - - 0 +TrigSignatureMoniMT INFO -- #400305971 Features 0 0 0 - 0 0 - - - - - - - - TrigSignatureMoniMT INFO HLT_tilecalib_laser_TilePEB_L1CALREQ2 #1063154655 TrigSignatureMoniMT INFO -- #1063154655 Events 20 20 20 - - - - - - - - - - - - - 20 TrigSignatureMoniMT INFO -- #1063154655 Features 20 - - - - - - - - - - - - - @@ -1055,92 +1055,92 @@ TrigSignatureMoniMT INFO HLT_timeburner_L1All #8 TrigSignatureMoniMT INFO -- #819160059 Events 20 20 0 - - - - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #819160059 Features 0 - - - - - - - - - - - - - TrigSignatureMoniMT INFO HLT_unconvtrk120_isohpttrack_icummedium_L1XE50 #4064963182 -TrigSignatureMoniMT INFO -- #4064963182 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #4064963182 Features 0 0 0 0 0 0 0 0 0 0 4 - - - +TrigSignatureMoniMT INFO -- #4064963182 Events 20 20 - - - - - - - - - - 3 - - - 3 +TrigSignatureMoniMT INFO -- #4064963182 Features - - - - - - - - - - 4 - - - TrigSignatureMoniMT INFO HLT_unconvtrk120_isohpttrack_imedium_L1XE50 #3425113791 -TrigSignatureMoniMT INFO -- #3425113791 Events 20 20 0 0 0 0 0 0 0 0 0 0 9 - - - 9 -TrigSignatureMoniMT INFO -- #3425113791 Features 0 0 0 0 0 0 0 0 0 0 13 - - - +TrigSignatureMoniMT INFO -- #3425113791 Events 20 20 - - - - - - - - - - 9 - - - 9 +TrigSignatureMoniMT INFO -- #3425113791 Features - - - - - - - - - - 13 - - - TrigSignatureMoniMT INFO HLT_xe100_cvfpufit_L1XE50 #2729083465 -TrigSignatureMoniMT INFO -- #2729083465 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 0 - - 0 -TrigSignatureMoniMT INFO -- #2729083465 Features 0 0 0 0 0 0 0 0 0 0 20 0 - - +TrigSignatureMoniMT INFO -- #2729083465 Events 20 20 - - - - - - - - - - 20 0 - - 0 +TrigSignatureMoniMT INFO -- #2729083465 Features - - - - - - - - - - 20 0 - - TrigSignatureMoniMT INFO HLT_xe100_mht_L1XE50 #532175988 -TrigSignatureMoniMT INFO -- #532175988 Events 20 20 0 0 0 0 0 0 0 0 0 0 1 - - - 1 -TrigSignatureMoniMT INFO -- #532175988 Features 0 0 0 0 0 0 0 0 0 0 1 - - - +TrigSignatureMoniMT INFO -- #532175988 Events 20 20 - - - - - - - - - - 1 - - - 1 +TrigSignatureMoniMT INFO -- #532175988 Features - - - - - - - - - - 1 - - - TrigSignatureMoniMT INFO HLT_xe100_mhtpufit_em_subjesgscIS_L1XE50 #3054195458 -TrigSignatureMoniMT INFO -- #3054195458 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 0 - - 0 -TrigSignatureMoniMT INFO -- #3054195458 Features 0 0 0 0 0 0 0 0 0 0 20 0 - - +TrigSignatureMoniMT INFO -- #3054195458 Events 20 20 - - - - - - - - - - 20 0 - - 0 +TrigSignatureMoniMT INFO -- #3054195458 Features - - - - - - - - - - 20 0 - - TrigSignatureMoniMT INFO HLT_xe100_mhtpufit_pf_subjesgscIS_L1XE50 #2614685150 -TrigSignatureMoniMT INFO -- #2614685150 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 1 - - 1 -TrigSignatureMoniMT INFO -- #2614685150 Features 0 0 0 0 0 0 0 0 0 0 20 1 - - +TrigSignatureMoniMT INFO -- #2614685150 Events 20 20 - - - - - - - - - - 20 1 - - 1 +TrigSignatureMoniMT INFO -- #2614685150 Features - - - - - - - - - - 20 1 - - TrigSignatureMoniMT INFO HLT_xe100_pfopufit_L1XE50 #2909333517 -TrigSignatureMoniMT INFO -- #2909333517 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 0 - - 0 -TrigSignatureMoniMT INFO -- #2909333517 Features 0 0 0 0 0 0 0 0 0 0 20 0 - - +TrigSignatureMoniMT INFO -- #2909333517 Events 20 20 - - - - - - - - - - 20 0 - - 0 +TrigSignatureMoniMT INFO -- #2909333517 Features - - - - - - - - - - 20 0 - - TrigSignatureMoniMT INFO HLT_xe100_pfsum_L1XE50 #1890237897 -TrigSignatureMoniMT INFO -- #1890237897 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 1 - - 1 -TrigSignatureMoniMT INFO -- #1890237897 Features 0 0 0 0 0 0 0 0 0 0 20 1 - - +TrigSignatureMoniMT INFO -- #1890237897 Events 20 20 - - - - - - - - - - 20 1 - - 1 +TrigSignatureMoniMT INFO -- #1890237897 Features - - - - - - - - - - 20 1 - - TrigSignatureMoniMT INFO HLT_xe100_tcpufit_L1XE50 #2803198799 -TrigSignatureMoniMT INFO -- #2803198799 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2803198799 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2803198799 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #2803198799 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_xe100_trkmht_L1XE50 #1055916731 -TrigSignatureMoniMT INFO -- #1055916731 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 0 - - 0 -TrigSignatureMoniMT INFO -- #1055916731 Features 0 0 0 0 0 0 0 0 0 0 20 0 - - +TrigSignatureMoniMT INFO -- #1055916731 Events 20 20 - - - - - - - - - - 20 0 - - 0 +TrigSignatureMoniMT INFO -- #1055916731 Features - - - - - - - - - - 20 0 - - TrigSignatureMoniMT INFO HLT_xe100_trkmht_xe85_tcpufit_xe65_cell_L1XE50 #451622546 -TrigSignatureMoniMT INFO -- #451622546 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #451622546 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #451622546 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #451622546 Features - - - - - - - - - - 0 0 - - TrigSignatureMoniMT INFO HLT_xe110_mht_L1XE50 #3030733259 -TrigSignatureMoniMT INFO -- #3030733259 Events 20 20 0 0 0 0 0 0 0 0 0 0 1 - - - 1 -TrigSignatureMoniMT INFO -- #3030733259 Features 0 0 0 0 0 0 0 0 0 0 1 - - - +TrigSignatureMoniMT INFO -- #3030733259 Events 20 20 - - - - - - - - - - 1 - - - 1 +TrigSignatureMoniMT INFO -- #3030733259 Features - - - - - - - - - - 1 - - - TrigSignatureMoniMT INFO HLT_xe110_tc_em_L1XE50 #607113828 -TrigSignatureMoniMT INFO -- #607113828 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #607113828 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #607113828 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #607113828 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_xe110_tcpufit_L1XE50 #892853397 -TrigSignatureMoniMT INFO -- #892853397 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #892853397 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #892853397 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #892853397 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 #1649696554 -TrigSignatureMoniMT INFO -- #1649696554 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #1649696554 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #1649696554 Events 20 20 - - - - - - - - - - 3 - - - 3 +TrigSignatureMoniMT INFO -- #1649696554 Features - - - - - - - - - - 3 - - - TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE10 #3768353779 -TrigSignatureMoniMT INFO -- #3768353779 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #3768353779 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #3768353779 Events 20 20 - - - - - - - - - - 3 - - - 3 +TrigSignatureMoniMT INFO -- #3768353779 Features - - - - - - - - - - 3 - - - TrigSignatureMoniMT INFO HLT_xe30_cvfpufit_L1XE10 #3860749499 -TrigSignatureMoniMT INFO -- #3860749499 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 6 - - 6 -TrigSignatureMoniMT INFO -- #3860749499 Features 0 0 0 0 0 0 0 0 0 0 20 6 - - +TrigSignatureMoniMT INFO -- #3860749499 Events 20 20 - - - - - - - - - - 20 6 - - 6 +TrigSignatureMoniMT INFO -- #3860749499 Features - - - - - - - - - - 20 6 - - TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 #3626903018 -TrigSignatureMoniMT INFO -- #3626903018 Events 20 20 0 0 0 0 0 0 0 0 0 0 14 - - - 14 -TrigSignatureMoniMT INFO -- #3626903018 Features 0 0 0 0 0 0 0 0 0 0 14 - - - +TrigSignatureMoniMT INFO -- #3626903018 Events 20 20 - - - - - - - - - - 14 - - - 14 +TrigSignatureMoniMT INFO -- #3626903018 Features - - - - - - - - - - 14 - - - TrigSignatureMoniMT INFO HLT_xe30_mhtpufit_em_subjesgscIS_L1XE10 #689201557 -TrigSignatureMoniMT INFO -- #689201557 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 5 - - 5 -TrigSignatureMoniMT INFO -- #689201557 Features 0 0 0 0 0 0 0 0 0 0 20 5 - - +TrigSignatureMoniMT INFO -- #689201557 Events 20 20 - - - - - - - - - - 20 5 - - 5 +TrigSignatureMoniMT INFO -- #689201557 Features - - - - - - - - - - 20 5 - - TrigSignatureMoniMT INFO HLT_xe30_mhtpufit_pf_subjesgscIS_L1XE10 #1886909707 -TrigSignatureMoniMT INFO -- #1886909707 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 5 - - 5 -TrigSignatureMoniMT INFO -- #1886909707 Features 0 0 0 0 0 0 0 0 0 0 20 5 - - +TrigSignatureMoniMT INFO -- #1886909707 Events 20 20 - - - - - - - - - - 20 5 - - 5 +TrigSignatureMoniMT INFO -- #1886909707 Features - - - - - - - - - - 20 5 - - TrigSignatureMoniMT INFO HLT_xe30_pfopufit_L1XE10 #2252641537 -TrigSignatureMoniMT INFO -- #2252641537 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 4 - - 4 -TrigSignatureMoniMT INFO -- #2252641537 Features 0 0 0 0 0 0 0 0 0 0 20 4 - - +TrigSignatureMoniMT INFO -- #2252641537 Events 20 20 - - - - - - - - - - 20 4 - - 4 +TrigSignatureMoniMT INFO -- #2252641537 Features - - - - - - - - - - 20 4 - - TrigSignatureMoniMT INFO HLT_xe30_pfsum_L1XE10 #998713382 -TrigSignatureMoniMT INFO -- #998713382 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 7 - - 7 -TrigSignatureMoniMT INFO -- #998713382 Features 0 0 0 0 0 0 0 0 0 0 20 7 - - +TrigSignatureMoniMT INFO -- #998713382 Events 20 20 - - - - - - - - - - 20 7 - - 7 +TrigSignatureMoniMT INFO -- #998713382 Features - - - - - - - - - - 20 7 - - TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 #1583719916 -TrigSignatureMoniMT INFO -- #1583719916 Events 20 20 0 0 0 0 0 0 0 0 0 0 6 - - - 6 -TrigSignatureMoniMT INFO -- #1583719916 Features 0 0 0 0 0 0 0 0 0 0 6 - - - +TrigSignatureMoniMT INFO -- #1583719916 Events 20 20 - - - - - - - - - - 6 - - - 6 +TrigSignatureMoniMT INFO -- #1583719916 Features - - - - - - - - - - 6 - - - TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 #2468872349 -TrigSignatureMoniMT INFO -- #2468872349 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 6 - - 6 -TrigSignatureMoniMT INFO -- #2468872349 Features 0 0 0 0 0 0 0 0 0 0 20 6 - - +TrigSignatureMoniMT INFO -- #2468872349 Events 20 20 - - - - - - - - - - 20 6 - - 6 +TrigSignatureMoniMT INFO -- #2468872349 Features - - - - - - - - - - 20 6 - - TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 #531141817 -TrigSignatureMoniMT INFO -- #531141817 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #531141817 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #531141817 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #531141817 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_xe65_cell_xe110_tcpufit_L1XE50 #115518400 -TrigSignatureMoniMT INFO -- #115518400 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #115518400 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #115518400 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #115518400 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_xe80_tcpufit_unconvtrk120_isohpttrack_icummedium_L1XE50 #668475349 -TrigSignatureMoniMT INFO -- #668475349 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #668475349 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #668475349 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #668475349 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_xe80_tcpufit_unconvtrk120_isohpttrack_imedium_L1XE50 #1855034723 -TrigSignatureMoniMT INFO -- #1855034723 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1855034723 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1855034723 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #1855034723 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_xe80_tcpufit_unconvtrk80_isohpttrack_imedium_L1XE50 #153760048 -TrigSignatureMoniMT INFO -- #153760048 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #153760048 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #153760048 Events 20 20 - - - - - - - - - - 0 - - - 0 +TrigSignatureMoniMT INFO -- #153760048 Features - - - - - - - - - - 0 - - - TrigSignatureMoniMT INFO HLT_xe95_trkmht_xe90_tcpufit_xe75_cell_L1XE50 #302256132 -TrigSignatureMoniMT INFO -- #302256132 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #302256132 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #302256132 Events 20 20 - - - - - - - - - - 0 0 - - 0 +TrigSignatureMoniMT INFO -- #302256132 Features - - - - - - - - - - 0 0 - - diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py index d341f13a8c47c5ee577a6096c21e0adf9fa786e2..037ee32e853c5cc4428e8d4524258b4d96da4535 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py @@ -7,7 +7,6 @@ from AthenaConfiguration.ComponentFactory import CompFactory from AthenaCommon.CFElements import seqAND, seqOR, parOR, flatAlgorithmSequences, getSequenceChildren, isSequence, hasProp, getProp from AthenaCommon.Logging import logging __log = logging.getLogger('TriggerConfig') -import six def __isCombo(alg): return hasProp( alg, "MultiplicitiesMap" ) # alg.getType() == 'ComboHypo': @@ -27,30 +26,30 @@ def collectHypos( steps ): continue if "filter" in stepSeq.getName(): - __log.debug("Skipping filtering steps " +stepSeq.getName() ) + __log.debug("Skipping filtering steps %s", stepSeq.getName() ) continue - __log.debug( "collecting hypos from step " + stepSeq.getName() ) + __log.debug( "collecting hypos from step %s", stepSeq.getName() ) # start = {} - for seq,algs in six.iteritems (flatAlgorithmSequences( stepSeq )): + for seq,algs in flatAlgorithmSequences(stepSeq).items(): for alg in sorted(algs, key=lambda t: str(t.name)): if isSequence( alg ): continue # will replace by function once dependencies are sorted - if hasProp( alg, 'HypoInputDecisions'): - __log.debug( "found hypo " + alg.getName() + " in " +stepSeq.getName() ) + if hasProp(alg, 'HypoInputDecisions'): + __log.debug("found hypo %s in %s", alg.getName(), stepSeq.getName()) if __isCombo( alg ) and len(alg.ComboHypoTools): __log.debug( " with %d comboHypoTools: %s", len(alg.ComboHypoTools), ' '.join(map(str, [tool.getName() for tool in alg.ComboHypoTools]))) hypos[stepSeq.getName()].append( alg ) else: - __log.verbose("Not a hypo" + alg.getName()) + __log.verbose("Not a hypo %s", alg.getName()) return OrderedDict(hypos) def __decisionsFromHypo( hypo ): """ return all chains served by this hypo and the key of produced decision object """ from TrigCompositeUtils.TrigCompositeUtils import isLegId - __log.debug("Hypo type {} is combo {}".format( hypo.getName(), __isCombo( hypo ) ) ) + __log.debug("Hypo type %s is combo %r", hypo.getName(), __isCombo(hypo)) if __isCombo( hypo ): return [key for key in list(hypo.MultiplicitiesMap.keys()) if not isLegId(key)], hypo.HypoOutputDecisions[0] else: # regular hypos @@ -69,12 +68,12 @@ def collectViewMakers( steps ): if not isSequence( recoSeq ): continue algsInSeq = flatAlgorithmSequences( recoSeq ) - for seq,algs in six.iteritems (algsInSeq): + for seq,algs in algsInSeq.items(): for alg in algs: if "EventViewCreator" in alg.getFullJobOptName(): # TODO base it on checking types of write handles once available if alg not in makers: makers.append(alg) - __log.debug("Found ViewMakers: {}".format( ' '.join([ maker.getName() for maker in makers ]) )) + __log.debug("Found ViewMakers: %s", ' '.join([ maker.getName() for maker in makers ])) return makers @@ -93,7 +92,7 @@ def collectFilters( steps ): for stepSeq in getSequenceChildren( steps ): if "filter" in stepSeq.getName(): filters[stepSeq.getName()] = getSequenceChildren( stepSeq ) - __log.debug("Found Filters in Step {} : {}".format(stepSeq.getName(), getSequenceChildren( stepSeq ))) + __log.debug("Found Filters in Step %s : %s", stepSeq.getName(), getSequenceChildren(stepSeq)) return filters @@ -108,7 +107,7 @@ def collectL1DecoderDecisionObjects(l1decoder): def collectHypoDecisionObjects(hypos, inputs = True, outputs = True): decisionObjects = set() - for step, stepHypos in sorted(six.iteritems (hypos)): + for step, stepHypos in sorted(hypos.items()): for hypoAlg in stepHypos: __log.debug( "Hypo %s with input %s and output %s ", hypoAlg.getName(), hypoAlg.HypoInputDecisions, hypoAlg.HypoOutputDecisions ) @@ -127,7 +126,7 @@ def collectHypoDecisionObjects(hypos, inputs = True, outputs = True): def collectFilterDecisionObjects(filters, inputs = True, outputs = True): decisionObjects = set() - for step, stepFilters in six.iteritems (filters): + for step, stepFilters in filters.items(): for filt in stepFilters: if inputs and hasattr( filt, "Input" ): decisionObjects.update( filt.Input ) @@ -185,7 +184,7 @@ def triggerSummaryCfg(flags, hypos): if len(TriggerConfigHLT.dicts()) == 0: __log.warning("No HLT menu, chains w/o algorithms are not handled") else: - for chainName, chainDict in six.iteritems (TriggerConfigHLT.dicts()): + for chainName, chainDict in TriggerConfigHLT.dicts().items(): if chainName not in allChains: __log.debug("The chain %s is not mentioned in any step", chainName) # TODO once sequences available in the menu we need to crosscheck it here @@ -194,8 +193,8 @@ def triggerSummaryCfg(flags, hypos): __log.debug("The chain %s final decisions will be taken from %s", chainName, allChains[chainName] ) - for c, cont in six.iteritems (allChains): - __log.debug("Final decision of chain " + c + " will be read from " + cont ) + for c, cont in allChains.items(): + __log.debug("Final decision of chain %s will be read from %s", c, cont) decisionSummaryAlg.FinalDecisionKeys = list(OrderedDict.fromkeys(allChains.values())) decisionSummaryAlg.FinalStepDecisions = dict(allChains) decisionSummaryAlg.DecisionsSummaryKey = "HLTNav_Summary" # Output @@ -228,7 +227,7 @@ def triggerMonitoringCfg(flags, hypos, filters, l1Decoder): allChains.update( hypoChains ) dcTool = DecisionCollectorTool( "DecisionCollector" + stepName, Decisions=list(OrderedDict.fromkeys(stepDecisionKeys))) - __log.debug( "The step monitoring decisions in " + dcTool.getName() + " " +str( dcTool.Decisions ) ) + __log.debug( "The step monitoring decisions in %s %s", dcTool.getName(), dcTool.Decisions) mon.CollectorTools += [ dcTool ] @@ -395,7 +394,7 @@ def triggerPOOLOutputCfg(flags, edmSet): # Build the output ItemList itemsToRecord = [] - for edmType, edmKeys in six.iteritems (edmList): + for edmType, edmKeys in edmList.items(): itemsToRecord.extend([edmType+'#'+collKey for collKey in edmKeys]) # Add EventInfo @@ -464,18 +463,18 @@ def triggerMergeViewsAndAddMissingEDMCfg( flags, edmSet, hypos, viewMakers, decO HLTEDMCreatorAlg, HLTEDMCreator=CompFactory.getComps("HLTEDMCreatorAlg","HLTEDMCreator",) from TrigEDMConfig.TriggerEDMRun3 import TriggerHLTListRun3, addExtraCollectionsToEDMList - __log.info( "Number of EDM items in triggerMergeViewsAndAddMissingEDMCfg: {}".format(len(TriggerHLTListRun3)) ) + __log.info( "Number of EDM items in triggerMergeViewsAndAddMissingEDMCfg: %d", len(TriggerHLTListRun3)) if flags.Trigger.ExtraEDMList: - __log.info( "Adding extra collections to EDM: {}".format(flags.Trigger.ExtraEDMList) ) + __log.info( "Adding extra collections to EDM: %s", str(flags.Trigger.ExtraEDMList)) addExtraCollectionsToEDMList(TriggerHLTListRun3, flags.Trigger.ExtraEDMList) - __log.info( "Number of EDM items after adding extra collections: {}".format(len(TriggerHLTListRun3)) ) + __log.info( "Number of EDM items after adding extra collections: %d", len(TriggerHLTListRun3)) alg = HLTEDMCreatorAlg("EDMCreatorAlg") # configure views merging needMerging = [x for x in TriggerHLTListRun3 if len(x) >= 4 and x[3].startswith("inViews:")] - __log.info("These collections need merging: {}".format( " ".join([ c[0] for c in needMerging ])) ) + __log.info("These collections need merging: %s", " ".join([ c[0] for c in needMerging ])) mergingTool = HLTEDMCreator( "ViewsMergingTool") for coll in needMerging: collType, collName = coll[0].split("#") @@ -496,12 +495,12 @@ def triggerMergeViewsAndAddMissingEDMCfg( flags, edmSet, hypos, viewMakers, decO setattr(mergingTool, collType, attrName ) producer = [ maker for maker in viewMakers if maker.Views == viewsColl ] if len(producer) == 0: - __log.warning("The producer of the {} not in the menu, it's outputs won't ever make it out of the HLT".format( str(coll) ) ) + __log.warning("The producer of the %s not in the menu, it's outputs won't ever make it out of the HLT", coll) continue if len(producer) > 1: for pr in producer[1:]: if pr != producer[0]: - __log.error("Several View making algorithms produce the same output collection {}: {}".format( viewsColl, ' '.join([p.getName() for p in producer ]) ) ) + __log.error("Several View making algorithms produce the same output collection %s: %s", viewsColl, ' '.join([p.getName() for p in producer ])) continue alg.OutputTools += [mergingTool] @@ -521,22 +520,22 @@ def triggerMergeViewsAndAddMissingEDMCfg( flags, edmSet, hypos, viewMakers, decO aliases = [ x for x in el[3:] if "alias:" in x ] # assume that the description can be: (.... , [alias:Blah | inViews:XYZ | inViews:XYZ, alias:Blah]) if len(aliases) == 1: alias = aliases[0].split(":")[1] - __log.info("GapFiller configuration found an aliased type '{}' for '{}'".format( alias, collType)) + __log.info("GapFiller configuration found an aliased type '%s' for '%s'", alias, collType) collType = alias elif len(aliases) > 1: - __log.error("GapFiller configuration found inconsistent '{}' (to many aliases?)".format(el[3:])) + __log.error("GapFiller configuration found inconsistent '%s' (too many aliases?)", el[3:]) groupedByType[collType].append( collName ) - for collType, collNameList in six.iteritems (groupedByType): + for collType, collNameList in groupedByType.items(): propName = collType.split(":")[-1] if hasattr( tool, propName ): setattr( tool, propName, collNameList ) - __log.info("GapFiller will create EDM collection type '{}' for '{}'".format( collType, collNameList )) + __log.info("GapFiller will create EDM collection type '%s' for '%s'", collType, collNameList) else: - __log.info("EDM collections of type {} are not going to be added to StoreGate, if not created by the HLT".format( collType )) + __log.info("EDM collections of type %s are not going to be added to StoreGate, if not created by the HLT", collType ) - __log.debug("The GapFiller is ensuring the creation of all the decision object collections: '{}'".format( decObj ) ) + __log.debug("The GapFiller is ensuring the creation of all the decision object collections: '%s'", decObj) # Append and hence confirm all TrigComposite collections # Gap filler is also used to perform re-mapping of the HypoAlg outputs which is a sub-set of decObj tool.FixLinks = list(decObjHypoOut) @@ -576,7 +575,7 @@ def triggerRunCfg( flags, seqName = None, menu=None ): if menu: menuAcc = menu( flags ) HLTSteps = menuAcc.getSequence( "HLTAllSteps" ) - __log.info( "Configured menu with "+ str( len(HLTSteps.Members) ) +" steps" ) + __log.info( "Configured menu with %d steps", len(HLTSteps.Members)) acc.merge( menuAcc, sequenceName="HLTTop") # collect hypothesis algorithms from all sequence @@ -603,16 +602,16 @@ def triggerRunCfg( flags, seqName = None, menu=None ): decObjHypoOut = collectHypoDecisionObjects(hypos, inputs=False, outputs=True) __log.info( "Number of decision objects found in HLT CF %d", len( decObj ) ) __log.info( "Of which, %d are the outputs of hypos", len( decObjHypoOut ) ) - __log.info( str( decObj ) ) + __log.info( decObj ) # configure components need to normalise output before writing out viewMakers = collectViewMakers( HLTSteps ) # Add HLT Navigation to EDM list from TrigEDMConfig import TriggerEDMRun3 - __log.info( "Number of EDM items before adding navigation: {}".format(len(TriggerEDMRun3.TriggerHLTListRun3)) ) + __log.info( "Number of EDM items before adding navigation: %d", len(TriggerEDMRun3.TriggerHLTListRun3)) TriggerEDMRun3.addHLTNavigationToEDMList(TriggerEDMRun3.TriggerHLTListRun3, decObj, decObjHypoOut) - __log.info( "Number of EDM items after adding navigation: {}".format(len(TriggerEDMRun3.TriggerHLTListRun3)) ) + __log.info( "Number of EDM items after adding navigation: %d", len(TriggerEDMRun3.TriggerHLTListRun3)) # Configure output writing outputAcc, edmSet = triggerOutputCfg( flags, summaryAlg ) diff --git a/Trigger/TriggerCommon/TriggerJobOpts/share/decodeBS.py b/Trigger/TriggerCommon/TriggerJobOpts/share/decodeBS.py index 1478eb45848f6df0ba64b2fb74c0582fab9bb515..185a96970cb97b0656a94eb5a38e0c05784622b5 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/share/decodeBS.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/share/decodeBS.py @@ -2,7 +2,6 @@ # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # -import six # Parse option to specify output item list ItemList = [] @@ -68,7 +67,7 @@ from TrigEDMConfig.TriggerEDM import getTriggerEDMList TriggerFlags.EDMDecodingVersion = 3 # currently hard-coded edmList = getTriggerEDMList(TriggerFlags.ESDEDMSet(), TriggerFlags.EDMDecodingVersion()) if len(ItemList) == 0: - for edmType, edmKeys in six.iteritems (edmList): + for edmType, edmKeys in edmList.items(): for key in edmKeys: ItemList.append(edmType+'#'+key) ItemList += [ "xAOD::EventInfo#EventInfo", "xAOD::EventAuxInfo#EventInfoAux." ] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/EventBuildingSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/EventBuildingSequenceSetup.py index c9223001f7be982ae0a86ca46108f56ac9299855..e3cdd1e782339ead5cbfd2b88265d312b70d13ea 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/EventBuildingSequenceSetup.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/EventBuildingSequenceSetup.py @@ -7,7 +7,7 @@ from TriggerMenuMT.HLTMenuConfig.Menu import EventBuildingInfo from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import ChainStep, MenuSequence from TrigPartialEventBuilding.TrigPartialEventBuildingConf import PEBInfoWriterAlg from TrigPartialEventBuilding.TrigPartialEventBuildingConfig import StaticPEBInfoWriterToolCfg, RoIPEBInfoWriterToolCfg -from DecisionHandling.DecisionHandlingConf import InputMakerForRoI, ViewCreatorInitialROITool +from DecisionHandling import DecisionHandlingConf from libpyeformat_helper import SubDetector from AthenaCommon.CFElements import seqAND, findAlgorithm from AthenaCommon.Logging import logging @@ -28,7 +28,7 @@ def addEventBuildingSequence(chain, eventBuildType, chainDict): def pebInfoWriterToolGenerator(chainDict): return pebInfoWriterTool(chainDict['chainName'], eventBuildType) - inputMaker = pebInputMaker(eventBuildType) + inputMaker = pebInputMaker(chain, eventBuildType) seq = MenuSequence( Sequence = pebSequence(eventBuildType, inputMaker), Maker = inputMaker, @@ -114,10 +114,15 @@ def pebInfoWriterTool(name, eventBuildType): return tool -def pebInputMaker(eventBuildType): - maker = InputMakerForRoI("IMpeb_"+eventBuildType) - maker.RoITool = ViewCreatorInitialROITool() +def pebInputMaker(chain, eventBuildType): + maker = DecisionHandlingConf.InputMakerForRoI("IMpeb_"+eventBuildType) maker.RoIs = "pebInputRoI_" + eventBuildType + if len(chain.steps) == 0: + # Streamers: use initial RoI + maker.RoITool = DecisionHandlingConf.ViewCreatorInitialROITool() + else: + # Other chains: use previous RoI + maker.RoITool = DecisionHandlingConf.ViewCreatorPreviousROITool() return maker diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py index ec70259e6dde23460acb921ae7180c127533f1fd..f9ae03260da488e59fd9449a993d5a21675af90f 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py @@ -36,12 +36,10 @@ from AthenaCommon.AlgSequence import dumpSequence from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import stepCF_DataFlow_to_dot, stepCF_ControlFlow_to_dot, all_DataFlow_to_dot, create_dot from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming from AthenaCommon.Configurable import Configurable - from AthenaCommon.CFElements import getSequenceChildren, isSequence, compName import re - from AthenaCommon.Logging import logging log = logging.getLogger( __name__ ) @@ -379,12 +377,11 @@ def createDataFlow(chains, allDicts): lastCFseq = None lastDecisions = [] for nstep, chainStep in enumerate( chain.steps ): - log.debug("\n************* Start connecting step %d %s for chain %s", nstep+1, chainStep.name, chain.name) + log.debug("\n************* Start connecting step %d %s for chain %s", nstep+1, chainStep.name, chain.name) filterInput = chain.L1decisions if nstep == 0 else lastDecisions log.debug("Seeds added; having in the filter now: %s", filterInput) - if len(filterInput) == 0 : log.error("ERROR: Filter for step %s has %d inputs! At least one is expected", chainStep.name, len(filterInput)) @@ -392,15 +389,16 @@ def createDataFlow(chains, allDicts): # make one filter per step: sequenceFilter= None filterName = CFNaming.filterName(chainStep.name) - filterOutput =[ CFNaming.filterOutName(filterName, inputName) for inputName in filterInput ] -# log.debug("Filter outputps: %s", filterOutput) - -# note: can use + if chainStep.isEmpty: + filterOutput= filterInput + else: + filterOutput =[ CFNaming.filterOutName(filterName, inputName) for inputName in filterInput ] + (foundFilter, foundCFSeq) = findCFSequences(filterName, CFseqList[nstep]) - log.debug("Found %d CF sequences with filter name %s", foundFilter, filterName) + log.debug("Found %d CF sequences with filter name %s", foundFilter, filterName) # add error if more than one if not foundFilter: - sequenceFilter = buildFilter(filterName, filterInput) + sequenceFilter = buildFilter(filterName, filterInput, chainStep.isEmpty) CFseq = CFSequence( ChainStep=chainStep, FilterAlg=sequenceFilter) CFseq.connect(filterOutput) CFseqList[nstep].append(CFseq) @@ -411,7 +409,6 @@ def createDataFlow(chains, allDicts): log.error("Found more than one seuqences containig this filter %s", filterName) lastCFseq=foundCFSeq[0] sequenceFilter=lastCFseq.filter - #lastCFseq.connect(filterOutput) [ sequenceFilter.addInput(inputName) for inputName in filterInput ] [ sequenceFilter.addOutput(outputName) for outputName in filterOutput ] lastCFseq.connect(filterOutput) @@ -422,10 +419,13 @@ def createDataFlow(chains, allDicts): # add chains to the filter: chainLegs = chainStep.getChainLegs() - for leg in chainLegs: - sequenceFilter.addChain(leg) - log.debug("Adding chain %s to %s", leg, sequenceFilter.Alg.name()) -# log.debug("Now Filter has chains: %s", sequenceFilter.getChains()) + if len(chainLegs) != len(filterInput): + log.error("chainlegs = %i differ from inputs=%i", len(chainLegs), len(filterInput)) + for finput, leg in zip(filterInput, chainLegs): + sequenceFilter.addChain(leg, finput) + log.debug("Adding chain %s to input %s of %s", leg, finput,sequenceFilter.Alg.name()) + log.debug("Now Filter has chains: %s", sequenceFilter.getChains()) + log.debug("Now Filter has chains/input: %s", sequenceFilter.getChainsPerInput()) if chainStep.isCombo: if chainStep.combo is not None: @@ -487,112 +487,6 @@ def createControlFlow(HLTNode, CFseqList): -""" -Not used, kept for reference and testing purposes -To be removed in future -""" -def generateDecisionTreeOld(HLTNode, chains, allChainDicts): - log.debug("Run generateDecisionTreeOld on %s", HLTNode.name()) - from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator - acc = ComponentAccumulator() - from collections import defaultdict - from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CFSequence - - chainStepsMatrix = defaultdict(lambda: defaultdict(lambda: list())) - - ## Fill chain steps matrix - for chain in chains: - chain.createHypoTools()#allChainDicts) - for stepNumber, chainStep in enumerate(chain.steps): - chainName = chainStep.name.split('_')[0] - chainStepsMatrix[stepNumber][chainName].append(chain) - - allSequences = [] - - ## Matrix with steps lists generated. Creating filters for each cell - for nstep in chainStepsMatrix: - CFsequences = [] - stepDecisions = [] - stepAccs = [] - stepHypos = [] - - for chainName in chainStepsMatrix[nstep]: - chainsInCell = chainStepsMatrix[nstep][chainName] - - if not chainsInCell: - continue - - - stepCategoryAcc = ComponentAccumulator() - - stepHypo = None - - for chain in chainsInCell: - for seq in chain.steps[nstep].sequences: - if seq.ca: - stepCategoryAcc.merge( seq.ca ) - - alg = seq.hypo.Alg - if stepHypo is None: - stepHypo = alg - stepHypos.append( alg ) - stepCategoryAcc.addEventAlgo( alg ) - - stepAccs.append( stepCategoryAcc ) - - stepCategoryAcc.printConfig( True, True ) - firstChain = chainsInCell[0] - - if nstep == 0: - filter_input = firstChain.L1decisions - else: - filter_input = [] - for sequence in firstChain.steps[nstep - 1].sequences: - filter_input += sequence.outputs - - # One aggregated filter per chain (one per column in matrix) - filterName = 'Filter_{}'.format( firstChain.steps[nstep].name ) - filter_output =[] - for i in filter_input: - filter_output.append( CFNaming.filterOutName(filterName, i)) - sfilter = buildFilter(filterName, filter_input) - - chainStep = firstChain.steps[nstep] - - CFseq = CFSequence( ChainStep=chainStep, FilterAlg=sfilter, connections=filter_output ) - CFsequences.append( CFseq ) - - - for sequence in chainStep.sequences: - stepDecisions += sequence.outputs - - for chain in chainsInCell: - sfilter.addChain(chain.name) - - allSequences.append(CFsequences) - - stepName = 'Step{}'.format(nstep) - stepFilter = createStepFilterNode(stepName, CFsequences, dump=False) - stepCF = createStepRecoNode('{}_{}'.format(HLTNode.name(), stepName), CFsequences, dump=False) - - from AthenaCommon.CFElements import findOwningSequence - for oneAcc, cfseq, hypo in zip( stepAccs, CFsequences, stepHypos): - owning = findOwningSequence( stepCF, hypo.getName() ) - acc.addSequence( owning ) - acc.merge( oneAcc, sequenceName = owning.getName() ) - summary = makeSummary('TriggerSummary{}'.format(stepName), stepDecisions) - - HLTNode += stepFilter - HLTNode += stepCF - HLTNode += summary - if create_dot(): - stepCF_DataFlow_to_dot('{}_{}'.format(HLTNode.name(), stepName), CFsequences) - stepCF_ControlFlow_to_dot(stepCF) - all_DataFlow_to_dot(HLTNode.name(), allSequences) - - matrixDisplay( allSequences ) - return acc - def findCFSequences(filter_name, cfseqList): @@ -600,6 +494,7 @@ def findCFSequences(filter_name, cfseqList): searches for a filter, with given name, in the CF sequence list of this step """ log.debug( "findCFSequences: filter base name %s", filter_name ) + foundFilters = [cfseq for cfseq in cfseqList if filter_name == cfseq.filter.Alg.name()] log.debug("found %d filters with base name %s", len( foundFilters ), filter_name) @@ -609,19 +504,24 @@ def findCFSequences(filter_name, cfseqList): return (found, None) -def buildFilter(filter_name, filter_input): +def buildFilter(filter_name, filter_input, empty): """ Build the FILTER one filter per previous sequence at the start of the sequence: always create a new one if the previous hypo has more than one output, try to get all of them one filter per previous sequence: 1 input/previous seq, 1 output/next seq """ - from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RoRSequenceFilterNode - sfilter = RoRSequenceFilterNode(name=filter_name) - for i in filter_input: - sfilter.addInput(i) - for i in filter_input: - sfilter.addOutput(CFNaming.filterOutName(filter_name, i)) + from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RoRSequenceFilterNode, PassFilterNode + if empty: + sfilter = PassFilterNode(name=filter_name) + for i in filter_input: + sfilter.addInput(i) + sfilter.addOutput(i) + else: + sfilter = RoRSequenceFilterNode(name=filter_name) + for i in filter_input: + sfilter.addInput(i) + sfilter.addOutput(CFNaming.filterOutName(filter_name, i)) log.debug("Added inputs to filter: %s", sfilter.getInputList()) log.debug("Added outputs to filter: %s", sfilter.getOutputList()) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py index 2838ac1a876a5269941d0219d877fbffd84c4ffa..801072704a5ac278702601cc073b4e42d9b3aead 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py @@ -4,7 +4,7 @@ # to visualize: dot -T pdf Step1.dot > Step1.pdf from AthenaCommon.AlgSequence import AthSequencer -from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import algColor +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import algColor, isPassFilterAlg import itertools from AthenaCommon.CFElements import getSequenceChildren, isSequence, compName @@ -204,13 +204,15 @@ def findConnections(alg_list): alg_set = set(alg_list) # make them unique for nodeA, nodeB in itertools.permutations(alg_set, 2): + if isPassFilterAlg(nodeA.Alg) or isPassFilterAlg(nodeB.Alg): + continue ins=nodeB.getInputList() - outs=nodeA.getOutputList() + outs=nodeA.getOutputList() dataIntersection = list(set(outs) & set(ins)) if len(dataIntersection) > 0: for line in dataIntersection: lineconnect+=addConnection(compName(nodeA.Alg), compName(nodeB.Alg), line) -# print ("Data connections between ", compName(nodeA.Alg)," and ",compName(nodeB.Alg) ,": ", line) + #print ("Data connections between ", compName(nodeA.Alg)," and ",compName(nodeB.Alg) ,": ", line) return lineconnect diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py index 7cb01ff318129a66aac2aea9646e640d50e54909..6b5e09bfbdb25d874dfb86b75adb941af67f43b1 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py @@ -8,6 +8,7 @@ from AthenaCommon.CFElements import parOR, seqAND, compName, getProp from DecisionHandling.DecisionHandlingConfig import ComboHypoCfg from AthenaConfiguration.ComponentFactory import CompFactory RoRSeqFilter=CompFactory.RoRSeqFilter +PassFilter = CompFactory.PassFilter class Node(object): """base class representing one Alg + inputs + outputs, to be used to Draw dot diagrams and connect objects""" @@ -78,7 +79,7 @@ class AlgNode(Node): if self.outputProp != '': self.setPar(self.outputProp,name) else: - log.error("no OutputProp set") + log.debug("no outputProp set for output of %s", self.Alg.getName()) Node.addOutput(self, name) @@ -101,8 +102,9 @@ class AlgNode(Node): if self.inputProp != '': self.setPar(self.inputProp,name) else: - log.error("no InputProp set") + log.debug("no InputProp set for input of %s", self.Alg.getName()) Node.addInput(self, name) + return len(self.readInputList()) def readInputList(self): @@ -130,6 +132,8 @@ def algColor(alg): return "cyan3" if isFilterAlg(alg): return "chartreuse3" + if isPassFilterAlg(alg): + return "darkgreen" return "cadetblue1" @@ -211,11 +215,14 @@ class SequenceFilterNode(AlgNode): def __init__(self, Alg, inputProp, outputProp): AlgNode.__init__(self, Alg, inputProp, outputProp) - def addChain(self, name): - return self.setPar("Chains", name) + def addChain(self, name, input_name): + return def getChains(self): - return self.getPar("Chains") + return [] + + def getChainsPerInput(self): + return [[]] def __repr__(self): return "SequenceFilter::%s [%s] -> [%s], chains=%s"%(compName(self.Alg),' '.join(map(str, self.getInputList())),' '.join(map(str, self.getOutputList())), self.getChains()) @@ -226,6 +233,31 @@ class RoRSequenceFilterNode(SequenceFilterNode): Alg= RoRSeqFilter(name) SequenceFilterNode.__init__(self, Alg, 'Input', 'Output') + def addChain(self, name, input_name): + input_index = self.readInputList().index(input_name) + chains_in_input = self.getPar("ChainsPerInput") + if len(chains_in_input) == input_index: + chains_in_input.append([name]) + elif len(chains_in_input) > input_index: + chains_in_input[input_index].append(name) + else: + log.error("Error: why requiring input %i when size is %i ?" , input_index , len(chains_in_input)) + raise RuntimeError("Error: why requiring input %i when size is %i " , input_index , len(chains_in_input)) + + self.Alg.ChainsPerInput= chains_in_input + return self.setPar("Chains", name) # still neded? + + def getChains(self): + return self.getPar("Chains") + + def getChainsPerInput(self): + return self.getPar("ChainsPerInput") + +class PassFilterNode(SequenceFilterNode): + """ PassFilter is a Filter node without inputs/outputs, so OutputProp=InputProp=empty""" + def __init__(self, name): + Alg= PassFilter(name) + SequenceFilterNode.__init__(self, Alg, '', '') class InputMakerNode(AlgNode): @@ -304,6 +336,9 @@ def isInputMakerBase(alg): def isFilterAlg(alg): return isinstance(alg, RoRSeqFilter) +def isPassFilterAlg(alg): + return isinstance(alg, PassFilter) + def isComboHypoAlg(alg): return ('MultiplicitiesMap' in alg.__class__.__dict__) @@ -677,7 +712,7 @@ class CFSequence(object): """ Set the output decision of this CFSequence as the hypo outputdecision; In case of combo, takes the Combo outputs""" self.decisions=[] # empty steps: - if not len(self.step.sequences): + if self.step.isEmpty: self.decisions.extend(self.filter.getOutputList()) else: if self.step.isCombo: diff --git a/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx b/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx index 9342eb2d443ac4e114f3af9edb5b765b9d5d05ae..2ab7b3a52035a93cde344081e79c53cb0cd6ae91 100755 --- a/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx +++ b/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "VP1CaloReadoutSystems/VP1CaloReadoutSystem.h" @@ -774,6 +774,7 @@ void VP1CaloReadoutSystem::createHV() { const EMBHVManager& embHVManager = larHVManager->getEMBHVManager(); + const EMBHVManager::EMBHVData hvdata_EMB = embHVManager.getData(); for (unsigned int e=embHVManager.beginSideIndex();e!=embHVManager.endSideIndex();e++) { for (unsigned int s=embHVManager.beginSectorIndex();s!=embHVManager.endSectorIndex();s++) { for (unsigned int y=embHVManager.beginEtaIndex();y!=embHVManager.endEtaIndex();y++) { @@ -807,8 +808,8 @@ void VP1CaloReadoutSystem::createHV() { for (unsigned int i=0;i<embMod.getNumElectrodes();i++) { const EMBHVElectrode& electrode = embMod.getElectrode(i); - double voltage0 = electrode.voltage(0); - double voltage1 = electrode.voltage(1); + double voltage0 = hvdata_EMB.voltage (electrode, 0); + double voltage1 = hvdata_EMB.voltage (electrode, 1); double nominalVoltage = m_clockwork->ui.embNominalSpinBox->value(); bool outOfTolerance = (fabs(voltage0-nominalVoltage) > double (tolerance)) || (fabs(voltage1-nominalVoltage) > double (tolerance)) ; bool missing = voltage0 == -99999 || voltage1 == -99999; @@ -840,6 +841,7 @@ void VP1CaloReadoutSystem::createHV() { } const EMBPresamplerHVManager& embPreHVManager = larHVManager->getEMBPresamplerHVManager(); + const EMBPresamplerHVManager::EMBPresamplerHVData hvdata_EMBPS = embPreHVManager.getData(); for (unsigned int e=embPreHVManager.beginSideIndex();e!=embPreHVManager.endSideIndex();e++) { for (unsigned int y=embPreHVManager.beginEtaIndex();y!=embPreHVManager.endEtaIndex();y++) { for (unsigned int p=embPreHVManager.beginPhiIndex();p!=embPreHVManager.endPhiIndex();p++) { @@ -865,8 +867,8 @@ void VP1CaloReadoutSystem::createHV() { ls->vertexProperty=vtxProperty; m_clockwork->embPreModsSeparator->addChild(ls); - double voltage0 = embMod.voltage(0); - double voltage1 = embMod.voltage(1); + double voltage0 = hvdata_EMBPS.voltage (embMod, 0); + double voltage1 = hvdata_EMBPS.voltage (embMod, 1); double nominalVoltage = m_clockwork->ui.embPresamplerNominalSpinBox->value(); bool outOfTolerance = (fabs(voltage0-nominalVoltage) > double (tolerance)) || (fabs(voltage1-nominalVoltage) > double (tolerance)) ; bool missing = voltage0 == -99999 || voltage1 == -99999; @@ -905,6 +907,7 @@ void VP1CaloReadoutSystem::createHV() { QSpinBox **spinBoxes = iotype==EMECHVModule::OUTER ? emecSpinBoxOuter : emecSpinBoxInner; const EMECHVManager& emecHVManager = larHVManager->getEMECHVManager(iotype); + const EMECHVManager::EMECHVData hvdata_EMEC = emecHVManager.getData(); for (unsigned int e=emecHVManager.beginSideIndex();e!=emecHVManager.endSideIndex();e++) { double z = e==0 ? -3740:3740; for (unsigned int s=emecHVManager.beginSectorIndex();s!=emecHVManager.endSectorIndex();s++) { @@ -936,8 +939,8 @@ void VP1CaloReadoutSystem::createHV() { for (unsigned int i=0;i<emecMod.getNumElectrodes();i++) { const EMECHVElectrode& electrode = emecMod.getElectrode(i); - double voltage0 = electrode.voltage(0); - double voltage1 = electrode.voltage(1); + double voltage0 = hvdata_EMEC.voltage (electrode, 0); + double voltage1 = hvdata_EMEC.voltage (electrode, 1); double nominalVoltage = spinBoxes[y]->value(); bool outOfTolerance = (fabs(voltage0-nominalVoltage) > double (tolerance)) || (fabs(voltage1-nominalVoltage) > double (tolerance)) ; bool missing = voltage0 == -99999 || voltage1 == -99999; @@ -975,6 +978,7 @@ void VP1CaloReadoutSystem::createHV() { } const EMECPresamplerHVManager& emecPreHVManager = larHVManager->getEMECPresamplerHVManager(); + const EMECPresamplerHVManager::EMECPresamplerHVData hvdata_EMECPS = emecPreHVManager.getData(); for (unsigned int e=emecPreHVManager.beginSideIndex();e!=emecPreHVManager.endSideIndex();e++) { double z = e==0 ? -3650:3650; for (unsigned int p=emecPreHVManager.beginPhiIndex();p!=emecPreHVManager.endPhiIndex();p++) { @@ -1002,8 +1006,8 @@ void VP1CaloReadoutSystem::createHV() { ls->vertexProperty=vtxProperty; m_clockwork->emecPreModsSeparator->addChild(ls); - double voltage0 = emecMod.voltage(0); - double voltage1 = emecMod.voltage(1); + double voltage0 = hvdata_EMECPS.voltage (emecMod, 0); + double voltage1 = hvdata_EMECPS.voltage (emecMod, 1); double nominalVoltage = m_clockwork->ui.emecPresamplerNominalSpinBox->value(); bool outOfTolerance = (fabs(voltage0-nominalVoltage) > double (tolerance)) || (fabs(voltage1-nominalVoltage) > double (tolerance)) ; bool missing = voltage0 == -99999 || voltage1 == -99999; @@ -1025,13 +1029,14 @@ void VP1CaloReadoutSystem::createHV() { const HECDetectorManager *hecManager = VP1DetInfo::hecDetMgr(); const HECHVManager& hecHVManager = larHVManager->getHECHVManager(); + const HECHVManager::HECHVData hvdata_HEC = hecHVManager.getData(); for (unsigned int e=hecHVManager.beginSideIndex();e!=hecHVManager.endSideIndex();e++) { for (unsigned int s=hecHVManager.beginSamplingIndex();s!=hecHVManager.endSamplingIndex();s++) { for (unsigned int p=hecHVManager.beginPhiIndex();p!=hecHVManager.endPhiIndex();p++) { const HECHVModule& hecMod=hecHVManager.getHVModule(e,p,s); for (unsigned int i=0;i<hecMod.getNumSubgaps();i++) { const HECHVSubgap& subgap = hecMod.getSubgap(i); - double voltage = subgap.voltage(); + double voltage = hvdata_HEC.voltage (subgap); double nominalVoltage = m_clockwork->ui.hecNominalSpinBox->value(); bool outOfTolerance = fabs(voltage-nominalVoltage) > double (tolerance); bool missing = voltage == -99999; @@ -1085,13 +1090,14 @@ void VP1CaloReadoutSystem::createHV() { } const FCALHVManager& fcalHVManager = larHVManager->getFCALHVManager(); + const FCALHVManager::FCALHVData hvdata_FCAL = fcalHVManager.getData(); for (unsigned int e=fcalHVManager.beginSideIndex();e!=fcalHVManager.endSideIndex();e++) { for (unsigned int s=fcalHVManager.beginSamplingIndex();s!=fcalHVManager.endSamplingIndex();s++) { for (unsigned int x=fcalHVManager.beginSectorIndex(s);x!=fcalHVManager.endSectorIndex(s);x++) { const FCALHVModule& fcalMod=fcalHVManager.getHVModule(e,x,s); for (unsigned int l=0;l<fcalMod.getNumHVLines();l++) { const FCALHVLine& fcalLine=fcalMod.getHVLine(l); - double voltage = fcalLine.voltage(); + double voltage = hvdata_FCAL.voltage (fcalLine); // // Determine whether this is in bounds, or not.. @@ -1680,9 +1686,20 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick std::map < SoNode *, const EMBHVElectrode*>::const_iterator p = m_clockwork->EMBHVMap.find(mySelectedNode); if (p!=m_clockwork->EMBHVMap.end()) { - const EMBHVElectrode* electrode = (*p).second; + const EMBHVElectrode& electrode = *p->second; + const EMBHVModule& module = electrode.getModule(); + const EMBHVManager& manager = module.getManager(); + const EMBHVManager::EMBHVData hvdata = manager.getData(); std::ostringstream outstream; - outstream << "Side: " << electrode->getModule().getSideIndex() <<" Eta: " << electrode->getModule().getEtaIndex() << " Phi: " << electrode->getModule().getPhiIndex() << " Sector: " << electrode->getModule().getSectorIndex() << " Electrode " << electrode->getElectrodeIndex() << " Voltages: " << electrode->voltage(0) << "/" << electrode->voltage(1) << "; currents: " << electrode->current(0) << "/" << electrode->current(1); + outstream << "Side: " << module.getSideIndex() + <<" Eta: " << module.getEtaIndex() + << " Phi: " << module.getPhiIndex() + << " Sector: " << module.getSectorIndex() + << " Electrode " << electrode.getElectrodeIndex() + << " Voltages: " << hvdata.voltage (electrode, 0) + << "/" << hvdata.voltage (electrode, 1) + << "; currents: " << hvdata.current (electrode, 0) + << "/" << hvdata.current (electrode, 1); message (outstream.str().c_str()); } } @@ -1691,9 +1708,21 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick std::map < SoNode *, const EMECHVElectrode*>::const_iterator p = m_clockwork->EMECHVMap.find(mySelectedNode); if (p!=m_clockwork->EMECHVMap.end()) { - const EMECHVElectrode* electrode = (*p).second; + const EMECHVElectrode& electrode = *p->second; + const EMECHVModule& module = electrode.getModule(); + const EMECHVManager& manager = module.getManager(); + const EMECHVManager::EMECHVData hvdata = manager.getData(); std::ostringstream outstream; - outstream << "Side: " << electrode->getModule().getSideIndex() << " Wheel: " << electrode->getModule().getWheelIndex() << " Eta: " << electrode->getModule().getEtaIndex() << " Phi: " << electrode->getModule().getPhiIndex() << " Sector: " << electrode->getModule().getSectorIndex() << " Electrode: " << electrode->getElectrodeIndex() << "Voltages: " << electrode->voltage(0) << "/" << electrode->voltage(1) << "; currents: " << electrode->current(0) << "/" << electrode->current(1); + outstream << "Side: " << module.getSideIndex() + << " Wheel: " << module.getWheelIndex() + << " Eta: " << module.getEtaIndex() + << " Phi: " << module.getPhiIndex() + << " Sector: " << module.getSectorIndex() + << " Electrode: " << electrode.getElectrodeIndex() + << "Voltages: " << hvdata.voltage (electrode, 0) + << "/" << hvdata.voltage (electrode, 1) + << "; currents: " << hvdata.current (electrode, 0) + << "/" << hvdata.current (electrode, 1); message (outstream.str().c_str()); } } @@ -1703,9 +1732,17 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick std::map < SoNode *, const HECHVSubgap*>::const_iterator p = m_clockwork->HECHVMap.find(mySelectedNode); if (p!=m_clockwork->HECHVMap.end()) { - const HECHVSubgap* subgap = (*p).second; + const HECHVSubgap& subgap = *p->second; + const HECHVModule& module = subgap.getModule(); + const HECHVManager& manager = module.getManager(); + const HECHVManager::HECHVData hvdata = manager.getData(); std::ostringstream outstream; - outstream << "Side: " << subgap->getModule().getSideIndex() << " Phi: " << subgap->getModule().getPhiIndex() << " Sampling: " << subgap->getModule().getSamplingIndex() << " Subgap: " << subgap->getSubgapIndex() << "Voltage: " << subgap->voltage() << "; current: " << subgap->current(); + outstream << "Side: " << module.getSideIndex() + << " Phi: " << module.getPhiIndex() + << " Sampling: " << module.getSamplingIndex() + << " Subgap: " << subgap.getSubgapIndex() + << "Voltage: " << hvdata.voltage (subgap) + << "; current: " << hvdata.current (subgap); message (outstream.str().c_str()); } } @@ -1714,9 +1751,17 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick std::map < SoNode *, const FCALHVLine*>::const_iterator p = m_clockwork->FCALHVMap.find(mySelectedNode); if (p!=m_clockwork->FCALHVMap.end()) { - const FCALHVLine* line = (*p).second; + const FCALHVLine& line = *p->second; + const FCALHVModule& module = line.getModule(); + const FCALHVManager& manager = module.getManager(); + const FCALHVManager::FCALHVData hvdata = manager.getData(); std::ostringstream outstream; - outstream << "Side: " << line->getModule().getSideIndex() << " Sector: " << line->getModule().getSectorIndex() << " Sampling: " << line->getModule().getSamplingIndex() << " Line: " << line->getLineIndex() << "Voltage: " << line->voltage() << "; current: " << line->current(); + outstream << "Side: " << module.getSideIndex() + << " Sector: " << module.getSectorIndex() + << " Sampling: " << module.getSamplingIndex() + << " Line: " << line.getLineIndex() + << "Voltage: " << hvdata.voltage (line) + << "; current: " << hvdata.current (line); message (outstream.str().c_str()); } } @@ -1734,11 +1779,25 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick std::ostringstream highVoltageStream; highVoltageStream << "There are " << element->getNumHVLines() << " high voltage lines. Status: " << std::endl; message(highVoltageStream.str().c_str()); + + const FCALHVLine* line = nullptr; for (unsigned int i=0;i<element->getNumHVLines();i++) { - std::ostringstream highVoltageStream; - if (element->getHVLine(i)) highVoltageStream << i << ' ' << element->getHVLine(i)->voltage() << std::endl; - message(highVoltageStream.str().c_str()); - } + line = element->getHVLine(i); + if (line) break; + } + + if (line) { + const FCALHVModule& module = line->getModule(); + const FCALHVManager& manager = module.getManager(); + const FCALHVManager::FCALHVData hvdata = manager.getData(); + for (unsigned int i=0;i<element->getNumHVLines();i++) { + std::ostringstream highVoltageStream; + if (element->getHVLine(i)) { + highVoltageStream << i << ' ' << hvdata.voltage (*element->getHVLine(i)) << std::endl; + } + message(highVoltageStream.str().c_str()); + } + } } @@ -1857,70 +1916,78 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick message (highVoltageStream.str().c_str()); } std::set<const HECHVModule*> modSet; - for (unsigned int i=0;i<element->getNumSubgaps();i++) { - if (m_clockwork->ui.highVoltageCheckBox->isChecked()) { - std::ostringstream highVoltageStream; - highVoltageStream << i << " Status " << element->getSubgap(i).hvOn() << " voltage: " << element->getSubgap(i).voltage() << " current: " << element->getSubgap(i).current() << std::endl; - message(highVoltageStream.str().c_str()); - } - // - // Now let's show the module, and where she is: - // - const HECHVModule& module = element->getSubgap(i).getModule(); - - if (!m_clockwork->ui.highVoltageCheckBox->isChecked()) continue; - - SoSeparator * sep = new SoSeparator(); - - SoMaterial *white = new SoMaterial(); - white->diffuseColor.setValue(1.00,1.00, 1.00); - - SoDrawStyle *drawStyle = new SoDrawStyle(); - drawStyle->lineWidth=3; - drawStyle->pointSize=3; - - SoLightModel *lm = new SoLightModel(); - lm->model=SoLightModel::BASE_COLOR; - - - // we comment out to avoid compilation warnings, because they're not used, apparently -// HECCell::CELLPOS pos=HECCell::FRONT; -// if (m_clockwork->pos==BACK) pos=HECCell::BACK; -// if (m_clockwork->pos==CENTER) pos=HECCell::CENTER; - - - const HECDetectorManager *hecManager = VP1DetInfo::hecDetMgr(); - const HECDetectorRegion *region = hecManager->getDetectorRegion(element->getEndcapIndex(),element->getSamplingIndex(),element->getRegionIndex()); - const HepGeom::Transform3D &XF= Amg::EigenTransformToCLHEP(region->getAbsoluteTransform()); - double z = (XF*HepGeom::Point3D<double>(0,0,element->getZLocal(HECCell::FRONT))).z(); - - double phiMin = module.getPhiMin(); - double phiMax = module.getPhiMax(); - - - double rMax=2130; - double rMin=element->getSamplingIndex()==0 ? 371 : 474; - - sep->addChild(white); - sep->addChild(drawStyle); - sep->addChild(lm); - if (modSet.find(&module)==modSet.end()) { - modSet.insert(&module); - int cc=0; - SoVertexProperty *vtxProperty = new SoVertexProperty(); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMin),rMin*sin(phiMin) ,z)); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMax),rMin*sin(phiMax) ,z)); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(phiMax),rMax*sin(phiMax) ,z)); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(phiMin),rMax*sin(phiMin) ,z)); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMin),rMin*sin(phiMin) ,z)); - - - SoLineSet *ls = new SoLineSet(); - ls->numVertices=5; - ls->vertexProperty=vtxProperty; - sep->addChild(ls); - } - m_clockwork->volatileSeparator->addChild(sep); + if (element->getNumSubgaps() > 0) { + const HECHVModule& module0 = element->getSubgap(0).getModule(); + const HECHVManager& manager = module0.getManager(); + const HECHVManager::HECHVData hvdata = manager.getData(); + for (unsigned int i=0;i<element->getNumSubgaps();i++) { + if (m_clockwork->ui.highVoltageCheckBox->isChecked()) { + std::ostringstream highVoltageStream; + highVoltageStream << i << " Status " << hvdata.hvOn (element->getSubgap(i)) + << " voltage: " << hvdata.voltage (element->getSubgap(i)) + << " current: " << hvdata.current (element->getSubgap(i)) + << std::endl; + message(highVoltageStream.str().c_str()); + } + // + // Now let's show the module, and where she is: + // + const HECHVModule& module = element->getSubgap(i).getModule(); + + if (!m_clockwork->ui.highVoltageCheckBox->isChecked()) continue; + + SoSeparator * sep = new SoSeparator(); + + SoMaterial *white = new SoMaterial(); + white->diffuseColor.setValue(1.00,1.00, 1.00); + + SoDrawStyle *drawStyle = new SoDrawStyle(); + drawStyle->lineWidth=3; + drawStyle->pointSize=3; + + SoLightModel *lm = new SoLightModel(); + lm->model=SoLightModel::BASE_COLOR; + + + // we comment out to avoid compilation warnings, because they're not used, apparently + // HECCell::CELLPOS pos=HECCell::FRONT; + // if (m_clockwork->pos==BACK) pos=HECCell::BACK; + // if (m_clockwork->pos==CENTER) pos=HECCell::CENTER; + + + const HECDetectorManager *hecManager = VP1DetInfo::hecDetMgr(); + const HECDetectorRegion *region = hecManager->getDetectorRegion(element->getEndcapIndex(),element->getSamplingIndex(),element->getRegionIndex()); + const HepGeom::Transform3D &XF= Amg::EigenTransformToCLHEP(region->getAbsoluteTransform()); + double z = (XF*HepGeom::Point3D<double>(0,0,element->getZLocal(HECCell::FRONT))).z(); + + double phiMin = module.getPhiMin(); + double phiMax = module.getPhiMax(); + + + double rMax=2130; + double rMin=element->getSamplingIndex()==0 ? 371 : 474; + + sep->addChild(white); + sep->addChild(drawStyle); + sep->addChild(lm); + if (modSet.find(&module)==modSet.end()) { + modSet.insert(&module); + int cc=0; + SoVertexProperty *vtxProperty = new SoVertexProperty(); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMin),rMin*sin(phiMin) ,z)); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMax),rMin*sin(phiMax) ,z)); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(phiMax),rMax*sin(phiMax) ,z)); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(phiMin),rMax*sin(phiMin) ,z)); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMin),rMin*sin(phiMin) ,z)); + + + SoLineSet *ls = new SoLineSet(); + ls->numVertices=5; + ls->vertexProperty=vtxProperty; + sep->addChild(ls); + } + m_clockwork->volatileSeparator->addChild(sep); + } } } } @@ -1939,12 +2006,16 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick if (m_clockwork->ui.highVoltageCheckBox->isChecked()) { const EMECPresamplerHVModule& module = element->getPresamplerHVModule(); + const EMECPresamplerHVManager& manager = module.getManager(); + const EMECPresamplerHVManager::EMECPresamplerHVData hvdata = manager.getData(); std::ostringstream highVoltageStream; highVoltageStream << "Presampler cell. HV Status: " << '\n'; message(highVoltageStream.str().c_str()); - highVoltageStream << "Status: " << module.hvOn(0) << ' ' << module.hvOn(1) << '\n'; - highVoltageStream << "Current: " << module.current(0) << ' ' << module.current(1) << '\n'; - highVoltageStream << "Voltage: " << module.voltage(0) << ' ' << module.voltage(1) << '\n'; + highVoltageStream << "Status: " + << hvdata.hvOn (module, 0) << ' ' + << hvdata.hvOn (module, 1) << '\n'; + highVoltageStream << "Current: " << hvdata.current(module, 0) << ' ' << hvdata.current (module, 1) << '\n'; + highVoltageStream << "Voltage: " << hvdata.voltage (module, 0) << ' ' << hvdata.voltage (module, 1) << '\n'; message(highVoltageStream.str().c_str()); @@ -2006,93 +2077,107 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick message(highVoltageStream.str().c_str()); } std::set<const EMECHVModule*> modSet; - for (unsigned int i=0;i<element->getNumElectrodes();i++) { - if (m_clockwork->ui.highVoltageCheckBox->isChecked()) { - { - std::ostringstream highVoltageStream; - highVoltageStream << i << ' ' << element->getElectrode(i).getElectrodeIndex() << ") status: " << element->getElectrode(i).hvOn(0) << ' ' << element->getElectrode(i).hvOn(1) << std::endl; - message(highVoltageStream.str().c_str()); - } - { - std::ostringstream highVoltageStream; - highVoltageStream << i << '(' << element->getElectrode(i).getElectrodeIndex() << ") voltage: " << element->getElectrode(i).voltage(0) << ' ' << element->getElectrode(i).voltage(1) << std::endl; - message(highVoltageStream.str().c_str()); - } - { - std::ostringstream highVoltageStream; - highVoltageStream << i << '(' << element->getElectrode(i).getElectrodeIndex() << ") currents: " << element->getElectrode(i).current(0) << ' ' << element->getElectrode(i).current(1) << std::endl; - message(highVoltageStream.str().c_str()); - } - } - // - // Now let's show the module, and where she is: - // - const EMECHVModule& module = element->getElectrode(i).getModule(); + if (element->getNumElectrodes() > 0) { + for (unsigned int i=0;i<element->getNumElectrodes();i++) { + const EMECHVElectrode& electrode = element->getElectrode(0); + const EMECHVModule& module0 = electrode.getModule(); + const EMECHVManager& manager = module0.getManager(); + const EMECHVManager::EMECHVData hvdata = manager.getData(); + if (m_clockwork->ui.highVoltageCheckBox->isChecked()) { + { + std::ostringstream highVoltageStream; + highVoltageStream << i << ' ' + << element->getElectrode(i).getElectrodeIndex() << ") status: " + << hvdata.hvOn(element->getElectrode(i),0) << ' ' + << hvdata.hvOn(element->getElectrode(i),1) << std::endl; + message(highVoltageStream.str().c_str()); + } + { + std::ostringstream highVoltageStream; + highVoltageStream << i << '(' + << element->getElectrode(i).getElectrodeIndex() << ") voltage: " + << hvdata.voltage(element->getElectrode(i),0) << ' ' + << hvdata.voltage(element->getElectrode(i),1) << std::endl; + message(highVoltageStream.str().c_str()); + } + { + std::ostringstream highVoltageStream; + highVoltageStream << i << '(' << element->getElectrode(i).getElectrodeIndex() << ") currents: " + << hvdata.current(element->getElectrode(i),0) << ' ' + << hvdata.current(element->getElectrode(i),1) << std::endl; + message(highVoltageStream.str().c_str()); + } + } + // + // Now let's show the module, and where she is: + // + const EMECHVModule& module = element->getElectrode(i).getModule(); - if (!m_clockwork->ui.highVoltageCheckBox->isChecked()) continue; + if (!m_clockwork->ui.highVoltageCheckBox->isChecked()) continue; - SoSeparator * sep = new SoSeparator(); + SoSeparator * sep = new SoSeparator(); - SoMaterial *white = new SoMaterial(); - white->diffuseColor.setValue(1.00,1.00, 1.00); + SoMaterial *white = new SoMaterial(); + white->diffuseColor.setValue(1.00,1.00, 1.00); - SoDrawStyle *drawStyle = new SoDrawStyle(); - drawStyle->lineWidth=3; - drawStyle->pointSize=3; + SoDrawStyle *drawStyle = new SoDrawStyle(); + drawStyle->lineWidth=3; + drawStyle->pointSize=3; - SoLightModel *lm = new SoLightModel(); - lm->model=SoLightModel::BASE_COLOR; + SoLightModel *lm = new SoLightModel(); + lm->model=SoLightModel::BASE_COLOR; - EMECCell::CELLPOS pos=EMECCell::FRONT; - if (m_clockwork->pos==BACK) pos=EMECCell::BACK; - if (m_clockwork->pos==CENTER) pos=EMECCell::CENTER; + EMECCell::CELLPOS pos=EMECCell::FRONT; + if (m_clockwork->pos==BACK) pos=EMECCell::BACK; + if (m_clockwork->pos==CENTER) pos=EMECCell::CENTER; - double z = (element->getZLocal(pos)+ - element->getDescriptor()->getManager()->getFocalToRef() + - element->getDescriptor()->getManager()->getRefToActive())* (element->getEndcapIndex()==0 ? -1:1); - double phiMin = module.getPhiMin(); - double phiMax = module.getPhiMax(); - double etaMin = module.getEtaMin(); - double etaMax = module.getEtaMax(); + double z = (element->getZLocal(pos)+ + element->getDescriptor()->getManager()->getFocalToRef() + + element->getDescriptor()->getManager()->getRefToActive())* (element->getEndcapIndex()==0 ? -1:1); + double phiMin = module.getPhiMin(); + double phiMax = module.getPhiMax(); + double etaMin = module.getEtaMin(); + double etaMax = module.getEtaMax(); - double rMax=fabs(z/sinh(etaMin)); - double rMin=fabs(z/sinh(etaMax)); + double rMax=fabs(z/sinh(etaMin)); + double rMin=fabs(z/sinh(etaMax)); - sep->addChild(white); - sep->addChild(drawStyle); - sep->addChild(lm); - if (modSet.find(&module)==modSet.end()) { - modSet.insert(&module); - int cc=0; - SoVertexProperty *vtxProperty = new SoVertexProperty(); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMin),rMin*sin(phiMin) ,z)); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMax),rMin*sin(phiMax) ,z)); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(phiMax),rMax*sin(phiMax) ,z)); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(phiMin),rMax*sin(phiMin) ,z)); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMin),rMin*sin(phiMin) ,z)); + sep->addChild(white); + sep->addChild(drawStyle); + sep->addChild(lm); + if (modSet.find(&module)==modSet.end()) { + modSet.insert(&module); + int cc=0; + SoVertexProperty *vtxProperty = new SoVertexProperty(); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMin),rMin*sin(phiMin) ,z)); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMax),rMin*sin(phiMax) ,z)); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(phiMax),rMax*sin(phiMax) ,z)); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(phiMin),rMax*sin(phiMin) ,z)); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(phiMin),rMin*sin(phiMin) ,z)); - SoLineSet *ls = new SoLineSet(); - ls->numVertices=5; - ls->vertexProperty=vtxProperty; - sep->addChild(ls); - } - { + SoLineSet *ls = new SoLineSet(); + ls->numVertices=5; + ls->vertexProperty=vtxProperty; + sep->addChild(ls); + } + { - int cc=0; - SoVertexProperty *vtxProperty = new SoVertexProperty(); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(element->getElectrode(i).getPhi()),rMin*sin(element->getElectrode(i).getPhi()) ,z)); - vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(element->getElectrode(i).getPhi()),rMax*sin(element->getElectrode(i).getPhi()) ,z)); - SoLineSet *ls = new SoLineSet(); - ls->numVertices=2; - ls->vertexProperty=vtxProperty; - sep->addChild(ls); - } + int cc=0; + SoVertexProperty *vtxProperty = new SoVertexProperty(); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMin*cos(element->getElectrode(i).getPhi()),rMin*sin(element->getElectrode(i).getPhi()) ,z)); + vtxProperty->vertex.set1Value(cc++, SbVec3f(rMax*cos(element->getElectrode(i).getPhi()),rMax*sin(element->getElectrode(i).getPhi()) ,z)); + SoLineSet *ls = new SoLineSet(); + ls->numVertices=2; + ls->vertexProperty=vtxProperty; + sep->addChild(ls); + } - m_clockwork->volatileSeparator->addChild(sep); + m_clockwork->volatileSeparator->addChild(sep); + } } } } @@ -2113,13 +2198,21 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick if (m_clockwork->ui.highVoltageCheckBox->isChecked()) { if (element->getSamplingIndex()==0) { const EMBPresamplerHVModule& module = element->getPresamplerHVModule(); + const EMBPresamplerHVManager& manager = module.getManager(); + const EMBPresamplerHVManager::EMBPresamplerHVData hvdata = manager.getData(); std::ostringstream highVoltageStream; highVoltageStream << "Presampler cell. HV Status: " << '\n'; message(highVoltageStream.str().c_str()); - highVoltageStream << "Status: " << module.hvOn(0) << ' ' << module.hvOn(1) << '\n'; - highVoltageStream << "Current: " << module.current(0) << ' ' << module.current(1) << '\n'; - highVoltageStream << "Voltage: " << module.voltage(0) << ' ' << module.voltage(1) << '\n'; + highVoltageStream << "Status: " + << hvdata.hvOn (module, 0) << ' ' + << hvdata.hvOn (module, 1) << '\n'; + highVoltageStream << "Current: " + << hvdata.current (module, 0) << ' ' + << hvdata.current (module, 1) << '\n'; + highVoltageStream << "Voltage: " + << hvdata.voltage (module, 0) << ' ' + << hvdata.voltage (module, 1) << '\n'; message(highVoltageStream.str().c_str()); @@ -2172,80 +2265,92 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick highVoltageStream << "There are " << element->getNumElectrodes() << " electrodes. Status: " << '\n'; message(highVoltageStream.str().c_str()); std::set<const EMBHVModule*> modSet; - for (unsigned int i=0;i<element->getNumElectrodes();i++) { - highVoltageStream << i << "Status: " << element->getElectrode(i).getElectrodeIndex() << ' ' << element->getElectrode(i).hvOn(0) << ' ' << element->getElectrode(i).hvOn(1) << '\n'; - highVoltageStream << i << "Current: " << element->getElectrode(i).getElectrodeIndex() << ' ' << element->getElectrode(i).current(0) << ' ' << element->getElectrode(i).current(1) << '\n'; - highVoltageStream << i << "Voltage: " << element->getElectrode(i).getElectrodeIndex() << ' ' << element->getElectrode(i).voltage(0) << ' ' << element->getElectrode(i).voltage(1) << '\n'; - message(highVoltageStream.str().c_str()); - // - // Now let's show the module, and where she is: - // - const EMBHVModule& module = element->getElectrode(i).getModule(); + if (element->getNumElectrodes() > 0) { + const EMBHVModule& module0 = element->getElectrode(0).getModule(); + const EMBHVManager& manager = module0.getManager(); + const EMBHVManager::EMBHVData hvdata = manager.getData(); + for (unsigned int i=0;i<element->getNumElectrodes();i++) { + highVoltageStream << i << "Status: " << element->getElectrode(i).getElectrodeIndex() << ' ' + << hvdata.hvOn (element->getElectrode(i), 0) << ' ' + << hvdata.hvOn (element->getElectrode(i), 1) << '\n'; + highVoltageStream << i << "Current: " + << element->getElectrode(i).getElectrodeIndex() << ' ' + << hvdata.current (element->getElectrode(i), 0) << ' ' + << hvdata.current (element->getElectrode(i), 1) << '\n'; + highVoltageStream << i << "Voltage: " << element->getElectrode(i).getElectrodeIndex() << ' ' + << hvdata.voltage (element->getElectrode(i), 0) << ' ' + << hvdata.voltage (element->getElectrode(i), 1) << '\n'; + message(highVoltageStream.str().c_str()); + // + // Now let's show the module, and where she is: + // + const EMBHVModule& module = element->getElectrode(i).getModule(); - if (!m_clockwork->ui.highVoltageCheckBox->isChecked()) continue; + if (!m_clockwork->ui.highVoltageCheckBox->isChecked()) continue; - SoSeparator * sep = new SoSeparator(); + SoSeparator * sep = new SoSeparator(); - SoMaterial *white = new SoMaterial(); - white->diffuseColor.setValue(1.00,1.00, 1.00); + SoMaterial *white = new SoMaterial(); + white->diffuseColor.setValue(1.00,1.00, 1.00); - SoDrawStyle *drawStyle = new SoDrawStyle(); - drawStyle->lineWidth=3; - drawStyle->pointSize=3; + SoDrawStyle *drawStyle = new SoDrawStyle(); + drawStyle->lineWidth=3; + drawStyle->pointSize=3; - SoLightModel *lm = new SoLightModel(); - lm->model=SoLightModel::BASE_COLOR; + SoLightModel *lm = new SoLightModel(); + lm->model=SoLightModel::BASE_COLOR; - EMBCell::CELLPOS pos=EMBCell::FRONT; - if (m_clockwork->pos==BACK) pos=EMBCell::BACK; - if (m_clockwork->pos==CENTER) pos=EMBCell::CENTER; + EMBCell::CELLPOS pos=EMBCell::FRONT; + if (m_clockwork->pos==BACK) pos=EMBCell::BACK; + if (m_clockwork->pos==CENTER) pos=EMBCell::CENTER; - double r = element->getRLocal(pos); - double phiMin = module.getPhiMin(); - double phiMax = module.getPhiMax(); - double etaMin = module.getEtaMin(); - double etaMax = module.getEtaMax(); - sep->addChild(white); - sep->addChild(drawStyle); - sep->addChild(lm); + double r = element->getRLocal(pos); + double phiMin = module.getPhiMin(); + double phiMax = module.getPhiMax(); + double etaMin = module.getEtaMin(); + double etaMax = module.getEtaMax(); + sep->addChild(white); + sep->addChild(drawStyle); + sep->addChild(lm); - if (modSet.find(&module)==modSet.end()) { - modSet.insert(&module); + if (modSet.find(&module)==modSet.end()) { + modSet.insert(&module); - int cc=0; - SoVertexProperty *vtxProperty = new SoVertexProperty(); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMin),r*sin(phiMin) ,r*sinh(etaMin))); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMax),r*sin(phiMax) ,r*sinh(etaMin))); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMax),r*sin(phiMax) ,r*sinh(etaMax))); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMin),r*sin(phiMin) ,r*sinh(etaMax))); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMin),r*sin(phiMin) ,r*sinh(etaMin))); + int cc=0; + SoVertexProperty *vtxProperty = new SoVertexProperty(); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMin),r*sin(phiMin) ,r*sinh(etaMin))); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMax),r*sin(phiMax) ,r*sinh(etaMin))); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMax),r*sin(phiMax) ,r*sinh(etaMax))); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMin),r*sin(phiMin) ,r*sinh(etaMax))); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMin),r*sin(phiMin) ,r*sinh(etaMin))); - SoLineSet *ls = new SoLineSet(); - ls->numVertices=5; - ls->vertexProperty=vtxProperty; - sep->addChild(ls); + SoLineSet *ls = new SoLineSet(); + ls->numVertices=5; + ls->vertexProperty=vtxProperty; + sep->addChild(ls); - } - { - int cc=0; - SoVertexProperty *vtxProperty = new SoVertexProperty(); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(element->getElectrode(i).getPhi()),r*sin(element->getElectrode(i).getPhi()) ,r*sinh(etaMin))); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(element->getElectrode(i).getPhi()),r*sin(element->getElectrode(i).getPhi()) ,r*sinh(etaMax))); + } + { + int cc=0; + SoVertexProperty *vtxProperty = new SoVertexProperty(); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(element->getElectrode(i).getPhi()),r*sin(element->getElectrode(i).getPhi()) ,r*sinh(etaMin))); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(element->getElectrode(i).getPhi()),r*sin(element->getElectrode(i).getPhi()) ,r*sinh(etaMax))); - SoLineSet *ls = new SoLineSet(); - ls->numVertices=2; - ls->vertexProperty=vtxProperty; + SoLineSet *ls = new SoLineSet(); + ls->numVertices=2; + ls->vertexProperty=vtxProperty; - sep->addChild(ls); - } + sep->addChild(ls); + } - m_clockwork->volatileSeparator->addChild(sep); - } - } + m_clockwork->volatileSeparator->addChild(sep); + } + } + } } } }